vemora 0.1.0-alpha.10

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 (242) hide show
  1. package/README.md +759 -0
  2. package/dist/cli.d.ts +16 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +589 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/ask.d.ts +14 -0
  7. package/dist/commands/ask.d.ts.map +1 -0
  8. package/dist/commands/ask.js +137 -0
  9. package/dist/commands/ask.js.map +1 -0
  10. package/dist/commands/audit.d.ts +17 -0
  11. package/dist/commands/audit.d.ts.map +1 -0
  12. package/dist/commands/audit.js +408 -0
  13. package/dist/commands/audit.js.map +1 -0
  14. package/dist/commands/brief.d.ts +14 -0
  15. package/dist/commands/brief.d.ts.map +1 -0
  16. package/dist/commands/brief.js +73 -0
  17. package/dist/commands/brief.js.map +1 -0
  18. package/dist/commands/chat.d.ts +7 -0
  19. package/dist/commands/chat.d.ts.map +1 -0
  20. package/dist/commands/chat.js +155 -0
  21. package/dist/commands/chat.js.map +1 -0
  22. package/dist/commands/context.d.ts +61 -0
  23. package/dist/commands/context.d.ts.map +1 -0
  24. package/dist/commands/context.js +778 -0
  25. package/dist/commands/context.js.map +1 -0
  26. package/dist/commands/deps.d.ts +20 -0
  27. package/dist/commands/deps.d.ts.map +1 -0
  28. package/dist/commands/deps.js +138 -0
  29. package/dist/commands/deps.js.map +1 -0
  30. package/dist/commands/focus.d.ts +6 -0
  31. package/dist/commands/focus.d.ts.map +1 -0
  32. package/dist/commands/focus.js +302 -0
  33. package/dist/commands/focus.js.map +1 -0
  34. package/dist/commands/index.d.ts +10 -0
  35. package/dist/commands/index.d.ts.map +1 -0
  36. package/dist/commands/index.js +366 -0
  37. package/dist/commands/index.js.map +1 -0
  38. package/dist/commands/init-agent.d.ts +23 -0
  39. package/dist/commands/init-agent.d.ts.map +1 -0
  40. package/dist/commands/init-agent.js +447 -0
  41. package/dist/commands/init-agent.js.map +1 -0
  42. package/dist/commands/init.d.ts +2 -0
  43. package/dist/commands/init.d.ts.map +1 -0
  44. package/dist/commands/init.js +122 -0
  45. package/dist/commands/init.js.map +1 -0
  46. package/dist/commands/knowledge.d.ts +8 -0
  47. package/dist/commands/knowledge.d.ts.map +1 -0
  48. package/dist/commands/knowledge.js +98 -0
  49. package/dist/commands/knowledge.js.map +1 -0
  50. package/dist/commands/plan.d.ts +16 -0
  51. package/dist/commands/plan.d.ts.map +1 -0
  52. package/dist/commands/plan.js +535 -0
  53. package/dist/commands/plan.js.map +1 -0
  54. package/dist/commands/query.d.ts +39 -0
  55. package/dist/commands/query.d.ts.map +1 -0
  56. package/dist/commands/query.js +389 -0
  57. package/dist/commands/query.js.map +1 -0
  58. package/dist/commands/remember.d.ts +11 -0
  59. package/dist/commands/remember.d.ts.map +1 -0
  60. package/dist/commands/remember.js +174 -0
  61. package/dist/commands/remember.js.map +1 -0
  62. package/dist/commands/report.d.ts +10 -0
  63. package/dist/commands/report.d.ts.map +1 -0
  64. package/dist/commands/report.js +180 -0
  65. package/dist/commands/report.js.map +1 -0
  66. package/dist/commands/status.d.ts +2 -0
  67. package/dist/commands/status.d.ts.map +1 -0
  68. package/dist/commands/status.js +127 -0
  69. package/dist/commands/status.js.map +1 -0
  70. package/dist/commands/summarize.d.ts +14 -0
  71. package/dist/commands/summarize.d.ts.map +1 -0
  72. package/dist/commands/summarize.js +181 -0
  73. package/dist/commands/summarize.js.map +1 -0
  74. package/dist/commands/triage.d.ts +33 -0
  75. package/dist/commands/triage.d.ts.map +1 -0
  76. package/dist/commands/triage.js +419 -0
  77. package/dist/commands/triage.js.map +1 -0
  78. package/dist/commands/usages.d.ts +14 -0
  79. package/dist/commands/usages.d.ts.map +1 -0
  80. package/dist/commands/usages.js +236 -0
  81. package/dist/commands/usages.js.map +1 -0
  82. package/dist/core/config.d.ts +35 -0
  83. package/dist/core/config.d.ts.map +1 -0
  84. package/dist/core/config.js +141 -0
  85. package/dist/core/config.js.map +1 -0
  86. package/dist/core/types.d.ts +274 -0
  87. package/dist/core/types.d.ts.map +1 -0
  88. package/dist/core/types.js +4 -0
  89. package/dist/core/types.js.map +1 -0
  90. package/dist/embeddings/factory.d.ts +9 -0
  91. package/dist/embeddings/factory.d.ts.map +1 -0
  92. package/dist/embeddings/factory.js +26 -0
  93. package/dist/embeddings/factory.js.map +1 -0
  94. package/dist/embeddings/noop.d.ts +17 -0
  95. package/dist/embeddings/noop.d.ts.map +1 -0
  96. package/dist/embeddings/noop.js +22 -0
  97. package/dist/embeddings/noop.js.map +1 -0
  98. package/dist/embeddings/ollama.d.ts +11 -0
  99. package/dist/embeddings/ollama.d.ts.map +1 -0
  100. package/dist/embeddings/ollama.js +49 -0
  101. package/dist/embeddings/ollama.js.map +1 -0
  102. package/dist/embeddings/openai.d.ts +10 -0
  103. package/dist/embeddings/openai.d.ts.map +1 -0
  104. package/dist/embeddings/openai.js +67 -0
  105. package/dist/embeddings/openai.js.map +1 -0
  106. package/dist/embeddings/provider.d.ts +19 -0
  107. package/dist/embeddings/provider.d.ts.map +1 -0
  108. package/dist/embeddings/provider.js +3 -0
  109. package/dist/embeddings/provider.js.map +1 -0
  110. package/dist/indexer/callgraph.d.ts +16 -0
  111. package/dist/indexer/callgraph.d.ts.map +1 -0
  112. package/dist/indexer/callgraph.js +154 -0
  113. package/dist/indexer/callgraph.js.map +1 -0
  114. package/dist/indexer/chunkBySlidingWindow.d.ts +6 -0
  115. package/dist/indexer/chunkBySlidingWindow.d.ts.map +1 -0
  116. package/dist/indexer/chunkBySlidingWindow.js +30 -0
  117. package/dist/indexer/chunkBySlidingWindow.js.map +1 -0
  118. package/dist/indexer/chunkBySymbols.d.ts +7 -0
  119. package/dist/indexer/chunkBySymbols.d.ts.map +1 -0
  120. package/dist/indexer/chunkBySymbols.js +57 -0
  121. package/dist/indexer/chunkBySymbols.js.map +1 -0
  122. package/dist/indexer/chunker.d.ts +15 -0
  123. package/dist/indexer/chunker.d.ts.map +1 -0
  124. package/dist/indexer/chunker.js +26 -0
  125. package/dist/indexer/chunker.js.map +1 -0
  126. package/dist/indexer/classHeader.d.ts +7 -0
  127. package/dist/indexer/classHeader.d.ts.map +1 -0
  128. package/dist/indexer/classHeader.js +37 -0
  129. package/dist/indexer/classHeader.js.map +1 -0
  130. package/dist/indexer/deps.d.ts +66 -0
  131. package/dist/indexer/deps.d.ts.map +1 -0
  132. package/dist/indexer/deps.js +409 -0
  133. package/dist/indexer/deps.js.map +1 -0
  134. package/dist/indexer/hasher.d.ts +17 -0
  135. package/dist/indexer/hasher.d.ts.map +1 -0
  136. package/dist/indexer/hasher.js +38 -0
  137. package/dist/indexer/hasher.js.map +1 -0
  138. package/dist/indexer/parser.d.ts +18 -0
  139. package/dist/indexer/parser.d.ts.map +1 -0
  140. package/dist/indexer/parser.js +355 -0
  141. package/dist/indexer/parser.js.map +1 -0
  142. package/dist/indexer/scanner.d.ts +18 -0
  143. package/dist/indexer/scanner.d.ts.map +1 -0
  144. package/dist/indexer/scanner.js +37 -0
  145. package/dist/indexer/scanner.js.map +1 -0
  146. package/dist/indexer/strategy.d.ts +11 -0
  147. package/dist/indexer/strategy.d.ts.map +1 -0
  148. package/dist/indexer/strategy.js +15 -0
  149. package/dist/indexer/strategy.js.map +1 -0
  150. package/dist/indexer/tests.d.ts +15 -0
  151. package/dist/indexer/tests.d.ts.map +1 -0
  152. package/dist/indexer/tests.js +68 -0
  153. package/dist/indexer/tests.js.map +1 -0
  154. package/dist/indexer/todos.d.ts +9 -0
  155. package/dist/indexer/todos.d.ts.map +1 -0
  156. package/dist/indexer/todos.js +29 -0
  157. package/dist/indexer/todos.js.map +1 -0
  158. package/dist/llm/anthropic.d.ts +8 -0
  159. package/dist/llm/anthropic.d.ts.map +1 -0
  160. package/dist/llm/anthropic.js +76 -0
  161. package/dist/llm/anthropic.js.map +1 -0
  162. package/dist/llm/factory.d.ts +7 -0
  163. package/dist/llm/factory.d.ts.map +1 -0
  164. package/dist/llm/factory.js +39 -0
  165. package/dist/llm/factory.js.map +1 -0
  166. package/dist/llm/ollama.d.ts +8 -0
  167. package/dist/llm/ollama.d.ts.map +1 -0
  168. package/dist/llm/ollama.js +83 -0
  169. package/dist/llm/ollama.js.map +1 -0
  170. package/dist/llm/openai.d.ts +8 -0
  171. package/dist/llm/openai.d.ts.map +1 -0
  172. package/dist/llm/openai.js +68 -0
  173. package/dist/llm/openai.js.map +1 -0
  174. package/dist/llm/provider.d.ts +29 -0
  175. package/dist/llm/provider.d.ts.map +1 -0
  176. package/dist/llm/provider.js +3 -0
  177. package/dist/llm/provider.js.map +1 -0
  178. package/dist/search/bm25.d.ts +3 -0
  179. package/dist/search/bm25.d.ts.map +1 -0
  180. package/dist/search/bm25.js +102 -0
  181. package/dist/search/bm25.js.map +1 -0
  182. package/dist/search/formatter.d.ts +43 -0
  183. package/dist/search/formatter.d.ts.map +1 -0
  184. package/dist/search/formatter.js +208 -0
  185. package/dist/search/formatter.js.map +1 -0
  186. package/dist/search/hybrid.d.ts +10 -0
  187. package/dist/search/hybrid.d.ts.map +1 -0
  188. package/dist/search/hybrid.js +53 -0
  189. package/dist/search/hybrid.js.map +1 -0
  190. package/dist/search/merge.d.ts +33 -0
  191. package/dist/search/merge.d.ts.map +1 -0
  192. package/dist/search/merge.js +158 -0
  193. package/dist/search/merge.js.map +1 -0
  194. package/dist/search/mmr.d.ts +23 -0
  195. package/dist/search/mmr.d.ts.map +1 -0
  196. package/dist/search/mmr.js +95 -0
  197. package/dist/search/mmr.js.map +1 -0
  198. package/dist/search/rerank.d.ts +12 -0
  199. package/dist/search/rerank.d.ts.map +1 -0
  200. package/dist/search/rerank.js +113 -0
  201. package/dist/search/rerank.js.map +1 -0
  202. package/dist/search/signature.d.ts +42 -0
  203. package/dist/search/signature.d.ts.map +1 -0
  204. package/dist/search/signature.js +112 -0
  205. package/dist/search/signature.js.map +1 -0
  206. package/dist/search/vector.d.ts +41 -0
  207. package/dist/search/vector.d.ts.map +1 -0
  208. package/dist/search/vector.js +185 -0
  209. package/dist/search/vector.js.map +1 -0
  210. package/dist/storage/cache.d.ts +30 -0
  211. package/dist/storage/cache.d.ts.map +1 -0
  212. package/dist/storage/cache.js +160 -0
  213. package/dist/storage/cache.js.map +1 -0
  214. package/dist/storage/knowledge.d.ts +17 -0
  215. package/dist/storage/knowledge.d.ts.map +1 -0
  216. package/dist/storage/knowledge.js +58 -0
  217. package/dist/storage/knowledge.js.map +1 -0
  218. package/dist/storage/repository.d.ts +27 -0
  219. package/dist/storage/repository.d.ts.map +1 -0
  220. package/dist/storage/repository.js +95 -0
  221. package/dist/storage/repository.js.map +1 -0
  222. package/dist/storage/session.d.ts +38 -0
  223. package/dist/storage/session.d.ts.map +1 -0
  224. package/dist/storage/session.js +100 -0
  225. package/dist/storage/session.js.map +1 -0
  226. package/dist/storage/summaries.d.ts +19 -0
  227. package/dist/storage/summaries.d.ts.map +1 -0
  228. package/dist/storage/summaries.js +66 -0
  229. package/dist/storage/summaries.js.map +1 -0
  230. package/dist/storage/usage.d.ts +35 -0
  231. package/dist/storage/usage.d.ts.map +1 -0
  232. package/dist/storage/usage.js +55 -0
  233. package/dist/storage/usage.js.map +1 -0
  234. package/dist/utils/git.d.ts +15 -0
  235. package/dist/utils/git.d.ts.map +1 -0
  236. package/dist/utils/git.js +38 -0
  237. package/dist/utils/git.js.map +1 -0
  238. package/dist/utils/tokenizer.d.ts +24 -0
  239. package/dist/utils/tokenizer.d.ts.map +1 -0
  240. package/dist/utils/tokenizer.js +52 -0
  241. package/dist/utils/tokenizer.js.map +1 -0
  242. package/package.json +71 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * vemora CLI
