opencode-rag-plugin 1.6.1 → 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.
Files changed (48) hide show
  1. package/ReadMe.md +27 -57
  2. package/dist/chunker/base.d.ts +1 -0
  3. package/dist/chunker/base.js +26 -0
  4. package/dist/chunker/base.js.map +1 -1
  5. package/dist/chunker/cpp.js +0 -3
  6. package/dist/chunker/cpp.js.map +1 -1
  7. package/dist/chunker/csharp.js +2 -4
  8. package/dist/chunker/csharp.js.map +1 -1
  9. package/dist/chunker/factory.d.ts +1 -1
  10. package/dist/chunker/factory.js +9 -2
  11. package/dist/chunker/factory.js.map +1 -1
  12. package/dist/chunker/go.js +0 -1
  13. package/dist/chunker/go.js.map +1 -1
  14. package/dist/chunker/grammar.js +8 -2
  15. package/dist/chunker/grammar.js.map +1 -1
  16. package/dist/chunker/java.js +0 -1
  17. package/dist/chunker/java.js.map +1 -1
  18. package/dist/chunker/javascript.js +0 -2
  19. package/dist/chunker/javascript.js.map +1 -1
  20. package/dist/chunker/kotlin.js +0 -2
  21. package/dist/chunker/kotlin.js.map +1 -1
  22. package/dist/chunker/python.js +0 -1
  23. package/dist/chunker/python.js.map +1 -1
  24. package/dist/chunker/ruby.js +0 -2
  25. package/dist/chunker/ruby.js.map +1 -1
  26. package/dist/chunker/rust.js +0 -1
  27. package/dist/chunker/rust.js.map +1 -1
  28. package/dist/chunker/swift.js +0 -3
  29. package/dist/chunker/swift.js.map +1 -1
  30. package/dist/chunker/typescript.js +0 -2
  31. package/dist/chunker/typescript.js.map +1 -1
  32. package/dist/cli.js +78 -2
  33. package/dist/cli.js.map +1 -1
  34. package/dist/core/config.d.ts +5 -0
  35. package/dist/core/config.js +8 -0
  36. package/dist/core/config.js.map +1 -1
  37. package/dist/indexer.js +131 -91
  38. package/dist/indexer.js.map +1 -1
  39. package/dist/opencode/tools.js +4 -6
  40. package/dist/opencode/tools.js.map +1 -1
  41. package/dist/plugin.js +21 -6
  42. package/dist/plugin.js.map +1 -1
  43. package/dist/vectorstore/lancedb.d.ts +2 -0
  44. package/dist/vectorstore/lancedb.js +12 -0
  45. package/dist/vectorstore/lancedb.js.map +1 -1
  46. package/dist/watcher.js +2 -0
  47. package/dist/watcher.js.map +1 -1
  48. 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
- ## AGENTS.md Setup
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
- ## OpenCode Integration
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
- When using OpenCode, the plugin enhances your agent with two main features:
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
- ### 1. Auto-Injection (Background Context)
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
- ### 2. Specialized Agent Tools
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
- The plugin registers several tools that OpenCode agents can invoke for code retrieval and analysis:
84
+ ## OpenCode Integration
118
85
 
119
- | Tool | Purpose | Best Use Case |
120
- |------|---------|--------------|
121
- | `opencode-rag-context` | General-purpose code retrieval | Any code search with optional path/language filters |
122
- | `search_semantic` | Conceptual code search | *"How does authentication work?"*, *"Where is the chunking logic?"* |
123
- | `get_file_skeleton` | Quick file overview via AST parsing | Orienting in an unfamiliar file without reading it entirely |
124
- | `find_usages` | Symbol reference search | **Essential before editing** — shows every call site with context |
125
- | `read` (optional) | RAG-enhanced file read | Full file contents with supplementary context chunks |
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
- The system prompt automatically lists all available tools so agents know when to use each one.
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
 
@@ -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
  }
@@ -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);
@@ -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;IAE7B,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"}
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"}
@@ -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();
@@ -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,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
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"}
@@ -4,13 +4,11 @@ export class CSharpChunker extends TreeSitterChunker {
4
4
  fileExtensions = [".cs"];
5
5
  grammarName = "c_sharp";
6
6
  nodeTypes = new Set([
7
- "class_declaration",
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,mBAAmB;QACnB,uBAAuB;QACvB,oBAAoB;QACpB,kBAAkB;QAClB,oBAAoB;QACpB,uBAAuB;QACvB,oBAAoB;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
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 };
@@ -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
- const chunker = getChunker(filePath);
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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"}
@@ -6,7 +6,6 @@ export class GoChunker extends TreeSitterChunker {
6
6
  nodeTypes = new Set([
7
7
  "function_declaration",
8
8
  "method_declaration",
9
- "type_declaration",
10
9
  ]);
11
10
  }
12
11
  export const goChunker = new GoChunker();
@@ -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;QACpB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
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"}
@@ -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
- await Parser.init();
9
- initialized = true;
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;AAExB,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,WAAW;QAAE,OAAO;IACxB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,WAAW,GAAG,IAAI,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"}
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"}
@@ -5,7 +5,6 @@ export class JavaChunker extends TreeSitterChunker {
5
5
  grammarName = "java";
6
6
  nodeTypes = new Set([
7
7
  "method_declaration",
8
- "class_declaration",
9
8
  "interface_declaration",
10
9
  "enum_declaration",
11
10
  ]);
@@ -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,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
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,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
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"}
@@ -5,8 +5,6 @@ export class KotlinChunker extends TreeSitterChunker {
5
5
  grammarName = "kotlin";
6
6
  nodeTypes = new Set([
7
7
  "function_declaration",
8
- "class_declaration",
9
- "interface_declaration",
10
8
  "object_declaration",
11
9
  "property_declaration",
12
10
  ]);
@@ -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,mBAAmB;QACnB,uBAAuB;QACvB,oBAAoB;QACpB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
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"}
@@ -5,7 +5,6 @@ export class PythonChunker extends TreeSitterChunker {
5
5
  grammarName = "python";
6
6
  nodeTypes = new Set([
7
7
  "function_definition",
8
- "class_definition",
9
8
  "decorated_definition",
10
9
  ]);
11
10
  }
@@ -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,kBAAkB;QAClB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
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"}
@@ -5,8 +5,6 @@ export class RubyChunker extends TreeSitterChunker {
5
5
  grammarName = "ruby";
6
6
  nodeTypes = new Set([
7
7
  "method",
8
- "class",
9
- "module",
10
8
  "singleton_method",
11
9
  ]);
12
10
  }
@@ -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,OAAO;QACP,QAAQ;QACR,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
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"}
@@ -9,7 +9,6 @@ export class RustChunker extends TreeSitterChunker {
9
9
  "enum_item",
10
10
  "trait_item",
11
11
  "impl_item",
12
- "mod_item",
13
12
  "type_item",
14
13
  ]);
15
14
  }
@@ -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,UAAU;QACV,WAAW;KACZ,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
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"}
@@ -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,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
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,mBAAmB;QACnB,gBAAgB;QAChB,uBAAuB;QACvB,wBAAwB;QACxB,kBAAkB;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
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) => logCliInfo(logFilePath, "index", message),
351
- warn: (message) => console.warn(message),
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) {