opencode-rag-plugin 1.12.17 → 1.14.6

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 (335) hide show
  1. package/ReadMe.md +15 -13
  2. package/dist/api.d.ts +54 -2
  3. package/dist/api.js +41 -1
  4. package/dist/api.js.map +1 -1
  5. package/dist/chunker/base.js +2 -0
  6. package/dist/chunker/base.js.map +1 -1
  7. package/dist/chunker/bash.d.ts +5 -0
  8. package/dist/chunker/bash.js +5 -0
  9. package/dist/chunker/bash.js.map +1 -1
  10. package/dist/chunker/c.d.ts +6 -0
  11. package/dist/chunker/c.js +6 -0
  12. package/dist/chunker/c.js.map +1 -1
  13. package/dist/chunker/cpp.d.ts +6 -0
  14. package/dist/chunker/cpp.js +6 -0
  15. package/dist/chunker/cpp.js.map +1 -1
  16. package/dist/chunker/csharp.d.ts +6 -0
  17. package/dist/chunker/csharp.js +6 -0
  18. package/dist/chunker/csharp.js.map +1 -1
  19. package/dist/chunker/css.d.ts +6 -0
  20. package/dist/chunker/css.js +6 -0
  21. package/dist/chunker/css.js.map +1 -1
  22. package/dist/chunker/doc.d.ts +18 -0
  23. package/dist/chunker/doc.js +18 -0
  24. package/dist/chunker/doc.js.map +1 -1
  25. package/dist/chunker/dockerfile.d.ts +6 -0
  26. package/dist/chunker/dockerfile.js +6 -0
  27. package/dist/chunker/dockerfile.js.map +1 -1
  28. package/dist/chunker/docx.d.ts +18 -0
  29. package/dist/chunker/docx.js +18 -0
  30. package/dist/chunker/docx.js.map +1 -1
  31. package/dist/chunker/excel.d.ts +19 -0
  32. package/dist/chunker/excel.js +19 -0
  33. package/dist/chunker/excel.js.map +1 -1
  34. package/dist/chunker/go.d.ts +5 -0
  35. package/dist/chunker/go.js +5 -0
  36. package/dist/chunker/go.js.map +1 -1
  37. package/dist/chunker/grammar.d.ts +62 -0
  38. package/dist/chunker/grammar.js +133 -0
  39. package/dist/chunker/grammar.js.map +1 -1
  40. package/dist/chunker/html.d.ts +5 -0
  41. package/dist/chunker/html.js +5 -0
  42. package/dist/chunker/html.js.map +1 -1
  43. package/dist/chunker/image.d.ts +31 -0
  44. package/dist/chunker/image.js +50 -4
  45. package/dist/chunker/image.js.map +1 -1
  46. package/dist/chunker/ini.d.ts +5 -0
  47. package/dist/chunker/ini.js +5 -0
  48. package/dist/chunker/ini.js.map +1 -1
  49. package/dist/chunker/java.d.ts +5 -0
  50. package/dist/chunker/java.js +5 -0
  51. package/dist/chunker/java.js.map +1 -1
  52. package/dist/chunker/javascript.d.ts +6 -0
  53. package/dist/chunker/javascript.js +6 -0
  54. package/dist/chunker/javascript.js.map +1 -1
  55. package/dist/chunker/json.d.ts +5 -0
  56. package/dist/chunker/json.js +5 -0
  57. package/dist/chunker/json.js.map +1 -1
  58. package/dist/chunker/kotlin.d.ts +6 -0
  59. package/dist/chunker/kotlin.js +6 -0
  60. package/dist/chunker/kotlin.js.map +1 -1
  61. package/dist/chunker/loader.d.ts +11 -0
  62. package/dist/chunker/loader.js +20 -0
  63. package/dist/chunker/loader.js.map +1 -1
  64. package/dist/chunker/markdown.d.ts +5 -0
  65. package/dist/chunker/markdown.js +5 -0
  66. package/dist/chunker/markdown.js.map +1 -1
  67. package/dist/chunker/pdf.d.ts +19 -0
  68. package/dist/chunker/pdf.js +30 -0
  69. package/dist/chunker/pdf.js.map +1 -1
  70. package/dist/chunker/php.d.ts +5 -0
  71. package/dist/chunker/php.js +5 -0
  72. package/dist/chunker/php.js.map +1 -1
  73. package/dist/chunker/powershell.d.ts +5 -0
  74. package/dist/chunker/powershell.js +5 -0
  75. package/dist/chunker/powershell.js.map +1 -1
  76. package/dist/chunker/python.d.ts +5 -0
  77. package/dist/chunker/python.js +5 -0
  78. package/dist/chunker/python.js.map +1 -1
  79. package/dist/chunker/razor.d.ts +12 -0
  80. package/dist/chunker/razor.js +25 -0
  81. package/dist/chunker/razor.js.map +1 -1
  82. package/dist/chunker/ruby.d.ts +5 -0
  83. package/dist/chunker/ruby.js +5 -0
  84. package/dist/chunker/ruby.js.map +1 -1
  85. package/dist/chunker/rust.d.ts +6 -0
  86. package/dist/chunker/rust.js +6 -0
  87. package/dist/chunker/rust.js.map +1 -1
  88. package/dist/chunker/sln.d.ts +11 -0
  89. package/dist/chunker/sln.js +11 -0
  90. package/dist/chunker/sln.js.map +1 -1
  91. package/dist/chunker/sql.d.ts +5 -0
  92. package/dist/chunker/sql.js +5 -0
  93. package/dist/chunker/sql.js.map +1 -1
  94. package/dist/chunker/ssl.d.ts +12 -0
  95. package/dist/chunker/ssl.js +21 -2
  96. package/dist/chunker/ssl.js.map +1 -1
  97. package/dist/chunker/swift.d.ts +5 -0
  98. package/dist/chunker/swift.js +5 -0
  99. package/dist/chunker/swift.js.map +1 -1
  100. package/dist/chunker/tex.d.ts +12 -0
  101. package/dist/chunker/tex.js +12 -0
  102. package/dist/chunker/tex.js.map +1 -1
  103. package/dist/chunker/toml.d.ts +5 -0
  104. package/dist/chunker/toml.js +5 -0
  105. package/dist/chunker/toml.js.map +1 -1
  106. package/dist/chunker/typescript.d.ts +6 -0
  107. package/dist/chunker/typescript.js +6 -0
  108. package/dist/chunker/typescript.js.map +1 -1
  109. package/dist/chunker/xml.d.ts +5 -0
  110. package/dist/chunker/xml.js +5 -0
  111. package/dist/chunker/xml.js.map +1 -1
  112. package/dist/chunker/yaml.d.ts +5 -0
  113. package/dist/chunker/yaml.js +5 -0
  114. package/dist/chunker/yaml.js.map +1 -1
  115. package/dist/cli/commands/clear.d.ts +12 -0
  116. package/dist/cli/commands/clear.js +81 -0
  117. package/dist/cli/commands/clear.js.map +1 -0
  118. package/dist/cli/commands/describe-image.d.ts +14 -0
  119. package/dist/cli/commands/describe-image.js +68 -0
  120. package/dist/cli/commands/describe-image.js.map +1 -0
  121. package/dist/cli/commands/dump.d.ts +13 -0
  122. package/dist/cli/commands/dump.js +55 -0
  123. package/dist/cli/commands/dump.js.map +1 -0
  124. package/dist/cli/commands/eval.d.ts +32 -0
  125. package/dist/cli/commands/eval.js +158 -0
  126. package/dist/cli/commands/eval.js.map +1 -0
  127. package/dist/cli/commands/index-command.d.ts +17 -0
  128. package/dist/cli/commands/index-command.js +167 -0
  129. package/dist/cli/commands/index-command.js.map +1 -0
  130. package/dist/cli/commands/index.d.ts +16 -0
  131. package/dist/cli/commands/index.js +17 -0
  132. package/dist/cli/commands/index.js.map +1 -0
  133. package/dist/cli/commands/init-helpers.d.ts +101 -0
  134. package/dist/cli/commands/init-helpers.js +397 -0
  135. package/dist/cli/commands/init-helpers.js.map +1 -0
  136. package/dist/cli/commands/init.d.ts +19 -0
  137. package/dist/cli/commands/init.js +251 -0
  138. package/dist/cli/commands/init.js.map +1 -0
  139. package/dist/cli/commands/list.d.ts +13 -0
  140. package/dist/cli/commands/list.js +46 -0
  141. package/dist/cli/commands/list.js.map +1 -0
  142. package/dist/cli/commands/mcp.d.ts +14 -0
  143. package/dist/cli/commands/mcp.js +35 -0
  144. package/dist/cli/commands/mcp.js.map +1 -0
  145. package/dist/cli/commands/query.d.ts +14 -0
  146. package/dist/cli/commands/query.js +86 -0
  147. package/dist/cli/commands/query.js.map +1 -0
  148. package/dist/cli/commands/show.d.ts +13 -0
  149. package/dist/cli/commands/show.js +51 -0
  150. package/dist/cli/commands/show.js.map +1 -0
  151. package/dist/cli/commands/status.d.ts +14 -0
  152. package/dist/cli/commands/status.js +104 -0
  153. package/dist/cli/commands/status.js.map +1 -0
  154. package/dist/cli/commands/ui.d.ts +14 -0
  155. package/dist/cli/commands/ui.js +69 -0
  156. package/dist/cli/commands/ui.js.map +1 -0
  157. package/dist/cli/commands/update.d.ts +14 -0
  158. package/dist/cli/commands/update.js +76 -0
  159. package/dist/cli/commands/update.js.map +1 -0
  160. package/dist/cli/format.d.ts +112 -0
  161. package/dist/cli/format.js +184 -0
  162. package/dist/cli/format.js.map +1 -0
  163. package/dist/cli/helpers.d.ts +51 -0
  164. package/dist/cli/helpers.js +86 -0
  165. package/dist/cli/helpers.js.map +1 -0
  166. package/dist/cli/index.d.ts +28 -0
  167. package/dist/cli/index.js +104 -0
  168. package/dist/cli/index.js.map +1 -0
  169. package/dist/cli/progress.d.ts +39 -0
  170. package/dist/cli/progress.js +137 -0
  171. package/dist/cli/progress.js.map +1 -0
  172. package/dist/cli/types.d.ts +40 -0
  173. package/dist/cli/types.js +3 -0
  174. package/dist/cli/types.js.map +1 -0
  175. package/dist/cli.d.ts +11 -4
  176. package/dist/cli.js +9 -1253
  177. package/dist/cli.js.map +1 -1
  178. package/dist/content/doc.d.ts +1 -1
  179. package/dist/content/doc.js +1 -1
  180. package/dist/content/doc.js.map +1 -1
  181. package/dist/content/docx.d.ts +1 -1
  182. package/dist/content/docx.js +1 -1
  183. package/dist/content/docx.js.map +1 -1
  184. package/dist/content/excel.d.ts +1 -1
  185. package/dist/content/excel.js +1 -1
  186. package/dist/content/excel.js.map +1 -1
  187. package/dist/content/pdf.d.ts +1 -1
  188. package/dist/content/pdf.js +1 -1
  189. package/dist/content/pdf.js.map +1 -1
  190. package/dist/content/reader.d.ts +3 -1
  191. package/dist/content/reader.js +42 -10
  192. package/dist/content/reader.js.map +1 -1
  193. package/dist/core/bootstrap.d.ts +18 -0
  194. package/dist/core/bootstrap.js +9 -15
  195. package/dist/core/bootstrap.js.map +1 -1
  196. package/dist/core/config.d.ts +144 -0
  197. package/dist/core/config.js +65 -14
  198. package/dist/core/config.js.map +1 -1
  199. package/dist/core/doc-progress.d.ts +15 -0
  200. package/dist/core/doc-progress.js +61 -0
  201. package/dist/core/doc-progress.js.map +1 -0
  202. package/dist/core/fileLogger.d.ts +7 -0
  203. package/dist/core/fileLogger.js +2 -0
  204. package/dist/core/fileLogger.js.map +1 -1
  205. package/dist/core/interfaces.d.ts +52 -1
  206. package/dist/core/manifest.d.ts +25 -0
  207. package/dist/core/manifest.js +15 -1
  208. package/dist/core/manifest.js.map +1 -1
  209. package/dist/core/provider-defaults.d.ts +8 -0
  210. package/dist/core/provider-defaults.js +3 -0
  211. package/dist/core/provider-defaults.js.map +1 -1
  212. package/dist/core/rag-injection-flag.d.ts +3 -0
  213. package/dist/core/rag-injection-flag.js +2 -0
  214. package/dist/core/rag-injection-flag.js.map +1 -1
  215. package/dist/core/resolve-api-key.d.ts +1 -0
  216. package/dist/core/resolve-api-key.js +1 -0
  217. package/dist/core/resolve-api-key.js.map +1 -1
  218. package/dist/core/runtime-overrides.d.ts +4 -0
  219. package/dist/core/runtime-overrides.js +4 -1
  220. package/dist/core/runtime-overrides.js.map +1 -1
  221. package/dist/describer/anthropic.d.ts +22 -2
  222. package/dist/describer/anthropic.js +42 -110
  223. package/dist/describer/anthropic.js.map +1 -1
  224. package/dist/describer/describer.d.ts +21 -4
  225. package/dist/describer/describer.js +52 -111
  226. package/dist/describer/describer.js.map +1 -1
  227. package/dist/describer/gemini.d.ts +1 -2
  228. package/dist/describer/gemini.js +20 -113
  229. package/dist/describer/gemini.js.map +1 -1
  230. package/dist/describer/shared.d.ts +3 -0
  231. package/dist/describer/shared.js +19 -0
  232. package/dist/describer/shared.js.map +1 -0
  233. package/dist/embedder/factory.d.ts +25 -0
  234. package/dist/embedder/factory.js +25 -0
  235. package/dist/embedder/factory.js.map +1 -1
  236. package/dist/embedder/health.d.ts +10 -0
  237. package/dist/embedder/health.js +26 -14
  238. package/dist/embedder/health.js.map +1 -1
  239. package/dist/embedder/http.d.ts +47 -0
  240. package/dist/embedder/http.js +61 -3
  241. package/dist/embedder/http.js.map +1 -1
  242. package/dist/eval/index.d.ts +6 -0
  243. package/dist/eval/index.js.map +1 -1
  244. package/dist/eval/run-token-test.js +1 -5
  245. package/dist/eval/run-token-test.js.map +1 -1
  246. package/dist/eval/session-logger.d.ts +5 -0
  247. package/dist/eval/session-logger.js +4 -0
  248. package/dist/eval/session-logger.js.map +1 -1
  249. package/dist/eval/storage.d.ts +9 -0
  250. package/dist/eval/storage.js +9 -5
  251. package/dist/eval/storage.js.map +1 -1
  252. package/dist/eval/token-analysis.d.ts +8 -0
  253. package/dist/eval/token-analysis.js +6 -2
  254. package/dist/eval/token-analysis.js.map +1 -1
  255. package/dist/eval/token-counter.d.ts +1 -3
  256. package/dist/eval/token-counter.js +4 -5
  257. package/dist/eval/token-counter.js.map +1 -1
  258. package/dist/eval/types.d.ts +6 -0
  259. package/dist/eval/types.js +2 -0
  260. package/dist/eval/types.js.map +1 -1
  261. package/dist/index.d.ts +11 -0
  262. package/dist/index.js +12 -3
  263. package/dist/index.js.map +1 -1
  264. package/dist/indexer/description-stage.js +11 -2
  265. package/dist/indexer/description-stage.js.map +1 -1
  266. package/dist/indexer/embed-stage.js +0 -8
  267. package/dist/indexer/embed-stage.js.map +1 -1
  268. package/dist/indexer/pipeline.d.ts +27 -3
  269. package/dist/indexer/pipeline.js +314 -143
  270. package/dist/indexer/pipeline.js.map +1 -1
  271. package/dist/indexer/stats.d.ts +35 -0
  272. package/dist/indexer/stats.js +9 -0
  273. package/dist/indexer/stats.js.map +1 -1
  274. package/dist/indexer/watch.d.ts +25 -0
  275. package/dist/indexer/watch.js +21 -0
  276. package/dist/indexer/watch.js.map +1 -1
  277. package/dist/indexer/worker.d.ts +90 -2
  278. package/dist/indexer/worker.js +109 -24
  279. package/dist/indexer/worker.js.map +1 -1
  280. package/dist/indexer.d.ts +11 -1
  281. package/dist/indexer.js +9 -0
  282. package/dist/indexer.js.map +1 -1
  283. package/dist/mcp/cli.d.ts +3 -0
  284. package/dist/mcp/cli.js +1 -0
  285. package/dist/mcp/cli.js.map +1 -1
  286. package/dist/mcp/handlers.d.ts +41 -0
  287. package/dist/mcp/handlers.js +40 -1
  288. package/dist/mcp/handlers.js.map +1 -1
  289. package/dist/mcp/server.d.ts +8 -0
  290. package/dist/mcp/server.js +18 -1
  291. package/dist/mcp/server.js.map +1 -1
  292. package/dist/opencode/create-read-tool.js +1 -0
  293. package/dist/opencode/create-read-tool.js.map +1 -1
  294. package/dist/opencode/tools.d.ts +8 -17
  295. package/dist/opencode/tools.js +74 -109
  296. package/dist/opencode/tools.js.map +1 -1
  297. package/dist/plugin-entry.d.ts +6 -0
  298. package/dist/plugin-entry.js +6 -0
  299. package/dist/plugin-entry.js.map +1 -1
  300. package/dist/plugin.d.ts +37 -0
  301. package/dist/plugin.js +265 -40
  302. package/dist/plugin.js.map +1 -1
  303. package/dist/retriever/keyword-index.js +9 -9
  304. package/dist/retriever/keyword-index.js.map +1 -1
  305. package/dist/retriever/retriever.js +14 -4
  306. package/dist/retriever/retriever.js.map +1 -1
  307. package/dist/tui.d.ts +5 -0
  308. package/dist/tui.js +100 -12
  309. package/dist/tui.js.map +1 -1
  310. package/dist/types/opencode-plugin.d.ts +4 -1
  311. package/dist/updater.d.ts +23 -1
  312. package/dist/updater.js +55 -16
  313. package/dist/updater.js.map +1 -1
  314. package/dist/vectorstore/factory.d.ts +13 -0
  315. package/dist/vectorstore/factory.js +13 -0
  316. package/dist/vectorstore/factory.js.map +1 -1
  317. package/dist/vectorstore/lancedb.d.ts +78 -1
  318. package/dist/vectorstore/lancedb.js +195 -21
  319. package/dist/vectorstore/lancedb.js.map +1 -1
  320. package/dist/vectorstore/memory.d.ts +5 -0
  321. package/dist/vectorstore/memory.js +11 -0
  322. package/dist/vectorstore/memory.js.map +1 -1
  323. package/dist/watcher.d.ts +24 -0
  324. package/dist/watcher.js +17 -35
  325. package/dist/watcher.js.map +1 -1
  326. package/dist/web/api.d.ts +37 -0
  327. package/dist/web/api.js +54 -0
  328. package/dist/web/api.js.map +1 -1
  329. package/dist/web/server.d.ts +15 -0
  330. package/dist/web/server.js +14 -0
  331. package/dist/web/server.js.map +1 -1
  332. package/dist/web/static.d.ts +8 -0
  333. package/dist/web/static.js +8 -0
  334. package/dist/web/static.js.map +1 -1
  335. package/package.json +11 -15
