opencode-rag-plugin 1.14.7 → 1.14.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 +2 -7
- package/dist/api.d.ts +4 -0
- package/dist/api.js +10 -2
- package/dist/api.js.map +1 -1
- package/dist/chunker/base.d.ts +1 -0
- package/dist/chunker/base.js +4 -0
- package/dist/chunker/base.js.map +1 -1
- package/dist/chunker/bash.d.ts +3 -0
- package/dist/chunker/bash.js +3 -0
- package/dist/chunker/bash.js.map +1 -1
- package/dist/chunker/c.d.ts +3 -0
- package/dist/chunker/c.js +3 -0
- package/dist/chunker/c.js.map +1 -1
- package/dist/chunker/cpp.d.ts +3 -0
- package/dist/chunker/cpp.js +3 -0
- package/dist/chunker/cpp.js.map +1 -1
- package/dist/chunker/csharp.d.ts +3 -0
- package/dist/chunker/csharp.js +3 -0
- package/dist/chunker/csharp.js.map +1 -1
- package/dist/chunker/css.d.ts +3 -0
- package/dist/chunker/css.js +3 -0
- package/dist/chunker/css.js.map +1 -1
- package/dist/chunker/doc.d.ts +3 -0
- package/dist/chunker/doc.js.map +1 -1
- package/dist/chunker/dockerfile.d.ts +3 -0
- package/dist/chunker/dockerfile.js +3 -0
- package/dist/chunker/dockerfile.js.map +1 -1
- package/dist/chunker/docx.d.ts +3 -0
- package/dist/chunker/docx.js.map +1 -1
- package/dist/chunker/excel.d.ts +3 -0
- package/dist/chunker/excel.js.map +1 -1
- package/dist/chunker/factory.d.ts +29 -0
- package/dist/chunker/factory.js +26 -0
- package/dist/chunker/factory.js.map +1 -1
- package/dist/chunker/fallback.d.ts +4 -0
- package/dist/chunker/fallback.js +1 -0
- package/dist/chunker/fallback.js.map +1 -1
- package/dist/chunker/go.d.ts +3 -0
- package/dist/chunker/go.js +3 -0
- package/dist/chunker/go.js.map +1 -1
- package/dist/chunker/grammar.d.ts +3 -0
- package/dist/chunker/grammar.js +3 -0
- package/dist/chunker/grammar.js.map +1 -1
- package/dist/chunker/html.d.ts +3 -0
- package/dist/chunker/html.js +3 -0
- package/dist/chunker/html.js.map +1 -1
- package/dist/chunker/image.d.ts +3 -0
- package/dist/chunker/image.js.map +1 -1
- package/dist/chunker/ini.d.ts +3 -0
- package/dist/chunker/ini.js +3 -0
- package/dist/chunker/ini.js.map +1 -1
- package/dist/chunker/java.d.ts +3 -0
- package/dist/chunker/java.js +3 -0
- package/dist/chunker/java.js.map +1 -1
- package/dist/chunker/javascript.d.ts +3 -0
- package/dist/chunker/javascript.js +3 -0
- package/dist/chunker/javascript.js.map +1 -1
- package/dist/chunker/json.d.ts +3 -0
- package/dist/chunker/json.js +3 -0
- package/dist/chunker/json.js.map +1 -1
- package/dist/chunker/kotlin.d.ts +3 -0
- package/dist/chunker/kotlin.js +3 -0
- package/dist/chunker/kotlin.js.map +1 -1
- package/dist/chunker/loader.js +3 -0
- package/dist/chunker/loader.js.map +1 -1
- package/dist/chunker/markdown.d.ts +3 -0
- package/dist/chunker/markdown.js +3 -0
- package/dist/chunker/markdown.js.map +1 -1
- package/dist/chunker/pdf.d.ts +3 -0
- package/dist/chunker/pdf.js.map +1 -1
- package/dist/chunker/php.d.ts +3 -0
- package/dist/chunker/php.js +3 -0
- package/dist/chunker/php.js.map +1 -1
- package/dist/chunker/powershell.d.ts +3 -0
- package/dist/chunker/powershell.js +3 -0
- package/dist/chunker/powershell.js.map +1 -1
- package/dist/chunker/python.d.ts +3 -0
- package/dist/chunker/python.js +3 -0
- package/dist/chunker/python.js.map +1 -1
- package/dist/chunker/razor.d.ts +3 -0
- package/dist/chunker/razor.js.map +1 -1
- package/dist/chunker/ruby.d.ts +3 -0
- package/dist/chunker/ruby.js +3 -0
- package/dist/chunker/ruby.js.map +1 -1
- package/dist/chunker/rust.d.ts +3 -0
- package/dist/chunker/rust.js +3 -0
- package/dist/chunker/rust.js.map +1 -1
- package/dist/chunker/sln.d.ts +3 -0
- package/dist/chunker/sln.js.map +1 -1
- package/dist/chunker/sql.d.ts +3 -0
- package/dist/chunker/sql.js +3 -0
- package/dist/chunker/sql.js.map +1 -1
- package/dist/chunker/ssl.d.ts +3 -0
- package/dist/chunker/ssl.js +0 -6
- package/dist/chunker/ssl.js.map +1 -1
- package/dist/chunker/swift.d.ts +3 -0
- package/dist/chunker/swift.js +3 -0
- package/dist/chunker/swift.js.map +1 -1
- package/dist/chunker/tex.d.ts +3 -0
- package/dist/chunker/tex.js.map +1 -1
- package/dist/chunker/toml.d.ts +3 -0
- package/dist/chunker/toml.js +3 -0
- package/dist/chunker/toml.js.map +1 -1
- package/dist/chunker/typescript.d.ts +3 -0
- package/dist/chunker/typescript.js +3 -0
- package/dist/chunker/typescript.js.map +1 -1
- package/dist/chunker/uuid.d.ts +4 -0
- package/dist/chunker/uuid.js +4 -0
- package/dist/chunker/uuid.js.map +1 -1
- package/dist/chunker/xml.d.ts +3 -0
- package/dist/chunker/xml.js +3 -0
- package/dist/chunker/xml.js.map +1 -1
- package/dist/chunker/yaml.d.ts +3 -0
- package/dist/chunker/yaml.js +3 -0
- package/dist/chunker/yaml.js.map +1 -1
- package/dist/cli/commands/clear.d.ts +3 -0
- package/dist/cli/commands/clear.js +3 -0
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/describe-image.d.ts +3 -0
- package/dist/cli/commands/describe-image.js +3 -0
- package/dist/cli/commands/describe-image.js.map +1 -1
- package/dist/cli/commands/dump.d.ts +3 -0
- package/dist/cli/commands/dump.js +3 -0
- package/dist/cli/commands/dump.js.map +1 -1
- package/dist/cli/commands/eval.d.ts +3 -0
- package/dist/cli/commands/eval.js +3 -0
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/index-command.d.ts +4 -0
- package/dist/cli/commands/index-command.js +39 -26
- package/dist/cli/commands/index-command.js.map +1 -1
- package/dist/cli/commands/init-helpers.d.ts +3 -0
- package/dist/cli/commands/init-helpers.js +4 -9
- package/dist/cli/commands/init-helpers.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.js +3 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.js +3 -0
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.js +3 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/query.d.ts +3 -0
- package/dist/cli/commands/query.js +7 -2
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/show.d.ts +3 -0
- package/dist/cli/commands/show.js +3 -0
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.js +3 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/ui.d.ts +3 -0
- package/dist/cli/commands/ui.js +3 -0
- package/dist/cli/commands/ui.js.map +1 -1
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.js +3 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/format.d.ts +3 -0
- package/dist/cli/format.js +3 -0
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/helpers.d.ts +3 -0
- package/dist/cli/helpers.js +3 -0
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/progress.d.ts +7 -4
- package/dist/cli/progress.js.map +1 -1
- package/dist/cli/types.d.ts +3 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -1
- package/dist/cli.d.ts +2 -5
- package/dist/cli.js +2 -5
- package/dist/cli.js.map +1 -1
- package/dist/content/doc.d.ts +9 -0
- package/dist/content/doc.js +9 -0
- package/dist/content/doc.js.map +1 -1
- package/dist/content/docx.d.ts +9 -0
- package/dist/content/docx.js +9 -0
- package/dist/content/docx.js.map +1 -1
- package/dist/content/excel.d.ts +9 -0
- package/dist/content/excel.js +9 -0
- package/dist/content/excel.js.map +1 -1
- package/dist/content/image.d.ts +14 -0
- package/dist/content/image.js +14 -0
- package/dist/content/image.js.map +1 -1
- package/dist/content/pdf.d.ts +9 -0
- package/dist/content/pdf.js +9 -0
- package/dist/content/pdf.js.map +1 -1
- package/dist/content/reader.d.ts +13 -0
- package/dist/content/reader.js +12 -0
- package/dist/content/reader.js.map +1 -1
- package/dist/content/types.d.ts +4 -0
- package/dist/content/types.js +3 -0
- package/dist/content/types.js.map +1 -1
- package/dist/core/bootstrap.d.ts +4 -0
- package/dist/core/bootstrap.js +4 -0
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/config.d.ts +24 -18
- package/dist/core/config.js +28 -14
- package/dist/core/config.js.map +1 -1
- package/dist/core/doc-progress.d.ts +4 -0
- package/dist/core/doc-progress.js +4 -0
- package/dist/core/doc-progress.js.map +1 -1
- package/dist/core/fileLogger.d.ts +4 -0
- package/dist/core/fileLogger.js +4 -0
- package/dist/core/fileLogger.js.map +1 -1
- package/dist/core/interfaces.d.ts +16 -0
- package/dist/core/interfaces.js +4 -0
- package/dist/core/interfaces.js.map +1 -1
- package/dist/core/manifest.d.ts +4 -0
- package/dist/core/manifest.js +4 -0
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/provider-defaults.d.ts +4 -0
- package/dist/core/provider-defaults.js +4 -0
- package/dist/core/provider-defaults.js.map +1 -1
- package/dist/core/rag-injection-flag.d.ts +6 -0
- package/dist/core/rag-injection-flag.js +16 -0
- package/dist/core/rag-injection-flag.js.map +1 -1
- package/dist/core/resolve-api-key.d.ts +4 -0
- package/dist/core/resolve-api-key.js +4 -0
- package/dist/core/resolve-api-key.js.map +1 -1
- package/dist/core/runtime-overrides.d.ts +5 -0
- package/dist/core/runtime-overrides.js +7 -13
- package/dist/core/runtime-overrides.js.map +1 -1
- package/dist/describer/anthropic.d.ts +3 -0
- package/dist/describer/anthropic.js.map +1 -1
- package/dist/describer/describer.d.ts +4 -1
- package/dist/describer/describer.js +1 -1
- package/dist/describer/describer.js.map +1 -1
- package/dist/describer/factory.d.ts +13 -0
- package/dist/describer/factory.js +12 -2
- package/dist/describer/factory.js.map +1 -1
- package/dist/describer/gemini.d.ts +8 -0
- package/dist/describer/gemini.js +6 -1
- package/dist/describer/gemini.js.map +1 -1
- package/dist/describer/shared.d.ts +14 -0
- package/dist/describer/shared.js +11 -0
- package/dist/describer/shared.js.map +1 -1
- package/dist/embedder/cohere.d.ts +16 -4
- package/dist/embedder/cohere.js +9 -0
- package/dist/embedder/cohere.js.map +1 -1
- package/dist/embedder/factory.d.ts +3 -0
- package/dist/embedder/factory.js.map +1 -1
- package/dist/embedder/health.d.ts +3 -0
- package/dist/embedder/health.js.map +1 -1
- package/dist/embedder/http.d.ts +1 -0
- package/dist/embedder/http.js +4 -0
- package/dist/embedder/http.js.map +1 -1
- package/dist/embedder/ollama.d.ts +18 -5
- package/dist/embedder/ollama.js +10 -0
- package/dist/embedder/ollama.js.map +1 -1
- package/dist/embedder/openai.d.ts +17 -5
- package/dist/embedder/openai.js +9 -0
- package/dist/embedder/openai.js.map +1 -1
- package/dist/eval/index.d.ts +3 -0
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/run-token-test.d.ts +3 -0
- package/dist/eval/run-token-test.js +9 -45
- package/dist/eval/run-token-test.js.map +1 -1
- package/dist/eval/session-logger.js.map +1 -1
- package/dist/eval/storage.js +3 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/eval/token-analysis.d.ts +3 -0
- package/dist/eval/token-analysis.js +3 -0
- package/dist/eval/token-analysis.js.map +1 -1
- package/dist/eval/token-counter.d.ts +3 -0
- package/dist/eval/token-counter.js +3 -0
- package/dist/eval/token-counter.js.map +1 -1
- package/dist/eval/types.d.ts +3 -0
- package/dist/eval/types.js +3 -0
- package/dist/eval/types.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/indexer/description-stage.d.ts +26 -0
- package/dist/indexer/description-stage.js +22 -0
- package/dist/indexer/description-stage.js.map +1 -1
- package/dist/indexer/embed-stage.d.ts +14 -0
- package/dist/indexer/embed-stage.js +10 -0
- package/dist/indexer/embed-stage.js.map +1 -1
- package/dist/indexer/git-diff.d.ts +44 -0
- package/dist/indexer/git-diff.js +50 -0
- package/dist/indexer/git-diff.js.map +1 -1
- package/dist/indexer/metadata.d.ts +9 -0
- package/dist/indexer/metadata.js +12 -0
- package/dist/indexer/metadata.js.map +1 -1
- package/dist/indexer/pipeline.d.ts +24 -0
- package/dist/indexer/pipeline.js +17 -10
- package/dist/indexer/pipeline.js.map +1 -1
- package/dist/indexer/stats.d.ts +3 -0
- package/dist/indexer/stats.js.map +1 -1
- package/dist/indexer/watch.d.ts +9 -3
- package/dist/indexer/watch.js +22 -2
- package/dist/indexer/watch.js.map +1 -1
- package/dist/indexer/worker.js +3 -0
- package/dist/indexer/worker.js.map +1 -1
- package/dist/indexer.d.ts +4 -0
- package/dist/indexer.js +4 -0
- package/dist/indexer.js.map +1 -1
- package/dist/mcp/cli.js +3 -0
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/handlers.d.ts +3 -0
- package/dist/mcp/handlers.js +5 -2
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.js +3 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/opencode/create-read-tool.d.ts +3 -0
- package/dist/opencode/create-read-tool.js +3 -0
- package/dist/opencode/create-read-tool.js.map +1 -1
- package/dist/opencode/read-fallback.d.ts +3 -0
- package/dist/opencode/read-fallback.js +3 -0
- package/dist/opencode/read-fallback.js.map +1 -1
- package/dist/opencode/read-format.d.ts +3 -0
- package/dist/opencode/read-format.js +3 -0
- package/dist/opencode/read-format.js.map +1 -1
- package/dist/opencode/read-query.d.ts +3 -0
- package/dist/opencode/read-query.js +1 -4
- package/dist/opencode/read-query.js.map +1 -1
- package/dist/opencode/tool-args.d.ts +3 -0
- package/dist/opencode/tool-args.js +3 -0
- package/dist/opencode/tool-args.js.map +1 -1
- package/dist/opencode/tools.d.ts +25 -9
- package/dist/opencode/tools.js +24 -2
- package/dist/opencode/tools.js.map +1 -1
- package/dist/plugin-entry.d.ts +4 -0
- package/dist/plugin-entry.js +4 -0
- package/dist/plugin-entry.js.map +1 -1
- package/dist/plugin.d.ts +5 -0
- package/dist/plugin.js +52 -169
- package/dist/plugin.js.map +1 -1
- package/dist/retriever/context-optimizer.d.ts +44 -0
- package/dist/retriever/context-optimizer.js +202 -0
- package/dist/retriever/context-optimizer.js.map +1 -0
- package/dist/retriever/keyword-index.d.ts +14 -0
- package/dist/retriever/keyword-index.js +11 -0
- package/dist/retriever/keyword-index.js.map +1 -1
- package/dist/retriever/retriever.d.ts +17 -0
- package/dist/retriever/retriever.js +13 -0
- package/dist/retriever/retriever.js.map +1 -1
- package/dist/tui.d.ts +4 -0
- package/dist/tui.js +18 -38
- package/dist/tui.js.map +1 -1
- package/dist/types/opencode-plugin.d.ts +3 -0
- package/dist/updater.d.ts +4 -0
- package/dist/updater.js +4 -0
- package/dist/updater.js.map +1 -1
- package/dist/vectorstore/factory.d.ts +3 -0
- package/dist/vectorstore/factory.js +2 -2
- package/dist/vectorstore/factory.js.map +1 -1
- package/dist/vectorstore/lancedb.d.ts +2 -2
- package/dist/vectorstore/lancedb.js +4 -3
- package/dist/vectorstore/lancedb.js.map +1 -1
- package/dist/vectorstore/memory.d.ts +4 -0
- package/dist/vectorstore/memory.js +1 -0
- package/dist/vectorstore/memory.js.map +1 -1
- package/dist/watcher.d.ts +5 -0
- package/dist/watcher.js +5 -0
- package/dist/watcher.js.map +1 -1
- package/dist/web/api.d.ts +5 -2
- package/dist/web/api.js.map +1 -1
- package/dist/web/server.js +5 -2
- package/dist/web/server.js.map +1 -1
- package/dist/web/static.js +3 -0
- package/dist/web/static.js.map +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* @fileoverview Main package entry point. Re-exports all public API symbols:
|
|
3
|
+
* low-level building blocks (chunkers, embedders, vector stores, retrieval),
|
|
4
|
+
* high-level convenience API (search, index, getContext), and plugin entry.
|
|
4
5
|
*/
|
|
5
6
|
export { chunkFile, getChunker, registerChunker } from "./chunker/factory.js";
|
|
6
7
|
export { createEmbedder, embedBatch } from "./embedder/factory.js";
|
|
7
8
|
export { createDescriptionProvider } from "./describer/factory.js";
|
|
8
9
|
export { createVectorStore } from "./vectorstore/factory.js";
|
|
9
|
-
export {
|
|
10
|
+
export { LanceDbStore } from "./vectorstore/lancedb.js";
|
|
10
11
|
export { InMemoryVectorStore } from "./vectorstore/memory.js";
|
|
11
12
|
export { retrieve } from "./retriever/retriever.js";
|
|
13
|
+
export { optimizeContext, DEFAULT_CONTEXT_OPTIMIZATION } from "./retriever/context-optimizer.js";
|
|
12
14
|
export { loadConfig, DEFAULT_CONFIG } from "./core/config.js";
|
|
13
15
|
export { createBackgroundIndexer } from "./watcher.js";
|
|
14
16
|
export { createWatchIgnore } from "./indexer.js";
|
|
15
17
|
export { ImageChunker, createImageVisionProvider, getMimeType, SUPPORTED_IMAGE_EXTENSIONS } from "./chunker/image.js";
|
|
16
18
|
export type { RagConfig, DescriptionConfig, ImageDescriptionConfig } from "./core/config.js";
|
|
17
|
-
export type { Chunk, SearchResult, Chunker, DescriptionProvider, EmbeddingProvider, VectorStore } from "./core/interfaces.js";
|
|
19
|
+
export type { Chunk, SearchResult, OptimizedSearchResult, Chunker, DescriptionProvider, EmbeddingProvider, VectorStore } from "./core/interfaces.js";
|
|
20
|
+
export type { ContextOptimizationConfig, ContextOptimizationOptions } from "./retriever/context-optimizer.js";
|
|
18
21
|
/**
|
|
19
22
|
* High-level convenience API — search, index, and retrieve context in a single function call.
|
|
20
23
|
* @module
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* @fileoverview Main package entry point. Re-exports all public API symbols:
|
|
3
|
+
* low-level building blocks (chunkers, embedders, vector stores, retrieval),
|
|
4
|
+
* high-level convenience API (search, index, getContext), and plugin entry.
|
|
4
5
|
*/
|
|
5
6
|
export { chunkFile, getChunker, registerChunker } from "./chunker/factory.js";
|
|
6
7
|
export { createEmbedder, embedBatch } from "./embedder/factory.js";
|
|
7
8
|
export { createDescriptionProvider } from "./describer/factory.js";
|
|
8
9
|
export { createVectorStore } from "./vectorstore/factory.js";
|
|
9
|
-
export {
|
|
10
|
+
export { LanceDbStore } from "./vectorstore/lancedb.js";
|
|
10
11
|
export { InMemoryVectorStore } from "./vectorstore/memory.js";
|
|
11
12
|
export { retrieve } from "./retriever/retriever.js";
|
|
13
|
+
export { optimizeContext, DEFAULT_CONTEXT_OPTIMIZATION } from "./retriever/context-optimizer.js";
|
|
12
14
|
export { loadConfig, DEFAULT_CONFIG } from "./core/config.js";
|
|
13
15
|
export { createBackgroundIndexer } from "./watcher.js";
|
|
14
16
|
export { createWatchIgnore } from "./indexer.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAKtH;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpH,gEAAgE;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,kGAAkG;AAClG,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC;AAEhC,oDAAoD;AACpD,MAAM,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AAExC,uEAAuE;AACvE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Generates AI and fallback descriptions for code chunks.
|
|
3
|
+
*/
|
|
1
4
|
import type { Chunk, DescriptionProvider } from "../core/interfaces.js";
|
|
5
|
+
/** Result of a description generation run, including per-chunk descriptions and any failures. */
|
|
2
6
|
export interface DescriptionResult {
|
|
3
7
|
descriptionMap: Map<string, string>;
|
|
4
8
|
failures: Array<{
|
|
@@ -10,6 +14,28 @@ interface Logger {
|
|
|
10
14
|
warn(message: string): void;
|
|
11
15
|
debug(message: string): void;
|
|
12
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Generate AI or fallback descriptions for a set of code chunks.
|
|
19
|
+
*
|
|
20
|
+
* Chunks that already have a description (e.g. from docstrings) are skipped.
|
|
21
|
+
* Oversized chunks exceeding `maxContentChars` receive a fallback description
|
|
22
|
+
* instead of being sent to the LLM. Remaining chunks are sent in batch to
|
|
23
|
+
* the description provider, with individual fallback on batch failure.
|
|
24
|
+
*
|
|
25
|
+
* @param chunks - Chunks to describe.
|
|
26
|
+
* @param descriptionProvider - Provider that generates AI descriptions.
|
|
27
|
+
* @param logger - Optional logger for diagnostic messages.
|
|
28
|
+
* @param maxContentChars - Optional maximum content length for LLM submission;
|
|
29
|
+
* chunks longer than this get a fallback description.
|
|
30
|
+
* @returns A map of chunk ID to description and a list of failures.
|
|
31
|
+
*/
|
|
13
32
|
export declare function generateDescriptions(chunks: Chunk[], descriptionProvider: DescriptionProvider, logger?: Logger, maxContentChars?: number): Promise<DescriptionResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Build a simple fallback description from a chunk's file location metadata.
|
|
35
|
+
* Used when AI description generation is unavailable or fails.
|
|
36
|
+
*
|
|
37
|
+
* @param chunk - The chunk to describe.
|
|
38
|
+
* @returns A description string like `"lines 10-25, typescript"`.
|
|
39
|
+
*/
|
|
14
40
|
export declare function buildFallbackDescription(chunk: Chunk): string;
|
|
15
41
|
export {};
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate AI or fallback descriptions for a set of code chunks.
|
|
3
|
+
*
|
|
4
|
+
* Chunks that already have a description (e.g. from docstrings) are skipped.
|
|
5
|
+
* Oversized chunks exceeding `maxContentChars` receive a fallback description
|
|
6
|
+
* instead of being sent to the LLM. Remaining chunks are sent in batch to
|
|
7
|
+
* the description provider, with individual fallback on batch failure.
|
|
8
|
+
*
|
|
9
|
+
* @param chunks - Chunks to describe.
|
|
10
|
+
* @param descriptionProvider - Provider that generates AI descriptions.
|
|
11
|
+
* @param logger - Optional logger for diagnostic messages.
|
|
12
|
+
* @param maxContentChars - Optional maximum content length for LLM submission;
|
|
13
|
+
* chunks longer than this get a fallback description.
|
|
14
|
+
* @returns A map of chunk ID to description and a list of failures.
|
|
15
|
+
*/
|
|
1
16
|
export async function generateDescriptions(chunks, descriptionProvider, logger, maxContentChars) {
|
|
2
17
|
const descriptionMap = new Map();
|
|
3
18
|
const failures = [];
|
|
@@ -65,6 +80,13 @@ export async function generateDescriptions(chunks, descriptionProvider, logger,
|
|
|
65
80
|
}
|
|
66
81
|
return { descriptionMap, failures };
|
|
67
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Build a simple fallback description from a chunk's file location metadata.
|
|
85
|
+
* Used when AI description generation is unavailable or fails.
|
|
86
|
+
*
|
|
87
|
+
* @param chunk - The chunk to describe.
|
|
88
|
+
* @returns A description string like `"lines 10-25, typescript"`.
|
|
89
|
+
*/
|
|
68
90
|
export function buildFallbackDescription(chunk) {
|
|
69
91
|
return `lines ${chunk.metadata.startLine}-${chunk.metadata.endLine}, ${chunk.metadata.language}`;
|
|
70
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description-stage.js","sourceRoot":"","sources":["../../src/indexer/description-stage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"description-stage.js","sourceRoot":"","sources":["../../src/indexer/description-stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Batches chunks for embedding generation.
|
|
3
|
+
*/
|
|
1
4
|
import type { Chunk, EmbeddingProvider } from "../core/interfaces.js";
|
|
5
|
+
/** Options for embedding a batch of chunks. */
|
|
2
6
|
export interface EmbedChunksOptions {
|
|
3
7
|
chunks: Chunk[];
|
|
4
8
|
embedder: EmbeddingProvider;
|
|
5
9
|
batchSize: number;
|
|
6
10
|
concurrency: number;
|
|
7
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate embeddings for chunks that don't already have one.
|
|
14
|
+
* Skips chunks that already have a valid embedding vector.
|
|
15
|
+
*
|
|
16
|
+
* @param chunks - Chunks to embed; existing embeddings are preserved in-place.
|
|
17
|
+
* @param embedder - Embedding provider for vector generation.
|
|
18
|
+
* @param batchSize - Number of texts to embed per batch.
|
|
19
|
+
* @param concurrency - Number of concurrent embedding requests.
|
|
20
|
+
* @returns The same chunk array with embeddings attached.
|
|
21
|
+
*/
|
|
8
22
|
export declare function embedChunks({ chunks, embedder, batchSize, concurrency, }: EmbedChunksOptions): Promise<Chunk[]>;
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { embedBatch } from "../embedder/factory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generate embeddings for chunks that don't already have one.
|
|
4
|
+
* Skips chunks that already have a valid embedding vector.
|
|
5
|
+
*
|
|
6
|
+
* @param chunks - Chunks to embed; existing embeddings are preserved in-place.
|
|
7
|
+
* @param embedder - Embedding provider for vector generation.
|
|
8
|
+
* @param batchSize - Number of texts to embed per batch.
|
|
9
|
+
* @param concurrency - Number of concurrent embedding requests.
|
|
10
|
+
* @returns The same chunk array with embeddings attached.
|
|
11
|
+
*/
|
|
2
12
|
export async function embedChunks({ chunks, embedder, batchSize, concurrency, }) {
|
|
3
13
|
if (chunks.length === 0)
|
|
4
14
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed-stage.js","sourceRoot":"","sources":["../../src/indexer/embed-stage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embed-stage.js","sourceRoot":"","sources":["../../src/indexer/embed-stage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAUpD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,GACQ;IACnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC5D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAEhG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;YAClC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,CAAC,QAAQ,CAAE,CAAC,SAAS,GAAG,GAAe,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,9 +1,53 @@
|
|
|
1
|
+
/** Result of comparing the working tree against a prior commit. */
|
|
1
2
|
export interface GitDiffResult {
|
|
2
3
|
changedFiles: string[];
|
|
3
4
|
deletedFiles: string[];
|
|
4
5
|
currentCommit: string;
|
|
5
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the root directory of the git repository containing `cwd`.
|
|
9
|
+
*
|
|
10
|
+
* @param cwd - A path inside the repository.
|
|
11
|
+
* @returns The absolute repository root path, or `null` if not a git repo.
|
|
12
|
+
*/
|
|
6
13
|
export declare function getRepoRoot(cwd: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Get the full SHA of the current HEAD commit.
|
|
16
|
+
*
|
|
17
|
+
* @param cwd - A path inside the repository.
|
|
18
|
+
* @returns The commit SHA, or `null` on failure.
|
|
19
|
+
*/
|
|
7
20
|
export declare function getCurrentCommit(cwd: string): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* List changed, added, and deleted files between `fromCommit` and HEAD.
|
|
23
|
+
*
|
|
24
|
+
* @param cwd - A path inside the repository.
|
|
25
|
+
* @param fromCommit - The commit SHA to diff against.
|
|
26
|
+
* @returns A diff result, or `null` if the git command fails.
|
|
27
|
+
*/
|
|
8
28
|
export declare function getChangedFilesSince(cwd: string, fromCommit: string): GitDiffResult | null;
|
|
29
|
+
/**
|
|
30
|
+
* List untracked files in the repository, respecting .gitignore rules.
|
|
31
|
+
*
|
|
32
|
+
* @param cwd - A path inside the repository.
|
|
33
|
+
* @returns An array of untracked file paths (relative to repo root).
|
|
34
|
+
*/
|
|
9
35
|
export declare function getUntrackedFiles(cwd: string): string[];
|
|
36
|
+
/** Result of comparing the working tree against HEAD. */
|
|
37
|
+
export interface WorkingTreeChanges {
|
|
38
|
+
/** Modified/renamed tracked files (unstaged + staged but not committed). */
|
|
39
|
+
changedFiles: string[];
|
|
40
|
+
/** Deleted tracked files (relative to repo root). */
|
|
41
|
+
deletedFiles: string[];
|
|
42
|
+
/** Untracked files respecting .gitignore (relative to repo root). */
|
|
43
|
+
untrackedFiles: string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detect uncommitted working-tree changes by comparing against HEAD.
|
|
47
|
+
* Uses `git diff-index` for tracked file modifications, `git diff --diff-filter=D`
|
|
48
|
+
* for deleted files, and `git ls-files --others` for untracked files.
|
|
49
|
+
*
|
|
50
|
+
* @param cwd - A path inside the repository.
|
|
51
|
+
* @returns Working-tree changes, or `null` if not a git repo.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getWorkingTreeChanges(cwd: string): WorkingTreeChanges | null;
|
package/dist/indexer/git-diff.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Uses git to detect changed, deleted, and untracked files for incremental indexing.
|
|
3
|
+
*/
|
|
1
4
|
import { execSync } from "node:child_process";
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the root directory of the git repository containing `cwd`.
|
|
7
|
+
*
|
|
8
|
+
* @param cwd - A path inside the repository.
|
|
9
|
+
* @returns The absolute repository root path, or `null` if not a git repo.
|
|
10
|
+
*/
|
|
2
11
|
export function getRepoRoot(cwd) {
|
|
3
12
|
try {
|
|
4
13
|
return execSync("git rev-parse --show-toplevel", {
|
|
@@ -12,6 +21,12 @@ export function getRepoRoot(cwd) {
|
|
|
12
21
|
return null;
|
|
13
22
|
}
|
|
14
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the full SHA of the current HEAD commit.
|
|
26
|
+
*
|
|
27
|
+
* @param cwd - A path inside the repository.
|
|
28
|
+
* @returns The commit SHA, or `null` on failure.
|
|
29
|
+
*/
|
|
15
30
|
export function getCurrentCommit(cwd) {
|
|
16
31
|
try {
|
|
17
32
|
return execSync("git rev-parse HEAD", {
|
|
@@ -25,6 +40,13 @@ export function getCurrentCommit(cwd) {
|
|
|
25
40
|
return null;
|
|
26
41
|
}
|
|
27
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* List changed, added, and deleted files between `fromCommit` and HEAD.
|
|
45
|
+
*
|
|
46
|
+
* @param cwd - A path inside the repository.
|
|
47
|
+
* @param fromCommit - The commit SHA to diff against.
|
|
48
|
+
* @returns A diff result, or `null` if the git command fails.
|
|
49
|
+
*/
|
|
28
50
|
export function getChangedFilesSince(cwd, fromCommit) {
|
|
29
51
|
try {
|
|
30
52
|
const changedRaw = execSync(`git diff --name-only --diff-filter=ACMRT "${fromCommit}" HEAD`, { cwd, encoding: "utf-8", timeout: 10000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
@@ -40,6 +62,12 @@ export function getChangedFilesSince(cwd, fromCommit) {
|
|
|
40
62
|
return null;
|
|
41
63
|
}
|
|
42
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* List untracked files in the repository, respecting .gitignore rules.
|
|
67
|
+
*
|
|
68
|
+
* @param cwd - A path inside the repository.
|
|
69
|
+
* @returns An array of untracked file paths (relative to repo root).
|
|
70
|
+
*/
|
|
43
71
|
export function getUntrackedFiles(cwd) {
|
|
44
72
|
try {
|
|
45
73
|
const raw = execSync("git ls-files --others --exclude-standard", { cwd, encoding: "utf-8", timeout: 5000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
@@ -49,4 +77,26 @@ export function getUntrackedFiles(cwd) {
|
|
|
49
77
|
return [];
|
|
50
78
|
}
|
|
51
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Detect uncommitted working-tree changes by comparing against HEAD.
|
|
82
|
+
* Uses `git diff-index` for tracked file modifications, `git diff --diff-filter=D`
|
|
83
|
+
* for deleted files, and `git ls-files --others` for untracked files.
|
|
84
|
+
*
|
|
85
|
+
* @param cwd - A path inside the repository.
|
|
86
|
+
* @returns Working-tree changes, or `null` if not a git repo.
|
|
87
|
+
*/
|
|
88
|
+
export function getWorkingTreeChanges(cwd) {
|
|
89
|
+
try {
|
|
90
|
+
const modifiedRaw = execSync("git diff-index --name-only -M HEAD", { cwd, encoding: "utf-8", timeout: 10000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
91
|
+
const deletedRaw = execSync("git diff --name-only --diff-filter=D HEAD", { cwd, encoding: "utf-8", timeout: 10000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
92
|
+
const untrackedRaw = execSync("git ls-files --others --exclude-standard", { cwd, encoding: "utf-8", timeout: 5000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
93
|
+
const changedFiles = modifiedRaw.length > 0 ? modifiedRaw.split("\n") : [];
|
|
94
|
+
const deletedFiles = deletedRaw.length > 0 ? deletedRaw.split("\n") : [];
|
|
95
|
+
const untrackedFiles = untrackedRaw.length > 0 ? untrackedRaw.split("\n") : [];
|
|
96
|
+
return { changedFiles, deletedFiles, untrackedFiles };
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
52
102
|
//# sourceMappingURL=git-diff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../src/indexer/git-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../src/indexer/git-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a metadata header string for embedding context that describes the
|
|
3
|
+
* file type, top-level directory, content classification, and document title.
|
|
4
|
+
*
|
|
5
|
+
* @param filePath - Absolute path to the file.
|
|
6
|
+
* @param cwd - Workspace root directory (used to compute relative path).
|
|
7
|
+
* @param content - File content used to extract a document title.
|
|
8
|
+
* @returns A space-delimited metadata string such as `"[typescript] [src] [source] MyComponent"`.
|
|
9
|
+
*/
|
|
1
10
|
export declare function buildFileMetadataHeader(filePath: string, cwd: string, content: string): string;
|
package/dist/indexer/metadata.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Builds metadata headers (file type, content type, document title) for embedding context.
|
|
3
|
+
*/
|
|
1
4
|
import path from "node:path";
|
|
2
5
|
const FILE_TYPE_LABELS = {
|
|
3
6
|
".pdf": "pdf",
|
|
@@ -76,6 +79,15 @@ function extractDocumentTitle(content, filePath) {
|
|
|
76
79
|
.replace(/\b\w/g, (c) => c.toUpperCase())
|
|
77
80
|
.slice(0, 80);
|
|
78
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Build a metadata header string for embedding context that describes the
|
|
84
|
+
* file type, top-level directory, content classification, and document title.
|
|
85
|
+
*
|
|
86
|
+
* @param filePath - Absolute path to the file.
|
|
87
|
+
* @param cwd - Workspace root directory (used to compute relative path).
|
|
88
|
+
* @param content - File content used to extract a document title.
|
|
89
|
+
* @returns A space-delimited metadata string such as `"[typescript] [src] [source] MyComponent"`.
|
|
90
|
+
*/
|
|
79
91
|
export function buildFileMetadataHeader(filePath, cwd, content) {
|
|
80
92
|
const ext = path.extname(filePath).toLowerCase();
|
|
81
93
|
const relPath = path.relative(cwd, filePath).replace(/\\/g, "/");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/indexer/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAA2B;IAC/C,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,YAAY;IAC3B,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,+CAA+C,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5H,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4DAA4D,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,eAAe,CAAC;IACpH,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IAClJ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uCAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mDAAmD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACnG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACtF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,QAAQ;SACZ,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACxC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,GAAW,EAAE,OAAe;IACpF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IACtC,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;IAChD,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC"}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/indexer/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,18 @@ export interface RunIndexPassOptions {
|
|
|
29
29
|
abortSignal?: AbortSignal;
|
|
30
30
|
/** Embedding vector dimension — needed when creating a temporary store for atomic rebuilds. */
|
|
31
31
|
dimension?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Caller-provided list of changed file paths (absolute). When set, only these
|
|
34
|
+
* files are scanned — full directory walk is skipped.
|
|
35
|
+
*/
|
|
36
|
+
filterPaths?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* Caller-provided list of deleted file paths (absolute). When set, these
|
|
39
|
+
* entries are removed from the index without comparing against the scanned set.
|
|
40
|
+
*/
|
|
41
|
+
deletedPaths?: string[];
|
|
32
42
|
}
|
|
43
|
+
/** Minimal logger interface for indexing pipeline diagnostics. */
|
|
33
44
|
export interface Logger {
|
|
34
45
|
info(message: string): void;
|
|
35
46
|
warn(message: string): void;
|
|
@@ -44,4 +55,17 @@ export interface Logger {
|
|
|
44
55
|
* @returns Aggregate statistics for the pass.
|
|
45
56
|
*/
|
|
46
57
|
export declare function runIndexPass(options: RunIndexPassOptions): Promise<IndexRunStats>;
|
|
58
|
+
/**
|
|
59
|
+
* Build an overview of the current index health without running a full pass.
|
|
60
|
+
* Scans workspace files and compares their hashes against the manifest to
|
|
61
|
+
* determine how many are up-to-date vs pending re-indexing.
|
|
62
|
+
*
|
|
63
|
+
* @param cwd - Workspace root directory.
|
|
64
|
+
* @param storePath - Path to the vector store data directory.
|
|
65
|
+
* @param config - Full RAG configuration.
|
|
66
|
+
* @param store - Vector store instance for chunk count.
|
|
67
|
+
* @param skipScan - When true, skip the workspace file scan and only report
|
|
68
|
+
* manifest / store metadata.
|
|
69
|
+
* @returns A summary of the current index status.
|
|
70
|
+
*/
|
|
47
71
|
export declare function getIndexStatusSummary(cwd: string, storePath: string, config: RagConfig, store: VectorStore, skipScan?: boolean): Promise<IndexStatusSummary>;
|
package/dist/indexer/pipeline.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Orchestrates the full indexing pipeline: scan, chunk, embed, and store.
|
|
3
|
+
*/
|
|
1
4
|
import fs from "node:fs/promises";
|
|
2
5
|
import path from "node:path";
|
|
3
6
|
import pLimit from "p-limit";
|
|
@@ -151,7 +154,7 @@ async function runIndexPassInner(options, logger) {
|
|
|
151
154
|
delete manifest.files[key];
|
|
152
155
|
}
|
|
153
156
|
manifest.lastIndexedAt = undefined;
|
|
154
|
-
rebuildPerformed = existingCount > 0 ||
|
|
157
|
+
rebuildPerformed = existingCount > 0 || !!options.force;
|
|
155
158
|
if (manifestStatus !== "ok" && existingCount > 0) {
|
|
156
159
|
logger.warn("Manifest missing or corrupt; rebuilding full index.");
|
|
157
160
|
}
|
|
@@ -225,7 +228,6 @@ async function runIndexPassInner(options, logger) {
|
|
|
225
228
|
logger.debug(`Removed ${stats.deletedFiles} deleted files from index.`);
|
|
226
229
|
}
|
|
227
230
|
logger.debug(`Processing ${workspaceFiles.length} files (${newCount} new, ${modifiedCount} modified, ${unchangedCount} unchanged)...`);
|
|
228
|
-
// ── Phase 1: prepare all files (chunk + keyword, defer descriptions if provider present) ──
|
|
229
231
|
const limit = pLimit(options.config.indexing.concurrency);
|
|
230
232
|
const deferDescriptions = !!options.descriptionProvider;
|
|
231
233
|
const prepared = await Promise.all(workspaceFiles.map((file) => limit(async () => {
|
|
@@ -241,7 +243,6 @@ async function runIndexPassInner(options, logger) {
|
|
|
241
243
|
}
|
|
242
244
|
return prep;
|
|
243
245
|
})));
|
|
244
|
-
// ── Phase 1.5: global description generation (single pool, no nested concurrency) ──
|
|
245
246
|
if (deferDescriptions) {
|
|
246
247
|
const deferredPreps = prepared.filter((p) => p.chunks && p.chunks.length > 0 && p.relPath !== undefined);
|
|
247
248
|
if (deferredPreps.length > 0) {
|
|
@@ -286,13 +287,11 @@ async function runIndexPassInner(options, logger) {
|
|
|
286
287
|
}
|
|
287
288
|
}
|
|
288
289
|
}
|
|
289
|
-
// Phase 1.6: build textToEmbed with descriptions injected
|
|
290
290
|
for (const prep of deferredPreps) {
|
|
291
291
|
prep.textToEmbed = buildTextsToEmbed(prep.chunks, prep.relPath, prep.metaHeader ?? "", prep.docPrefix ?? "", prep.isImageFile ?? false);
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
|
-
// ── Phase 2+3: per-file delete, embed + store (in parallel) ──
|
|
296
295
|
// Deletions for modified/re-removed files happen per-worker, right before
|
|
297
296
|
// embedding, so that an abort mid-embed doesn't orphan old entries.
|
|
298
297
|
const isOllama = options.embedder.name === "ollama";
|
|
@@ -311,11 +310,9 @@ async function runIndexPassInner(options, logger) {
|
|
|
311
310
|
const aborted = () => options.abortSignal?.aborted ?? false;
|
|
312
311
|
const embedStoreLimit = pLimit(options.config.indexing.concurrency);
|
|
313
312
|
const workerResults = await Promise.all(prepared.map((prep) => embedStoreLimit(async () => {
|
|
314
|
-
// ── Check abort signal before any work ──
|
|
315
313
|
if (aborted()) {
|
|
316
314
|
return { normalizedPath: prep.normalizedPath, skipped: true };
|
|
317
315
|
}
|
|
318
|
-
// ── Early results (empty / too-small / unchanged / chunking failure) ──
|
|
319
316
|
if (prep.earlyResult) {
|
|
320
317
|
// Remove stale manifest/store entries for files that no longer produce chunks
|
|
321
318
|
if (prep.earlyResult.isRemoved) {
|
|
@@ -336,7 +333,6 @@ async function runIndexPassInner(options, logger) {
|
|
|
336
333
|
descriptionFailed: prep.descriptionFailed,
|
|
337
334
|
};
|
|
338
335
|
}
|
|
339
|
-
// ── Embed ──
|
|
340
336
|
const batchSize = isOllama
|
|
341
337
|
? Math.min(prep.textToEmbed.length, ollamaMaxBatch)
|
|
342
338
|
: defaultBatchSize;
|
|
@@ -379,7 +375,6 @@ async function runIndexPassInner(options, logger) {
|
|
|
379
375
|
options.progress?.finishFile(prep.fileLabel);
|
|
380
376
|
return result;
|
|
381
377
|
})));
|
|
382
|
-
// Strip skipped sentinels
|
|
383
378
|
const finalResults = [];
|
|
384
379
|
for (const r of workerResults) {
|
|
385
380
|
if (r.skipped)
|
|
@@ -396,7 +391,6 @@ async function runIndexPassInner(options, logger) {
|
|
|
396
391
|
entry.size = size;
|
|
397
392
|
}
|
|
398
393
|
}
|
|
399
|
-
// ── Aggregate stats ──
|
|
400
394
|
aggregateStats(stats, finalResults);
|
|
401
395
|
// Update timestamps; advance lastGitCommit ONLY on a complete pass
|
|
402
396
|
manifest.lastIndexedAt = Date.now();
|
|
@@ -487,6 +481,19 @@ function aggregateStats(stats, results) {
|
|
|
487
481
|
}
|
|
488
482
|
}
|
|
489
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Build an overview of the current index health without running a full pass.
|
|
486
|
+
* Scans workspace files and compares their hashes against the manifest to
|
|
487
|
+
* determine how many are up-to-date vs pending re-indexing.
|
|
488
|
+
*
|
|
489
|
+
* @param cwd - Workspace root directory.
|
|
490
|
+
* @param storePath - Path to the vector store data directory.
|
|
491
|
+
* @param config - Full RAG configuration.
|
|
492
|
+
* @param store - Vector store instance for chunk count.
|
|
493
|
+
* @param skipScan - When true, skip the workspace file scan and only report
|
|
494
|
+
* manifest / store metadata.
|
|
495
|
+
* @returns A summary of the current index status.
|
|
496
|
+
*/
|
|
490
497
|
export async function getIndexStatusSummary(cwd, storePath, config, store, skipScan) {
|
|
491
498
|
const loadResult = await loadManifest(storePath);
|
|
492
499
|
const manifest = loadResult.manifest;
|