opencode-rag-plugin 1.8.4 → 1.10.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 +2 -2
- package/dist/api.d.ts +27 -0
- package/dist/api.js +119 -0
- package/dist/api.js.map +1 -0
- package/dist/chunker/base.d.ts +1 -0
- package/dist/chunker/base.js +5 -2
- package/dist/chunker/base.js.map +1 -1
- package/dist/chunker/bash.d.ts +8 -0
- package/dist/chunker/bash.js +11 -0
- package/dist/chunker/bash.js.map +1 -0
- package/dist/chunker/dockerfile.d.ts +8 -0
- package/dist/chunker/dockerfile.js +29 -0
- package/dist/chunker/dockerfile.js.map +1 -0
- package/dist/chunker/factory.d.ts +9 -1
- package/dist/chunker/factory.js +24 -3
- package/dist/chunker/factory.js.map +1 -1
- package/dist/chunker/grammar.d.ts +1 -0
- package/dist/chunker/grammar.js +42 -2
- package/dist/chunker/grammar.js.map +1 -1
- package/dist/chunker/ini.d.ts +8 -0
- package/dist/chunker/ini.js +11 -0
- package/dist/chunker/ini.js.map +1 -0
- package/dist/chunker/markdown.d.ts +4 -3
- package/dist/chunker/markdown.js +4 -91
- package/dist/chunker/markdown.js.map +1 -1
- package/dist/chunker/php.d.ts +8 -0
- package/dist/chunker/php.js +12 -0
- package/dist/chunker/php.js.map +1 -0
- package/dist/chunker/powershell.d.ts +8 -0
- package/dist/chunker/powershell.js +11 -0
- package/dist/chunker/powershell.js.map +1 -0
- package/dist/chunker/sql.d.ts +8 -0
- package/dist/chunker/sql.js +11 -0
- package/dist/chunker/sql.js.map +1 -0
- package/dist/chunker/toml.d.ts +8 -0
- package/dist/chunker/toml.js +13 -0
- package/dist/chunker/toml.js.map +1 -0
- package/dist/chunker/yaml.d.ts +8 -0
- package/dist/chunker/yaml.js +12 -0
- package/dist/chunker/yaml.js.map +1 -0
- package/dist/cli.js +35 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +10 -1
- package/dist/core/config.js +101 -2
- package/dist/core/config.js.map +1 -1
- package/dist/eval/types.js +0 -1
- package/dist/eval/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +9 -0
- package/dist/indexer.js +3 -2
- package/dist/indexer.js.map +1 -1
- package/dist/mcp/cli.d.ts +4 -0
- package/dist/mcp/cli.js +15 -0
- package/dist/mcp/cli.js.map +1 -0
- package/dist/mcp/handlers.d.ts +46 -0
- package/dist/mcp/handlers.js +300 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/server.d.ts +12 -0
- package/dist/mcp/server.js +124 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/opencode/read-format.d.ts +1 -1
- package/dist/opencode/read-format.js +1 -1
- package/dist/plugin.js +15 -34
- package/dist/plugin.js.map +1 -1
- package/package.json +19 -2
package/ReadMe.md
CHANGED
|
@@ -16,7 +16,7 @@ git clone https://github.com/your-org/OpenCodeRAG.git
|
|
|
16
16
|
cd OpenCodeRAG
|
|
17
17
|
npm install --legacy-peer-deps
|
|
18
18
|
npm run build
|
|
19
|
-
./install.sh
|
|
19
|
+
./install.sh
|
|
20
20
|
|
|
21
21
|
# 2. Initialize in your project
|
|
22
22
|
cd /path/to/your/project
|
|
@@ -35,7 +35,7 @@ opencode-rag query "authentication middleware"
|
|
|
35
35
|
|
|
36
36
|
| Feature | Description |
|
|
37
37
|
|---|---|
|
|
38
|
-
| **AST chunking** |
|
|
38
|
+
| **AST chunking** | 25 languages via tree-sitter (TS, JS, Python, Java, Go, Rust, C/C++, C#, Ruby, Kotlin, Swift, Bash, PHP, PowerShell, SQL, JSON, HTML, CSS, XML, YAML, TOML, INI, Dockerfile, Markdown) |
|
|
39
39
|
| **Document support** | Markdown, LaTeX, PDF, DOCX, DOC, Excel |
|
|
40
40
|
| **Hybrid search** | Vector similarity + TF×IDF keyword fusion |
|
|
41
41
|
| **OpenCode plugin** | Auto-inject context, read-tool override, TUI settings, Ctrl+Enter to add RAG context |
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type IndexRunStats } from "./indexer.js";
|
|
2
|
+
import type { SearchResult } from "./core/interfaces.js";
|
|
3
|
+
export interface SearchOptions {
|
|
4
|
+
cwd?: string;
|
|
5
|
+
configPath?: string;
|
|
6
|
+
topK?: number;
|
|
7
|
+
minScore?: number;
|
|
8
|
+
keywordWeight?: number;
|
|
9
|
+
pathHints?: string[];
|
|
10
|
+
languageHints?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface IndexOptions {
|
|
13
|
+
configPath?: string;
|
|
14
|
+
force?: boolean;
|
|
15
|
+
onProgress?: (message: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ContextResult {
|
|
18
|
+
chunks: SearchResult[];
|
|
19
|
+
text: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
22
|
+
export declare function indexWorkspace(cwd?: string, options?: IndexOptions): Promise<IndexRunStats>;
|
|
23
|
+
export declare function getContext(query: string, options?: SearchOptions): Promise<ContextResult>;
|
|
24
|
+
export { validateConfig } from "./core/config.js";
|
|
25
|
+
export type { ConfigValidationResult } from "./core/config.js";
|
|
26
|
+
export { scanWorkspace, getIndexStatusSummary } from "./indexer.js";
|
|
27
|
+
export type { WorkspaceFile, IndexRunStats } from "./indexer.js";
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { loadConfig, DEFAULT_CONFIG } from "./core/config.js";
|
|
4
|
+
import { resolveApiKey } from "./core/resolve-api-key.js";
|
|
5
|
+
import { createEmbedder } from "./embedder/factory.js";
|
|
6
|
+
import { createDescriptionProvider } from "./describer/factory.js";
|
|
7
|
+
import { LanceDBStore } from "./vectorstore/lancedb.js";
|
|
8
|
+
import { retrieve } from "./retriever/retriever.js";
|
|
9
|
+
import { KeywordIndex } from "./retriever/keyword-index.js";
|
|
10
|
+
import { runIndexPass } from "./indexer.js";
|
|
11
|
+
function resolveConfig(cwd, configPath) {
|
|
12
|
+
const workDir = cwd ?? process.cwd();
|
|
13
|
+
if (configPath) {
|
|
14
|
+
return loadConfig(path.resolve(configPath));
|
|
15
|
+
}
|
|
16
|
+
const locations = [
|
|
17
|
+
path.join(workDir, "opencode-rag.json"),
|
|
18
|
+
path.join(workDir, ".opencode", "opencode-rag.json"),
|
|
19
|
+
path.join(workDir, ".opencode", "rag.json"),
|
|
20
|
+
];
|
|
21
|
+
for (const loc of locations) {
|
|
22
|
+
if (existsSync(loc)) {
|
|
23
|
+
const cfg = loadConfig(loc);
|
|
24
|
+
resolveApiKey(cfg, workDir);
|
|
25
|
+
return cfg;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { ...DEFAULT_CONFIG };
|
|
29
|
+
}
|
|
30
|
+
async function probeDimension(embedder) {
|
|
31
|
+
try {
|
|
32
|
+
const probe = await embedder.embed(["dimension-probe"], "query");
|
|
33
|
+
if (probe && probe[0] && probe[0].length > 0 && typeof probe[0][0] === "number") {
|
|
34
|
+
return probe[0].length;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// fallback to 384
|
|
39
|
+
}
|
|
40
|
+
return 384;
|
|
41
|
+
}
|
|
42
|
+
async function loadKeywordIndex(storePath) {
|
|
43
|
+
try {
|
|
44
|
+
const idx = await KeywordIndex.load(storePath);
|
|
45
|
+
return idx;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return new KeywordIndex(storePath);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function formatContextResults(results) {
|
|
52
|
+
if (results.length === 0)
|
|
53
|
+
return "No matching chunks found.";
|
|
54
|
+
const lines = [];
|
|
55
|
+
for (const r of results) {
|
|
56
|
+
const { filePath, startLine, endLine, language } = r.chunk.metadata;
|
|
57
|
+
lines.push(`#### ${filePath}:${startLine}-${endLine} (score: ${r.score.toFixed(3)})`);
|
|
58
|
+
lines.push("```" + language);
|
|
59
|
+
lines.push(r.chunk.content);
|
|
60
|
+
lines.push("```");
|
|
61
|
+
if (r.chunk.description) {
|
|
62
|
+
lines.push(`> ${r.chunk.description}`);
|
|
63
|
+
}
|
|
64
|
+
lines.push("");
|
|
65
|
+
}
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
export async function search(query, options = {}) {
|
|
69
|
+
const cfg = resolveConfig(options.cwd, options.configPath);
|
|
70
|
+
const storePath = path.resolve(options.cwd ?? process.cwd(), cfg.vectorStore.path);
|
|
71
|
+
const embedder = createEmbedder(cfg);
|
|
72
|
+
const dimension = await probeDimension(embedder);
|
|
73
|
+
const store = new LanceDBStore(storePath, dimension);
|
|
74
|
+
const keywordIndex = await loadKeywordIndex(storePath);
|
|
75
|
+
return retrieve(query, embedder, store, {
|
|
76
|
+
topK: options.topK ?? cfg.retrieval.topK,
|
|
77
|
+
minScore: options.minScore ?? cfg.retrieval.minScore,
|
|
78
|
+
keywordIndex,
|
|
79
|
+
keywordWeight: options.keywordWeight ?? cfg.retrieval.hybridSearch?.keywordWeight ?? 0.4,
|
|
80
|
+
queryPrefix: cfg.embedding.queryPrefix,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export async function indexWorkspace(cwd, options = {}) {
|
|
84
|
+
const workDir = cwd ?? process.cwd();
|
|
85
|
+
const cfg = resolveConfig(workDir, options.configPath);
|
|
86
|
+
const storePath = path.resolve(workDir, cfg.vectorStore.path);
|
|
87
|
+
const embedder = createEmbedder(cfg);
|
|
88
|
+
const dimension = await probeDimension(embedder);
|
|
89
|
+
const store = new LanceDBStore(storePath, dimension);
|
|
90
|
+
const keywordIndex = await loadKeywordIndex(storePath);
|
|
91
|
+
const descriptionConfig = cfg.description;
|
|
92
|
+
const descriptionProvider = descriptionConfig?.enabled
|
|
93
|
+
? createDescriptionProvider(descriptionConfig)
|
|
94
|
+
: undefined;
|
|
95
|
+
if (options.onProgress) {
|
|
96
|
+
options.onProgress(`Indexing ${workDir}...`);
|
|
97
|
+
}
|
|
98
|
+
const stats = await runIndexPass({
|
|
99
|
+
cwd: workDir,
|
|
100
|
+
storePath,
|
|
101
|
+
config: cfg,
|
|
102
|
+
store,
|
|
103
|
+
embedder,
|
|
104
|
+
force: options.force ?? false,
|
|
105
|
+
keywordIndex,
|
|
106
|
+
descriptionProvider,
|
|
107
|
+
});
|
|
108
|
+
return stats;
|
|
109
|
+
}
|
|
110
|
+
export async function getContext(query, options = {}) {
|
|
111
|
+
const results = await search(query, options);
|
|
112
|
+
return {
|
|
113
|
+
chunks: results,
|
|
114
|
+
text: formatContextResults(results),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export { validateConfig } from "./core/config.js";
|
|
118
|
+
export { scanWorkspace, getIndexStatusSummary } from "./indexer.js";
|
|
119
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/chunker/base.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare abstract class TreeSitterChunker implements Chunker {
|
|
|
4
4
|
abstract readonly fileExtensions: string[];
|
|
5
5
|
abstract readonly grammarName: string;
|
|
6
6
|
abstract readonly nodeTypes: Set<string>;
|
|
7
|
+
readonly wasmFilePath?: string;
|
|
7
8
|
private parser;
|
|
8
9
|
withNodeTypes(types: Set<string>): Chunker;
|
|
9
10
|
private getParser;
|
package/dist/chunker/base.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Parser } from "web-tree-sitter";
|
|
2
|
-
import { loadLanguage, walkTree } from "./grammar.js";
|
|
2
|
+
import { loadLanguage, loadLanguageFromPath, walkTree } from "./grammar.js";
|
|
3
3
|
import { uuid } from "./uuid.js";
|
|
4
4
|
export class TreeSitterChunker {
|
|
5
|
+
wasmFilePath;
|
|
5
6
|
parser = null;
|
|
6
7
|
withNodeTypes(types) {
|
|
7
8
|
const original = this;
|
|
@@ -31,7 +32,9 @@ export class TreeSitterChunker {
|
|
|
31
32
|
}
|
|
32
33
|
async getParser() {
|
|
33
34
|
if (!this.parser) {
|
|
34
|
-
const lang =
|
|
35
|
+
const lang = this.wasmFilePath
|
|
36
|
+
? await loadLanguageFromPath(this.grammarName, this.wasmFilePath)
|
|
37
|
+
: await loadLanguage(this.grammarName);
|
|
35
38
|
this.parser = new Parser();
|
|
36
39
|
this.parser.setLanguage(lang);
|
|
37
40
|
}
|
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;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chunker/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export declare class BashChunker extends TreeSitterChunker {
|
|
3
|
+
readonly language = "bash";
|
|
4
|
+
readonly fileExtensions: string[];
|
|
5
|
+
readonly grammarName = "bash";
|
|
6
|
+
readonly nodeTypes: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const bashChunker: BashChunker;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export class BashChunker extends TreeSitterChunker {
|
|
3
|
+
language = "bash";
|
|
4
|
+
fileExtensions = [".sh", ".bash", ".zsh"];
|
|
5
|
+
grammarName = "bash";
|
|
6
|
+
nodeTypes = new Set([
|
|
7
|
+
"function_definition",
|
|
8
|
+
]);
|
|
9
|
+
}
|
|
10
|
+
export const bashChunker = new BashChunker();
|
|
11
|
+
//# sourceMappingURL=bash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/chunker/bash.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,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,GAAG,MAAM,CAAC;IACrB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,qBAAqB;KACtB,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export declare class DockerfileChunker extends TreeSitterChunker {
|
|
3
|
+
readonly language = "dockerfile";
|
|
4
|
+
readonly fileExtensions: string[];
|
|
5
|
+
readonly grammarName = "dockerfile";
|
|
6
|
+
readonly nodeTypes: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const dockerfileChunker: DockerfileChunker;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export class DockerfileChunker extends TreeSitterChunker {
|
|
3
|
+
language = "dockerfile";
|
|
4
|
+
fileExtensions = ["dockerfile", "containerfile"];
|
|
5
|
+
grammarName = "dockerfile";
|
|
6
|
+
nodeTypes = new Set([
|
|
7
|
+
"from_instruction",
|
|
8
|
+
"run_instruction",
|
|
9
|
+
"cmd_instruction",
|
|
10
|
+
"entrypoint_instruction",
|
|
11
|
+
"env_instruction",
|
|
12
|
+
"arg_instruction",
|
|
13
|
+
"workdir_instruction",
|
|
14
|
+
"copy_instruction",
|
|
15
|
+
"add_instruction",
|
|
16
|
+
"expose_instruction",
|
|
17
|
+
"volume_instruction",
|
|
18
|
+
"user_instruction",
|
|
19
|
+
"label_instruction",
|
|
20
|
+
"healthcheck_instruction",
|
|
21
|
+
"shell_instruction",
|
|
22
|
+
"stopsignal_instruction",
|
|
23
|
+
"onbuild_instruction",
|
|
24
|
+
"maintainer_instruction",
|
|
25
|
+
"cross_build_instruction",
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
export const dockerfileChunker = new DockerfileChunker();
|
|
29
|
+
//# sourceMappingURL=dockerfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../src/chunker/dockerfile.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,YAAY,EAAE,eAAe,CAAC,CAAC;IACjD,WAAW,GAAG,YAAY,CAAC;IAC3B,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB;QACjB,iBAAiB;QACjB,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,yBAAyB;QACzB,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,wBAAwB;QACxB,yBAAyB;KAC1B,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
|
|
@@ -18,6 +18,14 @@ import { rustChunker } from "./rust.js";
|
|
|
18
18
|
import { rubyChunker } from "./ruby.js";
|
|
19
19
|
import { kotlinChunker } from "./kotlin.js";
|
|
20
20
|
import { swiftChunker } from "./swift.js";
|
|
21
|
+
import { bashChunker } from "./bash.js";
|
|
22
|
+
import { phpChunker } from "./php.js";
|
|
23
|
+
import { powershellChunker } from "./powershell.js";
|
|
24
|
+
import { iniChunker } from "./ini.js";
|
|
25
|
+
import { yamlChunker } from "./yaml.js";
|
|
26
|
+
import { tomlChunker } from "./toml.js";
|
|
27
|
+
import { dockerfileChunker } from "./dockerfile.js";
|
|
28
|
+
import { sqlChunker } from "./sql.js";
|
|
21
29
|
import { texChunker } from "./tex.js";
|
|
22
30
|
import { fallbackChunker } from "./fallback.js";
|
|
23
31
|
import { pdfChunker } from "./pdf.js";
|
|
@@ -25,4 +33,4 @@ export declare function registerChunker(chunker: Chunker, extensions?: string[])
|
|
|
25
33
|
export declare function getChunker(filePath: string): Chunker;
|
|
26
34
|
export declare function getRegisteredExtensions(): string[];
|
|
27
35
|
export declare function chunkFile(filePath: string, content: string, nodeTypesOverrides?: Record<string, string[]>): Promise<Chunk[]>;
|
|
28
|
-
export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, texChunker, pdfChunker, fallbackChunker };
|
|
36
|
+
export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, bashChunker, phpChunker, powershellChunker, iniChunker, yamlChunker, tomlChunker, dockerfileChunker, sqlChunker, texChunker, pdfChunker, fallbackChunker };
|
package/dist/chunker/factory.js
CHANGED
|
@@ -18,6 +18,14 @@ import { rustChunker } from "./rust.js";
|
|
|
18
18
|
import { rubyChunker } from "./ruby.js";
|
|
19
19
|
import { kotlinChunker } from "./kotlin.js";
|
|
20
20
|
import { swiftChunker } from "./swift.js";
|
|
21
|
+
import { bashChunker } from "./bash.js";
|
|
22
|
+
import { phpChunker } from "./php.js";
|
|
23
|
+
import { powershellChunker } from "./powershell.js";
|
|
24
|
+
import { iniChunker } from "./ini.js";
|
|
25
|
+
import { yamlChunker } from "./yaml.js";
|
|
26
|
+
import { tomlChunker } from "./toml.js";
|
|
27
|
+
import { dockerfileChunker } from "./dockerfile.js";
|
|
28
|
+
import { sqlChunker } from "./sql.js";
|
|
21
29
|
import { texChunker } from "./tex.js";
|
|
22
30
|
import { fallbackChunker } from "./fallback.js";
|
|
23
31
|
import { pdfChunker } from "./pdf.js";
|
|
@@ -45,6 +53,14 @@ const chunkers = [
|
|
|
45
53
|
rubyChunker,
|
|
46
54
|
kotlinChunker,
|
|
47
55
|
swiftChunker,
|
|
56
|
+
bashChunker,
|
|
57
|
+
phpChunker,
|
|
58
|
+
powershellChunker,
|
|
59
|
+
iniChunker,
|
|
60
|
+
yamlChunker,
|
|
61
|
+
tomlChunker,
|
|
62
|
+
dockerfileChunker,
|
|
63
|
+
sqlChunker,
|
|
48
64
|
texChunker,
|
|
49
65
|
pdfChunker,
|
|
50
66
|
docxChunker,
|
|
@@ -74,8 +90,13 @@ export function registerChunker(chunker, extensions) {
|
|
|
74
90
|
}
|
|
75
91
|
}
|
|
76
92
|
export function getChunker(filePath) {
|
|
77
|
-
const
|
|
78
|
-
|
|
93
|
+
const dotIdx = filePath.lastIndexOf(".");
|
|
94
|
+
const ext = dotIdx >= 0 ? filePath.slice(dotIdx).toLowerCase() : "";
|
|
95
|
+
if (ext && extensionMap.has(ext)) {
|
|
96
|
+
return extensionMap.get(ext);
|
|
97
|
+
}
|
|
98
|
+
const basename = filePath.toLowerCase();
|
|
99
|
+
return extensionMap.get(basename) ?? fallbackChunker;
|
|
79
100
|
}
|
|
80
101
|
export function getRegisteredExtensions() {
|
|
81
102
|
return [...extensionMap.keys()].sort();
|
|
@@ -150,5 +171,5 @@ export async function chunkFile(filePath, content, nodeTypesOverrides) {
|
|
|
150
171
|
}
|
|
151
172
|
return splitOversized(chunks, filePath);
|
|
152
173
|
}
|
|
153
|
-
export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, texChunker, pdfChunker, fallbackChunker };
|
|
174
|
+
export { typescriptChunker, pythonChunker, javaChunker, goChunker, markdownChunker, cChunker, cppChunker, csharpChunker, javascriptChunker, razorChunker, jsonChunker, htmlChunker, cssChunker, xmlChunker, slnChunker, rustChunker, rubyChunker, kotlinChunker, swiftChunker, bashChunker, phpChunker, powershellChunker, iniChunker, yamlChunker, tomlChunker, dockerfileChunker, sqlChunker, texChunker, pdfChunker, fallbackChunker };
|
|
154
175
|
//# sourceMappingURL=factory.js.map
|
|
@@ -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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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Language, Node } from "web-tree-sitter";
|
|
2
2
|
export declare function initParser(): Promise<void>;
|
|
3
3
|
export declare function loadLanguage(lang: string): Promise<Language>;
|
|
4
|
+
export declare function loadLanguageFromPath(cacheKey: string, wasmPath: string): Promise<Language>;
|
|
4
5
|
export interface AstNode {
|
|
5
6
|
text: string;
|
|
6
7
|
startLine: number;
|
package/dist/chunker/grammar.js
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import { Parser, Language } from "web-tree-sitter";
|
|
2
|
-
import { getWasmPath } from "tree-sitter-wasm";
|
|
3
2
|
import { readFileSync } from "node:fs";
|
|
3
|
+
import { resolve, dirname } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
const PROJECT_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
6
|
+
const MS_WASM_DIR = resolve(PROJECT_ROOT, "node_modules", "@vscode", "tree-sitter-wasm", "wasm");
|
|
7
|
+
const SELF_WASM_DIR = resolve(PROJECT_ROOT, "wasm");
|
|
8
|
+
const MS_LANGUAGES = new Set([
|
|
9
|
+
"bash",
|
|
10
|
+
"c_sharp",
|
|
11
|
+
"cpp",
|
|
12
|
+
"css",
|
|
13
|
+
"go",
|
|
14
|
+
"ini",
|
|
15
|
+
"java",
|
|
16
|
+
"javascript",
|
|
17
|
+
"php",
|
|
18
|
+
"powershell",
|
|
19
|
+
"python",
|
|
20
|
+
"regex",
|
|
21
|
+
"ruby",
|
|
22
|
+
"rust",
|
|
23
|
+
"tsx",
|
|
24
|
+
"typescript",
|
|
25
|
+
]);
|
|
26
|
+
function resolveWasmPath(lang) {
|
|
27
|
+
if (MS_LANGUAGES.has(lang)) {
|
|
28
|
+
const msName = lang.replace(/_/g, "-");
|
|
29
|
+
return resolve(MS_WASM_DIR, `tree-sitter-${msName}.wasm`);
|
|
30
|
+
}
|
|
31
|
+
return resolve(SELF_WASM_DIR, `tree-sitter-${lang}.wasm`);
|
|
32
|
+
}
|
|
4
33
|
let initialized = false;
|
|
5
34
|
let initPromise = null;
|
|
6
35
|
export async function initParser() {
|
|
@@ -20,12 +49,23 @@ export async function loadLanguage(lang) {
|
|
|
20
49
|
if (cached)
|
|
21
50
|
return cached;
|
|
22
51
|
await initParser();
|
|
23
|
-
const wasmPath =
|
|
52
|
+
const wasmPath = resolveWasmPath(lang);
|
|
24
53
|
const buffer = readFileSync(wasmPath);
|
|
25
54
|
const language = await Language.load(buffer);
|
|
26
55
|
grammarCache.set(lang, language);
|
|
27
56
|
return language;
|
|
28
57
|
}
|
|
58
|
+
export async function loadLanguageFromPath(cacheKey, wasmPath) {
|
|
59
|
+
const cached = grammarCache.get(cacheKey);
|
|
60
|
+
if (cached)
|
|
61
|
+
return cached;
|
|
62
|
+
await initParser();
|
|
63
|
+
const resolvedPath = resolve(wasmPath);
|
|
64
|
+
const buffer = readFileSync(resolvedPath);
|
|
65
|
+
const language = await Language.load(buffer);
|
|
66
|
+
grammarCache.set(cacheKey, language);
|
|
67
|
+
return language;
|
|
68
|
+
}
|
|
29
69
|
export function walkTree(node, nodeTypes, source, maxDepth = 10, depth = 0) {
|
|
30
70
|
const results = [];
|
|
31
71
|
if (nodeTypes.has(node.type) && depth > 0) {
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../src/chunker/grammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export declare class IniChunker extends TreeSitterChunker {
|
|
3
|
+
readonly language = "ini";
|
|
4
|
+
readonly fileExtensions: string[];
|
|
5
|
+
readonly grammarName = "ini";
|
|
6
|
+
readonly nodeTypes: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const iniChunker: IniChunker;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export class IniChunker extends TreeSitterChunker {
|
|
3
|
+
language = "ini";
|
|
4
|
+
fileExtensions = [".ini", ".cfg"];
|
|
5
|
+
grammarName = "ini";
|
|
6
|
+
nodeTypes = new Set([
|
|
7
|
+
"section",
|
|
8
|
+
]);
|
|
9
|
+
}
|
|
10
|
+
export const iniChunker = new IniChunker();
|
|
11
|
+
//# sourceMappingURL=ini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ini.js","sourceRoot":"","sources":["../../src/chunker/ini.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,MAAM,CAAC,CAAC;IAClC,WAAW,GAAG,KAAK,CAAC;IACpB,SAAS,GAAG,IAAI,GAAG,CAAC;QAC3B,SAAS;KACV,CAAC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare class MarkdownChunker
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export declare class MarkdownChunker extends TreeSitterChunker {
|
|
3
3
|
readonly language = "markdown";
|
|
4
4
|
readonly fileExtensions: string[];
|
|
5
|
-
|
|
5
|
+
readonly grammarName = "markdown";
|
|
6
|
+
readonly nodeTypes: Set<string>;
|
|
6
7
|
}
|
|
7
8
|
export declare const markdownChunker: MarkdownChunker;
|
package/dist/chunker/markdown.js
CHANGED
|
@@ -1,96 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export class MarkdownChunker {
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export class MarkdownChunker extends TreeSitterChunker {
|
|
4
3
|
language = "markdown";
|
|
5
4
|
fileExtensions = [".md", ".mdx"];
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return [];
|
|
9
|
-
const chunks = [];
|
|
10
|
-
const lines = content.split("\n");
|
|
11
|
-
const sections = [];
|
|
12
|
-
let inCodeBlock = false;
|
|
13
|
-
let currentSectionStart = 1;
|
|
14
|
-
let currentHeading = "";
|
|
15
|
-
let currentLevel = 0;
|
|
16
|
-
for (let i = 0; i < lines.length; i++) {
|
|
17
|
-
const line = lines[i] ?? "";
|
|
18
|
-
if (line.trim().startsWith("```")) {
|
|
19
|
-
inCodeBlock = !inCodeBlock;
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
if (inCodeBlock)
|
|
23
|
-
continue;
|
|
24
|
-
const match = HEADING_REGEX.exec(line);
|
|
25
|
-
HEADING_REGEX.lastIndex = 0;
|
|
26
|
-
if (match) {
|
|
27
|
-
if (currentHeading) {
|
|
28
|
-
sections.push({
|
|
29
|
-
heading: currentHeading,
|
|
30
|
-
level: currentLevel,
|
|
31
|
-
startLine: currentSectionStart,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
currentHeading = match[2] ?? "";
|
|
35
|
-
currentLevel = match[1]?.length ?? 1;
|
|
36
|
-
currentSectionStart = i + 1;
|
|
37
|
-
if (currentLevel <= 2) {
|
|
38
|
-
sections.push({
|
|
39
|
-
heading: currentHeading,
|
|
40
|
-
level: currentLevel,
|
|
41
|
-
startLine: currentSectionStart,
|
|
42
|
-
});
|
|
43
|
-
currentHeading = "";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Last section
|
|
48
|
-
if (currentHeading) {
|
|
49
|
-
sections.push({
|
|
50
|
-
heading: currentHeading,
|
|
51
|
-
level: currentLevel,
|
|
52
|
-
startLine: currentSectionStart,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
// If no sections found, create one chunk for the whole file
|
|
56
|
-
if (sections.length === 0) {
|
|
57
|
-
return [
|
|
58
|
-
{
|
|
59
|
-
id: uuid(),
|
|
60
|
-
content,
|
|
61
|
-
metadata: {
|
|
62
|
-
filePath,
|
|
63
|
-
startLine: 1,
|
|
64
|
-
endLine: lines.length,
|
|
65
|
-
language: this.language,
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
];
|
|
69
|
-
}
|
|
70
|
-
for (let i = 0; i < sections.length; i++) {
|
|
71
|
-
const section = sections[i];
|
|
72
|
-
const startLine = section.startLine;
|
|
73
|
-
const endLine = i + 1 < sections.length
|
|
74
|
-
? sections[i + 1].startLine - 1
|
|
75
|
-
: lines.length;
|
|
76
|
-
if (startLine > endLine)
|
|
77
|
-
continue;
|
|
78
|
-
const chunkContent = lines.slice(startLine - 1, endLine).join("\n").trim();
|
|
79
|
-
if (chunkContent.length === 0)
|
|
80
|
-
continue;
|
|
81
|
-
chunks.push({
|
|
82
|
-
id: uuid(),
|
|
83
|
-
content: chunkContent,
|
|
84
|
-
metadata: {
|
|
85
|
-
filePath,
|
|
86
|
-
startLine,
|
|
87
|
-
endLine,
|
|
88
|
-
language: this.language,
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
return chunks;
|
|
93
|
-
}
|
|
5
|
+
grammarName = "markdown";
|
|
6
|
+
nodeTypes = new Set(["section"]);
|
|
94
7
|
}
|
|
95
8
|
export const markdownChunker = new MarkdownChunker();
|
|
96
9
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/chunker/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/chunker/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAC3C,QAAQ,GAAG,UAAU,CAAC;IACtB,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,GAAG,UAAU,CAAC;IACzB,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TreeSitterChunker } from "./base.js";
|
|
2
|
+
export declare class PhpChunker extends TreeSitterChunker {
|
|
3
|
+
readonly language = "php";
|
|
4
|
+
readonly fileExtensions: string[];
|
|
5
|
+
readonly grammarName = "php";
|
|
6
|
+
readonly nodeTypes: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const phpChunker: PhpChunker;
|