@@ -0,0 +1,251 @@
1
+ /**
2
+ * `init` command — configures a workspace for OpenCodeRAG.
3
+ *
4
+ * Creates the `.opencode/` directory structure, plugin entry files,
5
+ * workspace package.json, opencode config, skill file, and runtime
6
+ * configuration. Also handles provider health checks and dependency
7
+ * installation.
8
+ */
9
+ import path from "node:path";
10
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
11
+ import { loadConfig } from "../../core/config.js";
12
+ import { checkProviderHealth, pullOllamaModels } from "../../embedder/health.js";
13
+ import { destroyAllPooledConnections } from "../../embedder/http.js";
14
+ import { c } from "../format.js";
15
+ import { getPackageMetadata, readJsonObject, writeJsonFile } from "../helpers.js";
16
+ import { buildOpencodeConfig, buildWorkspacePackageJson, generateDefaultConfigJson, generateSkillFile, generateWorkspacePluginFile, generateWorkspaceTuiPluginFile, installPluginFromGlobal, mergeGitignoreContent, } from "./init-helpers.js";
17
+ /**
18
+ * Register the `init` command on the given Commander program.
19
+ *
20
+ * Creates the full `.opencode/` workspace structure, plugin entries,
21
+ * skill file, and `opencode-rag.json` config. Optionally runs provider
22
+ * health checks and installs workspace-local npm dependencies.
23
+ *
24
+ * @param program - The Commander `Command` instance to register on.
25
+ */
26
+ export function registerInitCommand(program) {
27
+ program
28
+ .command("init")
29
+ .description("Configure the current workspace for OpenCodeRAG")
30
+ .option("-f, --force", "overwrite existing files")
31
+ .option("--skip-install", "skip installing workspace-local plugin dependencies")
32
+ .option("--skip-health-check", "skip provider connectivity and model availability check")
33
+ .action(async (options) => {
34
+ try {
35
+ const cwd = process.cwd();
36
+ const packageMetadata = getPackageMetadata();
37
+ const configPath = path.join(cwd, "opencode-rag.json");
38
+ const opencodeDir = path.join(cwd, ".opencode");
39
+ const gitignorePath = path.join(opencodeDir, ".gitignore");
40
+ const opencodeConfigPath = path.join(opencodeDir, "opencode.json");
41
+ const pluginsDir = path.join(opencodeDir, "plugins");
42
+ const pluginEntryPath = path.join(pluginsDir, "rag-plugin.js");
43
+ const tuiPluginEntryPath = path.join(pluginsDir, "rag-tui.js");
44
+ const tuiConfigPath = path.join(opencodeDir, "tui.json");
45
+ const opencodePackagePath = path.join(opencodeDir, "package.json");
46
+ console.log(`\n${c.heading("Initializing OpenCodeRAG in workspace...")}\n`);
47
+ if (!existsSync(opencodeDir)) {
48
+ mkdirSync(opencodeDir, { recursive: true });
49
+ console.log(` ${c.created("Created:")} .opencode/`);
50
+ }
51
+ else {
52
+ console.log(` ${c.exists("Exists:")} .opencode/`);
53
+ }
54
+ if (!existsSync(pluginsDir)) {
55
+ mkdirSync(pluginsDir, { recursive: true });
56
+ console.log(` ${c.created("Created:")} .opencode/plugins/`);
57
+ }
58
+ else {
59
+ console.log(` ${c.exists("Exists:")} .opencode/plugins/`);
60
+ }
61
+ const gitignoreExists = existsSync(gitignorePath);
62
+ const nextGitignoreContent = mergeGitignoreContent(gitignoreExists ? readFileSync(gitignorePath, "utf-8") : undefined);
63
+ if (!gitignoreExists || options.force || readFileSync(gitignorePath, "utf-8") !== nextGitignoreContent) {
64
+ writeFileSync(gitignorePath, nextGitignoreContent, "utf-8");
65
+ console.log(` ${gitignoreExists ? c.updated("Updated:") : c.created("Created:")} .opencode/.gitignore`);
66
+ }
67
+ else {
68
+ console.log(` ${c.exists("Exists:")} .opencode/.gitignore`);
69
+ }
70
+ const opencodeConfigExists = existsSync(opencodeConfigPath);
71
+ const nextOpencodeConfig = buildOpencodeConfig(readJsonObject(opencodeConfigPath));
72
+ if (!opencodeConfigExists || options.force) {
73
+ writeJsonFile(opencodeConfigPath, nextOpencodeConfig);
74
+ console.log(` ${opencodeConfigExists ? c.updated("Updated:") : c.created("Created:")} .opencode/opencode.json`);
75
+ }
76
+ else if (JSON.stringify(readJsonObject(opencodeConfigPath)) !== JSON.stringify(nextOpencodeConfig)) {
77
+ writeJsonFile(opencodeConfigPath, nextOpencodeConfig);
78
+ console.log(` ${c.updated("Updated:")} .opencode/opencode.json`);
79
+ }
80
+ else {
81
+ console.log(` ${c.exists("Exists:")} .opencode/opencode.json`);
82
+ }
83
+ const pluginEntryExists = existsSync(pluginEntryPath);
84
+ const pluginEntryContent = generateWorkspacePluginFile(packageMetadata.name);
85
+ if (!pluginEntryExists || options.force) {
86
+ writeFileSync(pluginEntryPath, pluginEntryContent, "utf-8");
87
+ console.log(` ${pluginEntryExists ? c.updated("Updated:") : c.created("Created:")} .opencode/plugins/rag-plugin.js`);
88
+ }
89
+ else if (readFileSync(pluginEntryPath, "utf-8") !== pluginEntryContent) {
90
+ writeFileSync(pluginEntryPath, pluginEntryContent, "utf-8");
91
+ console.log(` ${c.updated("Updated:")} .opencode/plugins/rag-plugin.js`);
92
+ }
93
+ else {
94
+ console.log(` ${c.exists("Exists:")} .opencode/plugins/rag-plugin.js`);
95
+ }
96
+ const tuiPluginEntryExists = existsSync(tuiPluginEntryPath);
97
+ const tuiPluginEntryContent = generateWorkspaceTuiPluginFile(packageMetadata.name);
98
+ if (!tuiPluginEntryExists || options.force) {
99
+ writeFileSync(tuiPluginEntryPath, tuiPluginEntryContent, "utf-8");
100
+ console.log(` ${tuiPluginEntryExists ? c.updated("Updated:") : c.created("Created:")} .opencode/plugins/rag-tui.js`);
101
+ }
102
+ else if (readFileSync(tuiPluginEntryPath, "utf-8") !== tuiPluginEntryContent) {
103
+ writeFileSync(tuiPluginEntryPath, tuiPluginEntryContent, "utf-8");
104
+ console.log(` ${c.updated("Updated:")} .opencode/plugins/rag-tui.js`);
105
+ }
106
+ else {
107
+ console.log(` ${c.exists("Exists:")} .opencode/plugins/rag-tui.js`);
108
+ }
109
+ const tuiConfigExists = existsSync(tuiConfigPath);
110
+ const nextTuiConfig = { plugin: ["./plugins/rag-tui.js"] };
111
+ if (!tuiConfigExists || options.force) {
112
+ writeJsonFile(tuiConfigPath, nextTuiConfig);
113
+ console.log(` ${tuiConfigExists ? c.updated("Updated:") : c.created("Created:")} .opencode/tui.json`);
114
+ }
115
+ else if (JSON.stringify(readJsonObject(tuiConfigPath)) !== JSON.stringify(nextTuiConfig)) {
116
+ writeJsonFile(tuiConfigPath, nextTuiConfig);
117
+ console.log(` ${c.updated("Updated:")} .opencode/tui.json`);
118
+ }
119
+ else {
120
+ console.log(` ${c.exists("Exists:")} .opencode/tui.json`);
121
+ }
122
+ const skillsDir = path.join(opencodeDir, "skills");
123
+ const skillDir = path.join(skillsDir, "opencode-rag");
124
+ const skillPath = path.join(skillDir, "SKILL.md");
125
+ if (!existsSync(skillDir)) {
126
+ mkdirSync(skillDir, { recursive: true });
127
+ console.log(` ${c.created("Created:")} .opencode/skills/opencode-rag/`);
128
+ }
129
+ const skillContent = generateSkillFile();
130
+ const skillExists = existsSync(skillPath);
131
+ if (!skillExists || options.force) {
132
+ writeFileSync(skillPath, skillContent, "utf-8");
133
+ console.log(` ${skillExists ? c.updated("Updated:") : c.created("Created:")} .opencode/skills/opencode-rag/SKILL.md`);
134
+ }
135
+ else if (readFileSync(skillPath, "utf-8") !== skillContent) {
136
+ writeFileSync(skillPath, skillContent, "utf-8");
137
+ console.log(` ${c.updated("Updated:")} .opencode/skills/opencode-rag/SKILL.md`);
138
+ }
139
+ else {
140
+ console.log(` ${c.exists("Exists:")} .opencode/skills/opencode-rag/SKILL.md`);
141
+ }
142
+ const workspacePackageExists = existsSync(opencodePackagePath);
143
+ const nextWorkspacePackage = buildWorkspacePackageJson(readJsonObject(opencodePackagePath), packageMetadata);
144
+ if (!workspacePackageExists || options.force) {
145
+ writeJsonFile(opencodePackagePath, nextWorkspacePackage);
146
+ console.log(` ${workspacePackageExists ? c.updated("Updated:") : c.created("Created:")} .opencode/package.json`);
147
+ }
148
+ else if (JSON.stringify(readJsonObject(opencodePackagePath)) !== JSON.stringify(nextWorkspacePackage)) {
149
+ writeJsonFile(opencodePackagePath, nextWorkspacePackage);
150
+ console.log(` ${c.updated("Updated:")} .opencode/package.json`);
151
+ }
152
+ else {
153
+ console.log(` ${c.exists("Exists:")} .opencode/package.json`);
154
+ }
155
+ const configExists = existsSync(configPath);
156
+ if (!configExists || options.force) {
157
+ writeFileSync(configPath, generateDefaultConfigJson(), "utf-8");
158
+ console.log(` ${configExists ? c.updated("Updated:") : c.created("Created:")} opencode-rag.json`);
159
+ }
160
+ else {
161
+ console.log(` ${c.exists("Exists:")} opencode-rag.json`);
162
+ }
163
+ // ── Provider health check + dependency install (parallel) ──
164
+ const healthPromise = options.skipHealthCheck
165
+ ? null
166
+ : (async () => {
167
+ console.log(`\n${c.heading("Checking provider connectivity...")}\n`);
168
+ const ragConfig = loadConfig(configPath);
169
+ return checkProviderHealth(ragConfig);
170
+ })();
171
+ const installPromise = options.skipInstall
172
+ ? null
173
+ : installPluginFromGlobal(opencodeDir, packageMetadata.name, false);
174
+ // Wait for health check results first
175
+ if (healthPromise) {
176
+ const results = await healthPromise;
177
+ for (const r of results) {
178
+ const icon = r.status === "ok" ? c.success("✓") : r.status === "missing" ? c.warn("○") : c.error("✗");
179
+ const typeLabel = r.type === "image_description" ? "image description" : r.type;
180
+ const label = `${typeLabel} model`;
181
+ console.log(` ${icon} ${c.value(r.model)} (${r.provider}) — ${label}: ${r.status}`);
182
+ if (r.error)
183
+ console.log(` ${c.dim(r.error)}`);
184
+ }
185
+ const missingOllama = results.filter((r) => r.status === "missing" && r.provider === "ollama");
186
+ if (missingOllama.length > 0) {
187
+ const ragConfig = loadConfig(configPath);
188
+ const pullEntries = missingOllama.map((r) => {
189
+ if (r.type === "embedding") {
190
+ return { model: r.model, baseUrl: ragConfig.embedding.baseUrl, proxy: ragConfig.embedding.proxy };
191
+ }
192
+ if (r.type === "description" && ragConfig.description) {
193
+ return { model: r.model, baseUrl: ragConfig.description.baseUrl, proxy: ragConfig.description.proxy };
194
+ }
195
+ if (r.type === "image_description" && ragConfig.imageDescription) {
196
+ return { model: r.model, baseUrl: ragConfig.imageDescription.baseUrl, proxy: ragConfig.imageDescription.proxy };
197
+ }
198
+ return { model: r.model, baseUrl: ragConfig.embedding.baseUrl, proxy: ragConfig.embedding.proxy };
199
+ });
200
+ console.log(`\n ${c.warn("Models not found:")} ${pullEntries.map((e) => e.model).join(", ")}`);
201
+ const readline = await import("node:readline");
202
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
203
+ const answer = await new Promise((resolve) => {
204
+ rl.question(` Pull ${pullEntries.length === 1 ? "this model" : "these models"} now? (y/n) `, resolve);
205
+ });
206
+ rl.close();
207
+ if (answer.toLowerCase() === "y" || answer.toLowerCase() === "yes") {
208
+ console.log();
209
+ try {
210
+ await pullOllamaModels(pullEntries, (model, line) => {
211
+ console.log(` ${c.value(model)}: ${line}`);
212
+ });
213
+ console.log(`\n ${c.success("Models pulled successfully.")}`);
214
+ }
215
+ catch (err) {
216
+ console.error(`\n ${c.error("Pull failed:")} ${err.message}`);
217
+ console.log(` ${c.dim("Pull manually with: ollama pull <model>")}`);
218
+ }
219
+ }
220
+ else {
221
+ console.log(` ${c.dim("Skipped. Pull manually with: ollama pull <model>")}`);
222
+ }
223
+ }
224
+ const hasErrors = results.some((r) => r.status === "error");
225
+ if (hasErrors) {
226
+ console.log(`\n ${c.warn("Some providers are not reachable.")} Check configuration and network, then run ${c.file("'opencode-rag index'")}.`);
227
+ }
228
+ }
229
+ // Now install the plugin from global cache via junction
230
+ if (installPromise) {
231
+ console.log(`\n${c.heading("Installing workspace-local plugin...")}\n`);
232
+ await installPromise;
233
+ console.log(`\n ${c.success("Installed:")} .opencode/node_modules/`);
234
+ console.log(` ${c.dim("Plugin is linked to global runtime cache; no npm install was required.")}`);
235
+ }
236
+ else {
237
+ console.log(`\n ${c.exists("Skipped:")} plugin installation (--skip-install)`);
238
+ }
239
+ console.log(`\n${c.success("Done.")} Restart OpenCode if it is running, then run ${c.file("'opencode-rag index'")} in this workspace.`);
240
+ }
241
+ catch (err) {
242
+ console.error(`\n ${c.error("Init failed:")} ${err.message}`);
243
+ console.error(` ${c.dim("Fix the issue above, then run 'opencode-rag init' again.")}`);
244
+ process.exitCode = 1;
245
+ }
246
+ finally {
247
+ destroyAllPooledConnections();
248
+ }
249
+ });
250
+ }
251
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `list` command — displays all indexed files with their chunk counts.
3
+ */
4
+ import type { Command } from "commander";
5
+ /**
6
+ * Register the `list` command on the given Commander program.
7
+ *
8
+ * Queries the vector store for all indexed files and prints a formatted table
9
+ * showing each file path, language, and chunk count.
10
+ *
11
+ * @param program - The Commander `Command` instance to register on.
12
+ */
13
+ export declare function registerListCommand(program: Command): void;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * `list` command — displays all indexed files with their chunk counts.
3
+ */
4
+ import path from "node:path";
5
+ import { c, resolveCliContext, cleanupContext, logCliError, logCliInfo } from "../format.js";
6
+ /**
7
+ * Register the `list` command on the given Commander program.
8
+ *
9
+ * Queries the vector store for all indexed files and prints a formatted table
10
+ * showing each file path, language, and chunk count.
11
+ *
12
+ * @param program - The Commander `Command` instance to register on.
13
+ */
14
+ export function registerListCommand(program) {
15
+ program
16
+ .command("list")
17
+ .description("List all indexed files with chunk counts")
18
+ .option("-c, --config <path>", "path to config file")
19
+ .action(async (options) => {
20
+ try {
21
+ const cwd = process.cwd();
22
+ let logFilePath = path.resolve(cwd, ".opencode", "opencode-rag.log");
23
+ const ctx = await resolveCliContext(options, logFilePath);
24
+ const { store } = ctx;
25
+ logFilePath = ctx.logFilePath;
26
+ const files = await store.listFiles();
27
+ if (files.length === 0) {
28
+ logCliInfo(logFilePath, "list", `${c.warn("No indexed files found.")} Run 'opencode-rag index' first.`);
29
+ await cleanupContext(ctx);
30
+ return;
31
+ }
32
+ logCliInfo(logFilePath, "list", `\n${c.num(files.length)} file(s) indexed:\n`);
33
+ for (const f of files) {
34
+ logCliInfo(logFilePath, "list", ` ${c.file(f.filePath)} ${c.label("(")}${c.lang(f.language)}${c.label(", ")}${c.num(f.chunkCount)} chunk${f.chunkCount === 1 ? "" : "s"}${c.label(")")}`);
35
+ }
36
+ await cleanupContext(ctx);
37
+ }
38
+ catch (err) {
39
+ const message = err.message || String(err);
40
+ const logFilePath = path.resolve(process.cwd(), ".opencode", "opencode-rag.log");
41
+ logCliError(logFilePath, "list", `\nList failed: ${message}`, err);
42
+ process.exit(1);
43
+ }
44
+ });
45
+ }
46
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG7F;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;YACtB,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YAE9B,MAAM,KAAK,GAAG,MAAO,KAAa,CAAC,SAAS,EAAE,CAAC;YAE/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;gBACxG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC/E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9L,CAAC;YACD,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACjF,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `mcp` command — starts an MCP server for semantic code retrieval via stdio transport.
3
+ */
4
+ import type { Command } from "commander";
5
+ /**
6
+ * Register the `mcp` command on the given Commander program.
7
+ *
8
+ * Launches a Model Context Protocol (MCP) server that exposes semantic
9
+ * code search tools over stdio, allowing AI assistants to query the
10
+ * indexed workspace.
11
+ *
12
+ * @param program - The Commander `Command` instance to register on.
13
+ */
14
+ export declare function registerMcpCommand(program: Command): void;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `mcp` command — starts an MCP server for semantic code retrieval via stdio transport.
3
+ */
4
+ import { logCliError } from "../format.js";
5
+ /**
6
+ * Register the `mcp` command on the given Commander program.
7
+ *
8
+ * Launches a Model Context Protocol (MCP) server that exposes semantic
9
+ * code search tools over stdio, allowing AI assistants to query the
10
+ * indexed workspace.
11
+ *
12
+ * @param program - The Commander `Command` instance to register on.
13
+ */
14
+ export function registerMcpCommand(program) {
15
+ program
16
+ .command("mcp")
17
+ .description("Start MCP server for semantic code retrieval (stdio transport)")
18
+ .option("-c, --config <path>", "path to config file")
19
+ .action(async (options) => {
20
+ try {
21
+ const { runMcpServer } = await import("../../mcp/cli.js");
22
+ await runMcpServer({
23
+ configPath: options.config,
24
+ cwd: process.cwd(),
25
+ });
26
+ }
27
+ catch (err) {
28
+ const message = err.message || String(err);
29
+ const logFilePath = require("node:path").resolve(process.cwd(), ".opencode", "opencode-rag.log");
30
+ logCliError(logFilePath, "mcp", `\nMCP server failed: ${message}`, err);
31
+ process.exit(1);
32
+ }
33
+ });
34
+ }
35
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC1D,MAAM,YAAY,CAAC;gBACjB,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACjG,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,wBAAwB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `query` command — searches the indexed codebase with semantic and keyword retrieval.
3
+ */
4
+ import type { Command } from "commander";
5
+ /**
6
+ * Register the `query` command on the given Commander program.
7
+ *
8
+ * Embeds the user's natural-language query, performs hybrid vector + keyword
9
+ * search against the LanceDB store, and prints ranked results with scores,
10
+ * line ranges, and content previews.
11
+ *
12
+ * @param program - The Commander `Command` instance to register on.
13
+ */
14
+ export declare function registerQueryCommand(program: Command): void;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * `query` command — searches the indexed codebase with semantic and keyword retrieval.
3
+ */
4
+ import path from "node:path";
5
+ import pc from "picocolors";
6
+ import { retrieve } from "../../retriever/retriever.js";
7
+ import { c, resolveCliContext, cleanupContext, logCliError, logCliInfo, formatDuration, dedupeResults } from "../format.js";
8
+ /**
9
+ * Register the `query` command on the given Commander program.
10
+ *
11
+ * Embeds the user's natural-language query, performs hybrid vector + keyword
12
+ * search against the LanceDB store, and prints ranked results with scores,
13
+ * line ranges, and content previews.
14
+ *
15
+ * @param program - The Commander `Command` instance to register on.
16
+ */
17
+ export function registerQueryCommand(program) {
18
+ program
19
+ .command("query")
20
+ .description("Search the indexed codebase")
21
+ .argument("<query>", "natural language query")
22
+ .option("-c, --config <path>", "path to config file")
23
+ .option("-n, --top-k <number>", "number of results", "10")
24
+ .option("--explain", "show hybrid score breakdown")
25
+ .action(async (query, options) => {
26
+ const started = Date.now();
27
+ try {
28
+ const cwd = process.cwd();
29
+ let logFilePath = path.resolve(cwd, ".opencode", "opencode-rag.log");
30
+ const ctx = await resolveCliContext(options, logFilePath);
31
+ const { config, embedder, store, keywordIndex } = ctx;
32
+ logFilePath = ctx.logFilePath;
33
+ logCliInfo(logFilePath, "query", `\n${c.heading("Querying:")} "${query}"`);
34
+ logCliInfo(logFilePath, "query", `${c.label("Top-K:")} ${c.num(parseInt(options.topK ?? "10", 10))}`);
35
+ const indexedCount = await store.count();
36
+ if (indexedCount === 0) {
37
+ logCliInfo(logFilePath, "query", `${c.warn("No indexed chunks found.")} Run 'opencode-rag index' first.`);
38
+ await cleanupContext(ctx);
39
+ return;
40
+ }
41
+ logCliInfo(logFilePath, "query", `${c.label("Searching")} ${c.num(indexedCount)} indexed chunks...`);
42
+ const topK = parseInt(options.topK ?? "10", 10);
43
+ const minScore = config.retrieval.minScore;
44
+ const hybridCfg = config.retrieval.hybridSearch;
45
+ const rawResults = await retrieve(query, embedder, store, {
46
+ topK,
47
+ minScore,
48
+ keywordIndex,
49
+ keywordWeight: hybridCfg?.keywordWeight,
50
+ queryPrefix: config.embedding.queryPrefix,
51
+ explain: options.explain ?? false,
52
+ });
53
+ const results = dedupeResults(rawResults);
54
+ if (results.length === 0) {
55
+ logCliInfo(logFilePath, "query", c.warn("No results found."));
56
+ await cleanupContext(ctx);
57
+ return;
58
+ }
59
+ const duration = formatDuration(Date.now() - started);
60
+ logCliInfo(logFilePath, "query", `\n${c.num(results.length)} result(s) in ${duration}:\n`);
61
+ for (const r of results) {
62
+ logCliInfo(logFilePath, "query", ` ${c.file(r.chunk.metadata.filePath)}:${c.value(String(r.chunk.metadata.startLine))}-${c.value(String(r.chunk.metadata.endLine))}`);
63
+ logCliInfo(logFilePath, "query", ` ${c.label("Score:")} ${c.score(r.score.toFixed(4))}`);
64
+ if (r.explanation) {
65
+ const sb = r.explanation.scoreBreakdown;
66
+ logCliInfo(logFilePath, "query", ` ${c.label(" Vector:")} ${c.score(sb.rawVectorScore.toFixed(4))} ${c.label("Keyword:")} ${c.score(sb.rawKeywordScore.toFixed(4))} ${c.label("KW weight:")} ${sb.keywordWeight.toFixed(2)}`);
67
+ if (r.explanation.matchedTerms && r.explanation.matchedTerms.length > 0) {
68
+ logCliInfo(logFilePath, "query", ` ${c.label(" Matched:")} ${c.lang(r.explanation.matchedTerms.join(", "))}`);
69
+ }
70
+ }
71
+ logCliInfo(logFilePath, "query", ` ${pc.dim(r.chunk.content.slice(0, 200).replace(/\n/g, "\n "))}`);
72
+ }
73
+ await cleanupContext(ctx);
74
+ }
75
+ catch (err) {
76
+ const message = err.message || String(err);
77
+ const logFilePath = path.resolve(process.cwd(), ".opencode", "opencode-rag.log");
78
+ logCliError(logFilePath, "query", `\nQuery failed: ${message}`, err);
79
+ if (message.toLowerCase().includes("fetch") || message.toLowerCase().includes("econnrefused")) {
80
+ console.error(c.warn("Hint: Is your embedding provider running?"));
81
+ }
82
+ process.exit(1);
83
+ }
84
+ });
85
+ }
86
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/cli/commands/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `show` command — displays chunks for a specific indexed file.
3
+ */
4
+ import type { Command } from "commander";
5
+ /**
6
+ * Register the `show <file>` command on the given Commander program.
7
+ *
8
+ * Looks up all chunks matching the given file path and prints their line ranges,
9
+ * language, description, and content.
10
+ *
11
+ * @param program - The Commander `Command` instance to register on.
12
+ */
13
+ export declare function registerShowCommand(program: Command): void;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * `show` command — displays chunks for a specific indexed file.
3
+ */
4
+ import path from "node:path";
5
+ import pc from "picocolors";
6
+ import { c, resolveCliContext, cleanupContext, logCliError, logCliInfo } from "../format.js";
7
+ /**
8
+ * Register the `show <file>` command on the given Commander program.
9
+ *
10
+ * Looks up all chunks matching the given file path and prints their line ranges,
11
+ * language, description, and content.
12
+ *
13
+ * @param program - The Commander `Command` instance to register on.
14
+ */
15
+ export function registerShowCommand(program) {
16
+ program
17
+ .command("show <file>")
18
+ .description("Show chunks for a specific file")
19
+ .option("-c, --config <path>", "path to config file")
20
+ .action(async (file, options) => {
21
+ try {
22
+ const cwd = process.cwd();
23
+ let logFilePath = path.resolve(cwd, ".opencode", "opencode-rag.log");
24
+ const ctx = await resolveCliContext(options, logFilePath);
25
+ const { store } = ctx;
26
+ logFilePath = ctx.logFilePath;
27
+ const chunks = await store.getChunksByFilePath(file);
28
+ if (chunks.length === 0) {
29
+ logCliInfo(logFilePath, "show", `${c.warn(`No chunks found for '${file}'.`)}`);
30
+ await cleanupContext(ctx);
31
+ return;
32
+ }
33
+ logCliInfo(logFilePath, "show", `\n${c.num(chunks.length)} chunk(s) for ${c.file(file)}:\n`);
34
+ for (const chunk of chunks) {
35
+ logCliInfo(logFilePath, "show", ` ${c.label("[")}${c.value(String(chunk.metadata.startLine))}${c.label("-")}${c.value(String(chunk.metadata.endLine))}${c.label("]")} ${c.label("(")}${c.lang(chunk.metadata.language)}${c.label(")")} ${pc.dim(chunk.id)}`);
36
+ if (chunk.description) {
37
+ logCliInfo(logFilePath, "show", ` ${c.desc(">")} ${c.desc(chunk.description)}`);
38
+ }
39
+ logCliInfo(logFilePath, "show", ` ${chunk.content}\n`);
40
+ }
41
+ await cleanupContext(ctx);
42
+ }
43
+ catch (err) {
44
+ const message = err.message || String(err);
45
+ const logFilePath = path.resolve(process.cwd(), ".opencode", "opencode-rag.log");
46
+ logCliError(logFilePath, "show", `\nShow failed: ${message}`, err);
47
+ process.exit(1);
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/cli/commands/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `status` command — shows index statistics, store health, and configuration summary.
3
+ */
4
+ import type { Command } from "commander";
5
+ /**
6
+ * Register the `status` command on the given Commander program.
7
+ *
8
+ * Displays a comprehensive overview of the current index: chunk counts,
9
+ * store path, embedding provider/model, file extensions, manifest status,
10
+ * keyword index state, and whether a rebuild is required.
11
+ *
12
+ * @param program - The Commander `Command` instance to register on.
13
+ */
14
+ export declare function registerStatusCommand(program: Command): void;