opencode-rag-plugin 1.2.5 → 1.2.11

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 (117) hide show
  1. package/ReadMe.md +491 -463
  2. package/dist/cli.js +58 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/core/config.d.ts +1 -0
  5. package/dist/core/config.js +1 -0
  6. package/dist/core/config.js.map +1 -1
  7. package/dist/plugin.js +6 -4
  8. package/dist/plugin.js.map +1 -1
  9. package/dist/retriever/retriever.d.ts +1 -0
  10. package/dist/retriever/retriever.js +3 -1
  11. package/dist/retriever/retriever.js.map +1 -1
  12. package/package.json +90 -90
  13. package/dist/__tests__/chunker/c.test.d.ts +0 -1
  14. package/dist/__tests__/chunker/c.test.js +0 -82
  15. package/dist/__tests__/chunker/c.test.js.map +0 -1
  16. package/dist/__tests__/chunker/cpp.test.d.ts +0 -1
  17. package/dist/__tests__/chunker/cpp.test.js +0 -96
  18. package/dist/__tests__/chunker/cpp.test.js.map +0 -1
  19. package/dist/__tests__/chunker/csharp.test.d.ts +0 -1
  20. package/dist/__tests__/chunker/csharp.test.js +0 -85
  21. package/dist/__tests__/chunker/csharp.test.js.map +0 -1
  22. package/dist/__tests__/chunker/css.test.d.ts +0 -1
  23. package/dist/__tests__/chunker/css.test.js +0 -64
  24. package/dist/__tests__/chunker/css.test.js.map +0 -1
  25. package/dist/__tests__/chunker/factory.test.d.ts +0 -1
  26. package/dist/__tests__/chunker/factory.test.js +0 -202
  27. package/dist/__tests__/chunker/factory.test.js.map +0 -1
  28. package/dist/__tests__/chunker/fallback.test.d.ts +0 -1
  29. package/dist/__tests__/chunker/fallback.test.js +0 -67
  30. package/dist/__tests__/chunker/fallback.test.js.map +0 -1
  31. package/dist/__tests__/chunker/go.test.d.ts +0 -1
  32. package/dist/__tests__/chunker/go.test.js +0 -90
  33. package/dist/__tests__/chunker/go.test.js.map +0 -1
  34. package/dist/__tests__/chunker/grammar.test.d.ts +0 -1
  35. package/dist/__tests__/chunker/grammar.test.js +0 -108
  36. package/dist/__tests__/chunker/grammar.test.js.map +0 -1
  37. package/dist/__tests__/chunker/html.test.d.ts +0 -1
  38. package/dist/__tests__/chunker/html.test.js +0 -64
  39. package/dist/__tests__/chunker/html.test.js.map +0 -1
  40. package/dist/__tests__/chunker/java.test.d.ts +0 -1
  41. package/dist/__tests__/chunker/java.test.js +0 -83
  42. package/dist/__tests__/chunker/java.test.js.map +0 -1
  43. package/dist/__tests__/chunker/javascript.test.d.ts +0 -1
  44. package/dist/__tests__/chunker/javascript.test.js +0 -88
  45. package/dist/__tests__/chunker/javascript.test.js.map +0 -1
  46. package/dist/__tests__/chunker/json.test.d.ts +0 -1
  47. package/dist/__tests__/chunker/json.test.js +0 -54
  48. package/dist/__tests__/chunker/json.test.js.map +0 -1
  49. package/dist/__tests__/chunker/kotlin.test.d.ts +0 -1
  50. package/dist/__tests__/chunker/kotlin.test.js +0 -42
  51. package/dist/__tests__/chunker/kotlin.test.js.map +0 -1
  52. package/dist/__tests__/chunker/markdown.test.d.ts +0 -1
  53. package/dist/__tests__/chunker/markdown.test.js +0 -76
  54. package/dist/__tests__/chunker/markdown.test.js.map +0 -1
  55. package/dist/__tests__/chunker/python.test.d.ts +0 -1
  56. package/dist/__tests__/chunker/python.test.js +0 -81
  57. package/dist/__tests__/chunker/python.test.js.map +0 -1
  58. package/dist/__tests__/chunker/razor.test.d.ts +0 -1
  59. package/dist/__tests__/chunker/razor.test.js +0 -73
  60. package/dist/__tests__/chunker/razor.test.js.map +0 -1
  61. package/dist/__tests__/chunker/register.test.d.ts +0 -1
  62. package/dist/__tests__/chunker/register.test.js +0 -93
  63. package/dist/__tests__/chunker/register.test.js.map +0 -1
  64. package/dist/__tests__/chunker/ruby.test.d.ts +0 -1
  65. package/dist/__tests__/chunker/ruby.test.js +0 -40
  66. package/dist/__tests__/chunker/ruby.test.js.map +0 -1
  67. package/dist/__tests__/chunker/rust.test.d.ts +0 -1
  68. package/dist/__tests__/chunker/rust.test.js +0 -42
  69. package/dist/__tests__/chunker/rust.test.js.map +0 -1
  70. package/dist/__tests__/chunker/sln.test.d.ts +0 -1
  71. package/dist/__tests__/chunker/sln.test.js +0 -45
  72. package/dist/__tests__/chunker/sln.test.js.map +0 -1
  73. package/dist/__tests__/chunker/swift.test.d.ts +0 -1
  74. package/dist/__tests__/chunker/swift.test.js +0 -49
  75. package/dist/__tests__/chunker/swift.test.js.map +0 -1
  76. package/dist/__tests__/chunker/typescript.test.d.ts +0 -1
  77. package/dist/__tests__/chunker/typescript.test.js +0 -92
  78. package/dist/__tests__/chunker/typescript.test.js.map +0 -1
  79. package/dist/__tests__/chunker/uuid.test.d.ts +0 -1
  80. package/dist/__tests__/chunker/uuid.test.js +0 -19
  81. package/dist/__tests__/chunker/uuid.test.js.map +0 -1
  82. package/dist/__tests__/chunker/xml.test.d.ts +0 -1
  83. package/dist/__tests__/chunker/xml.test.js +0 -50
  84. package/dist/__tests__/chunker/xml.test.js.map +0 -1
  85. package/dist/__tests__/core/config.test.d.ts +0 -1
  86. package/dist/__tests__/core/config.test.js +0 -75
  87. package/dist/__tests__/core/config.test.js.map +0 -1
  88. package/dist/__tests__/core/fileLogger.test.d.ts +0 -1
  89. package/dist/__tests__/core/fileLogger.test.js +0 -34
  90. package/dist/__tests__/core/fileLogger.test.js.map +0 -1
  91. package/dist/__tests__/core/manifest.test.d.ts +0 -1
  92. package/dist/__tests__/core/manifest.test.js +0 -56
  93. package/dist/__tests__/core/manifest.test.js.map +0 -1
  94. package/dist/__tests__/embedder/embedBatch.test.d.ts +0 -1
  95. package/dist/__tests__/embedder/embedBatch.test.js +0 -88
  96. package/dist/__tests__/embedder/embedBatch.test.js.map +0 -1
  97. package/dist/__tests__/embedder/factory.test.d.ts +0 -1
  98. package/dist/__tests__/embedder/factory.test.js +0 -71
  99. package/dist/__tests__/embedder/factory.test.js.map +0 -1
  100. package/dist/__tests__/embedder/ollama.test.d.ts +0 -1
  101. package/dist/__tests__/embedder/ollama.test.js +0 -106
  102. package/dist/__tests__/embedder/ollama.test.js.map +0 -1
  103. package/dist/__tests__/embedder/openai.test.d.ts +0 -1
  104. package/dist/__tests__/embedder/openai.test.js +0 -94
  105. package/dist/__tests__/embedder/openai.test.js.map +0 -1
  106. package/dist/__tests__/indexer/indexer.test.d.ts +0 -1
  107. package/dist/__tests__/indexer/indexer.test.js +0 -176
  108. package/dist/__tests__/indexer/indexer.test.js.map +0 -1
  109. package/dist/__tests__/plugin.test.d.ts +0 -1
  110. package/dist/__tests__/plugin.test.js +0 -77
  111. package/dist/__tests__/plugin.test.js.map +0 -1
  112. package/dist/__tests__/retriever/retriever.test.d.ts +0 -1
  113. package/dist/__tests__/retriever/retriever.test.js +0 -97
  114. package/dist/__tests__/retriever/retriever.test.js.map +0 -1
  115. package/dist/__tests__/vectorstore/lancedb.test.d.ts +0 -1
  116. package/dist/__tests__/vectorstore/lancedb.test.js +0 -159
  117. package/dist/__tests__/vectorstore/lancedb.test.js.map +0 -1
@@ -1,97 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"retriever.test.js","sourceRoot":"","sources":["../../../src/__tests__/retriever/retriever.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,159 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"lancedb.test.js","sourceRoot":"","sources":["../../../src/__tests__/vectorstore/lancedb.test.ts"],"names":[],"mappings":"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"}