opencode-rag-plugin 1.1.0 → 1.2.2

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 (39) hide show
  1. package/ReadMe.md +53 -14
  2. package/dist/chunker/doc.d.ts +8 -0
  3. package/dist/chunker/doc.js +79 -0
  4. package/dist/chunker/doc.js.map +1 -0
  5. package/dist/chunker/docx.d.ts +8 -0
  6. package/dist/chunker/docx.js +78 -0
  7. package/dist/chunker/docx.js.map +1 -0
  8. package/dist/chunker/excel.d.ts +8 -0
  9. package/dist/chunker/excel.js +78 -0
  10. package/dist/chunker/excel.js.map +1 -0
  11. package/dist/chunker/factory.d.ts +1 -0
  12. package/dist/chunker/factory.js +9 -0
  13. package/dist/chunker/factory.js.map +1 -1
  14. package/dist/cli.d.ts +7 -0
  15. package/dist/cli.js +291 -5
  16. package/dist/cli.js.map +1 -1
  17. package/dist/core/config.d.ts +4 -0
  18. package/dist/core/config.js +6 -1
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/indexer.js +18 -0
  21. package/dist/indexer.js.map +1 -1
  22. package/dist/opencode/create-read-tool.d.ts +30 -0
  23. package/dist/opencode/create-read-tool.js +248 -0
  24. package/dist/opencode/create-read-tool.js.map +1 -0
  25. package/dist/opencode/read-fallback.d.ts +21 -0
  26. package/dist/opencode/read-fallback.js +90 -0
  27. package/dist/opencode/read-fallback.js.map +1 -0
  28. package/dist/opencode/read-format.d.ts +40 -0
  29. package/dist/opencode/read-format.js +86 -0
  30. package/dist/opencode/read-format.js.map +1 -0
  31. package/dist/opencode/read-query.d.ts +26 -0
  32. package/dist/opencode/read-query.js +39 -0
  33. package/dist/opencode/read-query.js.map +1 -0
  34. package/dist/opencode/tool-args.d.ts +51 -0
  35. package/dist/opencode/tool-args.js +70 -0
  36. package/dist/opencode/tool-args.js.map +1 -0
  37. package/dist/plugin.js +2 -1
  38. package/dist/plugin.js.map +1 -1
  39. package/package.json +11 -4
package/ReadMe.md CHANGED
@@ -67,14 +67,47 @@ Workspace Files
67
67
 
68
68
  ## Installation
69
69
 
70
+ ### Global installation (recommended)
71
+
72
+ Clone the repository and run the install script:
73
+
74
+ **Windows:**
75
+ ```powershell
76
+ .\install.ps1
77
+ ```
78
+
79
+ **Linux/macOS:**
70
80
  ```bash
71
- # Install globally
72
- npm install -g opencode-rag-plugin
81
+ ./install.sh
82
+ ```
83
+
84
+ This will:
85
+ 1. Build the plugin from source (`npm run build`)
86
+ 2. Install it into OpenCode's runtime (`~/.opencode/node_modules/`)
87
+ 3. Register it in the global OpenCode config (`~/.config/opencode/opencode.jsonc`)
88
+
89
+ After installation, restart OpenCode and the plugin is ready.
73
90
 
74
- # Or in your project
75
- npm install --save-dev opencode-rag-plugin
91
+ ### Per-workspace setup
92
+
93
+ ```bash
94
+ cd your-workspace
95
+ opencode-rag init
76
96
  ```
77
97
 
98
+ `opencode-rag init` bootstraps the current workspace by creating:
99
+
100
+ - `opencode-rag.json`
101
+ - `.opencode/.gitignore`
102
+ - `.opencode/opencode.json`
103
+ - `.opencode/package.json`
104
+ - `.opencode/plugins/rag-plugin.js` (workspace-local plugin fallback)
105
+ - `.opencode/node_modules/` with the workspace-local plugin dependencies
106
+
107
+ Add `--skip-install` if you only want the files without installing dependencies.
108
+
109
+ ### Dependencies
110
+
78
111
  ### Dependencies
