opencode-rag-plugin 1.6.2 → 1.7.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 +27 -57
- package/dist/chunker/base.d.ts +1 -0
- package/dist/chunker/base.js +26 -0
- package/dist/chunker/base.js.map +1 -1
- package/dist/chunker/cpp.js +0 -3
- package/dist/chunker/cpp.js.map +1 -1
- package/dist/chunker/csharp.js +2 -4
- package/dist/chunker/csharp.js.map +1 -1
- package/dist/chunker/factory.d.ts +1 -1
- package/dist/chunker/factory.js +9 -2
- package/dist/chunker/factory.js.map +1 -1
- package/dist/chunker/go.js +0 -1
- package/dist/chunker/go.js.map +1 -1
- package/dist/chunker/grammar.js +8 -2
- package/dist/chunker/grammar.js.map +1 -1
- package/dist/chunker/java.js +0 -1
- package/dist/chunker/java.js.map +1 -1
- package/dist/chunker/javascript.js +0 -2
- package/dist/chunker/javascript.js.map +1 -1
- package/dist/chunker/kotlin.js +0 -2
- package/dist/chunker/kotlin.js.map +1 -1
- package/dist/chunker/python.js +0 -1
- package/dist/chunker/python.js.map +1 -1
- package/dist/chunker/ruby.js +0 -2
- package/dist/chunker/ruby.js.map +1 -1
- package/dist/chunker/rust.js +0 -1
- package/dist/chunker/rust.js.map +1 -1
- package/dist/chunker/swift.js +0 -3
- package/dist/chunker/swift.js.map +1 -1
- package/dist/chunker/typescript.js +0 -2
- package/dist/chunker/typescript.js.map +1 -1
- package/dist/cli.js +78 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +5 -0
- package/dist/core/config.js +8 -0
- package/dist/core/config.js.map +1 -1
- package/dist/indexer.js +131 -91
- package/dist/indexer.js.map +1 -1
- package/dist/opencode/tools.js +4 -6
- package/dist/opencode/tools.js.map +1 -1
- package/dist/plugin.js +11 -6
- package/dist/plugin.js.map +1 -1
- package/dist/vectorstore/lancedb.d.ts +2 -0
- package/dist/vectorstore/lancedb.js +12 -0
- package/dist/vectorstore/lancedb.js.map +1 -1
- package/dist/watcher.js +2 -0
- package/dist/watcher.js.map +1 -1
- package/package.json +2 -1
package/ReadMe.md
CHANGED
|
@@ -61,70 +61,40 @@ opencode-rag query "authentication middleware"
|
|
|
61
61
|
| [Troubleshooting](doc/troubleshooting.md) | Common issues, logging, debugging |
|
|
62
62
|
| [Roadmap](doc/roadmap.md) | Completed items, short/mid/long-term plans |
|
|
63
63
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
Add this to your workspace's `AGENTS.md` so OpenCode agents know how to use the plugin:
|
|
67
|
-
|
|
68
|
-
```markdown
|
|
69
|
-
## OpenCodeRAG Plugin
|
|
70
|
-
|
|
71
|
-
This workspace has OpenCodeRAG installed for semantic code retrieval.
|
|
72
|
-
|
|
73
|
-
### `opencode-rag-context` tool
|
|
74
|
-
Before planning, editing, or answering, use this tool to retrieve relevant code
|
|
75
|
-
chunks with file paths, line ranges, and surrounding implementation.
|
|
76
|
-
- `query` (required) — narrow, specific search, e.g. `"authentication middleware setup"`
|
|
77
|
-
- `pathHints` (optional) — up to 10 path filters, e.g. `["src/auth/"]`
|
|
78
|
-
- `languageHints` (optional) — up to 10 language filters, e.g. `["typescript"]`
|
|
79
|
-
- `topK` (optional) — result count (1–25, default 10)
|
|
80
|
-
|
|
81
|
-
### `search_semantic` tool
|
|
82
|
-
Search indexed code by meaning, not keywords. Use for conceptual questions like
|
|
83
|
-
"How does authentication work?" or "Where is the chunking logic?".
|
|
84
|
-
- `query` (required) — natural language description of what you're looking for
|
|
85
|
-
- `pathHints` (optional) — up to 10 path filters
|
|
86
|
-
- `languageHints` (optional) — up to 10 language filters
|
|
87
|
-
- `topK` (optional) — result count (1–25, default 10)
|
|
88
|
-
|
|
89
|
-
### `get_file_skeleton` tool
|
|
90
|
-
Get a quick structural overview of a file without reading the full contents.
|
|
91
|
-
Returns functions, classes, interfaces, and other declarations with line numbers.
|
|
92
|
-
- `filePath` (required) — path to the file (relative to workspace root or absolute)
|
|
93
|
-
|
|
94
|
-
### `find_usages` tool
|
|
95
|
-
**Essential before editing a function or type.** Find every line in the
|
|
96
|
-
indexed codebase that references a given symbol, with surrounding context.
|
|
97
|
-
- `symbolName` (required) — the symbol to search for (function, variable, class, etc.)
|
|
98
|
-
- `pathHint` (optional) — narrow search to a specific directory
|
|
99
|
-
- `topK` (optional) — max results (1–50, default 30)
|
|
100
|
-
|
|
101
|
-
### Indexing
|
|
102
|
-
- Changed files are auto-indexed in the background (debounced 5s).
|
|
103
|
-
- If searches return no results, run `opencode-rag index` in the terminal.
|
|
104
|
-
```
|
|
64
|
+
## Agent Discovery
|
|
105
65
|
|
|
106
|
-
|
|
66
|
+
OpenCodeRAG registers tools that agents can invoke directly. Agents discover these tools via the OpenCode **skill system** — when `opencode-rag init` runs, it creates `.opencode/skills/opencode-rag/SKILL.md` which teaches agents the recommended workflow:
|
|
107
67
|
|
|
108
|
-
|
|
68
|
+
1. **Skeleton first** — `get_file_skeleton(filePath)` to orient in a file
|
|
69
|
+
2. **Find usages** — `find_usages(symbolName)` before editing any symbol
|
|
70
|
+
3. **Search** — `opencode-rag-context(query)` or `search_semantic(query)` to find relevant code
|
|
71
|
+
4. **Read** — use `read` on specific line ranges
|
|
72
|
+
5. **Edit** — make changes with full context
|
|
109
73
|
|
|
110
|
-
###
|
|
111
|
-
After every message you send, the plugin effectively searches your vector-indexed codebase:
|
|
112
|
-
- **High-confidence results (score ≥ 0.75):** Actual code chunks are injected directly into your prompt, giving the agent instant context without a tool-call round-trip.
|
|
113
|
-
- **Lower-confidence results:** A compact list of suggested files is appended instead (e.g., `src/plugin.ts (lines 10-42)`).
|
|
74
|
+
### Available Tools
|
|
114
75
|
|
|
115
|
-
|
|
76
|
+
| Tool | Purpose | When to Use |
|
|
77
|
+
|------|---------|-------------|
|
|
78
|
+
| `opencode-rag-context` | General-purpose code retrieval | Before any code task when you haven't read the relevant code |
|
|
79
|
+
| `search_semantic` | Conceptual code search | "How does X work?", "Where is Y?" |
|
|
80
|
+
| `get_file_skeleton` | Quick file overview via AST | Before reading a large file to decide which sections matter |
|
|
81
|
+
| `find_usages` | Symbol reference search | **Before editing** any function, variable, or class |
|
|
82
|
+
| `read` (optional) | RAG-enhanced file read | Full file contents with supplementary context chunks |
|
|
116
83
|
|
|
117
|
-
|
|
84
|
+
## OpenCode Integration
|
|
118
85
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
86
|
+
When using OpenCode, the plugin enhances your agent with three discovery mechanisms:
|
|
87
|
+
|
|
88
|
+
### 1. Skill-Based Discovery (Recommended)
|
|
89
|
+
`opencode-rag init` creates `.opencode/skills/opencode-rag/SKILL.md` — an OpenCode skill that teaches agents the tool workflow. Agents load it on demand via the `skill` tool, keeping token overhead minimal.
|
|
90
|
+
|
|
91
|
+
### 2. Auto-Injection (Background Context)
|
|
92
|
+
After every message you send, the plugin searches your vector-indexed codebase:
|
|
93
|
+
- **High-confidence results (score ≥ 0.75):** Actual code chunks are injected directly into your prompt, giving the agent instant context without a tool-call round-trip.
|
|
94
|
+
- **Lower-confidence results:** A compact list of suggested files is appended instead (e.g., `src/plugin.ts (lines 10-42)`).
|
|
126
95
|
|
|
127
|
-
|
|
96
|
+
### 3. System Prompt Guidance (Conditional)
|
|
97
|
+
When chunks are indexed, a brief tool list is prepended to the system prompt so agents know the tools exist. This is skipped when no chunks are indexed to save tokens.
|
|
128
98
|
|
|
129
99
|
---
|
|
130
100
|
|
package/dist/chunker/base.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare abstract class TreeSitterChunker implements Chunker {
|
|
|
5
5
|
abstract readonly grammarName: string;
|
|
6
6
|
abstract readonly nodeTypes: Set<string>;
|
|
7
7
|
private parser;
|
|
8
|
+
withNodeTypes(types: Set<string>): Chunker;
|
|
8
9
|
private getParser;
|
|
9
10
|
chunk(filePath: string, content: string): Promise<Chunk[]>;
|
|
10
11
|
}
|
package/dist/chunker/base.js
CHANGED
|
@@ -3,6 +3,32 @@ import { loadLanguage, walkTree } from "./grammar.js";
|
|
|
3
3
|
import { uuid } from "./uuid.js";
|
|
4
4
|
export class TreeSitterChunker {
|
|
5
5
|
parser = null;
|
|
6
|
+
withNodeTypes(types) {
|
|
7
|
+
const original = this;
|
|
8
|
+
return {
|
|
9
|
+
get language() { return original.language; },
|
|
10
|
+
get fileExtensions() { return original.fileExtensions; },
|
|
11
|
+
async chunk(filePath, content) {
|
|
12
|
+
if (content.trim().length === 0)
|
|
13
|
+
return [];
|
|
14
|
+
const parser = await original.getParser();
|
|
15
|
+
const tree = parser.parse(content);
|
|
16
|
+
if (!tree)
|
|
17
|
+
return [];
|
|
18
|
+
const nodes = walkTree(tree.rootNode, types, content);
|
|
19
|
+
return nodes.map((node) => ({
|
|
20
|
+
id: uuid(),
|
|
21
|
+
content: node.text,
|
|
22
|
+
metadata: {
|
|
23
|
+
filePath,
|
|
24
|
+
startLine: node.startLine,
|
|
25
|
+
endLine: node.endLine,
|
|
26
|
+
language: original.language,
|
|
27
|
+
},
|
|
28
|
+
}));
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
6
32
|
async getParser() {
|
|
7
33
|
if (!this.parser) {
|
|
8
34
|
const lang = await loadLanguage(this.grammarName);
|
package/dist/chunker/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chunker/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAgB,iBAAiB;IAM7B,MAAM,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chunker/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAgB,iBAAiB;IAM7B,MAAM,GAAkB,IAAI,CAAC;IAErC,aAAa,CAAC,KAAkB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,OAAO;YACL,IAAI,QAAQ,KAAK,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,IAAI,cAAc,KAAK,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;gBAC3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,IAAI,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,IAAI;oBAClB,QAAQ,EAAE;wBACR,QAAQ;wBACR,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B;iBACF,CAAC,CAAC,CAAC;YACN,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;QAC3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC;YACnC,EAAE,EAAE,IAAI,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,QAAQ,EAAE;gBACR,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;SACF,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
package/dist/chunker/cpp.js
CHANGED
|
@@ -5,12 +5,9 @@ export class CppChunker extends TreeSitterChunker {
|
|
|
5
5
|
grammarName = "cpp";
|
|
6
6
|
nodeTypes = new Set([
|
|
7
7
|
"function_definition",
|
|
8
|
-
"class_specifier",
|
|
9
8
|
"struct_specifier",
|
|
10
9
|
"enum_specifier",
|
|
11
10
|
"union_specifier",
|
|
12
|
-
"namespace_definition",
|
|
13
|
-
"template_declaration",
|
|
14
11
|
]);
|
|
15
12
|
}
|
|
16
13
|
export const cppChunker = new CppChunker();
|
package/dist/chunker/cpp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../src/chunker/cpp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IACtC,QAAQ,GAAG,KAAK,CAAC;IACjB,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,WAAW,GAAG,KAAK,CAAC;IACpB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,qBAAqB;QACrB,
|
|
1
|
+
{"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../src/chunker/cpp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,UAAW,SAAQ,iBAAiB;IACtC,QAAQ,GAAG,KAAK,CAAC;IACjB,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,WAAW,GAAG,KAAK,CAAC;IACpB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,qBAAqB;QACrB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
package/dist/chunker/csharp.js
CHANGED
|
@@ -4,13 +4,11 @@ export class CSharpChunker extends TreeSitterChunker {
|
|
|
4
4
|
fileExtensions = [".cs"];
|
|
5
5
|
grammarName = "c_sharp";
|
|
6
6
|
nodeTypes = new Set([
|
|
7
|
-
"
|
|
7
|
+
"method_declaration",
|
|
8
8
|
"interface_declaration",
|
|
9
9
|
"struct_declaration",
|
|
10
|
-
"enum_declaration",
|
|
11
|
-
"method_declaration",
|
|
12
|
-
"namespace_declaration",
|
|
13
10
|
"record_declaration",
|
|
11
|
+
"enum_declaration",
|
|
14
12
|
]);
|
|
15
13
|
}
|
|
16
14
|
export const csharpChunker = new CSharpChunker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/chunker/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,SAAS,CAAC;IACxB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/chunker/csharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,SAAS,CAAC;IACxB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,oBAAoB;QACpB,oBAAoB;QACpB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -24,5 +24,5 @@ import { pdfChunker } from "./pdf.js";
|
|
|
24
24
|
export declare function registerChunker(chunker: Chunker, extensions?: string[]): void;
|
|
25
25
|
export declare function getChunker(filePath: string): Chunker;
|
|
26
26
|
export declare function getRegisteredExtensions(): string[];
|
|
27
|
-
export declare function chunkFile(filePath: string, content: string): Promise<Chunk[]>;
|
|
27
|
+
export declare function chunkFile(filePath: string, content: string, nodeTypesOverrides?: Record<string, string[]>): Promise<Chunk[]>;
|
|
28
28
|
export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, texChunker, pdfChunker, fallbackChunker };
|
package/dist/chunker/factory.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
1
2
|
import { typescriptChunker } from "./typescript.js";
|
|
2
3
|
import { pythonChunker } from "./python.js";
|
|
3
4
|
import { javaChunker } from "./java.js";
|
|
@@ -135,8 +136,14 @@ function splitOversized(chunks, filePath) {
|
|
|
135
136
|
}
|
|
136
137
|
return result;
|
|
137
138
|
}
|
|
138
|
-
export async function chunkFile(filePath, content) {
|
|
139
|
-
|
|
139
|
+
export async function chunkFile(filePath, content, nodeTypesOverrides) {
|
|
140
|
+
let chunker = getChunker(filePath);
|
|
141
|
+
if (nodeTypesOverrides && chunker instanceof TreeSitterChunker) {
|
|
142
|
+
const overrideTypes = nodeTypesOverrides[chunker.language];
|
|
143
|
+
if (overrideTypes && overrideTypes.length > 0) {
|
|
144
|
+
chunker = chunker.withNodeTypes(new Set(overrideTypes));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
140
147
|
const chunks = await chunker.chunk(filePath, content);
|
|
141
148
|
if (chunks.length === 0) {
|
|
142
149
|
return fallbackChunker.chunk(filePath, content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/chunker/factory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/chunker/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/chunker/go.js
CHANGED
package/dist/chunker/go.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/chunker/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IACrC,QAAQ,GAAG,IAAI,CAAC;IAChB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,IAAI,CAAC;IACnB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,oBAAoB;
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/chunker/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IACrC,QAAQ,GAAG,IAAI,CAAC;IAChB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,IAAI,CAAC;IACnB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,oBAAoB;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
package/dist/chunker/grammar.js
CHANGED
|
@@ -2,11 +2,17 @@ import { Parser, Language } from "web-tree-sitter";
|
|
|
2
2
|
import { getWasmPath } from "tree-sitter-wasm";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
let initialized = false;
|
|
5
|
+
let initPromise = null;
|
|
5
6
|
export async function initParser() {
|
|
6
7
|
if (initialized)
|
|
7
8
|
return;
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
if (initPromise)
|
|
10
|
+
return initPromise;
|
|
11
|
+
initPromise = Parser.init().then(() => {
|
|
12
|
+
initialized = true;
|
|
13
|
+
initPromise = null;
|
|
14
|
+
});
|
|
15
|
+
return initPromise;
|
|
10
16
|
}
|
|
11
17
|
const grammarCache = new Map();
|
|
12
18
|
export async function loadLanguage(lang) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../src/chunker/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAA0B,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,IAAI,WAAW,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../src/chunker/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAQ,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAA0B,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,WAAW,GAAyB,IAAI,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,WAAW;QAAE,OAAO;IACxB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACpC,WAAW,GAAG,IAAI,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,UAAU,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAyB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD,MAAM,UAAU,QAAQ,CACtB,IAAU,EACV,SAAsB,EACtB,MAAc,EACd,WAAmB,EAAE,EACrB,QAAgB,CAAC;IAEjB,MAAM,OAAO,GAAc,EAAE,CAAC;IAE9B,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/chunker/java.js
CHANGED
package/dist/chunker/java.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/chunker/java.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,oBAAoB;QACpB,
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/chunker/java.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -6,9 +6,7 @@ export class JavaScriptChunker extends TreeSitterChunker {
|
|
|
6
6
|
nodeTypes = new Set([
|
|
7
7
|
"function_declaration",
|
|
8
8
|
"method_definition",
|
|
9
|
-
"class_declaration",
|
|
10
9
|
"arrow_function",
|
|
11
|
-
"export_statement",
|
|
12
10
|
]);
|
|
13
11
|
}
|
|
14
12
|
export const javascriptChunker = new JavaScriptChunker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/chunker/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAC7C,QAAQ,GAAG,YAAY,CAAC;IACxB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,WAAW,GAAG,YAAY,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,mBAAmB;QACnB,
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/chunker/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAC7C,QAAQ,GAAG,YAAY,CAAC;IACxB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,WAAW,GAAG,YAAY,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,mBAAmB;QACnB,gBAAgB;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
|
package/dist/chunker/kotlin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/chunker/kotlin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,GAAG,QAAQ,CAAC;IACvB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/chunker/kotlin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,GAAG,QAAQ,CAAC;IACvB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,oBAAoB;QACpB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
package/dist/chunker/python.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/chunker/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,QAAQ,CAAC;IACvB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,qBAAqB;QACrB,
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/chunker/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IACzC,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,QAAQ,CAAC;IACvB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,qBAAqB;QACrB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
package/dist/chunker/ruby.js
CHANGED
package/dist/chunker/ruby.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../src/chunker/ruby.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,QAAQ;QACR,
|
|
1
|
+
{"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../src/chunker/ruby.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,QAAQ;QACR,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
package/dist/chunker/rust.js
CHANGED
package/dist/chunker/rust.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/chunker/rust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,eAAe;QACf,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/chunker/rust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IACvC,QAAQ,GAAG,MAAM,CAAC;IAClB,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,eAAe;QACf,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,WAAW;KACZ,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
package/dist/chunker/swift.js
CHANGED
|
@@ -5,11 +5,8 @@ export class SwiftChunker extends TreeSitterChunker {
|
|
|
5
5
|
grammarName = "swift";
|
|
6
6
|
nodeTypes = new Set([
|
|
7
7
|
"function_declaration",
|
|
8
|
-
"class_declaration",
|
|
9
|
-
"struct_declaration",
|
|
10
8
|
"enum_declaration",
|
|
11
9
|
"protocol_declaration",
|
|
12
|
-
"extension_declaration",
|
|
13
10
|
"variable_declaration",
|
|
14
11
|
]);
|
|
15
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swift.js","sourceRoot":"","sources":["../../src/chunker/swift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IACxC,QAAQ,GAAG,OAAO,CAAC;IACnB,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,WAAW,GAAG,OAAO,CAAC;IACtB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,
|
|
1
|
+
{"version":3,"file":"swift.js","sourceRoot":"","sources":["../../src/chunker/swift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IACxC,QAAQ,GAAG,OAAO,CAAC;IACnB,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,WAAW,GAAG,OAAO,CAAC;IACtB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -6,11 +6,9 @@ export class TypeScriptChunker extends TreeSitterChunker {
|
|
|
6
6
|
nodeTypes = new Set([
|
|
7
7
|
"function_declaration",
|
|
8
8
|
"method_definition",
|
|
9
|
-
"class_declaration",
|
|
10
9
|
"arrow_function",
|
|
11
10
|
"interface_declaration",
|
|
12
11
|
"type_alias_declaration",
|
|
13
|
-
"export_statement",
|
|
14
12
|
]);
|
|
15
13
|
}
|
|
16
14
|
export const typescriptChunker = new TypeScriptChunker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/chunker/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAC7C,QAAQ,GAAG,YAAY,CAAC;IACxB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,GAAG,YAAY,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,mBAAmB;QACnB,
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/chunker/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IAC7C,QAAQ,GAAG,YAAY,CAAC;IACxB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,GAAG,YAAY,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,sBAAsB;QACtB,mBAAmB;QACnB,gBAAgB;QAChB,uBAAuB;QACvB,wBAAwB;KACzB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,7 @@ import chokidar from "chokidar";
|
|
|
9
9
|
import pc from "picocolors";
|
|
10
10
|
import { loadConfig, DEFAULT_CONFIG, resolveLogConfig } from "./core/config.js";
|
|
11
11
|
import { resolveApiKey } from "./core/resolve-api-key.js";
|
|
12
|
+
import { appendDebugLog } from "./core/fileLogger.js";
|
|
12
13
|
import { loadChunkersFromConfig } from "./chunker/loader.js";
|
|
13
14
|
import { createEmbedder } from "./embedder/factory.js";
|
|
14
15
|
import { createDescriptionProvider } from "./describer/factory.js";
|
|
@@ -225,6 +226,50 @@ function generateWorkspaceTuiPluginFile(packageName) {
|
|
|
225
226
|
"",
|
|
226
227
|
].join("\n");
|
|
227
228
|
}
|
|
229
|
+
function generateSkillFile() {
|
|
230
|
+
return [
|
|
231
|
+
"---",
|
|
232
|
+
"name: opencode-rag",
|
|
233
|
+
"description: Semantic code retrieval via OpenCodeRAG — vector search, file skeletons, and symbol usage lookup for this workspace",
|
|
234
|
+
"---",
|
|
235
|
+
"",
|
|
236
|
+
"## OpenCodeRAG Tools",
|
|
237
|
+
"",
|
|
238
|
+
"This workspace has OpenCodeRAG indexed for semantic code search. Use these tools BEFORE planning, editing, or answering code questions.",
|
|
239
|
+
"",
|
|
240
|
+
"### When to use each tool",
|
|
241
|
+
"",
|
|
242
|
+
"| Tool | Use when | Example |",
|
|
243
|
+
"|------|----------|---------|",
|
|
244
|
+
"| `opencode-rag-context` | Any code search — you need to find relevant code before acting | `\"authentication middleware\"` |",
|
|
245
|
+
"| `search_semantic` | Conceptual question — \"how does X work?\" or \"where is Y?\" | `\"How does the chunking pipeline work?\"` |",
|
|
246
|
+
"| `get_file_skeleton` | You have a file path but need to orient before reading | `\"src/plugin.ts\"` |",
|
|
247
|
+
"| `find_usages` | Before editing any function, class, or variable — check all call sites | `\"createRagHooks\"` |",
|
|
248
|
+
"",
|
|
249
|
+
"### Workflow",
|
|
250
|
+
"",
|
|
251
|
+
"1. **Skeleton first** — call `get_file_skeleton(filePath)` to see structure",
|
|
252
|
+
"2. **Find usages** — call `find_usages(symbolName)` before modifying any symbol",
|
|
253
|
+
"3. **Search** — call `opencode-rag-context(query)` or `search_semantic(query)` to find relevant code",
|
|
254
|
+
"4. **Read** — use the `read` tool on specific line ranges identified above",
|
|
255
|
+
"5. **Edit** — now you have full context to make safe changes",
|
|
256
|
+
"",
|
|
257
|
+
"### Parameters",
|
|
258
|
+
"",
|
|
259
|
+
"- `opencode-rag-context`: `query` (req), `pathHints?`, `languageHints?`, `topK?`",
|
|
260
|
+
"- `search_semantic`: `query` (req), `pathHints?`, `languageHints?`, `topK?`",
|
|
261
|
+
"- `get_file_skeleton`: `filePath` (req)",
|
|
262
|
+
"- `find_usages`: `symbolName` (req), `pathHint?`, `topK?`",
|
|
263
|
+
"",
|
|
264
|
+
"### Tips",
|
|
265
|
+
"",
|
|
266
|
+
"- Use `pathHints` to narrow searches to specific directories",
|
|
267
|
+
"- Use `languageHints` to filter by file type",
|
|
268
|
+
"- `find_usages` is essential before refactoring — it shows every reference",
|
|
269
|
+
"- If no results appear, the workspace may not be indexed yet — run `opencode-rag index`",
|
|
270
|
+
"",
|
|
271
|
+
].join("\n");
|
|
272
|
+
}
|
|
228
273
|
function mergeGitignoreContent(existingContent) {
|
|
229
274
|
const lines = existingContent ? existingContent.split(/\r?\n/) : [];
|
|
230
275
|
const trimmed = new Set(lines.map((line) => line.trim()));
|
|
@@ -347,8 +392,14 @@ program
|
|
|
347
392
|
descriptionProvider,
|
|
348
393
|
force: Boolean(options.force && !watchTriggered),
|
|
349
394
|
logger: {
|
|
350
|
-
info: (message) =>
|
|
351
|
-
|
|
395
|
+
info: (message) => {
|
|
396
|
+
console.log(message);
|
|
397
|
+
appendDebugLog(logFilePath, { scope: "index", message });
|
|
398
|
+
},
|
|
399
|
+
warn: (message) => {
|
|
400
|
+
console.warn(message);
|
|
401
|
+
appendDebugLog(logFilePath, { scope: "index", message: `WARN: ${message}` });
|
|
402
|
+
},
|
|
352
403
|
},
|
|
353
404
|
});
|
|
354
405
|
logIndexSummary(logFilePath, stats);
|
|
@@ -635,6 +686,8 @@ function generateDefaultConfigJson() {
|
|
|
635
686
|
excludeDirs: DEFAULT_CONFIG.indexing.excludeDirs,
|
|
636
687
|
chunkOverlap: DEFAULT_CONFIG.indexing.chunkOverlap,
|
|
637
688
|
minFileSizeBytes: DEFAULT_CONFIG.indexing.minFileSizeBytes,
|
|
689
|
+
concurrency: DEFAULT_CONFIG.indexing.concurrency,
|
|
690
|
+
embedBatchSize: DEFAULT_CONFIG.indexing.embedBatchSize,
|
|
638
691
|
},
|
|
639
692
|
vectorStore: {
|
|
640
693
|
path: DEFAULT_CONFIG.vectorStore.path,
|
|
@@ -667,6 +720,9 @@ function generateDefaultConfigJson() {
|
|
|
667
720
|
level: DEFAULT_CONFIG.logging.level,
|
|
668
721
|
logFilePath: DEFAULT_CONFIG.logging.logFilePath,
|
|
669
722
|
},
|
|
723
|
+
chunking: {
|
|
724
|
+
nodeTypes: {},
|
|
725
|
+
},
|
|
670
726
|
}, null, 2) + "\n";
|
|
671
727
|
}
|
|
672
728
|
program
|
|
@@ -762,6 +818,26 @@ program
|
|
|
762
818
|
else {
|
|
763
819
|
console.log(` ${c.exists("Exists:")} .opencode/tui.json`);
|
|
764
820
|
}
|
|
821
|
+
const skillsDir = path.join(opencodeDir, "skills");
|
|
822
|
+
const skillDir = path.join(skillsDir, "opencode-rag");
|
|
823
|
+
const skillPath = path.join(skillDir, "SKILL.md");
|
|
824
|
+
if (!existsSync(skillDir)) {
|
|
825
|
+
mkdirSync(skillDir, { recursive: true });
|
|
826
|
+
console.log(` ${c.created("Created:")} .opencode/skills/opencode-rag/`);
|
|
827
|
+
}
|
|
828
|
+
const skillContent = generateSkillFile();
|
|
829
|
+
const skillExists = existsSync(skillPath);
|
|
830
|
+
if (!skillExists || options.force) {
|
|
831
|
+
writeFileSync(skillPath, skillContent, "utf-8");
|
|
832
|
+
console.log(` ${skillExists ? c.updated("Updated:") : c.created("Created:")} .opencode/skills/opencode-rag/SKILL.md`);
|
|
833
|
+
}
|
|
834
|
+
else if (readFileSync(skillPath, "utf-8") !== skillContent) {
|
|
835
|
+
writeFileSync(skillPath, skillContent, "utf-8");
|
|
836
|
+
console.log(` ${c.updated("Updated:")} .opencode/skills/opencode-rag/SKILL.md`);
|
|
837
|
+
}
|
|
838
|
+
else {
|
|
839
|
+
console.log(` ${c.exists("Exists:")} .opencode/skills/opencode-rag/SKILL.md`);
|
|
840
|
+
}
|
|
765
841
|
const workspacePackageExists = existsSync(opencodePackagePath);
|
|
766
842
|
const nextWorkspacePackage = buildWorkspacePackageJson(readJsonObject(opencodePackagePath), packageMetadata, opencodeDir);
|
|
767
843
|
if (!workspacePackageExists || options.force) {
|