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.
Files changed (110) hide show
  1. package/ReadMe.md +463 -463
  2. package/dist/__tests__/chunker/c.test.d.ts +1 -0
  3. package/dist/__tests__/chunker/c.test.js +82 -0
  4. package/dist/__tests__/chunker/c.test.js.map +1 -0
  5. package/dist/__tests__/chunker/cpp.test.d.ts +1 -0
  6. package/dist/__tests__/chunker/cpp.test.js +96 -0
  7. package/dist/__tests__/chunker/cpp.test.js.map +1 -0
  8. package/dist/__tests__/chunker/csharp.test.d.ts +1 -0
  9. package/dist/__tests__/chunker/csharp.test.js +85 -0
  10. package/dist/__tests__/chunker/csharp.test.js.map +1 -0
  11. package/dist/__tests__/chunker/css.test.d.ts +1 -0
  12. package/dist/__tests__/chunker/css.test.js +64 -0
  13. package/dist/__tests__/chunker/css.test.js.map +1 -0
  14. package/dist/__tests__/chunker/factory.test.d.ts +1 -0
  15. package/dist/__tests__/chunker/factory.test.js +202 -0
  16. package/dist/__tests__/chunker/factory.test.js.map +1 -0
  17. package/dist/__tests__/chunker/fallback.test.d.ts +1 -0
  18. package/dist/__tests__/chunker/fallback.test.js +67 -0
  19. package/dist/__tests__/chunker/fallback.test.js.map +1 -0
  20. package/dist/__tests__/chunker/go.test.d.ts +1 -0
  21. package/dist/__tests__/chunker/go.test.js +90 -0
  22. package/dist/__tests__/chunker/go.test.js.map +1 -0
  23. package/dist/__tests__/chunker/grammar.test.d.ts +1 -0
  24. package/dist/__tests__/chunker/grammar.test.js +108 -0
  25. package/dist/__tests__/chunker/grammar.test.js.map +1 -0
  26. package/dist/__tests__/chunker/html.test.d.ts +1 -0
  27. package/dist/__tests__/chunker/html.test.js +64 -0
  28. package/dist/__tests__/chunker/html.test.js.map +1 -0
  29. package/dist/__tests__/chunker/java.test.d.ts +1 -0
  30. package/dist/__tests__/chunker/java.test.js +83 -0
  31. package/dist/__tests__/chunker/java.test.js.map +1 -0
  32. package/dist/__tests__/chunker/javascript.test.d.ts +1 -0
  33. package/dist/__tests__/chunker/javascript.test.js +88 -0
  34. package/dist/__tests__/chunker/javascript.test.js.map +1 -0
  35. package/dist/__tests__/chunker/json.test.d.ts +1 -0
  36. package/dist/__tests__/chunker/json.test.js +54 -0
  37. package/dist/__tests__/chunker/json.test.js.map +1 -0
  38. package/dist/__tests__/chunker/kotlin.test.d.ts +1 -0
  39. package/dist/__tests__/chunker/kotlin.test.js +42 -0
  40. package/dist/__tests__/chunker/kotlin.test.js.map +1 -0
  41. package/dist/__tests__/chunker/markdown.test.d.ts +1 -0
  42. package/dist/__tests__/chunker/markdown.test.js +76 -0
  43. package/dist/__tests__/chunker/markdown.test.js.map +1 -0
  44. package/dist/__tests__/chunker/python.test.d.ts +1 -0
  45. package/dist/__tests__/chunker/python.test.js +81 -0
  46. package/dist/__tests__/chunker/python.test.js.map +1 -0
  47. package/dist/__tests__/chunker/razor.test.d.ts +1 -0
  48. package/dist/__tests__/chunker/razor.test.js +73 -0
  49. package/dist/__tests__/chunker/razor.test.js.map +1 -0
  50. package/dist/__tests__/chunker/register.test.d.ts +1 -0
  51. package/dist/__tests__/chunker/register.test.js +93 -0
  52. package/dist/__tests__/chunker/register.test.js.map +1 -0
  53. package/dist/__tests__/chunker/ruby.test.d.ts +1 -0
  54. package/dist/__tests__/chunker/ruby.test.js +40 -0
  55. package/dist/__tests__/chunker/ruby.test.js.map +1 -0
  56. package/dist/__tests__/chunker/rust.test.d.ts +1 -0
  57. package/dist/__tests__/chunker/rust.test.js +42 -0
  58. package/dist/__tests__/chunker/rust.test.js.map +1 -0
  59. package/dist/__tests__/chunker/sln.test.d.ts +1 -0
  60. package/dist/__tests__/chunker/sln.test.js +45 -0
  61. package/dist/__tests__/chunker/sln.test.js.map +1 -0
  62. package/dist/__tests__/chunker/swift.test.d.ts +1 -0
  63. package/dist/__tests__/chunker/swift.test.js +49 -0
  64. package/dist/__tests__/chunker/swift.test.js.map +1 -0
  65. package/dist/__tests__/chunker/typescript.test.d.ts +1 -0
  66. package/dist/__tests__/chunker/typescript.test.js +92 -0
  67. package/dist/__tests__/chunker/typescript.test.js.map +1 -0
  68. package/dist/__tests__/chunker/uuid.test.d.ts +1 -0
  69. package/dist/__tests__/chunker/uuid.test.js +19 -0
  70. package/dist/__tests__/chunker/uuid.test.js.map +1 -0
  71. package/dist/__tests__/chunker/xml.test.d.ts +1 -0
  72. package/dist/__tests__/chunker/xml.test.js +50 -0
  73. package/dist/__tests__/chunker/xml.test.js.map +1 -0
  74. package/dist/__tests__/core/config.test.d.ts +1 -0
  75. package/dist/__tests__/core/config.test.js +75 -0
  76. package/dist/__tests__/core/config.test.js.map +1 -0
  77. package/dist/__tests__/core/fileLogger.test.d.ts +1 -0
  78. package/dist/__tests__/core/fileLogger.test.js +34 -0
  79. package/dist/__tests__/core/fileLogger.test.js.map +1 -0
  80. package/dist/__tests__/core/manifest.test.d.ts +1 -0
  81. package/dist/__tests__/core/manifest.test.js +56 -0
  82. package/dist/__tests__/core/manifest.test.js.map +1 -0
  83. package/dist/__tests__/embedder/embedBatch.test.d.ts +1 -0
  84. package/dist/__tests__/embedder/embedBatch.test.js +88 -0
  85. package/dist/__tests__/embedder/embedBatch.test.js.map +1 -0
  86. package/dist/__tests__/embedder/factory.test.d.ts +1 -0
  87. package/dist/__tests__/embedder/factory.test.js +71 -0
  88. package/dist/__tests__/embedder/factory.test.js.map +1 -0
  89. package/dist/__tests__/embedder/ollama.test.d.ts +1 -0
  90. package/dist/__tests__/embedder/ollama.test.js +106 -0
  91. package/dist/__tests__/embedder/ollama.test.js.map +1 -0
  92. package/dist/__tests__/embedder/openai.test.d.ts +1 -0
  93. package/dist/__tests__/embedder/openai.test.js +94 -0
  94. package/dist/__tests__/embedder/openai.test.js.map +1 -0
  95. package/dist/__tests__/indexer/indexer.test.d.ts +1 -0
  96. package/dist/__tests__/indexer/indexer.test.js +176 -0
  97. package/dist/__tests__/indexer/indexer.test.js.map +1 -0
  98. package/dist/__tests__/plugin.test.d.ts +1 -0
  99. package/dist/__tests__/plugin.test.js +77 -0
  100. package/dist/__tests__/plugin.test.js.map +1 -0
  101. package/dist/__tests__/retriever/retriever.test.d.ts +1 -0
  102. package/dist/__tests__/retriever/retriever.test.js +97 -0
  103. package/dist/__tests__/retriever/retriever.test.js.map +1 -0
  104. package/dist/__tests__/vectorstore/lancedb.test.d.ts +1 -0
  105. package/dist/__tests__/vectorstore/lancedb.test.js +159 -0
  106. package/dist/__tests__/vectorstore/lancedb.test.js.map +1 -0
  107. package/dist/plugin-entry.d.ts +5 -2
  108. package/dist/plugin-entry.js +1 -1
  109. package/dist/plugin-entry.js.map +1 -1
  110. 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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"}