79
112
 
80
113
  - **Node.js v22+** for native ESM and fetch support
@@ -208,24 +241,27 @@ chat.
208
241
  After cloning and installing dependencies:
209
242
 
210
243
  ```bash
211
- # Option 1: Use the project-local auto-loaded plugin
212
- # The repo already includes .opencode/plugins/rag-plugin.ts
244
+ # Option 1: Install globally via the install script (recommended)
245
+ ./install.sh # Linux/macOS
246
+ .\install.ps1 # Windows
213
247
 
214
- # Option 2: Build and install via npm pack
248
+ # Option 2: Build and pack manually, then register globally
215
249
  npm run build
216
250
  npm pack
217
- opencode plugin .\opencode-rag-0.1.0.tgz
251
+ npm install --prefix ~/.opencode/ opencode-rag-plugin-1.2.0.tgz
252
+ npm install --prefix ~/.config/opencode/ opencode-rag-plugin-1.2.0.tgz
253
+ # Add "opencode-rag-plugin" to the plugin array in ~/.config/opencode/opencode.jsonc
218
254
 
219
- # Option 3: Install from npm
220
- opencode plugin opencode-rag-plugin
255
+ # Option 3: Bootstrap workspace only (uses npm version)
256
+ opencode-rag init
221
257
  ```
222
258
 
223
259
  The plugin auto-detects configuration from `opencode-rag.json` or
224
- `.opencode/rag.json` in the project root.
260
+ `.opencode/opencode-rag.json` or `.opencode/rag.json` in the project root.
225
261
 
226
- If you use the project-local plugin file, OpenCode auto-loads it from
227
- `.opencode/plugins/` at startup and no `plugin` entry is required in
228
- `.opencode/opencode.json`.
262
+ `opencode-rag init` creates a workspace-local plugin file at `.opencode/plugins/rag-plugin.js`
263
+ that re-exports from `node_modules/`, serving as a fallback when global loading fails.
264
+ No `plugin` entry is required in `.opencode/opencode.json`.
229
265
 
230
266
  Restart OpenCode after changing plugin files or plugin configuration.
231
267
 