4
+ *
5
+ * Repository-local memory system for LLM-assisted development.
6
+ * Builds a structured, versioned index of a codebase and enables
7
+ * semantic search over it using local or remote embedding providers.
8
+ *
9
+ * Usage:
10
+ * vemora init Initialize .vemora/ in the current repo
11
+ * vemora index Scan and index the repository (incremental)
12
+ * vemora query "<text>" Find relevant code chunks
13
+ * vemora status Show current index stats
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
package/dist/cli.js ADDED
@@ -0,0 +1,589 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * vemora CLI
5
+ *
6
+ * Repository-local memory system for LLM-assisted development.
7
+ * Builds a structured, versioned index of a codebase and enables
8
+ * semantic search over it using local or remote embedding providers.
9
+ *
10
+ * Usage:
11
+ * vemora init Initialize .vemora/ in the current repo
12
+ * vemora index Scan and index the repository (incremental)
13
+ * vemora query "<text>" Find relevant code chunks
14
+ * vemora status Show current index stats
15
+ */
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ const chalk_1 = __importDefault(require("chalk"));
21
+ const commander_1 = require("commander");
22
+ const path_1 = __importDefault(require("path"));
23
+ const ask_1 = require("./commands/ask");
24
+ const brief_1 = require("./commands/brief");
25
+ const audit_1 = require("./commands/audit");
26
+ const focus_1 = require("./commands/focus");
27
+ const plan_1 = require("./commands/plan");
28
+ const triage_1 = require("./commands/triage");
29
+ const chat_1 = require("./commands/chat");
30
+ const context_1 = require("./commands/context");
31
+ const deps_1 = require("./commands/deps");
32
+ const index_1 = require("./commands/index");
33
+ const init_1 = require("./commands/init");
34
+ const init_agent_1 = require("./commands/init-agent");
35
+ const knowledge_1 = require("./commands/knowledge");
36
+ const query_1 = require("./commands/query");
37
+ const remember_1 = require("./commands/remember");
38
+ const usages_1 = require("./commands/usages");
39
+ const report_1 = require("./commands/report");
40
+ const status_1 = require("./commands/status");
41
+ const summarize_1 = require("./commands/summarize");
42
+ const program = new commander_1.Command();
43
+ program
44
+ .name("vemora")
45
+ .description("Repository-local memory system for LLM-assisted development")
46
+ .version("0.1.0");
47
+ // ── init ──────────────────────────────────────────────────────────────────────
48
+ program
49
+ .command("init")
50
+ .description("Initialize vemora in the current repository")
51
+ .option("--root <dir>", "project root directory (default: cwd)", "")
52
+ .action(async (opts) => {
53
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
54
+ try {
55
+ await (0, init_1.runInit)(rootDir);
56
+ }
57
+ catch (err) {
58
+ console.error(chalk_1.default.red("Error:"), err.message);
59
+ process.exit(1);
60
+ }
61
+ });
62
+ // ── index ─────────────────────────────────────────────────────────────────────
63
+ program
64
+ .command("index")
65
+ .description("Index the repository content")
66
+ .option("--root <dir>", "Project root directory", process.cwd())
67
+ .option("--force", "Re-index all files, ignoring hashes", false)
68
+ .option("--no-embed", "Skip embedding generation", false)
69
+ .option("-w, --watch", "Watch for changes and re-index automatically", false)
70
+ .action(async (opts) => {
71
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
72
+ try {
73
+ // Commander's --no-embed sets opts.embed = false
74
+ await (0, index_1.runIndex)(rootDir, {
75
+ force: opts.force,
76
+ noEmbed: !opts.embed,
77
+ watch: opts.watch,
78
+ });
79
+ }
80
+ catch (err) {
81
+ console.error(chalk_1.default.red("Error:"), err.message);
82
+ process.exit(1);
83
+ }
84
+ });
85
+ // ── query ─────────────────────────────────────────────────────────────────────
86
+ program
87
+ .command("query <question>")
88
+ .description("Search the vemora index for relevant code")
89
+ .option("--root <dir>", "project root directory (default: cwd)", "")
90
+ .option("-k, --top-k <n>", "number of results to return", "10")
91
+ .option("-c, --show-code", "print code snippets in results", false)
92
+ .option("--keyword", "use keyword search instead of semantic search", false)
93
+ .option("--format <fmt>", "output format: terminal (default), json, markdown", "terminal")
94
+ .option("--rerank", "re-score results with a cross-encoder model (slower but more accurate)", false)
95
+ .option("--hybrid", "use hybrid search (vector + BM25)", false)
96
+ .option("--alpha <n>", "hybrid weight for vector search (0-1, default: 0.7)", "0.7")
97
+ .option("--budget <n>", "max tokens to include across results (overrides top-k as upper bound)")
98
+ .option("--mmr", "apply Maximal Marginal Relevance to diversify results", false)
99
+ .option("--lambda <n>", "MMR relevance weight (0=diverse, 1=relevant, default: 0.5)", "0.5")
100
+ .option("--merge", "merge adjacent or overlapping chunks from the same file", false)
101
+ .option("--merge-gap <n>", "max line gap between chunks to still merge (default: 3)", "3")
102
+ .option("--session", "skip chunks already seen in this session (auto-expires after 30 min idle)", false)
103
+ .option("--fresh", "reset session memory before this query", false)
104
+ .action(async (question, opts) => {
105
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
106
+ const fmt = opts.format;
107
+ if (!["terminal", "json", "markdown"].includes(fmt)) {
108
+ console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: terminal, json, markdown`));
109
+ process.exit(1);
110
+ }
111
+ try {
112
+ await (0, query_1.runQuery)(rootDir, question, {
113
+ topK: parseInt(opts.topK, 10),
114
+ showCode: opts.showCode,
115
+ keyword: opts.keyword,
116
+ format: fmt,
117
+ rerank: opts.rerank,
118
+ hybrid: opts.hybrid,
119
+ alpha: parseFloat(opts.alpha),
120
+ budget: opts.budget ? parseInt(opts.budget, 10) : undefined,
121
+ mmr: opts.mmr,
122
+ lambda: parseFloat(opts.lambda),
123
+ merge: opts.merge,
124
+ mergeGap: parseInt(opts.mergeGap, 10),
125
+ session: opts.session,
126
+ fresh: opts.fresh,
127
+ });
128
+ }
129
+ catch (err) {
130
+ console.error(chalk_1.default.red("Error:"), err.message);
131
+ process.exit(1);
132
+ }
133
+ });
134
+ // ── status ────────────────────────────────────────────────────────────────────
135
+ program
136
+ .command("status")
137
+ .description("Show current index stats")
138
+ .option("--root <dir>", "project root directory (default: cwd)", "")
139
+ .action(async (opts) => {
140
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
141
+ try {
142
+ await (0, status_1.runStatus)(rootDir);
143
+ }
144
+ catch (err) {
145
+ console.error(chalk_1.default.red("Error:"), err.message);
146
+ process.exit(1);
147
+ }
148
+ });
149
+ // ── ask ───────────────────────────────────────────────────────────────────────
150
+ program
151
+ .command("ask <question>")
152
+ .description("One-shot Q&A: retrieve relevant context and answer with the configured LLM")
153
+ .option("--root <dir>", "project root directory (default: cwd)", "")
154
+ .option("-k, --top-k <n>", "number of chunks to retrieve", "5")
155
+ .option("--keyword", "use keyword search (no embeddings required)", false)
156
+ .option("--hybrid", "use hybrid vector+BM25 search", false)
157
+ .option("--budget <n>", "max context tokens to send to the LLM (default: 6000)", "6000")
158
+ .option("--show-context", "print the retrieved context before the answer", false)
159
+ .action(async (question, opts) => {
160
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
161
+ try {
162
+ await (0, ask_1.runAsk)(rootDir, question, {
163
+ topK: Number.parseInt(opts.topK, 10),
164
+ keyword: opts.keyword,
165
+ hybrid: opts.hybrid,
166
+ budget: Number.parseInt(opts.budget, 10),
167
+ showContext: opts.showContext,
168
+ });
169
+ }
170
+ catch (err) {
171
+ console.error(chalk_1.default.red("Error:"), err.message);
172
+ process.exit(1);
173
+ }
174
+ });
175
+ // ── plan ──────────────────────────────────────────────────────────────────────
176
+ program
177
+ .command("plan <task>")
178
+ .description("Planner-executor: a pro LLM decomposes the task, a smaller LLM executes each step")
179
+ .option("--root <dir>", "project root directory (default: cwd)", "")
180
+ .option("-k, --top-k <n>", "chunks to retrieve per step (default: 5)", "5")
181
+ .option("--keyword", "use keyword search (no embeddings required)", false)
182
+ .option("--budget <n>", "max context tokens per step (default: 4000)", "4000")
183
+ .option("--show-context", "print retrieved context for each step", false)
184
+ .option("--confirm", "show the plan and ask for confirmation before executing", false)
185
+ .option("--synthesize", "call the planner again after all steps to produce a single final answer", false)
186
+ .action(async (task, opts) => {
187
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
188
+ try {
189
+ await (0, plan_1.runPlan)(rootDir, task, {
190
+ topK: Number.parseInt(opts.topK, 10),
191
+ keyword: opts.keyword,
192
+ budget: Number.parseInt(opts.budget, 10),
193
+ showContext: opts.showContext,
194
+ confirm: opts.confirm,
195
+ synthesize: opts.synthesize,
196
+ });
197
+ }
198
+ catch (err) {
199
+ console.error(chalk_1.default.red("Error:"), err.message);
200
+ process.exit(1);
201
+ }
202
+ });
203
+ // ── chat ──────────────────────────────────────────────────────────────────────
204
+ program
205
+ .command("chat")
206
+ .description("Interactive chat with the codebase (middleware proxy)")
207
+ .option("--root <dir>", "project root directory (default: cwd)", "")
208
+ .option("--provider <name>", "LLM provider (openai, anthropic, ollama)")
209
+ .option("--model <name>", "LLM model to use")
210
+ .option("-k, --top-k <n>", "number of context chunks to pull per message (default: 5)", "5")
211
+ .action(async (opts) => {
212
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
213
+ try {
214
+ await (0, chat_1.runChat)(rootDir, {
215
+ provider: opts.provider,
216
+ model: opts.model,
217
+ topK: parseInt(opts.topK, 10),
218
+ });
219
+ }
220
+ catch (err) {
221
+ console.error(chalk_1.default.red("Error:"), err.message);
222
+ process.exit(1);
223
+ }
224
+ });
225
+ // ── context ──────────────────────────────────────────────────────────────────
226
+ program
227
+ .command("context")
228
+ .description("Generate an optimized LLM context block from query and/or file")
229
+ .option("--root <dir>", "project root directory (default: cwd)", "")
230
+ .option("-q, --query <text>", "natural-language query to find relevant code")
231
+ .option("-f, --file <path>", "include a specific file in full with its dependency graph")
232
+ .option("-k, --top-k <n>", "number of search results to include (default: 5)", "5")
233
+ .option("--keyword", "use keyword search instead of semantic search", false)
234
+ .option("--show-code", "show full code (no line cap)", false)
235
+ .option("--format <fmt>", "output format: markdown (default), plain, terse")
236
+ .option("--rerank", "re-score results with a cross-encoder model", false)
237
+ .option("--hybrid", "use hybrid search (vector + BM25)", false)
238
+ .option("--alpha <n>", "hybrid weight for vector search (0-1, default: 0.7)", "0.7")
239
+ .option("--budget <n>", "max tokens to include across retrieved chunks")
240
+ .option("--mmr", "apply Maximal Marginal Relevance to diversify results", false)
241
+ .option("--lambda <n>", "MMR relevance weight (0=diverse, 1=relevant, default: 0.5)", "0.5")
242
+ .option("--merge", "merge adjacent or overlapping chunks from the same file", false)
243
+ .option("--merge-gap <n>", "max line gap between chunks to still merge (default: 3)", "3")
244
+ .option("--structured", "emit a structured context block (Entry Point / Dependencies / Types / Related Patterns)", false)
245
+ .option("--session", "skip chunks already seen in this session (auto-expires after 30 min idle)", false)
246
+ .option("--fresh", "reset session memory before this query", false)
247
+ .action(async (opts) => {
248
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
249
+ const fmt = opts.format;
250
+ if (fmt && !["markdown", "plain", "terse"].includes(fmt)) {
251
+ console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: markdown, plain, terse`));
252
+ process.exit(1);
253
+ }
254
+ try {
255
+ await (0, context_1.runContext)(rootDir, {
256
+ query: opts.query,
257
+ file: opts.file,
258
+ topK: parseInt(opts.topK, 10),
259
+ keyword: opts.keyword,
260
+ showCode: opts.showCode,
261
+ format: fmt,
262
+ rerank: opts.rerank,
263
+ hybrid: opts.hybrid,
264
+ alpha: parseFloat(opts.alpha),
265
+ budget: opts.budget ? parseInt(opts.budget, 10) : undefined,
266
+ mmr: opts.mmr,
267
+ lambda: parseFloat(opts.lambda),
268
+ merge: opts.merge,
269
+ mergeGap: parseInt(opts.mergeGap, 10),
270
+ structured: opts.structured,
271
+ session: opts.session,
272
+ fresh: opts.fresh,
273
+ });
274
+ }
275
+ catch (err) {
276
+ console.error(chalk_1.default.red("Error:"), err.message);
277
+ process.exit(1);
278
+ }
279
+ });
280
+ // ── deps ──────────────────────────────────────────────────────────────────────
281
+ program
282
+ .command("deps <file>")
283
+ .description("Show dependency context for a file (imports + used-by)")
284
+ .option("--root <dir>", "project root directory (default: cwd)", "")
285
+ .option("-d, --depth <n>", "transitive depth for outgoing imports (default: 1)", "1")
286
+ .option("-r, --reverse-depth <n>", "transitive depth for incoming importers (default: 1)", "1")
287
+ .action(async (file, opts) => {
288
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
289
+ try {
290
+ await (0, deps_1.runDeps)(rootDir, file, {
291
+ depth: parseInt(opts.depth, 10),
292
+ reverseDepth: parseInt(opts.reverseDepth, 10),
293
+ });
294
+ }
295
+ catch (err) {
296
+ console.error(chalk_1.default.red("Error:"), err.message);
297
+ process.exit(1);
298
+ }
299
+ });
300
+ // ── summarize ─────────────────────────────────────────────────────────────────
301
+ program
302
+ .command("summarize")
303
+ .description("Generate LLM summaries for each file and a project overview")
304
+ .option("--root <dir>", "project root directory (default: cwd)", "")
305
+ .option("--force", "re-generate all summaries, ignoring content hashes", false)
306
+ .option("--model <name>", "override LLM model (default: from config)")
307
+ .option("--files-only", "only generate per-file summaries, skip project overview", false)
308
+ .option("--project-only", "(re)generate project overview from existing file summaries", false)
309
+ .option("--show", "print the existing project overview without regenerating", false)
310
+ .action(async (opts) => {
311
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
312
+ try {
313
+ await (0, summarize_1.runSummarize)(rootDir, {
314
+ force: opts.force,
315
+ model: opts.model,
316
+ filesOnly: opts.filesOnly,
317
+ projectOnly: opts.projectOnly,
318
+ show: opts.show,
319
+ });
320
+ }
321
+ catch (err) {
322
+ console.error(chalk_1.default.red("Error:"), err.message);
323
+ process.exit(1);
324
+ }
325
+ });
326
+ // ── init-agent ────────────────────────────────────────────────────────────────
327
+ program
328
+ .command("init-agent")
329
+ .description("Generate AI agent instruction files (CLAUDE.md, GEMINI.md, .github/copilot-instructions.md, .cursor/rules/vemora.mdc, .windsurfrules)")
330
+ .option("--agent <agent>", "Which agent to target: claude, gemini, copilot, cursor, windsurf (default: all)")
331
+ .option("--force", "Overwrite existing files that have no vemora markers")
332
+ .option("--hooks", "Write Claude Code hooks to .claude/settings.json (claude target only)", false)
333
+ .option("--root <dir>", "Project root directory", process.cwd())
334
+ .action(async (opts) => {
335
+ const ALL_AGENTS = ["claude", "copilot", "cursor", "windsurf", "gemini"];
336
+ const agents = opts.agent
337
+ ? ALL_AGENTS.includes(opts.agent)
338
+ ? [opts.agent]
339
+ : undefined
340
+ : undefined;
341
+ if (opts.agent && !agents) {
342
+ console.error(chalk_1.default.red(`Unknown agent "${opts.agent}". Valid values: claude, gemini, copilot, cursor, windsurf`));
343
+ process.exit(1);
344
+ }
345
+ try {
346
+ await (0, init_agent_1.runInitAgent)(opts.root, { agents, force: opts.force, hooks: opts.hooks });
347
+ }
348
+ catch (err) {
349
+ console.error(chalk_1.default.red("Error:"), err.message);
350
+ process.exit(1);
351
+ }
352
+ });
353
+ // ── remember ──────────────────────────────────────────────────────────────────
354
+ program
355
+ .command("remember <text>")
356
+ .description("Save a knowledge entry (architectural decision, pattern, gotcha, glossary term)")
357
+ .option("--root <dir>", "project root directory (default: cwd)", "")
358
+ .option("--category <cat>", "entry category: decision | pattern | gotcha | glossary (auto-classified if omitted)")
359
+ .option("--title <title>", "short title (auto-derived from text if omitted)")
360
+ .option("--files <paths>", "comma-separated project-relative file paths this entry relates to")
361
+ .option("--symbols <names>", "comma-separated symbol names this entry relates to")
362
+ .option("--confidence <level>", "confidence level: high | medium | low", "medium")
363
+ .option("--supersedes <id>", "ID of an existing entry this replaces")
364
+ .option("--by <author>", "createdBy tag (default: human)", "human")
365
+ .action(async (text, opts) => {
366
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
367
+ try {
368
+ await (0, remember_1.runRemember)(rootDir, text, {
369
+ category: opts.category,
370
+ title: opts.title,
371
+ files: opts.files,
372
+ symbols: opts.symbols,
373
+ confidence: opts.confidence,
374
+ supersedes: opts.supersedes,
375
+ createdBy: opts.by,
376
+ });
377
+ }
378
+ catch (err) {
379
+ console.error(chalk_1.default.red("Error:"), err.message);
380
+ process.exit(1);
381
+ }
382
+ });
383
+ // ── knowledge ─────────────────────────────────────────────────────────────────
384
+ const knowledge = program
385
+ .command("knowledge")
386
+ .description("Manage the project knowledge store");
387
+ knowledge
388
+ .command("list")
389
+ .description("List knowledge entries, optionally filtered")
390
+ .option("--root <dir>", "project root directory (default: cwd)", "")
391
+ .option("--category <cat>", "filter by category: decision | pattern | gotcha | glossary")
392
+ .option("--file <path>", "filter by related file path (substring match)")
393
+ .option("--symbol <name>", "filter by related symbol name")
394
+ .action(async (opts) => {
395
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
396
+ try {
397
+ await (0, knowledge_1.runKnowledgeList)(rootDir, {
398
+ category: opts.category,
399
+ file: opts.file,
400
+ symbol: opts.symbol,
401
+ });
402
+ }
403
+ catch (err) {
404
+ console.error(chalk_1.default.red("Error:"), err.message);
405
+ process.exit(1);
406
+ }
407
+ });
408
+ knowledge
409
+ .command("forget <id>")
410
+ .description("Remove a knowledge entry by ID (prefix match supported)")
411
+ .option("--root <dir>", "project root directory (default: cwd)", "")
412
+ .action(async (id, opts) => {
413
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
414
+ try {
415
+ await (0, knowledge_1.runKnowledgeForget)(rootDir, id);
416
+ }
417
+ catch (err) {
418
+ console.error(chalk_1.default.red("Error:"), err.message);
419
+ process.exit(1);
420
+ }
421
+ });
422
+ // ── usages ────────────────────────────────────────────────────────────────────
423
+ program
424
+ .command("usages <symbol>")
425
+ .description("Find all files that use a symbol, following re-export chains")
426
+ .option("--root <dir>", "project root directory (default: cwd)", "")
427
+ .option("-d, --depth <n>", "max re-export chain depth to follow (default: 10)", "10")
428
+ .option("--callers-only", "show only files with call graph data (known call sites)", false)
429
+ .action(async (symbol, opts) => {
430
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
431
+ try {
432
+ await (0, usages_1.runUsages)(rootDir, symbol, {
433
+ depth: parseInt(opts.depth, 10),
434
+ callersOnly: opts.callersOnly,
435
+ });
436
+ }
437
+ catch (err) {
438
+ console.error(chalk_1.default.red("Error:"), err.message);
439
+ process.exit(1);
440
+ }
441
+ });
442
+ // ── report ────────────────────────────────────────────────────────────────────
443
+ program
444
+ .command("report")
445
+ .description("Show usage statistics and token savings estimate")
446
+ .option("--root <dir>", "project root directory (default: cwd)", "")
447
+ .option("--days <n>", "limit report to events from the last N days")
448
+ .option("-v, --verbose", "show per-query breakdown (last 20 queries)", false)
449
+ .option("--clear", "clear all recorded usage data", false)
450
+ .action(async (opts) => {
451
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
452
+ try {
453
+ await (0, report_1.runReport)(rootDir, {
454
+ days: opts.days ? parseInt(opts.days, 10) : undefined,
455
+ verbose: opts.verbose,
456
+ clear: opts.clear,
457
+ });
458
+ }
459
+ catch (err) {
460
+ console.error(chalk_1.default.red("Error:"), err.message);
461
+ process.exit(1);
462
+ }
463
+ });
464
+ // ── audit ─────────────────────────────────────────────────────────────────────
465
+ program
466
+ .command("audit")
467
+ .description("Systematic code audit for security vulnerabilities, performance issues, and bugs")
468
+ .option("--root <dir>", "project root directory (default: cwd)", "")
469
+ .option("--type <types>", "comma-separated audit types: security, performance, bugs (default: all)")
470
+ .option("--since <ref>", "only audit files changed since this git ref (e.g. HEAD~5, main)")
471
+ .option("--budget <n>", "max context tokens per step (default: 5000)", "5000")
472
+ .option("--keyword", "use keyword search (no embeddings required)", false)
473
+ .option("--output <fmt>", "output format: terminal (default), json, markdown", "terminal")
474
+ .option("--save", "save critical/high findings as knowledge entries", false)
475
+ .action(async (opts) => {
476
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
477
+ const validTypes = ["security", "performance", "bugs"];
478
+ let types;
479
+ if (opts.type) {
480
+ const requested = opts.type.split(",").map((t) => t.trim());
481
+ const invalid = requested.filter((t) => !validTypes.includes(t));
482
+ if (invalid.length > 0) {
483
+ console.error(chalk_1.default.red(`Unknown audit type(s): ${invalid.join(", ")}. Valid: security, performance, bugs`));
484
+ process.exit(1);
485
+ }
486
+ types = requested;
487
+ }
488
+ const outputFmt = opts.output;
489
+ if (!["terminal", "json", "markdown"].includes(outputFmt)) {
490
+ console.error(chalk_1.default.red(`Unknown output format "${opts.output}". Use: terminal, json, markdown`));
491
+ process.exit(1);
492
+ }
493
+ try {
494
+ await (0, audit_1.runAudit)(rootDir, {
495
+ types,
496
+ since: opts.since,
497
+ budget: Number.parseInt(opts.budget, 10),
498
+ keyword: opts.keyword,
499
+ output: outputFmt,
500
+ save: opts.save,
501
+ });
502
+ }
503
+ catch (err) {
504
+ console.error(chalk_1.default.red("Error:"), err.message);
505
+ process.exit(1);
506
+ }
507
+ });
508
+ // ── triage ────────────────────────────────────────────────────────────────────
509
+ program
510
+ .command("triage")
511
+ .description("Static heuristic scan for bugs, security issues, and performance problems — no LLM required")
512
+ .option("--root <dir>", "project root directory (default: cwd)", "")
513
+ .option("--type <types>", "comma-separated types: bugs, security, performance (default: all)")
514
+ .option("-k, --top-k <n>", "max findings to return, ranked by score (default: 30)", "30")
515
+ .option("--min-score <n>", "skip findings below this score threshold (default: 1)", "1")
516
+ .option("--file <path>", "restrict scan to files matching this substring")
517
+ .option("--output <fmt>", "output format: terminal (default), json, markdown", "terminal")
518
+ .action(async (opts) => {
519
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
520
+ const validTypes = ["bugs", "security", "performance"];
521
+ let types;
522
+ if (opts.type) {
523
+ const requested = opts.type.split(",").map((t) => t.trim());
524
+ const invalid = requested.filter((t) => !validTypes.includes(t));
525
+ if (invalid.length > 0) {
526
+ console.error(chalk_1.default.red(`Unknown type(s): ${invalid.join(", ")}. Valid: bugs, security, performance`));
527
+ process.exit(1);
528
+ }
529
+ types = requested;
530
+ }
531
+ const outputFmt = opts.output;
532
+ if (!["terminal", "json", "markdown"].includes(outputFmt)) {
533
+ console.error(chalk_1.default.red(`Unknown output format "${opts.output}". Use: terminal, json, markdown`));
534
+ process.exit(1);
535
+ }
536
+ try {
537
+ await (0, triage_1.runTriage)(rootDir, {
538
+ types,
539
+ topK: Number.parseInt(opts.topK, 10),
540
+ minScore: Number.parseInt(opts.minScore, 10),
541
+ file: opts.file,
542
+ output: outputFmt,
543
+ });
544
+ }
545
+ catch (err) {
546
+ console.error(chalk_1.default.red("Error:"), err.message);
547
+ process.exit(1);
548
+ }
549
+ });
550
+ // ── focus ─────────────────────────────────────────────────────────────────────
551
+ program
552
+ .command("focus <target>")
553
+ .description("Show implementation, dependencies, callers, tests and knowledge for a file or symbol")
554
+ .option("--root <dir>", "project root directory (default: cwd)", "")
555
+ .option("--format <fmt>", "output format: markdown (default), plain", "markdown")
556
+ .action(async (target, opts) => {
557
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
558
+ const fmt = opts.format;
559
+ if (!["markdown", "plain"].includes(fmt)) {
560
+ console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: markdown, plain`));
561
+ process.exit(1);
562
+ }
563
+ try {
564
+ await (0, focus_1.runFocus)(rootDir, target, { format: fmt });
565
+ }
566
+ catch (err) {
567
+ console.error(chalk_1.default.red("Error:"), err.message);
568
+ process.exit(1);
569
+ }
570
+ });
571
+ // ── brief ─────────────────────────────────────────────────────────────────────
572
+ program
573
+ .command("brief")
574
+ .description("Print a compact session primer: project overview + high-confidence knowledge")
575
+ .option("--root <dir>", "project root directory (default: cwd)", "")
576
+ .option("--all", "include all knowledge entries, not only high-confidence ones", false)
577
+ .action(async (opts) => {
578
+ const rootDir = path_1.default.resolve(opts.root || process.cwd());
579
+ try {
580
+ await (0, brief_1.runBrief)(rootDir, { all: opts.all });
581
+ }
582
+ catch (err) {
583
+ console.error(chalk_1.default.red("Error:"), err.message);
584
+ process.exit(1);
585
+ }
586
+ });
587
+ // ─────────────────────────────────────────────────────────────────────────────
588
+ program.parse(process.argv);
589
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}