@@ -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
- export default ragPlugin;
3
+ declare const _default: {
4
+ id: string;
5
+ server: import("@opencode-ai/plugin").Plugin;
6
+ };
7
+ export default _default;
@@ -1,5 +1,5 @@
1
1
  import { ragPlugin } from "./plugin.js";
2
2
  export const id = "opencode-rag";
3
3
  export const server = ragPlugin;
4
- export default ragPlugin;
4
+ export default { id: "opencode-rag", server: ragPlugin };
5
5
  //# sourceMappingURL=plugin-entry.js.map
@@ -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.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
- "keywords": [
43
- "opencode",
44
- "rag",
45
- "code-search",
46
- "embeddings",
47
- "vector-search",
48
- "semantic-search",
49
- "plugin",
50
- "ai",
51
- "code"
52
- ],
53
- "author": "Christoph Döllinger <christoph.doellinger@med.uni-heidelberg.de>",
54
- "license": "MIT",
55
- "repository": {
56
- "type": "git",
57
- "url": "git+https://github.com/MrDoe/OpenCodeRAG.git"
58
- },
59
- "bugs": {
60
- "url": "https://github.com/MrDoe/OpenCodeRAG/issues"
61
- },
62
- "homepage": "https://github.com/MrDoe/OpenCodeRAG#readme",
63
- "peerDependencies": {
64
- "@opencode-ai/plugin": ">=1.0.0"
65
- },
66
- "dependencies": {
67
- "@e965/xlsx": "^0.20.3",
68
- "@lancedb/lancedb": "^0.29.0",
69
- "apache-arrow": "18.1.0",
70
- "canvas": "^3.2.3",
71
- "chokidar": "^4.0.3",
72
- "commander": "^13.1.0",
73
- "mammoth": "^1.12.0",
74
- "pdfjs-dist": "^5.7.284",
75
- "tree-sitter-wasm": "^1.0.2",
76
- "web-tree-sitter": "^0.26.9",
77
- "word-extractor": "^1.0.4"
78
- },
79
- "devDependencies": {
80
- "@opencode-ai/plugin": "1.15.5",
81
- "@types/node": "^22.15.0",
82
- "@types/word-extractor": "^1.0.6",
83
- "tsx": "^4.19.4",
84
- "typescript": "^5.8.3"
85
- },
86
- "overrides": {
87
- "uuid": "^11.1.1"
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
+ }