@mcp-graph-workflow/mcp-graph 5.2.0 → 5.4.0

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 (244) hide show
  1. package/dist/api/router.d.ts +0 -1
  2. package/dist/api/router.d.ts.map +1 -1
  3. package/dist/api/router.js +4 -5
  4. package/dist/api/router.js.map +1 -1
  5. package/dist/api/routes/benchmark.d.ts.map +1 -1
  6. package/dist/api/routes/benchmark.js +47 -2
  7. package/dist/api/routes/benchmark.js.map +1 -1
  8. package/dist/api/routes/code-graph.d.ts +12 -0
  9. package/dist/api/routes/code-graph.d.ts.map +1 -0
  10. package/dist/api/routes/code-graph.js +154 -0
  11. package/dist/api/routes/code-graph.js.map +1 -0
  12. package/dist/api/routes/context.d.ts.map +1 -1
  13. package/dist/api/routes/context.js +75 -0
  14. package/dist/api/routes/context.js.map +1 -1
  15. package/dist/api/routes/folder.d.ts +1 -4
  16. package/dist/api/routes/folder.d.ts.map +1 -1
  17. package/dist/api/routes/folder.js +19 -17
  18. package/dist/api/routes/folder.js.map +1 -1
  19. package/dist/api/routes/integrations.d.ts.map +1 -1
  20. package/dist/api/routes/integrations.js +60 -16
  21. package/dist/api/routes/integrations.js.map +1 -1
  22. package/dist/api/routes/knowledge.js +1 -1
  23. package/dist/api/routes/knowledge.js.map +1 -1
  24. package/dist/api/routes/skills.d.ts +2 -1
  25. package/dist/api/routes/skills.d.ts.map +1 -1
  26. package/dist/api/routes/skills.js +194 -4
  27. package/dist/api/routes/skills.js.map +1 -1
  28. package/dist/cli/commands/index-cmd.js +5 -5
  29. package/dist/cli/commands/index-cmd.js.map +1 -1
  30. package/dist/core/code/code-indexer.d.ts +20 -0
  31. package/dist/core/code/code-indexer.d.ts.map +1 -0
  32. package/dist/core/code/code-indexer.js +161 -0
  33. package/dist/core/code/code-indexer.js.map +1 -0
  34. package/dist/core/code/code-search.d.ts +16 -0
  35. package/dist/core/code/code-search.d.ts.map +1 -0
  36. package/dist/core/code/code-search.js +77 -0
  37. package/dist/core/code/code-search.js.map +1 -0
  38. package/dist/core/code/code-store.d.ts +35 -0
  39. package/dist/core/code/code-store.d.ts.map +1 -0
  40. package/dist/core/code/code-store.js +228 -0
  41. package/dist/core/code/code-store.js.map +1 -0
  42. package/dist/core/code/code-types.d.ts +209 -0
  43. package/dist/core/code/code-types.d.ts.map +1 -0
  44. package/dist/core/code/code-types.js +94 -0
  45. package/dist/core/code/code-types.js.map +1 -0
  46. package/dist/core/code/graph-traversal.d.ts +27 -0
  47. package/dist/core/code/graph-traversal.d.ts.map +1 -0
  48. package/dist/core/code/graph-traversal.js +122 -0
  49. package/dist/core/code/graph-traversal.js.map +1 -0
  50. package/dist/core/code/process-detector.d.ts +11 -0
  51. package/dist/core/code/process-detector.d.ts.map +1 -0
  52. package/dist/core/code/process-detector.js +65 -0
  53. package/dist/core/code/process-detector.js.map +1 -0
  54. package/dist/core/code/ts-analyzer.d.ts +12 -0
  55. package/dist/core/code/ts-analyzer.d.ts.map +1 -0
  56. package/dist/core/code/ts-analyzer.js +331 -0
  57. package/dist/core/code/ts-analyzer.js.map +1 -0
  58. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  59. package/dist/core/config/ai-memory-generator.js +149 -61
  60. package/dist/core/config/ai-memory-generator.js.map +1 -1
  61. package/dist/core/config/config-loader.d.ts.map +1 -1
  62. package/dist/core/config/config-loader.js +2 -10
  63. package/dist/core/config/config-loader.js.map +1 -1
  64. package/dist/core/config/config-schema.d.ts +1 -2
  65. package/dist/core/config/config-schema.d.ts.map +1 -1
  66. package/dist/core/config/config-schema.js +2 -3
  67. package/dist/core/config/config-schema.js.map +1 -1
  68. package/dist/core/context/compact-context.d.ts +51 -0
  69. package/dist/core/context/compact-context.d.ts.map +1 -1
  70. package/dist/core/context/compact-context.js +292 -0
  71. package/dist/core/context/compact-context.js.map +1 -1
  72. package/dist/core/context/context-assembler.d.ts +1 -1
  73. package/dist/core/context/context-assembler.js +1 -1
  74. package/dist/core/doctor/doctor-checks.d.ts +1 -1
  75. package/dist/core/doctor/doctor-checks.js +21 -21
  76. package/dist/core/doctor/doctor-checks.js.map +1 -1
  77. package/dist/core/events/event-types.d.ts +18 -1
  78. package/dist/core/events/event-types.d.ts.map +1 -1
  79. package/dist/core/graph/graph-types.d.ts +1 -0
  80. package/dist/core/graph/graph-types.d.ts.map +1 -1
  81. package/dist/core/insights/bottleneck-detector.js +1 -1
  82. package/dist/core/insights/bottleneck-detector.js.map +1 -1
  83. package/dist/core/integrations/enriched-context.d.ts +10 -6
  84. package/dist/core/integrations/enriched-context.d.ts.map +1 -1
  85. package/dist/core/integrations/enriched-context.js +35 -35
  86. package/dist/core/integrations/enriched-context.js.map +1 -1
  87. package/dist/core/integrations/integration-orchestrator.js +2 -2
  88. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  89. package/dist/core/integrations/mcp-deps-installer.d.ts +1 -1
  90. package/dist/core/integrations/mcp-deps-installer.d.ts.map +1 -1
  91. package/dist/core/integrations/mcp-deps-installer.js +1 -60
  92. package/dist/core/integrations/mcp-deps-installer.js.map +1 -1
  93. package/dist/core/integrations/mcp-servers-config.d.ts +1 -1
  94. package/dist/core/integrations/mcp-servers-config.d.ts.map +1 -1
  95. package/dist/core/integrations/mcp-servers-config.js +0 -17
  96. package/dist/core/integrations/mcp-servers-config.js.map +1 -1
  97. package/dist/core/integrations/tool-status.d.ts +8 -3
  98. package/dist/core/integrations/tool-status.d.ts.map +1 -1
  99. package/dist/core/integrations/tool-status.js +38 -48
  100. package/dist/core/integrations/tool-status.js.map +1 -1
  101. package/dist/core/memory/memory-migrator.d.ts +15 -0
  102. package/dist/core/memory/memory-migrator.d.ts.map +1 -0
  103. package/dist/core/memory/memory-migrator.js +64 -0
  104. package/dist/core/memory/memory-migrator.js.map +1 -0
  105. package/dist/core/memory/memory-reader.d.ts +30 -0
  106. package/dist/core/memory/memory-reader.d.ts.map +1 -0
  107. package/dist/core/memory/memory-reader.js +106 -0
  108. package/dist/core/memory/memory-reader.js.map +1 -0
  109. package/dist/core/planner/lifecycle-phase.d.ts +1 -0
  110. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  111. package/dist/core/planner/lifecycle-phase.js +11 -8
  112. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  113. package/dist/core/rag/memory-indexer.d.ts +16 -0
  114. package/dist/core/rag/memory-indexer.d.ts.map +1 -0
  115. package/dist/core/rag/{serena-indexer.js → memory-indexer.js} +12 -12
  116. package/dist/core/rag/memory-indexer.js.map +1 -0
  117. package/dist/core/rag/{serena-rag-query.d.ts → memory-rag-query.d.ts} +11 -9
  118. package/dist/core/rag/memory-rag-query.d.ts.map +1 -0
  119. package/dist/core/rag/{serena-rag-query.js → memory-rag-query.js} +18 -15
  120. package/dist/core/rag/memory-rag-query.js.map +1 -0
  121. package/dist/core/rag/skill-indexer.d.ts +16 -0
  122. package/dist/core/rag/skill-indexer.d.ts.map +1 -0
  123. package/dist/core/rag/skill-indexer.js +98 -0
  124. package/dist/core/rag/skill-indexer.js.map +1 -0
  125. package/dist/core/skills/built-in-skills.d.ts +26 -0
  126. package/dist/core/skills/built-in-skills.d.ts.map +1 -0
  127. package/dist/core/skills/built-in-skills.js +467 -0
  128. package/dist/core/skills/built-in-skills.js.map +1 -0
  129. package/dist/core/skills/self-healing-listener.d.ts +22 -0
  130. package/dist/core/skills/self-healing-listener.d.ts.map +1 -0
  131. package/dist/core/skills/self-healing-listener.js +102 -0
  132. package/dist/core/skills/self-healing-listener.js.map +1 -0
  133. package/dist/core/skills/skill-store.d.ts +14 -0
  134. package/dist/core/skills/skill-store.d.ts.map +1 -0
  135. package/dist/core/skills/skill-store.js +109 -0
  136. package/dist/core/skills/skill-store.js.map +1 -0
  137. package/dist/core/store/knowledge-store.d.ts +1 -1
  138. package/dist/core/store/knowledge-store.js +1 -1
  139. package/dist/core/store/migrations.d.ts.map +1 -1
  140. package/dist/core/store/migrations.js +128 -0
  141. package/dist/core/store/migrations.js.map +1 -1
  142. package/dist/core/store/path-resolver.d.ts +38 -0
  143. package/dist/core/store/path-resolver.d.ts.map +1 -0
  144. package/dist/core/store/path-resolver.js +92 -0
  145. package/dist/core/store/path-resolver.js.map +1 -0
  146. package/dist/core/store/sqlite-store.d.ts +21 -0
  147. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  148. package/dist/core/store/sqlite-store.js +81 -30
  149. package/dist/core/store/sqlite-store.js.map +1 -1
  150. package/dist/core/store/tool-token-store.d.ts +39 -0
  151. package/dist/core/store/tool-token-store.d.ts.map +1 -0
  152. package/dist/core/store/tool-token-store.js +79 -0
  153. package/dist/core/store/tool-token-store.js.map +1 -0
  154. package/dist/core/utils/constants.d.ts +10 -0
  155. package/dist/core/utils/constants.d.ts.map +1 -1
  156. package/dist/core/utils/constants.js +12 -0
  157. package/dist/core/utils/constants.js.map +1 -1
  158. package/dist/mcp/app-factory.d.ts +0 -1
  159. package/dist/mcp/app-factory.d.ts.map +1 -1
  160. package/dist/mcp/app-factory.js +2 -2
  161. package/dist/mcp/app-factory.js.map +1 -1
  162. package/dist/mcp/lifecycle-wrapper.d.ts +3 -1
  163. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  164. package/dist/mcp/lifecycle-wrapper.js +41 -1
  165. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  166. package/dist/mcp/server.js +19 -14
  167. package/dist/mcp/server.js.map +1 -1
  168. package/dist/mcp/tools/index.d.ts.map +1 -1
  169. package/dist/mcp/tools/index.js +6 -0
  170. package/dist/mcp/tools/index.js.map +1 -1
  171. package/dist/mcp/tools/list-skills.d.ts +7 -0
  172. package/dist/mcp/tools/list-skills.d.ts.map +1 -0
  173. package/dist/mcp/tools/list-skills.js +68 -0
  174. package/dist/mcp/tools/list-skills.js.map +1 -0
  175. package/dist/mcp/tools/manage-skill.d.ts +8 -0
  176. package/dist/mcp/tools/manage-skill.d.ts.map +1 -0
  177. package/dist/mcp/tools/manage-skill.js +149 -0
  178. package/dist/mcp/tools/manage-skill.js.map +1 -0
  179. package/dist/mcp/tools/memory.d.ts +8 -0
  180. package/dist/mcp/tools/memory.d.ts.map +1 -0
  181. package/dist/mcp/tools/memory.js +106 -0
  182. package/dist/mcp/tools/memory.js.map +1 -0
  183. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  184. package/dist/mcp/tools/reindex-knowledge.js +11 -7
  185. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  186. package/dist/schemas/graph.schema.d.ts +2 -0
  187. package/dist/schemas/graph.schema.d.ts.map +1 -1
  188. package/dist/schemas/graph.schema.js +1 -0
  189. package/dist/schemas/graph.schema.js.map +1 -1
  190. package/dist/schemas/knowledge.schema.d.ts +4 -0
  191. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  192. package/dist/schemas/knowledge.schema.js +1 -1
  193. package/dist/schemas/knowledge.schema.js.map +1 -1
  194. package/dist/schemas/skill.schema.d.ts +57 -0
  195. package/dist/schemas/skill.schema.d.ts.map +1 -0
  196. package/dist/schemas/skill.schema.js +24 -0
  197. package/dist/schemas/skill.schema.js.map +1 -0
  198. package/dist/web/dashboard/dist/assets/benchmark-tab-BW4QxI49.js +1 -0
  199. package/dist/web/dashboard/dist/assets/constants-kpH_c6vY.js +1 -0
  200. package/dist/web/dashboard/dist/assets/context-tab-C5RAlXNW.js +1 -0
  201. package/dist/web/dashboard/dist/assets/gitnexus-tab-BnxxYl2F.js +430 -0
  202. package/dist/web/dashboard/dist/assets/graph-tab-Cv_wQ6Az.js +1 -0
  203. package/dist/web/dashboard/dist/assets/graph-utils-Ds1zJyD1.js +7 -0
  204. package/dist/web/dashboard/dist/assets/index-BAeZDWWy.js +53 -0
  205. package/dist/web/dashboard/dist/assets/index-Bic_URMs.js +17 -0
  206. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +1 -0
  207. package/dist/web/dashboard/dist/assets/insights-tab-U_ATOqPu.js +52 -0
  208. package/dist/web/dashboard/dist/assets/{logs-tab-Cxpcv_ni.js → logs-tab-B8psCXuB.js} +1 -1
  209. package/dist/web/dashboard/dist/assets/memories-tab-DcWok2by.js +1 -0
  210. package/dist/web/dashboard/dist/assets/prd-backlog-tab-CjftveTc.js +1 -0
  211. package/dist/web/dashboard/dist/assets/skills-tab-Ddp1w4vS.js +1 -0
  212. package/dist/web/dashboard/dist/index.html +2 -2
  213. package/package.json +2 -2
  214. package/dist/api/routes/gitnexus.d.ts +0 -12
  215. package/dist/api/routes/gitnexus.d.ts.map +0 -1
  216. package/dist/api/routes/gitnexus.js +0 -164
  217. package/dist/api/routes/gitnexus.js.map +0 -1
  218. package/dist/core/integrations/gitnexus-launcher.d.ts +0 -67
  219. package/dist/core/integrations/gitnexus-launcher.d.ts.map +0 -1
  220. package/dist/core/integrations/gitnexus-launcher.js +0 -268
  221. package/dist/core/integrations/gitnexus-launcher.js.map +0 -1
  222. package/dist/core/integrations/gitnexus-queries.d.ts +0 -55
  223. package/dist/core/integrations/gitnexus-queries.d.ts.map +0 -1
  224. package/dist/core/integrations/gitnexus-queries.js +0 -168
  225. package/dist/core/integrations/gitnexus-queries.js.map +0 -1
  226. package/dist/core/integrations/serena-reader.d.ts +0 -18
  227. package/dist/core/integrations/serena-reader.d.ts.map +0 -1
  228. package/dist/core/integrations/serena-reader.js +0 -68
  229. package/dist/core/integrations/serena-reader.js.map +0 -1
  230. package/dist/core/rag/serena-indexer.d.ts +0 -16
  231. package/dist/core/rag/serena-indexer.d.ts.map +0 -1
  232. package/dist/core/rag/serena-indexer.js.map +0 -1
  233. package/dist/core/rag/serena-rag-query.d.ts.map +0 -1
  234. package/dist/core/rag/serena-rag-query.js.map +0 -1
  235. package/dist/web/dashboard/dist/assets/benchmark-tab-DE6hAHVG.js +0 -1
  236. package/dist/web/dashboard/dist/assets/constants-BIEJOBya.js +0 -1
  237. package/dist/web/dashboard/dist/assets/gitnexus-tab-DsBjJHx8.js +0 -312
  238. package/dist/web/dashboard/dist/assets/graph-tab-C09DzeZ_.js +0 -1
  239. package/dist/web/dashboard/dist/assets/graph-utils-D4LFspTf.js +0 -23
  240. package/dist/web/dashboard/dist/assets/index-B2fTJ4AS.js +0 -53
  241. package/dist/web/dashboard/dist/assets/index-CkqEqKiH.css +0 -1
  242. package/dist/web/dashboard/dist/assets/insights-tab-Bm7CDckb.js +0 -1
  243. package/dist/web/dashboard/dist/assets/prd-backlog-tab-X84Rj-IB.js +0 -1
  244. package/dist/web/dashboard/dist/assets/serena-tab-BunULNvw.js +0 -1