@@ -330,6 +366,9 @@ interface SearchResult {
330
366
  | Swift | AST (tree-sitter) | functions, classes, structs, enums, protocols, extensions, variables |
331
367
  | LaTeX | Regex section split | chapter/section/subsection/subsubsection boundaries |
332
368
  | PDF | Paragraph-based (text extraction) | groups small paragraphs, splits oversized |
369
+ | Word (docx) | Paragraph-based (text extraction) | extracts raw text via mammoth, groups small paragraphs, splits oversized |
370
+ | Word (doc) | Paragraph-based (text extraction) | extracts raw text via word-extractor, groups small paragraphs, splits oversized |
371
+ | Excel (xls/xlsx) | Row-batch (text extraction) | extracts CSV per sheet via @e965/xlsx, splits by sheet then by row batches |
333
372
  | (other) | Line-based (100 lines/chunk) | raw text blocks |
334
373
 
335
374
  Custom chunkers can be added without modifying the project source code. Two
@@ -0,0 +1,8 @@
1
+ import type { Chunker, Chunk } from "../core/interfaces.js";
2
+ export declare function extractDocText(buffer: Buffer): Promise<string>;
3
+ export declare class DocChunker implements Chunker {
4
+ readonly language = "doc";
5
+ readonly fileExtensions: string[];
6
+ chunk(filePath: string, content: string): Promise<Chunk[]>;
7
+ }
8
+ export declare const docChunker: DocChunker;
@@ -0,0 +1,79 @@
1
+ import { uuid } from "./uuid.js";
2
+ const MAX_CHUNK_CHARS = 4000;
3
+ const MIN_GROUP_CHARS = 300;
4
+ const PARAGRAPH_SPLIT = /\n\s*\n/;
5
+ export async function extractDocText(buffer) {
6
+ const WordExtractor = (await import("word-extractor")).default;
7
+ const extractor = new WordExtractor();
8
+ const doc = await extractor.extract(buffer);
9
+ return doc.getBody();
10
+ }
11
+ export class DocChunker {
12
+ language = "doc";
13
+ fileExtensions = [".doc"];
14
+ async chunk(filePath, content) {
15
+ if (content.trim().length === 0)
16
+ return [];
17
+ const paragraphs = content.split(PARAGRAPH_SPLIT).filter((p) => p.trim().length > 0);
18
+ if (paragraphs.length === 0)
19
+ return [];
20
+ const chunks = [];
21
+ let currentGroup = [];
22
+ let currentSize = 0;
23
+ let paragraphIndex = 0;
24
+ function flush() {
25
+ const text = currentGroup.join("\n\n").trim();
26
+ if (text.length === 0)
27
+ return;
28
+ chunks.push({
29
+ id: uuid(),
30
+ content: text,
31
+ metadata: {
32
+ filePath,
33
+ startLine: paragraphIndex - currentGroup.length + 1,
34
+ endLine: paragraphIndex,
35
+ language: "doc",
36
+ },
37
+ });
38
+ currentGroup = [];
39
+ currentSize = 0;
40
+ }
41
+ for (const para of paragraphs) {
42
+ paragraphIndex++;
43
+ const paraLen = para.length;
44
+ if (paraLen > MAX_CHUNK_CHARS) {
45
+ if (currentGroup.length > 0)
46
+ flush();
47
+ chunks.push({
48
+ id: uuid(),
49
+ content: para,
50
+ metadata: {
51
+ filePath,
52
+ startLine: paragraphIndex,
53
+ endLine: paragraphIndex,
54
+ language: "doc",
55
+ },
56
+ });
57
+ continue;
58
+ }
59
+ if (currentGroup.length > 0 && currentSize + paraLen > MAX_CHUNK_CHARS) {
60
+ flush();
61
+ }
62
+ currentGroup.push(para);
63
+ currentSize += paraLen;
64
+ if (currentSize >= MIN_GROUP_CHARS && currentGroup.length >= 1) {
65
+ const nextParaStillSmall = paragraphIndex < paragraphs.length &&
66
+ paragraphs[paragraphIndex].length < MIN_GROUP_CHARS;
67
+ if (!nextParaStillSmall) {
68
+ flush();
69
+ }
70
+ }
71
+ }
72
+ if (currentGroup.length > 0) {
73
+ flush();
74
+ }
75
+ return chunks;
76
+ }
77
+ }
78
+ export const docChunker = new DocChunker();
79
+ //# sourceMappingURL=doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/chunker/doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Chunker, Chunk } from "../core/interfaces.js";
2
+ export declare function extractDocxText(buffer: Buffer): Promise<string>;
3
+ export declare class DocxChunker implements Chunker {
4
+ readonly language = "docx";
5
+ readonly fileExtensions: string[];
6
+ chunk(filePath: string, content: string): Promise<Chunk[]>;
7
+ }
8
+ export declare const docxChunker: DocxChunker;
@@ -0,0 +1,78 @@
1
+ import { uuid } from "./uuid.js";
2
+ const MAX_CHUNK_CHARS = 4000;
3
+ const MIN_GROUP_CHARS = 300;
4
+ const PARAGRAPH_SPLIT = /\n\s*\n/;
5
+ export async function extractDocxText(buffer) {
6
+ const mammoth = await import("mammoth");
7
+ const result = await mammoth.extractRawText({ buffer });
8
+ return result.value;
9
+ }
10
+ export class DocxChunker {
11
+ language = "docx";
12
+ fileExtensions = [".docx"];
13
+ async chunk(filePath, content) {
14
+ if (content.trim().length === 0)
15
+ return [];
16
+ const paragraphs = content.split(PARAGRAPH_SPLIT).filter((p) => p.trim().length > 0);
17
+ if (paragraphs.length === 0)
18
+ return [];
19
+ const chunks = [];
20
+ let currentGroup = [];
21
+ let currentSize = 0;
22
+ let paragraphIndex = 0;
23
+ function flush() {
24
+ const text = currentGroup.join("\n\n").trim();
25
+ if (text.length === 0)
26
+ return;
27
+ chunks.push({
28
+ id: uuid(),
29
+ content: text,
30
+ metadata: {
31
+ filePath,
32
+ startLine: paragraphIndex - currentGroup.length + 1,
33
+ endLine: paragraphIndex,
34
+ language: "docx",
35
+ },
36
+ });
37
+ currentGroup = [];
38
+ currentSize = 0;
39
+ }
40
+ for (const para of paragraphs) {
41
+ paragraphIndex++;
42
+ const paraLen = para.length;
43
+ if (paraLen > MAX_CHUNK_CHARS) {
44
+ if (currentGroup.length > 0)
45
+ flush();
46
+ chunks.push({
47
+ id: uuid(),
48
+ content: para,
49
+ metadata: {
50
+ filePath,
51
+ startLine: paragraphIndex,
52
+ endLine: paragraphIndex,
53
+ language: "docx",
54
+ },
55
+ });
56
+ continue;
57
+ }
58
+ if (currentGroup.length > 0 && currentSize + paraLen > MAX_CHUNK_CHARS) {
59
+ flush();
60
+ }
61
+ currentGroup.push(para);
62
+ currentSize += paraLen;
63
+ if (currentSize >= MIN_GROUP_CHARS && currentGroup.length >= 1) {
64
+ const nextParaStillSmall = paragraphIndex < paragraphs.length &&
65
+ paragraphs[paragraphIndex].length < MIN_GROUP_CHARS;
66
+ if (!nextParaStillSmall) {
67
+ flush();
68
+ }
69
+ }
70
+ }
71
+ if (currentGroup.length > 0) {
72
+ flush();
73
+ }
74
+ return chunks;
75
+ }
76
+ }
77
+ export const docxChunker = new DocxChunker();
78
+ //# sourceMappingURL=docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/chunker/docx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Chunker, Chunk } from "../core/interfaces.js";
2
+ export declare function extractExcelText(buffer: Buffer): Promise<string>;
3
+ export declare class ExcelChunker implements Chunker {
4
+ readonly language = "excel";
5
+ readonly fileExtensions: string[];
6
+ chunk(filePath: string, content: string): Promise<Chunk[]>;
7
+ }
8
+ export declare const excelChunker: ExcelChunker;
@@ -0,0 +1,78 @@
1
+ import { uuid } from "./uuid.js";
2
+ const MAX_CHUNK_CHARS = 4000;
3
+ export async function extractExcelText(buffer) {
4
+ const XLSX = await import("@e965/xlsx");
5
+ const workbook = XLSX.read(buffer, { type: "buffer" });
6
+ const lines = [];
7
+ for (const sheetName of workbook.SheetNames) {
8
+ const sheet = workbook.Sheets[sheetName];
9
+ if (!sheet)
10
+ continue;
11
+ lines.push(`[Sheet: ${sheetName}]`);
12
+ const csv = XLSX.utils.sheet_to_csv(sheet, { blankrows: false });
13
+ if (csv.trim().length > 0) {
14
+ lines.push(csv);
15
+ }
16
+ }
17
+ return lines.join("\n\n");
18
+ }
19
+ export class ExcelChunker {
20
+ language = "excel";
21
+ fileExtensions = [".xls", ".xlsx"];
22
+ async chunk(filePath, content) {
23
+ if (content.trim().length === 0)
24
+ return [];
25
+ // Split by sheet sections (separated by double newlines)
26
+ const sections = content.split(/\n\n(?=\[Sheet:)/).filter((s) => s.trim().length > 0);
27
+ if (sections.length === 0)
28
+ return [];
29
+ const chunks = [];
30
+ let lineCounter = 0;
31
+ for (const section of sections) {
32
+ const sectionLines = section.split("\n");
33
+ const startLine = lineCounter + 1;
34
+ lineCounter += sectionLines.length;
35
+ const endLine = lineCounter;
36
+ if (section.length <= MAX_CHUNK_CHARS) {
37
+ chunks.push({
38
+ id: uuid(),
39
+ content: section.trim(),
40
+ metadata: { filePath, startLine, endLine, language: "excel" },
41
+ });
42
+ continue;
43
+ }
44
+ // Split oversized sheet content into row batches
45
+ const rows = section.split("\n");
46
+ let batch = [];
47
+ let batchSize = 0;
48
+ let batchStart = startLine;
49
+ let rowLine = startLine;
50
+ for (const row of rows) {
51
+ rowLine++;
52
+ const rowLen = row.length + 1;
53
+ if (batch.length > 0 && batchSize + rowLen > MAX_CHUNK_CHARS) {
54
+ chunks.push({
55
+ id: uuid(),
56
+ content: batch.join("\n").trim(),
57
+ metadata: { filePath, startLine: batchStart, endLine: rowLine - 1, language: "excel" },
58
+ });
59
+ batch = [];
60
+ batchSize = 0;
61
+ batchStart = rowLine;
62
+ }
63
+ batch.push(row);
64
+ batchSize += rowLen;
65
+ }
66
+ if (batch.length > 0) {
67
+ chunks.push({
68
+ id: uuid(),
69
+ content: batch.join("\n").trim(),
70
+ metadata: { filePath, startLine: batchStart, endLine: rowLine, language: "excel" },
71
+ });
72
+ }
73
+ }
74
+ return chunks;
75
+ }
76
+ }
77
+ export const excelChunker = new ExcelChunker();
78
+ //# sourceMappingURL=excel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel.js","sourceRoot":"","sources":["../../src/chunker/excel.ts"],"names":[],"mappings":"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"}
@@ -23,5 +23,6 @@ import { fallbackChunker } from "./fallback.js";
23
23
  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
+ export declare function getRegisteredExtensions(): string[];
26
27
  export declare function chunkFile(filePath: string, content: string): Promise<Chunk[]>;
27
28
  export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, texChunker, pdfChunker, fallbackChunker };
@@ -20,6 +20,9 @@ import { swiftChunker } from "./swift.js";
20
20
  import { texChunker } from "./tex.js";
21
21
  import { fallbackChunker } from "./fallback.js";
22
22
  import { pdfChunker } from "./pdf.js";
23
+ import { docxChunker } from "./docx.js";
24
+ import { docChunker } from "./doc.js";
25
+ import { excelChunker } from "./excel.js";
23
26
  import { uuid } from "./uuid.js";
24
27
  const chunkers = [
25
28
  typescriptChunker,
@@ -43,6 +46,9 @@ const chunkers = [
43
46
  swiftChunker,
44
47
  texChunker,
45
48
  pdfChunker,
49
+ docxChunker,
50
+ docChunker,
51
+ excelChunker,
46
52
  ];
47
53
  const extensionMap = new Map();
48
54
  for (const chunker of chunkers) {
@@ -70,6 +76,9 @@ export function getChunker(filePath) {
70
76
  const ext = filePath.slice(filePath.lastIndexOf(".")).toLowerCase();
71
77
  return extensionMap.get(ext) ?? fallbackChunker;
72
78
  }
79
+ export function getRegisteredExtensions() {
80
+ return [...extensionMap.keys()].sort();
81
+ }
73
82
  const MAX_CHUNK_LINES = 100;
74
83
  const MAX_CHUNK_CHARS = 8000;
75
84
  function splitOversized(chunks, filePath) {
@@ -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/cli.d.ts CHANGED
@@ -1 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Determine whether the CLI should auto-run for the current module.
4
+ * Resolves the first argv entry so symlinked binaries compare against the
5
+ * real file path, and returns false if the path cannot be resolved.
6
+ */
7
+ export declare function shouldAutoRunCli(moduleUrl: string, argv1?: string): boolean;
1
8
  export declare function runCli(argv?: string[]): Promise<void>;