vemora 0.1.0-alpha.15

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 (254) hide show
  1. package/README.md +851 -0
  2. package/dist/cli.d.ts +16 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +682 -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 +398 -0
  13. package/dist/commands/audit.js.map +1 -0
  14. package/dist/commands/brief.d.ts +16 -0
  15. package/dist/commands/brief.d.ts.map +1 -0
  16. package/dist/commands/brief.js +84 -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 +63 -0
  23. package/dist/commands/context.d.ts.map +1 -0
  24. package/dist/commands/context.js +794 -0
  25. package/dist/commands/context.js.map +1 -0
  26. package/dist/commands/dead-code.d.ts +15 -0
  27. package/dist/commands/dead-code.d.ts.map +1 -0
  28. package/dist/commands/dead-code.js +206 -0
  29. package/dist/commands/dead-code.js.map +1 -0
  30. package/dist/commands/deps.d.ts +20 -0
  31. package/dist/commands/deps.d.ts.map +1 -0
  32. package/dist/commands/deps.js +138 -0
  33. package/dist/commands/deps.js.map +1 -0
  34. package/dist/commands/focus.d.ts +8 -0
  35. package/dist/commands/focus.d.ts.map +1 -0
  36. package/dist/commands/focus.js +310 -0
  37. package/dist/commands/focus.js.map +1 -0
  38. package/dist/commands/index.d.ts +10 -0
  39. package/dist/commands/index.d.ts.map +1 -0
  40. package/dist/commands/index.js +366 -0
  41. package/dist/commands/index.js.map +1 -0
  42. package/dist/commands/init-agent.d.ts +23 -0
  43. package/dist/commands/init-agent.d.ts.map +1 -0
  44. package/dist/commands/init-agent.js +384 -0
  45. package/dist/commands/init-agent.js.map +1 -0
  46. package/dist/commands/init.d.ts +2 -0
  47. package/dist/commands/init.d.ts.map +1 -0
  48. package/dist/commands/init.js +122 -0
  49. package/dist/commands/init.js.map +1 -0
  50. package/dist/commands/knowledge.d.ts +14 -0
  51. package/dist/commands/knowledge.d.ts.map +1 -0
  52. package/dist/commands/knowledge.js +115 -0
  53. package/dist/commands/knowledge.js.map +1 -0
  54. package/dist/commands/plan.d.ts +24 -0
  55. package/dist/commands/plan.d.ts.map +1 -0
  56. package/dist/commands/plan.js +867 -0
  57. package/dist/commands/plan.js.map +1 -0
  58. package/dist/commands/query.d.ts +39 -0
  59. package/dist/commands/query.d.ts.map +1 -0
  60. package/dist/commands/query.js +392 -0
  61. package/dist/commands/query.js.map +1 -0
  62. package/dist/commands/remember.d.ts +11 -0
  63. package/dist/commands/remember.d.ts.map +1 -0
  64. package/dist/commands/remember.js +267 -0
  65. package/dist/commands/remember.js.map +1 -0
  66. package/dist/commands/report.d.ts +10 -0
  67. package/dist/commands/report.d.ts.map +1 -0
  68. package/dist/commands/report.js +243 -0
  69. package/dist/commands/report.js.map +1 -0
  70. package/dist/commands/status.d.ts +2 -0
  71. package/dist/commands/status.d.ts.map +1 -0
  72. package/dist/commands/status.js +127 -0
  73. package/dist/commands/status.js.map +1 -0
  74. package/dist/commands/summarize.d.ts +14 -0
  75. package/dist/commands/summarize.d.ts.map +1 -0
  76. package/dist/commands/summarize.js +170 -0
  77. package/dist/commands/summarize.js.map +1 -0
  78. package/dist/commands/triage.d.ts +33 -0
  79. package/dist/commands/triage.d.ts.map +1 -0
  80. package/dist/commands/triage.js +419 -0
  81. package/dist/commands/triage.js.map +1 -0
  82. package/dist/commands/usages.d.ts +14 -0
  83. package/dist/commands/usages.d.ts.map +1 -0
  84. package/dist/commands/usages.js +236 -0
  85. package/dist/commands/usages.js.map +1 -0
  86. package/dist/core/config.d.ts +35 -0
  87. package/dist/core/config.d.ts.map +1 -0
  88. package/dist/core/config.js +159 -0
  89. package/dist/core/config.js.map +1 -0
  90. package/dist/core/types.d.ts +287 -0
  91. package/dist/core/types.d.ts.map +1 -0
  92. package/dist/core/types.js +4 -0
  93. package/dist/core/types.js.map +1 -0
  94. package/dist/embeddings/factory.d.ts +9 -0
  95. package/dist/embeddings/factory.d.ts.map +1 -0
  96. package/dist/embeddings/factory.js +26 -0
  97. package/dist/embeddings/factory.js.map +1 -0
  98. package/dist/embeddings/noop.d.ts +17 -0
  99. package/dist/embeddings/noop.d.ts.map +1 -0
  100. package/dist/embeddings/noop.js +22 -0
  101. package/dist/embeddings/noop.js.map +1 -0
  102. package/dist/embeddings/ollama.d.ts +11 -0
  103. package/dist/embeddings/ollama.d.ts.map +1 -0
  104. package/dist/embeddings/ollama.js +49 -0
  105. package/dist/embeddings/ollama.js.map +1 -0
  106. package/dist/embeddings/openai.d.ts +10 -0
  107. package/dist/embeddings/openai.d.ts.map +1 -0
  108. package/dist/embeddings/openai.js +67 -0
  109. package/dist/embeddings/openai.js.map +1 -0
  110. package/dist/embeddings/provider.d.ts +19 -0
  111. package/dist/embeddings/provider.d.ts.map +1 -0
  112. package/dist/embeddings/provider.js +3 -0
  113. package/dist/embeddings/provider.js.map +1 -0
  114. package/dist/indexer/callgraph.d.ts +16 -0
  115. package/dist/indexer/callgraph.d.ts.map +1 -0
  116. package/dist/indexer/callgraph.js +154 -0
  117. package/dist/indexer/callgraph.js.map +1 -0
  118. package/dist/indexer/chunkBySlidingWindow.d.ts +6 -0
  119. package/dist/indexer/chunkBySlidingWindow.d.ts.map +1 -0
  120. package/dist/indexer/chunkBySlidingWindow.js +30 -0
  121. package/dist/indexer/chunkBySlidingWindow.js.map +1 -0
  122. package/dist/indexer/chunkBySymbols.d.ts +7 -0
  123. package/dist/indexer/chunkBySymbols.d.ts.map +1 -0
  124. package/dist/indexer/chunkBySymbols.js +57 -0
  125. package/dist/indexer/chunkBySymbols.js.map +1 -0
  126. package/dist/indexer/chunker.d.ts +15 -0
  127. package/dist/indexer/chunker.d.ts.map +1 -0
  128. package/dist/indexer/chunker.js +26 -0
  129. package/dist/indexer/chunker.js.map +1 -0
  130. package/dist/indexer/classHeader.d.ts +7 -0
  131. package/dist/indexer/classHeader.d.ts.map +1 -0
  132. package/dist/indexer/classHeader.js +37 -0
  133. package/dist/indexer/classHeader.js.map +1 -0
  134. package/dist/indexer/deps.d.ts +66 -0
  135. package/dist/indexer/deps.d.ts.map +1 -0
  136. package/dist/indexer/deps.js +412 -0
  137. package/dist/indexer/deps.js.map +1 -0
  138. package/dist/indexer/hasher.d.ts +17 -0
  139. package/dist/indexer/hasher.d.ts.map +1 -0
  140. package/dist/indexer/hasher.js +38 -0
  141. package/dist/indexer/hasher.js.map +1 -0
  142. package/dist/indexer/parser.d.ts +18 -0
  143. package/dist/indexer/parser.d.ts.map +1 -0
  144. package/dist/indexer/parser.js +355 -0
  145. package/dist/indexer/parser.js.map +1 -0
  146. package/dist/indexer/scanner.d.ts +18 -0
  147. package/dist/indexer/scanner.d.ts.map +1 -0
  148. package/dist/indexer/scanner.js +37 -0
  149. package/dist/indexer/scanner.js.map +1 -0
  150. package/dist/indexer/strategy.d.ts +11 -0
  151. package/dist/indexer/strategy.d.ts.map +1 -0
  152. package/dist/indexer/strategy.js +15 -0
  153. package/dist/indexer/strategy.js.map +1 -0
  154. package/dist/indexer/tests.d.ts +15 -0
  155. package/dist/indexer/tests.d.ts.map +1 -0
  156. package/dist/indexer/tests.js +68 -0
  157. package/dist/indexer/tests.js.map +1 -0
  158. package/dist/indexer/todos.d.ts +9 -0
  159. package/dist/indexer/todos.d.ts.map +1 -0
  160. package/dist/indexer/todos.js +29 -0
  161. package/dist/indexer/todos.js.map +1 -0
  162. package/dist/llm/anthropic.d.ts +8 -0
  163. package/dist/llm/anthropic.d.ts.map +1 -0
  164. package/dist/llm/anthropic.js +76 -0
  165. package/dist/llm/anthropic.js.map +1 -0
  166. package/dist/llm/claude-code.d.ts +37 -0
  167. package/dist/llm/claude-code.d.ts.map +1 -0
  168. package/dist/llm/claude-code.js +97 -0
  169. package/dist/llm/claude-code.js.map +1 -0
  170. package/dist/llm/factory.d.ts +7 -0
  171. package/dist/llm/factory.d.ts.map +1 -0
  172. package/dist/llm/factory.js +47 -0
  173. package/dist/llm/factory.js.map +1 -0
  174. package/dist/llm/ollama.d.ts +8 -0
  175. package/dist/llm/ollama.d.ts.map +1 -0
  176. package/dist/llm/ollama.js +83 -0
  177. package/dist/llm/ollama.js.map +1 -0
  178. package/dist/llm/openai.d.ts +8 -0
  179. package/dist/llm/openai.d.ts.map +1 -0
  180. package/dist/llm/openai.js +68 -0
  181. package/dist/llm/openai.js.map +1 -0
  182. package/dist/llm/provider.d.ts +35 -0
  183. package/dist/llm/provider.d.ts.map +1 -0
  184. package/dist/llm/provider.js +3 -0
  185. package/dist/llm/provider.js.map +1 -0
  186. package/dist/search/bm25.d.ts +3 -0
  187. package/dist/search/bm25.d.ts.map +1 -0
  188. package/dist/search/bm25.js +104 -0
  189. package/dist/search/bm25.js.map +1 -0
  190. package/dist/search/formatter.d.ts +43 -0
  191. package/dist/search/formatter.d.ts.map +1 -0
  192. package/dist/search/formatter.js +208 -0
  193. package/dist/search/formatter.js.map +1 -0
  194. package/dist/search/hybrid.d.ts +10 -0
  195. package/dist/search/hybrid.d.ts.map +1 -0
  196. package/dist/search/hybrid.js +53 -0
  197. package/dist/search/hybrid.js.map +1 -0
  198. package/dist/search/merge.d.ts +33 -0
  199. package/dist/search/merge.d.ts.map +1 -0
  200. package/dist/search/merge.js +158 -0
  201. package/dist/search/merge.js.map +1 -0
  202. package/dist/search/mmr.d.ts +23 -0
  203. package/dist/search/mmr.d.ts.map +1 -0
  204. package/dist/search/mmr.js +95 -0
  205. package/dist/search/mmr.js.map +1 -0
  206. package/dist/search/rerank.d.ts +12 -0
  207. package/dist/search/rerank.d.ts.map +1 -0
  208. package/dist/search/rerank.js +113 -0
  209. package/dist/search/rerank.js.map +1 -0
  210. package/dist/search/signature.d.ts +42 -0
  211. package/dist/search/signature.d.ts.map +1 -0
  212. package/dist/search/signature.js +112 -0
  213. package/dist/search/signature.js.map +1 -0
  214. package/dist/search/vector.d.ts +41 -0
  215. package/dist/search/vector.d.ts.map +1 -0
  216. package/dist/search/vector.js +185 -0
  217. package/dist/search/vector.js.map +1 -0
  218. package/dist/storage/cache.d.ts +30 -0
  219. package/dist/storage/cache.d.ts.map +1 -0
  220. package/dist/storage/cache.js +160 -0
  221. package/dist/storage/cache.js.map +1 -0
  222. package/dist/storage/knowledge.d.ts +23 -0
  223. package/dist/storage/knowledge.d.ts.map +1 -0
  224. package/dist/storage/knowledge.js +81 -0
  225. package/dist/storage/knowledge.js.map +1 -0
  226. package/dist/storage/planSession.d.ts +39 -0
  227. package/dist/storage/planSession.d.ts.map +1 -0
  228. package/dist/storage/planSession.js +78 -0
  229. package/dist/storage/planSession.js.map +1 -0
  230. package/dist/storage/repository.d.ts +27 -0
  231. package/dist/storage/repository.d.ts.map +1 -0
  232. package/dist/storage/repository.js +95 -0
  233. package/dist/storage/repository.js.map +1 -0
  234. package/dist/storage/session.d.ts +38 -0
  235. package/dist/storage/session.d.ts.map +1 -0
  236. package/dist/storage/session.js +100 -0
  237. package/dist/storage/session.js.map +1 -0
  238. package/dist/storage/summaries.d.ts +19 -0
  239. package/dist/storage/summaries.d.ts.map +1 -0
  240. package/dist/storage/summaries.js +66 -0
  241. package/dist/storage/summaries.js.map +1 -0
  242. package/dist/storage/usage.d.ts +39 -0
  243. package/dist/storage/usage.d.ts.map +1 -0
  244. package/dist/storage/usage.js +55 -0
  245. package/dist/storage/usage.js.map +1 -0
  246. package/dist/utils/git.d.ts +20 -0
  247. package/dist/utils/git.d.ts.map +1 -0
  248. package/dist/utils/git.js +49 -0
  249. package/dist/utils/git.js.map +1 -0
  250. package/dist/utils/tokenizer.d.ts +32 -0
  251. package/dist/utils/tokenizer.d.ts.map +1 -0
  252. package/dist/utils/tokenizer.js +66 -0
  253. package/dist/utils/tokenizer.js.map +1 -0
  254. package/package.json +71 -0
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_INSTRUCTIONS = exports.MARKER_END = exports.MARKER_START = void 0;
7
+ exports.runInitAgent = runInitAgent;
8
+ exports.buildGeneratedBlock = buildGeneratedBlock;
9
+ exports.detectNpmScripts = detectNpmScripts;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const config_1 = require("../core/config");
14
+ const deps_1 = require("../indexer/deps");
15
+ const repository_1 = require("../storage/repository");
16
+ const summaries_1 = require("../storage/summaries");
17
+ // ─── Markers ──────────────────────────────────────────────────────────────────
18
+ exports.MARKER_START = "<!-- vemora:generated:start -->";
19
+ exports.MARKER_END = "<!-- vemora:generated:end -->";
20
+ // ─── Default instructions ─────────────────────────────────────────────────────
21
+ exports.DEFAULT_INSTRUCTIONS = `## Working with this codebase
22
+
23
+ - **Before reading any file**, check the Key Exports table to locate the symbol.
24
+ - **Before querying**, try \`vemora query\` first — open a file only if context is insufficient.
25
+ - **Before deep-diving a file or symbol**, use \`vemora focus\` — aggregates impl, deps, callers, tests, and knowledge in one call.
26
+ - **Before modifying a file**, check blast radius: \`vemora deps <file> --root . --reverse-depth 2\`.
27
+ - **Before renaming a symbol**, check callers: \`vemora usages <SymbolName> --root .\` (add \`--callers-only\` for methods).
28
+ - **After changes**, run the build/test command before declaring done.
29
+ - **Scope discipline**: only change what was asked. No refactoring, comments, or improvements beyond the request.
30
+ - **Save non-obvious findings** with \`vemora remember\` — decisions, gotchas, patterns. Skip what's obvious from reading the code.
31
+
32
+ ## Session setup
33
+
34
+ \`\`\`bash
35
+ vemora brief --root . # start of session: project overview + critical knowledge
36
+ vemora index --root . --watch # background terminal: live re-index on file save
37
+ vemora index --root . --no-embed # or: re-index manually after significant changes
38
+ \`\`\`
39
+
40
+ ## Quick reference
41
+
42
+ | Need | Command |
43
+ |---|---|
44
+ | Session start | \`brief --root .\` |
45
+ | File or symbol deep-dive | \`focus <target> --root .\` |
46
+ | Concept / how-does-X question | \`context --root . --query "<question>"\` |
47
+ | Fix / refactor / add code | \`context --root . --query "<task>" --keyword\` |
48
+ | Scope to recent changes | \`context --root . --query "..." --since HEAD~5\` |
49
+ | Complex multi-step task | \`plan "<task>" --root . --confirm --synthesize\` |
50
+ | LLM audit (security/bugs/perf) | \`audit --root . --type security,bugs\` |
51
+ | Zero-LLM static scan | \`triage --root . --type bugs,security\` |
52
+ | Find unused code | \`dead-code --root .\` |
53
+ | Output too long | add \`--budget 2000\` to any command |
54
+ | No embeddings / fast search | add \`--keyword\` to \`query\` or \`context\` |
55
+ | Who imports a file | \`deps <file> --root .\` |
56
+ | Blast radius of a change | \`deps <file> --root . --reverse-depth 3\` |
57
+ | Who uses a symbol | \`usages <SymbolName> --root .\` |
58
+ | Who calls a method | \`usages <Method> --root . --callers-only\` |
59
+ | Save a finding | \`remember "text" --root .\` |
60
+ `;
61
+ // ─── Main command ─────────────────────────────────────────────────────────────
62
+ async function runInitAgent(rootDir, options = {}) {
63
+ const ALL_AGENTS = ["claude", "copilot", "cursor", "windsurf", "gemini"];
64
+ const targets = options.agents ?? ALL_AGENTS;
65
+ const force = options.force ?? false;
66
+ const config = (0, config_1.loadConfig)(rootDir);
67
+ const repo = new repository_1.RepositoryStorage(rootDir);
68
+ const summaryStorage = new summaries_1.SummaryStorage(rootDir);
69
+ // ── Load index data ──────────────────────────────────────────────────────────
70
+ const symbols = repo.loadSymbols();
71
+ const depGraph = repo.loadDeps();
72
+ const fileSummaries = summaryStorage.hasFileSummaries()
73
+ ? summaryStorage.loadFileSummaries()
74
+ : {};
75
+ const projectSummary = summaryStorage.loadProjectSummary();
76
+ // ── Derived data ─────────────────────────────────────────────────────────────
77
+ // Entry points: files that import others but are not imported by anyone.
78
+ const importedByMap = (0, deps_1.computeImportedBy)(depGraph);
79
+ const entryPoints = Object.keys(depGraph)
80
+ .filter((f) => !importedByMap.has(f) && depGraph[f].imports.length > 0)
81
+ .slice(0, 10);
82
+ // Key exports: exported symbols from source files only (exclude docs/, tests/).
83
+ // Sort order: classes and functions first (most useful for lookup), constants last.
84
+ const TYPE_PRIORITY = { class: 0, function: 1, interface: 2, type: 3 };
85
+ const exportedSymbols = Object.entries(symbols)
86
+ .filter(([, s]) => s.exported && s.file.startsWith("src/"))
87
+ .sort((a, b) => {
88
+ const pa = TYPE_PRIORITY[a[1].type] ?? 4;
89
+ const pb = TYPE_PRIORITY[b[1].type] ?? 4;
90
+ return pa !== pb ? pa - pb : a[0].localeCompare(b[0]);
91
+ })
92
+ .slice(0, 40);
93
+ // npm scripts from package.json (build, test, dev commands).
94
+ const npmScripts = detectNpmScripts(rootDir);
95
+ // ── Build generated block ────────────────────────────────────────────────────
96
+ const block = buildGeneratedBlock(config.projectName, projectSummary?.overview ?? null, npmScripts, entryPoints, fileSummaries, exportedSymbols);
97
+ // ── Process each target ──────────────────────────────────────────────────────
98
+ for (const agent of targets) {
99
+ writeAgentFile(agent, rootDir, config.projectName, block, force);
100
+ }
101
+ // ── Claude Code hooks ────────────────────────────────────────────────────────
102
+ if (options.hooks && targets.includes("claude")) {
103
+ writeClaudeHooks(rootDir, force);
104
+ }
105
+ if (!projectSummary) {
106
+ console.log(chalk_1.default.gray(" Tip: run `vemora summarize` to add a project overview."));
107
+ }
108
+ }
109
+ // ─── Per-agent file writers ───────────────────────────────────────────────────
110
+ function writeAgentFile(agent, rootDir, projectName, block, force) {
111
+ switch (agent) {
112
+ case "claude":
113
+ writeClaudeFile(rootDir, projectName, block, force);
114
+ break;
115
+ case "copilot":
116
+ writeCopilotFile(rootDir, block, force);
117
+ break;
118
+ case "cursor":
119
+ writeCursorFile(rootDir, block, force);
120
+ break;
121
+ case "windsurf":
122
+ writeWindsurfFile(rootDir, block, force);
123
+ break;
124
+ case "gemini":
125
+ writeGeminiFile(rootDir, projectName, block, force);
126
+ break;
127
+ }
128
+ }
129
+ const CLAUDE_EXTRA_INSTRUCTIONS = `
130
+ ## Claude Code memory
131
+
132
+ Use Claude Code's persistent memory alongside \`vemora remember\`:
133
+ - Save user preferences, working style, and feedback that go beyond the codebase.
134
+ - At session end, persist non-obvious discoveries not already captured by \`vemora remember\`.
135
+ `;
136
+ function writeClaudeFile(rootDir, projectName, block, force) {
137
+ const outputPath = path_1.default.join(rootDir, "CLAUDE.md");
138
+ const label = "Claude Code: CLAUDE.md";
139
+ const fullInstructions = exports.DEFAULT_INSTRUCTIONS + CLAUDE_EXTRA_INSTRUCTIONS;
140
+ if (!fs_1.default.existsSync(outputPath)) {
141
+ const content = `# ${projectName}\n\n${fullInstructions}\n\n${block}\n`;
142
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
143
+ console.log(chalk_1.default.green(`✓ ${label} created`));
144
+ }
145
+ else {
146
+ const result = mergeOrOverwrite(outputPath, `# ${projectName}\n\n${fullInstructions}\n\n${block}\n`, block, force, label);
147
+ if (!result)
148
+ return;
149
+ }
150
+ }
151
+ function writeCopilotFile(rootDir, block, force) {
152
+ const outputPath = path_1.default.join(rootDir, ".github", "copilot-instructions.md");
153
+ const label = "Copilot: .github/copilot-instructions.md";
154
+ if (!fs_1.default.existsSync(outputPath)) {
155
+ fs_1.default.mkdirSync(path_1.default.dirname(outputPath), { recursive: true });
156
+ const content = `${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`;
157
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
158
+ console.log(chalk_1.default.green(`✓ ${label} created`));
159
+ }
160
+ else {
161
+ mergeOrOverwrite(outputPath, `${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`, block, force, label);
162
+ }
163
+ }
164
+ function writeCursorFile(rootDir, block, force) {
165
+ const outputPath = path_1.default.join(rootDir, ".cursor", "rules", "vemora.mdc");
166
+ const label = "Cursor: .cursor/rules/vemora.mdc";
167
+ const frontmatter = "---\ndescription: vemora codebase context\nalwaysApply: true\n---";
168
+ if (!fs_1.default.existsSync(outputPath)) {
169
+ fs_1.default.mkdirSync(path_1.default.dirname(outputPath), { recursive: true });
170
+ const content = `${frontmatter}\n\n${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`;
171
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
172
+ console.log(chalk_1.default.green(`✓ ${label} created`));
173
+ }
174
+ else {
175
+ const existing = fs_1.default.readFileSync(outputPath, "utf-8");
176
+ const startIdx = existing.indexOf(exports.MARKER_START);
177
+ const endIdx = existing.indexOf(exports.MARKER_END);
178
+ if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
179
+ // Preserve everything before markers (includes frontmatter)
180
+ const before = existing.slice(0, startIdx);
181
+ const after = existing.slice(endIdx + exports.MARKER_END.length);
182
+ fs_1.default.writeFileSync(outputPath, before + block + after, "utf-8");
183
+ console.log(chalk_1.default.green(`✓ ${label} updated (merged)`));
184
+ }
185
+ else if (force) {
186
+ const content = `${frontmatter}\n\n${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`;
187
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
188
+ console.log(chalk_1.default.green(`✓ ${label} overwritten`));
189
+ }
190
+ else {
191
+ printNoMarkersWarning(label);
192
+ }
193
+ }
194
+ }
195
+ function writeGeminiFile(rootDir, projectName, block, force) {
196
+ const outputPath = path_1.default.join(rootDir, "GEMINI.md");
197
+ const label = "Gemini: GEMINI.md";
198
+ if (!fs_1.default.existsSync(outputPath)) {
199
+ const content = `# ${projectName}\n\n${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`;
200
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
201
+ console.log(chalk_1.default.green(`✓ ${label} created`));
202
+ }
203
+ else {
204
+ mergeOrOverwrite(outputPath, `# ${projectName}\n\n${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`, block, force, label);
205
+ }
206
+ }
207
+ function writeWindsurfFile(rootDir, block, force) {
208
+ const outputPath = path_1.default.join(rootDir, ".windsurfrules");
209
+ const label = "Windsurf: .windsurfrules";
210
+ if (!fs_1.default.existsSync(outputPath)) {
211
+ const content = `${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`;
212
+ fs_1.default.writeFileSync(outputPath, content, "utf-8");
213
+ console.log(chalk_1.default.green(`✓ ${label} created`));
214
+ }
215
+ else {
216
+ mergeOrOverwrite(outputPath, `${exports.DEFAULT_INSTRUCTIONS}\n\n${block}\n`, block, force, label);
217
+ }
218
+ }
219
+ // ─── Shared helpers ───────────────────────────────────────────────────────────
220
+ /**
221
+ * Merge block into existing file between markers, or overwrite/warn.
222
+ * Returns true if file was written, false if skipped.
223
+ */
224
+ function mergeOrOverwrite(outputPath, newContent, block, force, label) {
225
+ const existing = fs_1.default.readFileSync(outputPath, "utf-8");
226
+ const startIdx = existing.indexOf(exports.MARKER_START);
227
+ const endIdx = existing.indexOf(exports.MARKER_END);
228
+ if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
229
+ const before = existing.slice(0, startIdx);
230
+ const after = existing.slice(endIdx + exports.MARKER_END.length);
231
+ fs_1.default.writeFileSync(outputPath, before + block + after, "utf-8");
232
+ console.log(chalk_1.default.green(`✓ ${label} updated (merged)`));
233
+ return true;
234
+ }
235
+ if (force) {
236
+ fs_1.default.writeFileSync(outputPath, newContent, "utf-8");
237
+ console.log(chalk_1.default.green(`✓ ${label} overwritten`));
238
+ return true;
239
+ }
240
+ printNoMarkersWarning(label);
241
+ return false;
242
+ }
243
+ function printNoMarkersWarning(label) {
244
+ console.log(chalk_1.default.yellow(`${label} exists but has no vemora markers.\n` +
245
+ " • Run with --force to overwrite it entirely.\n" +
246
+ " • Or manually add the markers to enable future merges:\n" +
247
+ ` ${exports.MARKER_START}\n` +
248
+ ` ${exports.MARKER_END}`));
249
+ }
250
+ // ─── Claude Code hooks ────────────────────────────────────────────────────────
251
+ /**
252
+ * Writes (or merges) vemora hook entries into .claude/settings.json.
253
+ *
254
+ * Two hooks are registered:
255
+ * - PreCompact — emergency knowledge save before Claude compacts the context
256
+ * - Stop — brief reminder to run `vemora remember` after each session
257
+ *
258
+ * Existing hooks unrelated to vemora are preserved.
259
+ */
260
+ function writeClaudeHooks(rootDir, force) {
261
+ const settingsPath = path_1.default.join(rootDir, ".claude", "settings.json");
262
+ const label = "Claude Code hooks: .claude/settings.json";
263
+ // The PreCompact hook pipes the most recent assistant message into
264
+ // `vemora remember` so that any decision mentioned just before compaction
265
+ // is persisted. We cap input to 1000 chars to stay within CLI limits.
266
+ const vemoraHooks = {
267
+ PreCompact: [
268
+ {
269
+ matcher: "",
270
+ hooks: [
271
+ {
272
+ type: "command",
273
+ command: "echo \"Pre-compact save: run 'vemora remember <decision> --root . --category decision' to preserve any key decision before context is compressed.\"",
274
+ },
275
+ ],
276
+ },
277
+ ],
278
+ };
279
+ let existing = {};
280
+ if (fs_1.default.existsSync(settingsPath)) {
281
+ if (!force) {
282
+ // Merge: add only the hooks that aren't already present
283
+ try {
284
+ existing = JSON.parse(fs_1.default.readFileSync(settingsPath, "utf-8"));
285
+ }
286
+ catch {
287
+ existing = {};
288
+ }
289
+ const existingHooks = (existing.hooks ?? {});
290
+ // Only add PreCompact if not already set
291
+ if (existingHooks.PreCompact) {
292
+ console.log(chalk_1.default.yellow(` ${label} — PreCompact hook already exists, skipping. Use --force to overwrite.`));
293
+ return;
294
+ }
295
+ existing.hooks = { ...existingHooks, ...vemoraHooks };
296
+ }
297
+ else {
298
+ try {
299
+ existing = JSON.parse(fs_1.default.readFileSync(settingsPath, "utf-8"));
300
+ }
301
+ catch {
302
+ existing = {};
303
+ }
304
+ existing.hooks = {
305
+ ...(existing.hooks ?? {}),
306
+ ...vemoraHooks,
307
+ };
308
+ }
309
+ }
310
+ else {
311
+ existing = { hooks: vemoraHooks };
312
+ }
313
+ fs_1.default.mkdirSync(path_1.default.dirname(settingsPath), { recursive: true });
314
+ const tmp = settingsPath + ".tmp";
315
+ fs_1.default.writeFileSync(tmp, JSON.stringify(existing, null, 2), "utf-8");
316
+ fs_1.default.renameSync(tmp, settingsPath);
317
+ console.log(chalk_1.default.green(`✓ ${label} updated`));
318
+ }
319
+ // ─── Block builder ────────────────────────────────────────────────────────────
320
+ function buildGeneratedBlock(_projectName, projectOverview, npmScripts, entryPoints, fileSummaries, exportedSymbols) {
321
+ const lines = [];
322
+ lines.push(exports.MARKER_START);
323
+ lines.push("");
324
+ // Project overview
325
+ lines.push("## Project Overview");
326
+ lines.push("");
327
+ lines.push(projectOverview ??
328
+ "_(Run `vemora summarize` to generate an AI-written project overview.)_");
329
+ lines.push("");
330
+ // Commands
331
+ if (Object.keys(npmScripts).length > 0) {
332
+ lines.push("## Commands");
333
+ lines.push("");
334
+ lines.push("```bash");
335
+ for (const [name, cmd] of Object.entries(npmScripts)) {
336
+ lines.push(`npm run ${name.padEnd(16)} # ${cmd}`);
337
+ }
338
+ lines.push("```");
339
+ lines.push("");
340
+ }
341
+ // Entry points
342
+ if (entryPoints.length > 0) {
343
+ lines.push("## Entry Points");
344
+ lines.push("");
345
+ for (const ep of entryPoints) {
346
+ const summary = fileSummaries[ep]?.summary;
347
+ lines.push(summary ? `- \`${ep}\` — ${summary}` : `- \`${ep}\``);
348
+ }
349
+ lines.push("");
350
+ }
351
+ // Key exports table
352
+ if (exportedSymbols.length > 0) {
353
+ lines.push("## Key Exports");
354
+ lines.push("");
355
+ lines.push("| Symbol | Type | File |");
356
+ lines.push("|---|---|---|");
357
+ for (const [name, sym] of exportedSymbols) {
358
+ lines.push(`| \`${name}\` | ${sym.type} | \`${sym.file}\` |`);
359
+ }
360
+ lines.push("");
361
+ }
362
+ lines.push(`_Generated by \`vemora init-agent\` — ${new Date().toISOString()}_`);
363
+ lines.push("");
364
+ lines.push(exports.MARKER_END);
365
+ return lines.join("\n");
366
+ }
367
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
368
+ /**
369
+ * Reads npm scripts from package.json in rootDir.
370
+ * Returns an empty object if no package.json or no scripts field.
371
+ */
372
+ function detectNpmScripts(rootDir) {
373
+ try {
374
+ const pkgPath = path_1.default.join(rootDir, "package.json");
375
+ if (!fs_1.default.existsSync(pkgPath))
376
+ return {};
377
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, "utf-8"));
378
+ return pkg.scripts ?? {};
379
+ }
380
+ catch {
381
+ return {};
382
+ }
383
+ }
384
+ //# sourceMappingURL=init-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-agent.js","sourceRoot":"","sources":["../../src/commands/init-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runInit(rootDir: string): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5D"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runInit = runInit;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const config_1 = require("../core/config");
11
+ async function runInit(rootDir) {
12
+ console.log(chalk_1.default.bold("Initializing vemora..."));
13
+ console.log(`Project root: ${chalk_1.default.cyan(rootDir)}`);
14
+ console.log();
15
+ const memoryDir = path_1.default.join(rootDir, config_1.AI_MEMORY_DIR);
16
+ const indexDir = path_1.default.join(memoryDir, config_1.INDEX_DIR);
17
+ const summariesDir = path_1.default.join(memoryDir, config_1.SUMMARIES_DIR);
18
+ // ── 1. Create directory structure ─────────────────────────────────────────
19
+ fs_1.default.mkdirSync(indexDir, { recursive: true });
20
+ fs_1.default.mkdirSync(summariesDir, { recursive: true });
21
+ console.log(chalk_1.default.green("✓") +
22
+ ` Created ${chalk_1.default.gray(config_1.AI_MEMORY_DIR + "/index/")} and ${chalk_1.default.gray(config_1.AI_MEMORY_DIR + "/summaries/")}`);
23
+ // ── 2. config.json ────────────────────────────────────────────────────────
24
+ const configPath = path_1.default.join(memoryDir, config_1.CONFIG_FILE);
25
+ if (!fs_1.default.existsSync(configPath)) {
26
+ const projectName = detectProjectName(rootDir);
27
+ const config = (0, config_1.getDefaultConfig)(rootDir, projectName);
28
+ (0, config_1.saveConfig)(config);
29
+ console.log(chalk_1.default.green("✓") + ` Created ${chalk_1.default.gray(".vemora/config.json")}`);
30
+ }
31
+ else {
32
+ console.log(chalk_1.default.yellow("~") +
33
+ ` ${chalk_1.default.gray(".vemora/config.json")} already exists, skipping`);
34
+ }
35
+ // ── 3. metadata.json ──────────────────────────────────────────────────────
36
+ const metaPath = path_1.default.join(memoryDir, config_1.METADATA_FILE);
37
+ if (!fs_1.default.existsSync(metaPath)) {
38
+ const config = (0, config_1.loadConfig)(rootDir);
39
+ const meta = {
40
+ projectId: config.projectId,
41
+ projectName: config.projectName,
42
+ lastIndexed: null,
43
+ indexedFiles: 0,
44
+ totalChunks: 0,
45
+ totalSymbols: 0,
46
+ totalDepEdges: 0,
47
+ embeddingProvider: config.embedding.provider,
48
+ embeddingModel: config.embedding.model,
49
+ };
50
+ fs_1.default.writeFileSync(metaPath, JSON.stringify(meta, null, 2));
51
+ console.log(chalk_1.default.green("✓") + ` Created ${chalk_1.default.gray(".vemora/metadata.json")}`);
52
+ }
53
+ // ── 4. Empty index files ──────────────────────────────────────────────────
54
+ const indexFiles = [
55
+ [path_1.default.join(indexDir, "files.json"), "{}"],
56
+ [path_1.default.join(indexDir, "chunks.json"), "[]"],
57
+ [path_1.default.join(indexDir, "symbols.json"), "{}"],
58
+ [path_1.default.join(indexDir, "callgraph.json"), "{}"],
59
+ ];
60
+ for (const [filePath, emptyVal] of indexFiles) {
61
+ if (!fs_1.default.existsSync(filePath)) {
62
+ fs_1.default.writeFileSync(filePath, emptyVal, "utf-8");
63
+ }
64
+ }
65
+ console.log(chalk_1.default.green("✓") +
66
+ ` Created ${chalk_1.default.gray(".vemora/index/{files,chunks,symbols,callgraph}.json")}`);
67
+ // ── 5. .gitignore ─────────────────────────────────────────────────────────
68
+ await ensureGitignore(rootDir);
69
+ // ── Summary ───────────────────────────────────────────────────────────────
70
+ console.log();
71
+ console.log(chalk_1.default.bold.green("Done!"));
72
+ console.log();
73
+ console.log("Next steps:");
74
+ console.log(` 1. Review ${chalk_1.default.cyan(".vemora/config.json")} — adjust include/exclude patterns`);
75
+ console.log(` 2. Review embedding and LLM provider in ${chalk_1.default.cyan(".vemora/config.json")} (default: Ollama)`);
76
+ console.log(` 3. Run ${chalk_1.default.cyan("vemora index")} to build the index`);
77
+ console.log(` 4. Run ${chalk_1.default.cyan('vemora query "your question"')} to search`);
78
+ console.log();
79
+ console.log(chalk_1.default.gray(`Note: .vemora-cache/ is local-only and excluded from git.`));
80
+ }
81
+ function detectProjectName(rootDir) {
82
+ try {
83
+ const pkgPath = path_1.default.join(rootDir, "package.json");
84
+ if (fs_1.default.existsSync(pkgPath)) {
85
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, "utf-8"));
86
+ if (pkg.name)
87
+ return pkg.name;
88
+ }
89
+ // Try pyproject.toml or Cargo.toml for non-JS projects
90
+ const pyproject = path_1.default.join(rootDir, "pyproject.toml");
91
+ if (fs_1.default.existsSync(pyproject)) {
92
+ const content = fs_1.default.readFileSync(pyproject, "utf-8");
93
+ const m = content.match(/^name\s*=\s*"([^"]+)"/m);
94
+ if (m)
95
+ return m[1];
96
+ }
97
+ }
98
+ catch {
99
+ // ignore
100
+ }
101
+ return path_1.default.basename(rootDir);
102
+ }
103
+ async function ensureGitignore(rootDir) {
104
+ const gitignorePath = path_1.default.join(rootDir, ".gitignore");
105
+ const entry = config_1.AI_MEMORY_CACHE_DIR + "/";
106
+ if (!fs_1.default.existsSync(gitignorePath)) {
107
+ fs_1.default.writeFileSync(gitignorePath, `# vemora local embedding cache\n${entry}\n`, "utf-8");
108
+ console.log(chalk_1.default.green("✓") +
109
+ ` Created ${chalk_1.default.gray(".gitignore")} with ${chalk_1.default.gray(entry)}`);
110
+ return;
111
+ }
112
+ const existing = fs_1.default.readFileSync(gitignorePath, "utf-8");
113
+ if (existing.includes(config_1.AI_MEMORY_CACHE_DIR)) {
114
+ console.log(chalk_1.default.yellow("~") +
115
+ ` ${chalk_1.default.gray(".gitignore")} already excludes ${chalk_1.default.gray(entry)}`);
116
+ return;
117
+ }
118
+ fs_1.default.appendFileSync(gitignorePath, `\n# vemora local embedding cache\n${entry}\n`, "utf-8");
119
+ console.log(chalk_1.default.green("✓") +
120
+ ` Added ${chalk_1.default.gray(entry)} to ${chalk_1.default.gray(".gitignore")}`);
121
+ }
122
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAgBA,0BA6FC;AA7GD,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,2CAUwB;AAGjB,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAa,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAa,CAAC,CAAC;IAEzD,6EAA6E;IAC7E,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACd,YAAY,eAAK,CAAC,IAAI,CAAC,sBAAa,GAAG,SAAS,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,sBAAa,GAAG,aAAa,CAAC,EAAE,CACvG,CAAC;IAEF,6EAA6E;IAC7E,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAW,CAAC,CAAC;IACrD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CACnE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACf,IAAI,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CACnE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAa,CAAC,CAAC;IACrD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,GAAa;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;YAC5C,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;SACvC,CAAC;QACF,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,UAAU,GAA4B;QAC1C,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC;QACzC,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC;QAC1C,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC;QAC3C,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC;KAC9C,CAAC;IACF,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACd,YAAY,eAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,EAAE,CAClF,CAAC;IAEF,6EAA6E;IAC7E,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/B,6EAA6E;IAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CACT,eAAe,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oCAAoC,CACrF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,6CAA6C,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CACnG,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,YAAY,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CACT,YAAY,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,YAAY,CACnE,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CACxE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAEvD,CAAC;YACF,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAC;QAChC,CAAC;QACD,uDAAuD;QACvD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACvD,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClD,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,4BAAmB,GAAG,GAAG,CAAC;IAExC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,YAAE,CAAC,aAAa,CACd,aAAa,EACb,mCAAmC,KAAK,IAAI,EAC5C,OAAO,CACR,CAAC;QACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YACd,YAAY,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,4BAAmB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACf,IAAI,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACvE,CAAC;QACF,OAAO;IACT,CAAC;IAED,YAAE,CAAC,cAAc,CACf,aAAa,EACb,qCAAqC,KAAK,IAAI,EAC9C,OAAO,CACR,CAAC;IACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACd,UAAU,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAC/D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface KnowledgeListOptions {
2
+ category?: string;
3
+ file?: string;
4
+ symbol?: string;
5
+ /** Show only entries valid at this ISO date (default: now) */
6
+ asOf?: string;
7
+ /** Show only entries with a validUntil in the past */
8
+ expired?: boolean;
9
+ }
10
+ export declare function runKnowledgeList(rootDir: string, options?: KnowledgeListOptions): Promise<void>;
11
+ export declare function runKnowledgeForget(rootDir: string, id: string, options?: {
12
+ invalidate?: boolean;
13
+ }): Promise<void>;
14
+ //# sourceMappingURL=knowledge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CA0Gf;AAID,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}