opencode-rag-plugin 1.3.6 → 1.5.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 +51 -1
- package/dist/cli.d.ts +0 -5
- package/dist/cli.js +250 -103
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +18 -1
- package/dist/core/config.js +16 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/interfaces.d.ts +6 -1
- package/dist/core/manifest.d.ts +2 -0
- package/dist/core/manifest.js +5 -2
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/provider-defaults.d.ts +9 -0
- package/dist/core/provider-defaults.js +84 -0
- package/dist/core/provider-defaults.js.map +1 -0
- package/dist/core/resolve-api-key.d.ts +2 -0
- package/dist/core/resolve-api-key.js +71 -0
- package/dist/core/resolve-api-key.js.map +1 -0
- package/dist/core/runtime-overrides.d.ts +36 -0
- package/dist/core/runtime-overrides.js +106 -0
- package/dist/core/runtime-overrides.js.map +1 -0
- package/dist/describer/anthropic.d.ts +10 -0
- package/dist/describer/anthropic.js +167 -0
- package/dist/describer/anthropic.js.map +1 -0
- package/dist/describer/describer.d.ts +12 -0
- package/dist/describer/describer.js +177 -0
- package/dist/describer/describer.js.map +1 -0
- package/dist/describer/factory.d.ts +3 -0
- package/dist/describer/factory.js +19 -0
- package/dist/describer/factory.js.map +1 -0
- package/dist/describer/gemini.d.ts +10 -0
- package/dist/describer/gemini.js +177 -0
- package/dist/describer/gemini.js.map +1 -0
- package/dist/embedder/cohere.d.ts +12 -0
- package/dist/embedder/cohere.js +35 -0
- package/dist/embedder/cohere.js.map +1 -0
- package/dist/embedder/factory.d.ts +1 -1
- package/dist/embedder/factory.js +19 -12
- package/dist/embedder/factory.js.map +1 -1
- package/dist/embedder/ollama.d.ts +1 -1
- package/dist/embedder/ollama.js +1 -1
- package/dist/embedder/ollama.js.map +1 -1
- package/dist/embedder/openai.d.ts +8 -1
- package/dist/embedder/openai.js +30 -2
- package/dist/embedder/openai.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +2 -1
- package/dist/indexer.js +38 -1
- package/dist/indexer.js.map +1 -1
- package/dist/opencode/create-read-tool.js +2 -2
- package/dist/opencode/create-read-tool.js.map +1 -1
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.js +67 -18
- package/dist/plugin.js.map +1 -1
- package/dist/retriever/retriever.d.ts +1 -0
- package/dist/retriever/retriever.js +2 -1
- package/dist/retriever/retriever.js.map +1 -1
- package/dist/tui.js +474 -11
- package/dist/tui.js.map +1 -1
- package/dist/vectorstore/lancedb.d.ts +19 -0
- package/dist/vectorstore/lancedb.js +162 -41
- package/dist/vectorstore/lancedb.js.map +1 -1
- package/dist/watcher.d.ts +6 -1
- package/dist/watcher.js +72 -26
- package/dist/watcher.js.map +1 -1
- package/package.json +3 -2
package/ReadMe.md
CHANGED
|
@@ -110,6 +110,51 @@ Running `opencode-rag init` creates the config file `opencode-rag.json` in your
|
|
|
110
110
|
| `openCode.autoInject.minScore` | `0.75` | Minimum relevance score to inject actual code (0–1). |
|
|
111
111
|
| `retrieval.topK` | `10` | Default number of chunks fetched per query. |
|
|
112
112
|
| `retrieval.hybridSearch.enabled` | `true` | Enables combined TF×IDF + vector search. |
|
|
113
|
+
### TUI Settings Menu
|
|
114
|
+
|
|
115
|
+
When running inside OpenCode, the plugin provides a settings panel accessible from the OpenCode sidebar:
|
|
116
|
+
- **Retrieval**: `topK`, `minScore`, `maxChunks`
|
|
117
|
+
- **Embedding**: Model picker dropdown (populated from OpenCode's registered providers) with custom manual entry
|
|
118
|
+
- **LLM Descriptions**: Enable/disable toggle, model picker dropdown
|
|
119
|
+
|
|
120
|
+
Settings are persisted to `${storePath}/runtime-overrides.json` and take precedence over `opencode-rag.json`. The plugin reloads these on a 5-second TTL.
|
|
121
|
+
|
|
122
|
+
### API Key Auto-Resolution
|
|
123
|
+
|
|
124
|
+
If you set `embedding.provider` or `description.provider` to `"openai"` but don't specify an `apiKey` in `opencode-rag.json`, the plugin automatically resolves the key from OpenCode's own provider configuration (`.opencode/opencode.json`, `opencode.json`, or `~/.config/opencode/opencode.jsonc`).
|
|
125
|
+
|
|
126
|
+
### Manifest Schema Versioning
|
|
127
|
+
|
|
128
|
+
The manifest file now contains a `schemaVersion` field. If the stored manifest has a mismatched version, a full index rebuild is triggered automatically — this prevents silent corruption when the manifest format changes between plugin versions.
|
|
129
|
+
|
|
130
|
+
### Description-Based Embedding (Enabled by Default)
|
|
131
|
+
|
|
132
|
+
The indexer uses an LLM to generate natural-language descriptions of code chunks, then combines the description with the raw code for embedding. This captures both semantic meaning (from the description) and code-level similarity (from the code itself), dramatically improving search quality for natural language and code-based queries alike.
|
|
133
|
+
|
|
134
|
+
> As this needs more processing power, it is recommended to disable it (`description.enabled: false`) if you don't have a dedicated GPU for inference or want to reduce latency during indexing.
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"description": {
|
|
139
|
+
"enabled": true,
|
|
140
|
+
"provider": "ollama",
|
|
141
|
+
"baseUrl": "http://localhost:11434/api",
|
|
142
|
+
"model": "qwen2.5:3b",
|
|
143
|
+
"timeoutMs": 60000,
|
|
144
|
+
"systemPrompt": "Describe code for semantic search in short simple words, simple grammar, no code, no comments."
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Option | Default | Description |
|
|
150
|
+
|--------|---------|-------------|
|
|
151
|
+
| `description.enabled` | `true` | Enable description-based embedding. Set to `false` to embed raw code instead. |
|
|
152
|
+
| `description.provider` | `"ollama"` | LLM provider (`"ollama"` or `"openai"`). |
|
|
153
|
+
| `description.model` | `"qwen2.5:3b"` | Model name for description generation. |
|
|
154
|
+
| `description.systemPrompt` | *(see above)* | Customizable system prompt for the LLM. |
|
|
155
|
+
| `description.timeoutMs` | `60000` | Timeout per LLM call. |
|
|
156
|
+
|
|
157
|
+
The embedded text is formed as `description + "\n\n" + code content`. The description and code are still stored as separate fields in LanceDB. Keyword search continues to use the raw code content. Even when LLM descriptions are disabled, chunk descriptions still include the file path and line range (e.g. `src/foo.ts, lines 10-42`). If the LLM call fails during indexing, the chunk falls back to embedding raw content with a warning logged.
|
|
113
158
|
|
|
114
159
|
<details>
|
|
115
160
|
<summary>View Logging Configuration</summary>
|
|
@@ -155,7 +200,7 @@ After each user message, a `chat.message` hook appends up to 10 relevant file su
|
|
|
155
200
|
|
|
156
201
|
## CLI Interface
|
|
157
202
|
|
|
158
|
-
The CLI interface (`opencode-rag`) provides full access to build, manage, and search your project's vector database, even without
|
|
203
|
+
The CLI interface (`opencode-rag`) provides full access to build, manage, and search your project's vector database, even without using OpenCode.
|
|
159
204
|
This is mainly intended for testing/debugging purposes, but can also be integrated into your own applications or scripts.
|
|
160
205
|
|
|
161
206
|
```bash
|
|
@@ -174,6 +219,11 @@ opencode-rag query "How is authentication handled?" --top-k 5
|
|
|
174
219
|
# Show index statistics or clear data
|
|
175
220
|
opencode-rag status
|
|
176
221
|
opencode-rag clear
|
|
222
|
+
|
|
223
|
+
# Inspect indexed data
|
|
224
|
+
opencode-rag list # list all indexed files with chunk counts
|
|
225
|
+
opencode-rag show src/auth.ts # show chunks for a specific file
|
|
226
|
+
opencode-rag dump --limit 50 # dump all chunks (paginated)
|
|
177
227
|
```
|
|
178
228
|
|
|
179
229
|
---
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
export declare function removeStaleGlobalPluginRegistrations(homeDir: string, pluginName: string): string[];
|
|
3
|
-
/**
|
|
4
|
-
* Determine whether the CLI should auto-run for the current module.
|
|
5
|
-
* Resolves the first argv entry so symlinked binaries compare against the
|
|
6
|
-
* real file path, and returns false if the path cannot be resolved.
|
|
7
|
-
*/
|
|
8
3
|
export declare function shouldAutoRunCli(moduleUrl: string, argv1?: string): boolean;
|
|
9
4
|
export declare function runCli(argv?: string[]): Promise<void>;
|