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.
- package/ReadMe.md +53 -14
- package/dist/chunker/doc.d.ts +8 -0
- package/dist/chunker/doc.js +79 -0
- package/dist/chunker/doc.js.map +1 -0
- package/dist/chunker/docx.d.ts +8 -0
- package/dist/chunker/docx.js +78 -0
- package/dist/chunker/docx.js.map +1 -0
- package/dist/chunker/excel.d.ts +8 -0
- package/dist/chunker/excel.js +78 -0
- package/dist/chunker/excel.js.map +1 -0
- package/dist/chunker/factory.d.ts +1 -0
- package/dist/chunker/factory.js +9 -0
- package/dist/chunker/factory.js.map +1 -1
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +291 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +4 -0
- package/dist/core/config.js +6 -1
- package/dist/core/config.js.map +1 -1
- package/dist/indexer.js +18 -0
- package/dist/indexer.js.map +1 -1
- package/dist/opencode/create-read-tool.d.ts +30 -0
- package/dist/opencode/create-read-tool.js +248 -0
- package/dist/opencode/create-read-tool.js.map +1 -0
- package/dist/opencode/read-fallback.d.ts +21 -0
- package/dist/opencode/read-fallback.js +90 -0
- package/dist/opencode/read-fallback.js.map +1 -0
- package/dist/opencode/read-format.d.ts +40 -0
- package/dist/opencode/read-format.js +86 -0
- package/dist/opencode/read-format.js.map +1 -0
- package/dist/opencode/read-query.d.ts +26 -0
- package/dist/opencode/read-query.js +39 -0
- package/dist/opencode/read-query.js.map +1 -0
- package/dist/opencode/tool-args.d.ts +51 -0
- package/dist/opencode/tool-args.js +70 -0
- package/dist/opencode/tool-args.js.map +1 -0
- package/dist/plugin.js +2 -1
- package/dist/plugin.js.map +1 -1
- 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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
75
|
-
|
|
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:
|
|
212
|
-
#
|
|
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
|
|
248
|
+
# Option 2: Build and pack manually, then register globally
|
|
215
249
|
npm run build
|
|
216
250
|
npm pack
|
|
217
|
-
|
|
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:
|
|
220
|
-
opencode
|
|
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
|
-
|
|
227
|
-
|
|
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 };
|
package/dist/chunker/factory.js
CHANGED
|
@@ -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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,QAAQ,GAAc;IAC1B,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,SAAS;IACT,eAAe;IACf,QAAQ;IACR,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,aAAa;IACb,YAAY;IACZ,UAAU;IACV,UAAU;
|
|
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>;
|