@@ -1,268 +0,0 @@
1
- /**
2
- * GitNexus lifecycle manager.
3
- * Handles analyze, serve (as child process), and cleanup.
4
- * All operations are local-only — no data sent externally.
5
- *
6
- * Binary resolution order:
7
- * 1. Local node_modules/.bin/gitnexus (target project)
8
- * 2. Local node_modules/.bin/gitnexus (mcp-graph install dir)
9
- * 3. Global `gitnexus` on PATH
10
- * 4. Auto-install via `npm install --no-save gitnexus` in target project, then use local bin
11
- */
12
- import { existsSync } from "node:fs";
13
- import { execFile, spawn } from "node:child_process";
14
- import { promisify } from "node:util";
15
- import path from "node:path";
16
- import { fileURLToPath } from "node:url";
17
- import { logger } from "../utils/logger.js";
18
- import { IS_WINDOWS as IS_WIN, killProcess } from "../utils/platform.js";
19
- const execAsync = promisify(execFile);
20
- const GITNEXUS_DIR = ".gitnexus";
21
- const GITNEXUS_PKG = "gitnexus";
22
- let serveProcess = null;
23
- let resolvedBin = null;
24
- let currentServePath = null;
25
- let analyzePhase = "idle";
26
- /**
27
- * Get the current analyze phase.
28
- */
29
- export function getAnalyzePhase() {
30
- return analyzePhase;
31
- }
32
- /**
33
- * Reset analyze phase to idle (for testing).
34
- */
35
- export function resetAnalyzePhase() {
36
- analyzePhase = "idle";
37
- resolvedBin = null;
38
- currentServePath = null;
39
- }
40
- /**
41
- * Get the basePath that the current GitNexus serve process is running for.
42
- * Returns null if serve is not running.
43
- */
44
- export function getServeBasePath() {
45
- return currentServePath;
46
- }
47
- /**
48
- * Check if the given path is inside a git repository.
49
- */
50
- export function isGitRepo(basePath) {
51
- return existsSync(path.join(basePath, ".git"));
52
- }
53
- /**
54
- * Check if the codebase has been indexed by GitNexus.
55
- */
56
- export function isGitNexusIndexed(basePath) {
57
- return existsSync(path.join(basePath, GITNEXUS_DIR));
58
- }
59
- /**
60
- * Check if GitNexus serve is running on a given port via HTTP probe.
61
- */
62
- export async function isGitNexusRunning(port) {
63
- try {
64
- const controller = new AbortController();
65
- const timer = setTimeout(() => controller.abort(), 2000);
66
- const res = await fetch(`http://localhost:${port}`, { signal: controller.signal });
67
- clearTimeout(timer);
68
- return res.ok || res.status < 500;
69
- }
70
- catch {
71
- return false;
72
- }
73
- }
74
- // ── Binary resolution ─────────────────────────────────────
75
- const IS_WINDOWS = IS_WIN;
76
- function localBin(dir) {
77
- const binName = IS_WINDOWS ? `${GITNEXUS_PKG}.cmd` : GITNEXUS_PKG;
78
- return path.join(dir, "node_modules", ".bin", binName);
79
- }
80
- function mcpGraphRoot() {
81
- const thisFile = fileURLToPath(import.meta.url);
82
- // src/core/integrations/gitnexus-launcher.ts → project root (3 levels up)
83
- return path.resolve(path.dirname(thisFile), "..", "..", "..");
84
- }
85
- async function whichGitNexus() {
86
- const cmd = IS_WINDOWS ? "where" : "which";
87
- try {
88
- const { stdout } = await execAsync(cmd, [GITNEXUS_PKG]);
89
- const bin = stdout.trim().split(/\r?\n/)[0];
90
- return bin.length > 0 ? bin : null;
91
- }
92
- catch {
93
- return null;
94
- }
95
- }
96
- async function installGitNexus(basePath) {
97
- logger.info("Auto-installing gitnexus in target project", { basePath });
98
- try {
99
- await execAsync("npm", ["install", "--no-save", GITNEXUS_PKG], {
100
- cwd: basePath,
101
- timeout: 120_000,
102
- });
103
- logger.success("gitnexus installed successfully", { basePath });
104
- return true;
105
- }
106
- catch (err) {
107
- const msg = err instanceof Error ? err.message : String(err);
108
- logger.warn("Failed to auto-install gitnexus", { error: msg });
109
- return false;
110
- }
111
- }
112
- /**
113
- * Resolve the gitnexus binary path.
114
- * Caches result after first successful resolution.
115
- */
116
- export async function resolveGitNexusBin(basePath) {
117
- if (resolvedBin && existsSync(resolvedBin))
118
- return resolvedBin;
119
- // 1. Local bin in target project
120
- const targetBin = localBin(basePath);
121
- if (existsSync(targetBin)) {
122
- resolvedBin = targetBin;
123
- logger.debug("GitNexus resolved: target project local bin", { bin: targetBin });
124
- return resolvedBin;
125
- }
126
- // 2. Local bin in mcp-graph install directory
127
- const mcpBin = localBin(mcpGraphRoot());
128
- if (existsSync(mcpBin)) {
129
- resolvedBin = mcpBin;
130
- logger.debug("GitNexus resolved: mcp-graph local bin", { bin: mcpBin });
131
- return resolvedBin;
132
- }
133
- // 3. Global binary on PATH
134
- const globalBin = await whichGitNexus();
135
- if (globalBin) {
136
- resolvedBin = globalBin;
137
- logger.debug("GitNexus resolved: global binary", { bin: globalBin });
138
- return resolvedBin;
139
- }
140
- // 4. Auto-install in target project
141
- const installed = await installGitNexus(basePath);
142
- if (installed && existsSync(targetBin)) {
143
- resolvedBin = targetBin;
144
- logger.debug("GitNexus resolved: auto-installed local bin", { bin: targetBin });
145
- return resolvedBin;
146
- }
147
- logger.warn("GitNexus binary not found and auto-install failed");
148
- return null;
149
- }
150
- // ── Core operations ─────────────────────────────────────
151
- /**
152
- * Ensure codebase is analyzed by GitNexus.
153
- * Skips if `.gitnexus/` already exists.
154
- */
155
- export async function ensureGitNexusAnalyzed(basePath) {
156
- if (!isGitRepo(basePath)) {
157
- analyzePhase = "unavailable";
158
- logger.info("No git repository found, skipping GitNexus analysis", { basePath });
159
- return { skipped: true, reason: "No git repository found" };
160
- }
161
- if (isGitNexusIndexed(basePath)) {
162
- analyzePhase = "ready";
163
- logger.info("GitNexus index already exists, skipping analysis", { basePath });
164
- return { skipped: true, reason: "Already indexed" };
165
- }
166
- const bin = await resolveGitNexusBin(basePath);
167
- if (!bin) {
168
- analyzePhase = "error";
169
- return {
170
- skipped: false,
171
- success: false,
172
- reason: "GitNexus binary not found. Install with: npm install gitnexus",
173
- };
174
- }
175
- analyzePhase = "analyzing";
176
- logger.info("Running GitNexus analyze", { basePath, bin });
177
- try {
178
- await execAsync(bin, ["analyze", basePath], {
179
- timeout: 300_000,
180
- cwd: basePath,
181
- });
182
- analyzePhase = "ready";
183
- logger.success("GitNexus analysis complete", { basePath });
184
- return { skipped: false, success: true, reason: "Analysis completed" };
185
- }
186
- catch (err) {
187
- const message = err instanceof Error ? err.message : String(err);
188
- analyzePhase = "error";
189
- logger.warn("GitNexus analysis failed", { basePath, error: message });
190
- return { skipped: false, success: false, reason: `Analysis failed: ${message}` };
191
- }
192
- }
193
- /**
194
- * Start GitNexus serve as a child process on the given port.
195
- * Returns immediately after spawning — does not wait for readiness.
196
- */
197
- export async function startGitNexusServe(basePath, port) {
198
- if (!isGitNexusIndexed(basePath)) {
199
- logger.info("GitNexus not indexed, skipping serve", { basePath });
200
- return { started: false, message: "Codebase not indexed. Run gitnexus analyze first." };
201
- }
202
- // If serve is running for a different basePath, stop it first
203
- if (currentServePath && currentServePath !== basePath) {
204
- logger.info("GitNexus basePath changed, restarting serve", {
205
- oldBasePath: currentServePath,
206
- newBasePath: basePath,
207
- });
208
- await stopGitNexus();
209
- }
210
- const alreadyRunning = await isGitNexusRunning(port);
211
- if (alreadyRunning && currentServePath === basePath) {
212
- logger.info("GitNexus already running for current basePath", { port, basePath });
213
- return { started: true, message: `GitNexus already running on port ${port}`, port };
214
- }
215
- // If something else is running on the port but not our process, we can't start
216
- if (alreadyRunning && currentServePath !== basePath) {
217
- logger.warn("GitNexus port in use by external process, stopping and restarting", { port });
218
- await stopGitNexus();
219
- }
220
- if (serveProcess && !serveProcess.killed) {
221
- logger.info("GitNexus serve process already spawned", { pid: serveProcess.pid });
222
- return { started: true, message: "GitNexus serve process already active", port };
223
- }
224
- const bin = await resolveGitNexusBin(basePath);
225
- if (!bin) {
226
- return { started: false, message: "GitNexus binary not found. Install with: npm install gitnexus" };
227
- }
228
- try {
229
- serveProcess = spawn(bin, ["serve", "--port", String(port)], {
230
- cwd: basePath,
231
- stdio: "pipe",
232
- detached: false,
233
- });
234
- serveProcess.on("error", (err) => {
235
- logger.error("GitNexus serve process error", { error: err.message });
236
- serveProcess = null;
237
- currentServePath = null;
238
- });
239
- serveProcess.on("exit", (code) => {
240
- logger.info("GitNexus serve process exited", { code });
241
- serveProcess = null;
242
- currentServePath = null;
243
- });
244
- currentServePath = basePath;
245
- logger.success("GitNexus serve started", { port, pid: serveProcess.pid, basePath });
246
- return { started: true, message: `GitNexus serve started on port ${port}`, port };
247
- }
248
- catch (err) {
249
- const message = err instanceof Error ? err.message : String(err);
250
- logger.error("Failed to start GitNexus serve", { error: message });
251
- return { started: false, message: `Failed to start: ${message}` };
252
- }
253
- }
254
- /**
255
- * Stop the GitNexus serve child process if running.
256
- */
257
- export async function stopGitNexus() {
258
- if (!serveProcess || serveProcess.killed) {
259
- serveProcess = null;
260
- currentServePath = null;
261
- return;
262
- }
263
- logger.info("Stopping GitNexus serve", { pid: serveProcess.pid });
264
- killProcess(serveProcess);
265
- serveProcess = null;
266
- currentServePath = null;
267
- }
268
- //# sourceMappingURL=gitnexus-launcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitnexus-launcher.js","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,IAAI,YAAY,GAAwB,IAAI,CAAC;AAC7C,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAI3C,IAAI,YAAY,GAAiB,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,GAAG,MAAM,CAAC;IACtB,WAAW,GAAG,IAAI,CAAC;IACnB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6DAA6D;AAE7D,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,0EAA0E;IAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE;YAC7D,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,IAAI,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAE/D,iCAAiC;IACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,WAAW,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAChF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,8CAA8C;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,WAAW,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,WAAW,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAChF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2DAA2D;AAE3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,YAAY,GAAG,aAAa,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,YAAY,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,YAAY,GAAG,OAAO,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,+DAA+D;SACxE,CAAC;IACJ,CAAC;IAED,YAAY,GAAG,WAAW,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;YAC1C,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QAEH,YAAY,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,YAAY,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,OAAO,EAAE,EAAE,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,IAAY;IACrE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC;IAC1F,CAAC;IAED,8DAA8D;IAC9D,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;YACzD,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,cAAc,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;IACtF,CAAC;IAED,+EAA+E;IAC/E,IAAI,cAAc,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,mEAAmE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+DAA+D,EAAE,CAAC;IACtG,CAAC;IAED,IAAI,CAAC;QACH,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;YAC3D,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,YAAY,GAAG,IAAI,CAAC;YACpB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,YAAY,GAAG,IAAI,CAAC;YACpB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,gBAAgB,GAAG,QAAQ,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,OAAO,EAAE,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,YAAY,GAAG,IAAI,CAAC;QACpB,gBAAgB,GAAG,IAAI,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;IAElE,WAAW,CAAC,YAAY,CAAC,CAAC;IAE1B,YAAY,GAAG,IAAI,CAAC;IACpB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * GitNexus query builders and response parsers.
3
- * Converts symbol names into Cypher queries and parses GitNexus responses
4
- * into structured CodeGraphData and ImpactResult formats.
5
- */
6
- export interface CodeSymbol {
7
- name: string;
8
- kind: string;
9
- file?: string;
10
- startLine?: number;
11
- endLine?: number;
12
- metadata?: Record<string, unknown>;
13
- }
14
- export interface CodeRelation {
15
- from: string;
16
- to: string;
17
- type: string;
18
- }
19
- export interface CodeGraphData {
20
- symbols: CodeSymbol[];
21
- relations: CodeRelation[];
22
- }
23
- export interface AffectedSymbol {
24
- name: string;
25
- file: string;
26
- confidence: number;
27
- }
28
- export type RiskLevel = "low" | "medium" | "high";
29
- export interface ImpactResult {
30
- symbol: string;
31
- affectedSymbols: AffectedSymbol[];
32
- riskLevel: RiskLevel;
33
- }
34
- /**
35
- * Build a Cypher query to retrieve a symbol's context (related symbols and relations).
36
- */
37
- export declare function buildContextQuery(symbol: string): string;
38
- /**
39
- * Build a Cypher query for upstream impact analysis (who depends on this symbol).
40
- */
41
- export declare function buildImpactQuery(symbol: string): string;
42
- /**
43
- * Calculate risk level based on number of affected symbols.
44
- */
45
- export declare function calculateRiskLevel(affectedCount: number): RiskLevel;
46
- /**
47
- * Parse a GitNexus Cypher response into CodeGraphData.
48
- * Handles the { result: [...] } format from GitNexus query endpoint.
49
- */
50
- export declare function parseContextResponse(raw: unknown): CodeGraphData;
51
- /**
52
- * Parse a GitNexus Cypher impact response into ImpactResult.
53
- */
54
- export declare function parseImpactResponse(raw: unknown, symbol: string): ImpactResult;
55
- //# sourceMappingURL=gitnexus-queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitnexus-queries.d.ts","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAInE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CA4DhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CA+B9E"}
@@ -1,168 +0,0 @@
1
- /**
2
- * GitNexus query builders and response parsers.
3
- * Converts symbol names into Cypher queries and parses GitNexus responses
4
- * into structured CodeGraphData and ImpactResult formats.
5
- */
6
- import { logger } from "../utils/logger.js";
7
- /**
8
- * Build a Cypher query to retrieve a symbol's context (related symbols and relations).
9
- */
10
- export function buildContextQuery(symbol) {
11
- // Escape single quotes in symbol name to prevent Cypher injection
12
- const escaped = symbol.replace(/'/g, "\\'");
13
- return `MATCH (s {name: '${escaped}'})-[r:CodeRelation]-(related) RETURN s.name AS sName, s.filePath AS sFile, r.type AS relType, related.name AS rName, related.filePath AS rFile, related.startLine AS rStartLine, related.endLine AS rEndLine LIMIT 50`;
14
- }
15
- /**
16
- * Build a Cypher query for upstream impact analysis (who depends on this symbol).
17
- */
18
- export function buildImpactQuery(symbol) {
19
- const escaped = symbol.replace(/'/g, "\\'");
20
- return `MATCH (dep)-[r:CodeRelation]->(s {name: '${escaped}'}) WHERE r.type = 'CALLS' OR r.type = 'IMPORTS' RETURN DISTINCT dep.name AS name, dep.filePath AS file, 1 AS depth LIMIT 30`;
21
- }
22
- /**
23
- * Calculate risk level based on number of affected symbols.
24
- */
25
- export function calculateRiskLevel(affectedCount) {
26
- if (affectedCount > 15)
27
- return "high";
28
- if (affectedCount >= 5)
29
- return "medium";
30
- return "low";
31
- }
32
- /**
33
- * Parse a GitNexus Cypher response into CodeGraphData.
34
- * Handles the { result: [...] } format from GitNexus query endpoint.
35
- */
36
- export function parseContextResponse(raw) {
37
- const empty = { symbols: [], relations: [] };
38
- if (raw == null || typeof raw !== "object")
39
- return empty;
40
- const records = extractRecords(raw);
41
- if (records.length === 0)
42
- return empty;
43
- const symbolMap = new Map();
44
- const relations = [];
45
- for (const record of records) {
46
- // Flattened format: sName, sFile, relType, rName, rFile, rStartLine, rEndLine
47
- const sName = typeof record.sName === "string" ? record.sName : undefined;
48
- const rName = typeof record.rName === "string" ? record.rName : undefined;
49
- const relType = typeof record.relType === "string" ? record.relType : undefined;
50
- if (sName && !symbolMap.has(sName)) {
51
- symbolMap.set(sName, {
52
- name: sName,
53
- kind: "unknown",
54
- file: typeof record.sFile === "string" ? record.sFile : undefined,
55
- });
56
- }
57
- if (rName && !symbolMap.has(rName)) {
58
- symbolMap.set(rName, {
59
- name: rName,
60
- kind: "unknown",
61
- file: typeof record.rFile === "string" ? record.rFile : undefined,
62
- startLine: typeof record.rStartLine === "number" ? record.rStartLine : undefined,
63
- endLine: typeof record.rEndLine === "number" ? record.rEndLine : undefined,
64
- });
65
- }
66
- if (sName && rName && relType) {
67
- relations.push({
68
- from: sName,
69
- to: rName,
70
- type: relType.toLowerCase(),
71
- });
72
- }
73
- // Fallback: nested node format (legacy)
74
- if (!sName) {
75
- const s = extractNodeData(record, "s");
76
- if (s)
77
- symbolMap.set(s.name, s);
78
- const related = extractNodeData(record, "related");
79
- if (related)
80
- symbolMap.set(related.name, related);
81
- const legacyRelType = typeof record.relType === "string" ? record.relType : undefined;
82
- if (s && related && legacyRelType) {
83
- relations.push({ from: s.name, to: related.name, type: legacyRelType.toLowerCase() });
84
- }
85
- }
86
- }
87
- return {
88
- symbols: Array.from(symbolMap.values()),
89
- relations,
90
- };
91
- }
92
- /**
93
- * Parse a GitNexus Cypher impact response into ImpactResult.
94
- */
95
- export function parseImpactResponse(raw, symbol) {
96
- const empty = { symbol, affectedSymbols: [], riskLevel: "low" };
97
- if (raw == null || typeof raw !== "object")
98
- return empty;
99
- const records = extractRecords(raw);
100
- if (records.length === 0)
101
- return empty;
102
- const affectedSymbols = [];
103
- for (const record of records) {
104
- const name = typeof record.name === "string" ? record.name : undefined;
105
- const file = typeof record.file === "string" ? record.file : "";
106
- const depth = typeof record.depth === "number" ? record.depth : 3;
107
- if (name) {
108
- // Confidence decreases with depth: d=1 → 1.0, d=2 → 0.7, d=3 → 0.4
109
- const confidence = Math.max(0.1, 1.0 - (depth - 1) * 0.3);
110
- affectedSymbols.push({ name, file, confidence });
111
- }
112
- }
113
- const riskLevel = calculateRiskLevel(affectedSymbols.length);
114
- logger.debug("Parsed impact response", {
115
- symbol,
116
- affectedCount: affectedSymbols.length,
117
- riskLevel,
118
- });
119
- return { symbol, affectedSymbols, riskLevel };
120
- }
121
- // ── Helpers ──────────────────────────────────────────
122
- /**
123
- * Extract records array from various GitNexus response formats.
124
- */
125
- function extractRecords(raw) {
126
- if (Array.isArray(raw))
127
- return raw;
128
- const obj = raw;
129
- // { result: [...] } format
130
- if (Array.isArray(obj.result))
131
- return obj.result;
132
- // { data: [...] } format
133
- if (Array.isArray(obj.data))
134
- return obj.data;
135
- // { records: [...] } format
136
- if (Array.isArray(obj.records))
137
- return obj.records;
138
- return [];
139
- }
140
- /**
141
- * Extract node data from a Cypher result record.
142
- */
143
- function extractNodeData(record, key) {
144
- const node = record[key];
145
- if (node == null || typeof node !== "object") {
146
- // Check for flattened format (e.g., record itself has name/kind)
147
- if (key === "s" && typeof record.name === "string") {
148
- return {
149
- name: record.name,
150
- kind: record.kind ?? "unknown",
151
- file: record.file,
152
- };
153
- }
154
- return null;
155
- }
156
- const n = node;
157
- const name = typeof n.name === "string" ? n.name : undefined;
158
- if (!name)
159
- return null;
160
- return {
161
- name,
162
- kind: typeof n.kind === "string" ? n.kind : "unknown",
163
- file: typeof n.file === "string" ? n.file : undefined,
164
- startLine: typeof n.startLine === "number" ? n.startLine : undefined,
165
- endLine: typeof n.endLine === "number" ? n.endLine : undefined,
166
- };
167
- }
168
- //# sourceMappingURL=gitnexus-queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitnexus-queries.js","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-queries.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export interface SerenaMemory {
2
- name: string;
3
- content: string;
4
- sizeBytes: number;
5
- }
6
- /**
7
- * List all Serena memory files from the project directory (supports nested dirs).
8
- */
9
- export declare function listSerenaMemories(basePath: string): Promise<string[]>;
10
- /**
11
- * Read a specific Serena memory file.
12
- */
13
- export declare function readSerenaMemory(basePath: string, name: string): Promise<SerenaMemory | null>;
14
- /**
15
- * Read all Serena memories at once.
16
- */
17
- export declare function readAllSerenaMemories(basePath: string): Promise<SerenaMemory[]>;
18
- //# sourceMappingURL=serena-reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serena-reader.d.ts","sourceRoot":"","sources":["../../../src/core/integrations/serena-reader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAyBD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAanG;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAUrF"}
@@ -1,68 +0,0 @@
1
- import path from "node:path";
2
- import { readdir, readFile } from "node:fs/promises";
3
- import { logger } from "../utils/logger.js";
4
- const SERENA_MEMORIES_DIR = ".serena/memories";
5
- /**
6
- * Recursively collect all .md files under a directory, returning paths relative to root.
7
- */
8
- async function collectMdFiles(dir, root) {
9
- const entries = await readdir(dir, { withFileTypes: true });
10
- const results = [];
11
- for (const entry of entries) {
12
- const fullPath = path.join(dir, entry.name);
13
- if (entry.isDirectory()) {
14
- const nested = await collectMdFiles(fullPath, root);
15
- results.push(...nested);
16
- }
17
- else if (entry.isFile() && entry.name.endsWith(".md")) {
18
- const relative = path.relative(root, fullPath);
19
- results.push(relative.replace(/\.md$/, ""));
20
- }
21
- }
22
- return results;
23
- }
24
- /**
25
- * List all Serena memory files from the project directory (supports nested dirs).
26
- */
27
- export async function listSerenaMemories(basePath) {
28
- try {
29
- const dir = path.join(basePath, SERENA_MEMORIES_DIR);
30
- return await collectMdFiles(dir, dir);
31
- }
32
- catch {
33
- logger.info("No Serena memories directory found", { basePath });
34
- return [];
35
- }
36
- }
37
- /**
38
- * Read a specific Serena memory file.
39
- */
40
- export async function readSerenaMemory(basePath, name) {
41
- try {
42
- const filePath = path.join(basePath, SERENA_MEMORIES_DIR, `${name}.md`);
43
- const content = await readFile(filePath, "utf-8");
44
- return {
45
- name,
46
- content,
47
- sizeBytes: Buffer.byteLength(content, "utf-8"),
48
- };
49
- }
50
- catch {
51
- logger.info("Serena memory not found", { name });
52
- return null;
53
- }
54
- }
55
- /**
56
- * Read all Serena memories at once.
57
- */
58
- export async function readAllSerenaMemories(basePath) {
59
- const names = await listSerenaMemories(basePath);
60
- const memories = [];
61
- for (const name of names) {
62
- const memory = await readSerenaMemory(basePath, name);
63
- if (memory)
64
- memories.push(memory);
65
- }
66
- return memories;
67
- }
68
- //# sourceMappingURL=serena-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serena-reader.js","sourceRoot":"","sources":["../../../src/core/integrations/serena-reader.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAE/C;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACrD,OAAO,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACnE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO;YACL,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;SAC/C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Serena Indexer — reads .serena/memories/*.md and stores them
3
- * as knowledge documents for unified search.
4
- */
5
- import { KnowledgeStore } from "../store/knowledge-store.js";
6
- export interface SerenaIndexResult {
7
- memoriesFound: number;
8
- documentsIndexed: number;
9
- skippedDuplicates: number;
10
- }
11
- /**
12
- * Index all Serena memory files into the knowledge store.
13
- * Chunks large memories and deduplicates by content hash.
14
- */
15
- export declare function indexSerenaMemories(knowledgeStore: KnowledgeStore, basePath: string): Promise<SerenaIndexResult>;
16
- //# sourceMappingURL=serena-indexer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serena-indexer.d.ts","sourceRoot":"","sources":["../../../src/core/rag/serena-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CA2C5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serena-indexer.js","sourceRoot":"","sources":["../../../src/core/rag/serena-indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,cAA8B,EAC9B,QAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,cAAc,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,UAAU,MAAM,CAAC,IAAI,EAAE;gBACjC,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;oBACtB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG;oBACxD,CAAC,CAAC,MAAM,CAAC,IAAI;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,UAAU,EAAE,KAAK,CAAC,KAAK;gBACvB,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;aACnE,CAAC,CAAC;YAEH,qDAAqD;YACrD,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,WAAW,GAAG,gBAAgB,EAAE,CAAC;gBACtE,iBAAiB,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,gBAAgB,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;QACrC,aAAa,EAAE,QAAQ,CAAC,MAAM;QAC9B,gBAAgB;QAChB,iBAAiB;KAClB,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AACjF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serena-rag-query.d.ts","sourceRoot":"","sources":["../../../src/core/rag/serena-rag-query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAyE1B"}