opencode-rag-plugin 1.2.2 → 1.2.4
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 +463 -463
- package/dist/__tests__/chunker/c.test.d.ts +1 -0
- package/dist/__tests__/chunker/c.test.js +82 -0
- package/dist/__tests__/chunker/c.test.js.map +1 -0
- package/dist/__tests__/chunker/cpp.test.d.ts +1 -0
- package/dist/__tests__/chunker/cpp.test.js +96 -0
- package/dist/__tests__/chunker/cpp.test.js.map +1 -0
- package/dist/__tests__/chunker/csharp.test.d.ts +1 -0
- package/dist/__tests__/chunker/csharp.test.js +85 -0
- package/dist/__tests__/chunker/csharp.test.js.map +1 -0
- package/dist/__tests__/chunker/css.test.d.ts +1 -0
- package/dist/__tests__/chunker/css.test.js +64 -0
- package/dist/__tests__/chunker/css.test.js.map +1 -0
- package/dist/__tests__/chunker/factory.test.d.ts +1 -0
- package/dist/__tests__/chunker/factory.test.js +202 -0
- package/dist/__tests__/chunker/factory.test.js.map +1 -0
- package/dist/__tests__/chunker/fallback.test.d.ts +1 -0
- package/dist/__tests__/chunker/fallback.test.js +67 -0
- package/dist/__tests__/chunker/fallback.test.js.map +1 -0
- package/dist/__tests__/chunker/go.test.d.ts +1 -0
- package/dist/__tests__/chunker/go.test.js +90 -0
- package/dist/__tests__/chunker/go.test.js.map +1 -0
- package/dist/__tests__/chunker/grammar.test.d.ts +1 -0
- package/dist/__tests__/chunker/grammar.test.js +108 -0
- package/dist/__tests__/chunker/grammar.test.js.map +1 -0
- package/dist/__tests__/chunker/html.test.d.ts +1 -0
- package/dist/__tests__/chunker/html.test.js +64 -0
- package/dist/__tests__/chunker/html.test.js.map +1 -0
- package/dist/__tests__/chunker/java.test.d.ts +1 -0
- package/dist/__tests__/chunker/java.test.js +83 -0
- package/dist/__tests__/chunker/java.test.js.map +1 -0
- package/dist/__tests__/chunker/javascript.test.d.ts +1 -0
- package/dist/__tests__/chunker/javascript.test.js +88 -0
- package/dist/__tests__/chunker/javascript.test.js.map +1 -0
- package/dist/__tests__/chunker/json.test.d.ts +1 -0
- package/dist/__tests__/chunker/json.test.js +54 -0
- package/dist/__tests__/chunker/json.test.js.map +1 -0
- package/dist/__tests__/chunker/kotlin.test.d.ts +1 -0
- package/dist/__tests__/chunker/kotlin.test.js +42 -0
- package/dist/__tests__/chunker/kotlin.test.js.map +1 -0
- package/dist/__tests__/chunker/markdown.test.d.ts +1 -0
- package/dist/__tests__/chunker/markdown.test.js +76 -0
- package/dist/__tests__/chunker/markdown.test.js.map +1 -0
- package/dist/__tests__/chunker/python.test.d.ts +1 -0
- package/dist/__tests__/chunker/python.test.js +81 -0
- package/dist/__tests__/chunker/python.test.js.map +1 -0
- package/dist/__tests__/chunker/razor.test.d.ts +1 -0
- package/dist/__tests__/chunker/razor.test.js +73 -0
- package/dist/__tests__/chunker/razor.test.js.map +1 -0
- package/dist/__tests__/chunker/register.test.d.ts +1 -0
- package/dist/__tests__/chunker/register.test.js +93 -0
- package/dist/__tests__/chunker/register.test.js.map +1 -0
- package/dist/__tests__/chunker/ruby.test.d.ts +1 -0
- package/dist/__tests__/chunker/ruby.test.js +40 -0
- package/dist/__tests__/chunker/ruby.test.js.map +1 -0
- package/dist/__tests__/chunker/rust.test.d.ts +1 -0
- package/dist/__tests__/chunker/rust.test.js +42 -0
- package/dist/__tests__/chunker/rust.test.js.map +1 -0
- package/dist/__tests__/chunker/sln.test.d.ts +1 -0
- package/dist/__tests__/chunker/sln.test.js +45 -0
- package/dist/__tests__/chunker/sln.test.js.map +1 -0
- package/dist/__tests__/chunker/swift.test.d.ts +1 -0
- package/dist/__tests__/chunker/swift.test.js +49 -0
- package/dist/__tests__/chunker/swift.test.js.map +1 -0
- package/dist/__tests__/chunker/typescript.test.d.ts +1 -0
- package/dist/__tests__/chunker/typescript.test.js +92 -0
- package/dist/__tests__/chunker/typescript.test.js.map +1 -0
- package/dist/__tests__/chunker/uuid.test.d.ts +1 -0
- package/dist/__tests__/chunker/uuid.test.js +19 -0
- package/dist/__tests__/chunker/uuid.test.js.map +1 -0
- package/dist/__tests__/chunker/xml.test.d.ts +1 -0
- package/dist/__tests__/chunker/xml.test.js +50 -0
- package/dist/__tests__/chunker/xml.test.js.map +1 -0
- package/dist/__tests__/core/config.test.d.ts +1 -0
- package/dist/__tests__/core/config.test.js +75 -0
- package/dist/__tests__/core/config.test.js.map +1 -0
- package/dist/__tests__/core/fileLogger.test.d.ts +1 -0
- package/dist/__tests__/core/fileLogger.test.js +34 -0
- package/dist/__tests__/core/fileLogger.test.js.map +1 -0
- package/dist/__tests__/core/manifest.test.d.ts +1 -0
- package/dist/__tests__/core/manifest.test.js +56 -0
- package/dist/__tests__/core/manifest.test.js.map +1 -0
- package/dist/__tests__/embedder/embedBatch.test.d.ts +1 -0
- package/dist/__tests__/embedder/embedBatch.test.js +88 -0
- package/dist/__tests__/embedder/embedBatch.test.js.map +1 -0
- package/dist/__tests__/embedder/factory.test.d.ts +1 -0
- package/dist/__tests__/embedder/factory.test.js +71 -0
- package/dist/__tests__/embedder/factory.test.js.map +1 -0
- package/dist/__tests__/embedder/ollama.test.d.ts +1 -0
- package/dist/__tests__/embedder/ollama.test.js +106 -0
- package/dist/__tests__/embedder/ollama.test.js.map +1 -0
- package/dist/__tests__/embedder/openai.test.d.ts +1 -0
- package/dist/__tests__/embedder/openai.test.js +94 -0
- package/dist/__tests__/embedder/openai.test.js.map +1 -0
- package/dist/__tests__/indexer/indexer.test.d.ts +1 -0
- package/dist/__tests__/indexer/indexer.test.js +176 -0
- package/dist/__tests__/indexer/indexer.test.js.map +1 -0
- package/dist/__tests__/plugin.test.d.ts +1 -0
- package/dist/__tests__/plugin.test.js +77 -0
- package/dist/__tests__/plugin.test.js.map +1 -0
- package/dist/__tests__/retriever/retriever.test.d.ts +1 -0
- package/dist/__tests__/retriever/retriever.test.js +97 -0
- package/dist/__tests__/retriever/retriever.test.js.map +1 -0
- package/dist/__tests__/vectorstore/lancedb.test.d.ts +1 -0
- package/dist/__tests__/vectorstore/lancedb.test.js +159 -0
- package/dist/__tests__/vectorstore/lancedb.test.js.map +1 -0
- package/dist/plugin-entry.d.ts +5 -2
- package/dist/plugin-entry.js +1 -1
- package/dist/plugin-entry.js.map +1 -1
- package/package.json +90 -89
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { retrieve } from "../../retriever/retriever.js";
|
|
4
|
+
function makeEmbedder(vectors) {
|
|
5
|
+
return {
|
|
6
|
+
name: "mock",
|
|
7
|
+
async embed(_texts) {
|
|
8
|
+
return vectors;
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function makeStore(results) {
|
|
13
|
+
return {
|
|
14
|
+
async addChunks(_chunks) { },
|
|
15
|
+
async search(_embedding, _topK) {
|
|
16
|
+
return results;
|
|
17
|
+
},
|
|
18
|
+
async count() {
|
|
19
|
+
return results.length;
|
|
20
|
+
},
|
|
21
|
+
async clear() { },
|
|
22
|
+
async deleteByFilePath(_filePath) { },
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
describe("retrieve", () => {
|
|
26
|
+
it("returns search results from store", async () => {
|
|
27
|
+
const embedder = makeEmbedder([[0.1, 0.2, 0.3]]);
|
|
28
|
+
const store = makeStore([
|
|
29
|
+
{
|
|
30
|
+
score: 0.95,
|
|
31
|
+
chunk: {
|
|
32
|
+
id: "chunk-1",
|
|
33
|
+
content: "test content",
|
|
34
|
+
metadata: {
|
|
35
|
+
filePath: "test.ts",
|
|
36
|
+
startLine: 1,
|
|
37
|
+
endLine: 10,
|
|
38
|
+
language: "typescript",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
const results = await retrieve("test query", embedder, store);
|
|
44
|
+
assert.equal(results.length, 1);
|
|
45
|
+
assert.equal(results[0].score, 0.95);
|
|
46
|
+
assert.equal(results[0].chunk.id, "chunk-1");
|
|
47
|
+
});
|
|
48
|
+
it("returns empty array when embedding is empty", async () => {
|
|
49
|
+
const embedder = makeEmbedder([[]]);
|
|
50
|
+
const store = makeStore([]);
|
|
51
|
+
const results = await retrieve("test query", embedder, store);
|
|
52
|
+
assert.deepStrictEqual(results, []);
|
|
53
|
+
});
|
|
54
|
+
it("returns empty array when embeddings are empty array", async () => {
|
|
55
|
+
const embedder = makeEmbedder([]);
|
|
56
|
+
const store = makeStore([]);
|
|
57
|
+
const results = await retrieve("test query", embedder, store);
|
|
58
|
+
assert.deepStrictEqual(results, []);
|
|
59
|
+
});
|
|
60
|
+
it("passes custom topK to store", async () => {
|
|
61
|
+
let receivedTopK = 0;
|
|
62
|
+
const embedder = makeEmbedder([[0.1, 0.2]]);
|
|
63
|
+
const store = {
|
|
64
|
+
async addChunks() { },
|
|
65
|
+
async search(_embedding, topK) {
|
|
66
|
+
receivedTopK = topK;
|
|
67
|
+
return [];
|
|
68
|
+
},
|
|
69
|
+
async count() {
|
|
70
|
+
return 0;
|
|
71
|
+
},
|
|
72
|
+
async clear() { },
|
|
73
|
+
async deleteByFilePath(_filePath) { },
|
|
74
|
+
};
|
|
75
|
+
await retrieve("query", embedder, store, { topK: 5 });
|
|
76
|
+
assert.equal(receivedTopK, 5);
|
|
77
|
+
});
|
|
78
|
+
it("uses default topK of 10", async () => {
|
|
79
|
+
let receivedTopK = 0;
|
|
80
|
+
const embedder = makeEmbedder([[0.1, 0.2]]);
|
|
81
|
+
const store = {
|
|
82
|
+
async addChunks() { },
|
|
83
|
+
async search(_embedding, topK) {
|
|
84
|
+
receivedTopK = topK;
|
|
85
|
+
return [];
|
|
86
|
+
},
|
|
87
|
+
async count() {
|
|
88
|
+
return 0;
|
|
89
|
+
},
|
|
90
|
+
async clear() { },
|
|
91
|
+
async deleteByFilePath(_filePath) { },
|
|
92
|
+
};
|
|
93
|
+
await retrieve("query", embedder, store);
|
|
94
|
+
assert.equal(receivedTopK, 10);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=retriever.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retriever.test.js","sourceRoot":"","sources":["../../../src/__tests__/retriever/retriever.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { describe, it, before, after } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { LanceDBStore } from "../../vectorstore/lancedb.js";
|
|
4
|
+
import { normalizeFilePath } from "../../core/manifest.js";
|
|
5
|
+
describe("LanceDBStore (memory)", () => {
|
|
6
|
+
let store;
|
|
7
|
+
before(async () => {
|
|
8
|
+
store = new LanceDBStore("memory://");
|
|
9
|
+
});
|
|
10
|
+
after(async () => {
|
|
11
|
+
await store.clear();
|
|
12
|
+
});
|
|
13
|
+
it("starts with zero count", async () => {
|
|
14
|
+
const count = await store.count();
|
|
15
|
+
assert.equal(count, 0);
|
|
16
|
+
});
|
|
17
|
+
it("adds chunks and returns correct count", async () => {
|
|
18
|
+
const chunks = [
|
|
19
|
+
{
|
|
20
|
+
id: "chunk-1",
|
|
21
|
+
content: "function hello() { return 'world'; }",
|
|
22
|
+
embedding: new Array(384).fill(0).map((_, i) => (i % 2 === 0 ? 0.1 : -0.1)),
|
|
23
|
+
metadata: {
|
|
24
|
+
filePath: "src/hello.ts",
|
|
25
|
+
startLine: 1,
|
|
26
|
+
endLine: 5,
|
|
27
|
+
language: "typescript",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "chunk-2",
|
|
32
|
+
content: "function goodbye() { return 'farewell'; }",
|
|
33
|
+
embedding: new Array(384).fill(0).map((_, i) => (i % 2 === 0 ? -0.1 : 0.1)),
|
|
34
|
+
metadata: {
|
|
35
|
+
filePath: "src/goodbye.ts",
|
|
36
|
+
startLine: 1,
|
|
37
|
+
endLine: 5,
|
|
38
|
+
language: "typescript",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
await store.addChunks(chunks);
|
|
43
|
+
const count = await store.count();
|
|
44
|
+
assert.equal(count, 2);
|
|
45
|
+
});
|
|
46
|
+
it("searches and returns results with scores", async () => {
|
|
47
|
+
// Search with a vector similar to chunk-1
|
|
48
|
+
const queryVector = new Array(384).fill(0).map((_, i) => i % 2 === 0 ? 0.1 : -0.1);
|
|
49
|
+
const results = await store.search(queryVector, 2);
|
|
50
|
+
assert.ok(results.length > 0, "Should return at least one result");
|
|
51
|
+
assert.ok(results[0].score > 0, "Score should be positive");
|
|
52
|
+
assert.ok(results[0].score <= 1, "Score should be <= 1");
|
|
53
|
+
assert.equal(typeof results[0].chunk.id, "string");
|
|
54
|
+
assert.equal(typeof results[0].chunk.content, "string");
|
|
55
|
+
});
|
|
56
|
+
it("respects topK parameter", async () => {
|
|
57
|
+
const queryVector = new Array(384).fill(0.1);
|
|
58
|
+
const results = await store.search(queryVector, 1);
|
|
59
|
+
assert.equal(results.length, 1);
|
|
60
|
+
});
|
|
61
|
+
it("clears all chunks", async () => {
|
|
62
|
+
await store.clear();
|
|
63
|
+
const count = await store.count();
|
|
64
|
+
assert.equal(count, 0);
|
|
65
|
+
});
|
|
66
|
+
it("can re-add chunks after clear", async () => {
|
|
67
|
+
const chunks = [
|
|
68
|
+
{
|
|
69
|
+
id: "chunk-3",
|
|
70
|
+
content: "new content",
|
|
71
|
+
embedding: new Array(384).fill(0.05),
|
|
72
|
+
metadata: {
|
|
73
|
+
filePath: "src/new.ts",
|
|
74
|
+
startLine: 1,
|
|
75
|
+
endLine: 3,
|
|
76
|
+
language: "typescript",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
await store.addChunks(chunks);
|
|
81
|
+
const count = await store.count();
|
|
82
|
+
assert.equal(count, 1);
|
|
83
|
+
});
|
|
84
|
+
it("filters out chunks without embeddings in addChunks", async () => {
|
|
85
|
+
await store.clear();
|
|
86
|
+
const chunks = [
|
|
87
|
+
{
|
|
88
|
+
id: "no-embed",
|
|
89
|
+
content: "no embedding",
|
|
90
|
+
embedding: undefined,
|
|
91
|
+
metadata: {
|
|
92
|
+
filePath: "test.ts",
|
|
93
|
+
startLine: 1,
|
|
94
|
+
endLine: 1,
|
|
95
|
+
language: "typescript",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: "empty-embed",
|
|
100
|
+
content: "empty embedding",
|
|
101
|
+
embedding: [],
|
|
102
|
+
metadata: {
|
|
103
|
+
filePath: "test.ts",
|
|
104
|
+
startLine: 2,
|
|
105
|
+
endLine: 2,
|
|
106
|
+
language: "typescript",
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
await store.addChunks(chunks);
|
|
111
|
+
const count = await store.count();
|
|
112
|
+
assert.equal(count, 0, "Chunks without embeddings should not be stored");
|
|
113
|
+
});
|
|
114
|
+
it("deletes all chunks for a specific file path", async () => {
|
|
115
|
+
await store.clear();
|
|
116
|
+
await store.addChunks([
|
|
117
|
+
{
|
|
118
|
+
id: "delete-1",
|
|
119
|
+
content: "alpha",
|
|
120
|
+
embedding: new Array(384).fill(0.1),
|
|
121
|
+
metadata: {
|
|
122
|
+
filePath: "src/delete-me.ts",
|
|
123
|
+
startLine: 1,
|
|
124
|
+
endLine: 1,
|
|
125
|
+
language: "typescript",
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: "delete-2",
|
|
130
|
+
content: "beta",
|
|
131
|
+
embedding: new Array(384).fill(0.2),
|
|
132
|
+
metadata: {
|
|
133
|
+
filePath: "src/keep-me.ts",
|
|
134
|
+
startLine: 1,
|
|
135
|
+
endLine: 1,
|
|
136
|
+
language: "typescript",
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "delete-3",
|
|
141
|
+
content: "gamma",
|
|
142
|
+
embedding: new Array(384).fill(0.3),
|
|
143
|
+
metadata: {
|
|
144
|
+
filePath: "src/delete-me.ts",
|
|
145
|
+
startLine: 2,
|
|
146
|
+
endLine: 2,
|
|
147
|
+
language: "typescript",
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
]);
|
|
151
|
+
await store.deleteByFilePath("src/delete-me.ts");
|
|
152
|
+
const count = await store.count();
|
|
153
|
+
assert.equal(count, 1);
|
|
154
|
+
const results = await store.search(new Array(384).fill(0.2), 5);
|
|
155
|
+
assert.equal(results.length, 1);
|
|
156
|
+
assert.equal(results[0].chunk.metadata.filePath, normalizeFilePath("src/keep-me.ts"));
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=lancedb.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lancedb.test.js","sourceRoot":"","sources":["../../../src/__tests__/vectorstore/lancedb.test.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin-entry.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { ragPlugin } from "./plugin.js";
|
|
2
1
|
export declare const id = "opencode-rag";
|
|
3
2
|
export declare const server: import("@opencode-ai/plugin").Plugin;
|
|
4
|
-
|
|
3
|
+
declare const _default: {
|
|
4
|
+
id: string;
|
|
5
|
+
server: import("@opencode-ai/plugin").Plugin;
|
|
6
|
+
};
|
|
7
|
+
export default _default;
|
package/dist/plugin-entry.js
CHANGED
package/dist/plugin-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-entry.js","sourceRoot":"","sources":["../src/plugin-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC;AAChC,eAAe,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"plugin-entry.js","sourceRoot":"","sources":["../src/plugin-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC;AAChC,eAAe,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,89 +1,90 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "opencode-rag-plugin",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "OpenCode plugin for local-first RAG-based semantic code search",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/plugin-entry.js",
|
|
7
|
-
"module": "./dist/plugin-entry.js",
|
|
8
|
-
"types": "./dist/plugin-entry.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"import": "./dist/plugin-entry.js",
|
|
12
|
-
"require": "./dist/plugin-entry.js",
|
|
13
|
-
"types": "./dist/plugin-entry.d.ts"
|
|
14
|
-
},
|
|
15
|
-
"./server": {
|
|
16
|
-
"import": "./dist/plugin-entry.js",
|
|
17
|
-
"require": "./dist/plugin-entry.js",
|
|
18
|
-
"types": "./dist/plugin-entry.d.ts"
|
|
19
|
-
},
|
|
20
|
-
"./library": {
|
|
21
|
-
"import": "./dist/index.js",
|
|
22
|
-
"require": "./dist/index.js",
|
|
23
|
-
"types": "./dist/index.d.ts"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"files": [
|
|
27
|
-
"dist",
|
|
28
|
-
"README.md",
|
|
29
|
-
"LICENSE"
|
|
30
|
-
],
|
|
31
|
-
"bin": {
|
|
32
|
-
"opencode-rag": "./dist/cli.js"
|
|
33
|
-
},
|
|
34
|
-
"scripts": {
|
|
35
|
-
"build": "tsc -p tsconfig.build.json",
|
|
36
|
-
"postbuild": "node -e \"const fs=require('fs');fs.mkdirSync('dist/types',{recursive:true});fs.copyFileSync('src/types/opencode-plugin.d.ts','dist/types/opencode-plugin.d.ts');\"",
|
|
37
|
-
"prepublishOnly": "npm run build",
|
|
38
|
-
"typecheck": "tsc --noEmit",
|
|
39
|
-
"test": "node -e \"const {spawnSync}=require('node:child_process');const {globSync}=require('node:fs');const testFiles=globSync('src/**/*.test.ts');if(testFiles.length===0){console.log('No test files found under src; skipping npm test.');process.exit(0);}const result=spawnSync(process.execPath,['--import','tsx','--test','--test-force-exit',...testFiles],{stdio:'inherit'});process.exit(typeof result.status==='number'?result.status:1);\"",
|
|
40
|
-
"cli": "tsx src/cli.ts"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"@
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
"@
|
|
82
|
-
"@types/
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-rag-plugin",
|
|
3
|
+
"version": "1.2.4",
|
|
4
|
+
"description": "OpenCode plugin for local-first RAG-based semantic code search",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/plugin-entry.js",
|
|
7
|
+
"module": "./dist/plugin-entry.js",
|
|
8
|
+
"types": "./dist/plugin-entry.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/plugin-entry.js",
|
|
12
|
+
"require": "./dist/plugin-entry.js",
|
|
13
|
+
"types": "./dist/plugin-entry.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./server": {
|
|
16
|
+
"import": "./dist/plugin-entry.js",
|
|
17
|
+
"require": "./dist/plugin-entry.js",
|
|
18
|
+
"types": "./dist/plugin-entry.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./library": {
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"require": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"README.md",
|
|
29
|
+
"LICENSE"
|
|
30
|
+
],
|
|
31
|
+
"bin": {
|
|
32
|
+
"opencode-rag": "./dist/cli.js"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc -p tsconfig.build.json",
|
|
36
|
+
"postbuild": "node -e \"const fs=require('fs');fs.mkdirSync('dist/types',{recursive:true});fs.copyFileSync('src/types/opencode-plugin.d.ts','dist/types/opencode-plugin.d.ts');\"",
|
|
37
|
+
"prepublishOnly": "npm run build",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"test": "node -e \"const {spawnSync}=require('node:child_process');const {globSync}=require('node:fs');const testFiles=globSync('src/**/*.test.ts');if(testFiles.length===0){console.log('No test files found under src; skipping npm test.');process.exit(0);}const result=spawnSync(process.execPath,['--import','tsx','--test','--test-force-exit',...testFiles],{stdio:'inherit'});process.exit(typeof result.status==='number'?result.status:1);\"",
|
|
40
|
+
"cli": "tsx src/cli.ts",
|
|
41
|
+
"release:patch": "npm version patch && git push origin main && git push origin $(git describe --tags --abbrev=0) && gh release create $(git describe --tags --abbrev=0) --title \"Version $(git describe --tags --abbrev=0)\" --notes \"Patch release\""
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"opencode",
|
|
45
|
+
"rag",
|
|
46
|
+
"code-search",
|
|
47
|
+
"embeddings",
|
|
48
|
+
"vector-search",
|
|
49
|
+
"semantic-search",
|
|
50
|
+
"plugin",
|
|
51
|
+
"ai",
|
|
52
|
+
"code"
|
|
53
|
+
],
|
|
54
|
+
"author": "Christoph Döllinger <christoph.doellinger@med.uni-heidelberg.de>",
|
|
55
|
+
"license": "MIT",
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/MrDoe/OpenCodeRAG.git"
|
|
59
|
+
},
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/MrDoe/OpenCodeRAG/issues"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/MrDoe/OpenCodeRAG#readme",
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@opencode-ai/plugin": ">=1.0.0"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"@e965/xlsx": "^0.20.3",
|
|
69
|
+
"@lancedb/lancedb": "^0.29.0",
|
|
70
|
+
"apache-arrow": "18.1.0",
|
|
71
|
+
"canvas": "^3.2.3",
|
|
72
|
+
"chokidar": "^4.0.3",
|
|
73
|
+
"commander": "^13.1.0",
|
|
74
|
+
"mammoth": "^1.12.0",
|
|
75
|
+
"pdfjs-dist": "^5.7.284",
|
|
76
|
+
"tree-sitter-wasm": "^1.0.2",
|
|
77
|
+
"web-tree-sitter": "^0.26.9",
|
|
78
|
+
"word-extractor": "^1.0.4"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@opencode-ai/plugin": "1.15.5",
|
|
82
|
+
"@types/node": "^22.15.0",
|
|
83
|
+
"@types/word-extractor": "^1.0.6",
|
|
84
|
+
"tsx": "^4.19.4",
|
|
85
|
+
"typescript": "^5.8.3"
|
|
86
|
+
},
|
|
87
|
+
"overrides": {
|
|
88
|
+
"uuid": "^11.1.1"
|
|
89
|
+
}
|
|
90
|
+
}
|