@mcp-graph-workflow/mcp-graph 5.1.5 → 5.3.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 (395) 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 +3 -4
  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/folder.d.ts +1 -4
  13. package/dist/api/routes/folder.d.ts.map +1 -1
  14. package/dist/api/routes/folder.js +19 -17
  15. package/dist/api/routes/folder.js.map +1 -1
  16. package/dist/api/routes/integrations.d.ts.map +1 -1
  17. package/dist/api/routes/integrations.js +60 -16
  18. package/dist/api/routes/integrations.js.map +1 -1
  19. package/dist/api/routes/knowledge.js +1 -1
  20. package/dist/api/routes/knowledge.js.map +1 -1
  21. package/dist/api/routes/skills.d.ts.map +1 -1
  22. package/dist/api/routes/skills.js +57 -3
  23. package/dist/api/routes/skills.js.map +1 -1
  24. package/dist/cli/commands/index-cmd.js +5 -5
  25. package/dist/cli/commands/index-cmd.js.map +1 -1
  26. package/dist/core/analyzer/ac-parser.d.ts +7 -0
  27. package/dist/core/analyzer/ac-parser.d.ts.map +1 -0
  28. package/dist/core/analyzer/ac-parser.js +67 -0
  29. package/dist/core/analyzer/ac-parser.js.map +1 -0
  30. package/dist/core/analyzer/ac-validator.d.ts +15 -0
  31. package/dist/core/analyzer/ac-validator.d.ts.map +1 -0
  32. package/dist/core/analyzer/ac-validator.js +142 -0
  33. package/dist/core/analyzer/ac-validator.js.map +1 -0
  34. package/dist/core/analyzer/definition-of-ready.d.ts +16 -0
  35. package/dist/core/analyzer/definition-of-ready.d.ts.map +1 -0
  36. package/dist/core/analyzer/definition-of-ready.js +107 -0
  37. package/dist/core/analyzer/definition-of-ready.js.map +1 -0
  38. package/dist/core/analyzer/prd-quality.d.ts +14 -0
  39. package/dist/core/analyzer/prd-quality.d.ts.map +1 -0
  40. package/dist/core/analyzer/prd-quality.js +156 -0
  41. package/dist/core/analyzer/prd-quality.js.map +1 -0
  42. package/dist/core/analyzer/risk-assessment.d.ts +11 -0
  43. package/dist/core/analyzer/risk-assessment.d.ts.map +1 -0
  44. package/dist/core/analyzer/risk-assessment.js +97 -0
  45. package/dist/core/analyzer/risk-assessment.js.map +1 -0
  46. package/dist/core/analyzer/scope-analyzer.d.ts +7 -0
  47. package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -0
  48. package/dist/core/analyzer/scope-analyzer.js +99 -0
  49. package/dist/core/analyzer/scope-analyzer.js.map +1 -0
  50. package/dist/core/code/code-indexer.d.ts +20 -0
  51. package/dist/core/code/code-indexer.d.ts.map +1 -0
  52. package/dist/core/code/code-indexer.js +161 -0
  53. package/dist/core/code/code-indexer.js.map +1 -0
  54. package/dist/core/code/code-search.d.ts +16 -0
  55. package/dist/core/code/code-search.d.ts.map +1 -0
  56. package/dist/core/code/code-search.js +77 -0
  57. package/dist/core/code/code-search.js.map +1 -0
  58. package/dist/core/code/code-store.d.ts +35 -0
  59. package/dist/core/code/code-store.d.ts.map +1 -0
  60. package/dist/core/code/code-store.js +228 -0
  61. package/dist/core/code/code-store.js.map +1 -0
  62. package/dist/core/code/code-types.d.ts +209 -0
  63. package/dist/core/code/code-types.d.ts.map +1 -0
  64. package/dist/core/code/code-types.js +94 -0
  65. package/dist/core/code/code-types.js.map +1 -0
  66. package/dist/core/code/graph-traversal.d.ts +27 -0
  67. package/dist/core/code/graph-traversal.d.ts.map +1 -0
  68. package/dist/core/code/graph-traversal.js +122 -0
  69. package/dist/core/code/graph-traversal.js.map +1 -0
  70. package/dist/core/code/process-detector.d.ts +11 -0
  71. package/dist/core/code/process-detector.d.ts.map +1 -0
  72. package/dist/core/code/process-detector.js +65 -0
  73. package/dist/core/code/process-detector.js.map +1 -0
  74. package/dist/core/code/ts-analyzer.d.ts +12 -0
  75. package/dist/core/code/ts-analyzer.d.ts.map +1 -0
  76. package/dist/core/code/ts-analyzer.js +331 -0
  77. package/dist/core/code/ts-analyzer.js.map +1 -0
  78. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  79. package/dist/core/config/ai-memory-generator.js +149 -64
  80. package/dist/core/config/ai-memory-generator.js.map +1 -1
  81. package/dist/core/config/config-loader.d.ts.map +1 -1
  82. package/dist/core/config/config-loader.js +2 -10
  83. package/dist/core/config/config-loader.js.map +1 -1
  84. package/dist/core/config/config-schema.d.ts +1 -2
  85. package/dist/core/config/config-schema.d.ts.map +1 -1
  86. package/dist/core/config/config-schema.js +2 -3
  87. package/dist/core/config/config-schema.js.map +1 -1
  88. package/dist/core/context/compact-context.d.ts +51 -0
  89. package/dist/core/context/compact-context.d.ts.map +1 -1
  90. package/dist/core/context/compact-context.js +292 -0
  91. package/dist/core/context/compact-context.js.map +1 -1
  92. package/dist/core/context/context-assembler.d.ts +4 -1
  93. package/dist/core/context/context-assembler.d.ts.map +1 -1
  94. package/dist/core/context/context-assembler.js +6 -3
  95. package/dist/core/context/context-assembler.js.map +1 -1
  96. package/dist/core/context/rag-context.d.ts +4 -2
  97. package/dist/core/context/rag-context.d.ts.map +1 -1
  98. package/dist/core/context/rag-context.js +8 -5
  99. package/dist/core/context/rag-context.js.map +1 -1
  100. package/dist/core/designer/adr-validator.d.ts +8 -0
  101. package/dist/core/designer/adr-validator.d.ts.map +1 -0
  102. package/dist/core/designer/adr-validator.js +61 -0
  103. package/dist/core/designer/adr-validator.js.map +1 -0
  104. package/dist/core/designer/coupling-analyzer.d.ts +7 -0
  105. package/dist/core/designer/coupling-analyzer.d.ts.map +1 -0
  106. package/dist/core/designer/coupling-analyzer.js +59 -0
  107. package/dist/core/designer/coupling-analyzer.js.map +1 -0
  108. package/dist/core/designer/definition-of-ready.d.ts +8 -0
  109. package/dist/core/designer/definition-of-ready.d.ts.map +1 -0
  110. package/dist/core/designer/definition-of-ready.js +146 -0
  111. package/dist/core/designer/definition-of-ready.js.map +1 -0
  112. package/dist/core/designer/interface-checker.d.ts +7 -0
  113. package/dist/core/designer/interface-checker.d.ts.map +1 -0
  114. package/dist/core/designer/interface-checker.js +53 -0
  115. package/dist/core/designer/interface-checker.js.map +1 -0
  116. package/dist/core/designer/tech-risk-assessor.d.ts +7 -0
  117. package/dist/core/designer/tech-risk-assessor.d.ts.map +1 -0
  118. package/dist/core/designer/tech-risk-assessor.js +95 -0
  119. package/dist/core/designer/tech-risk-assessor.js.map +1 -0
  120. package/dist/core/designer/traceability-matrix.d.ts +8 -0
  121. package/dist/core/designer/traceability-matrix.d.ts.map +1 -0
  122. package/dist/core/designer/traceability-matrix.js +67 -0
  123. package/dist/core/designer/traceability-matrix.js.map +1 -0
  124. package/dist/core/doctor/doctor-checks.d.ts +1 -1
  125. package/dist/core/doctor/doctor-checks.js +21 -21
  126. package/dist/core/doctor/doctor-checks.js.map +1 -1
  127. package/dist/core/events/event-types.d.ts +11 -1
  128. package/dist/core/events/event-types.d.ts.map +1 -1
  129. package/dist/core/handoff/delivery-checklist.d.ts +10 -0
  130. package/dist/core/handoff/delivery-checklist.d.ts.map +1 -0
  131. package/dist/core/handoff/delivery-checklist.js +148 -0
  132. package/dist/core/handoff/delivery-checklist.js.map +1 -0
  133. package/dist/core/handoff/doc-completeness.d.ts +7 -0
  134. package/dist/core/handoff/doc-completeness.d.ts.map +1 -0
  135. package/dist/core/handoff/doc-completeness.js +19 -0
  136. package/dist/core/handoff/doc-completeness.js.map +1 -0
  137. package/dist/core/implementer/definition-of-done.d.ts +11 -0
  138. package/dist/core/implementer/definition-of-done.d.ts.map +1 -0
  139. package/dist/core/implementer/definition-of-done.js +158 -0
  140. package/dist/core/implementer/definition-of-done.js.map +1 -0
  141. package/dist/core/implementer/sprint-progress.d.ts +11 -0
  142. package/dist/core/implementer/sprint-progress.d.ts.map +1 -0
  143. package/dist/core/implementer/sprint-progress.js +80 -0
  144. package/dist/core/implementer/sprint-progress.js.map +1 -0
  145. package/dist/core/implementer/tdd-checker.d.ts +15 -0
  146. package/dist/core/implementer/tdd-checker.d.ts.map +1 -0
  147. package/dist/core/implementer/tdd-checker.js +132 -0
  148. package/dist/core/implementer/tdd-checker.js.map +1 -0
  149. package/dist/core/insights/bottleneck-detector.js +1 -1
  150. package/dist/core/insights/bottleneck-detector.js.map +1 -1
  151. package/dist/core/integrations/enriched-context.d.ts +10 -6
  152. package/dist/core/integrations/enriched-context.d.ts.map +1 -1
  153. package/dist/core/integrations/enriched-context.js +35 -35
  154. package/dist/core/integrations/enriched-context.js.map +1 -1
  155. package/dist/core/integrations/integration-orchestrator.js +2 -2
  156. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  157. package/dist/core/integrations/mcp-deps-installer.d.ts +1 -1
  158. package/dist/core/integrations/mcp-deps-installer.d.ts.map +1 -1
  159. package/dist/core/integrations/mcp-deps-installer.js +1 -60
  160. package/dist/core/integrations/mcp-deps-installer.js.map +1 -1
  161. package/dist/core/integrations/mcp-servers-config.d.ts +1 -1
  162. package/dist/core/integrations/mcp-servers-config.d.ts.map +1 -1
  163. package/dist/core/integrations/mcp-servers-config.js +0 -17
  164. package/dist/core/integrations/mcp-servers-config.js.map +1 -1
  165. package/dist/core/integrations/tool-status.d.ts +8 -3
  166. package/dist/core/integrations/tool-status.d.ts.map +1 -1
  167. package/dist/core/integrations/tool-status.js +38 -48
  168. package/dist/core/integrations/tool-status.js.map +1 -1
  169. package/dist/core/listener/backlog-health.d.ts +7 -0
  170. package/dist/core/listener/backlog-health.d.ts.map +1 -0
  171. package/dist/core/listener/backlog-health.js +64 -0
  172. package/dist/core/listener/backlog-health.js.map +1 -0
  173. package/dist/core/listener/feedback-readiness.d.ts +11 -0
  174. package/dist/core/listener/feedback-readiness.d.ts.map +1 -0
  175. package/dist/core/listener/feedback-readiness.js +124 -0
  176. package/dist/core/listener/feedback-readiness.js.map +1 -0
  177. package/dist/core/memory/memory-migrator.d.ts +15 -0
  178. package/dist/core/memory/memory-migrator.d.ts.map +1 -0
  179. package/dist/core/memory/memory-migrator.js +64 -0
  180. package/dist/core/memory/memory-migrator.js.map +1 -0
  181. package/dist/core/memory/memory-reader.d.ts +30 -0
  182. package/dist/core/memory/memory-reader.d.ts.map +1 -0
  183. package/dist/core/memory/memory-reader.js +106 -0
  184. package/dist/core/memory/memory-reader.js.map +1 -0
  185. package/dist/core/planner/lifecycle-phase.d.ts +1 -0
  186. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  187. package/dist/core/planner/lifecycle-phase.js +89 -58
  188. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  189. package/dist/core/rag/memory-indexer.d.ts +16 -0
  190. package/dist/core/rag/memory-indexer.d.ts.map +1 -0
  191. package/dist/core/rag/{serena-indexer.js → memory-indexer.js} +12 -12
  192. package/dist/core/rag/memory-indexer.js.map +1 -0
  193. package/dist/core/rag/{serena-rag-query.d.ts → memory-rag-query.d.ts} +11 -9
  194. package/dist/core/rag/memory-rag-query.d.ts.map +1 -0
  195. package/dist/core/rag/{serena-rag-query.js → memory-rag-query.js} +18 -15
  196. package/dist/core/rag/memory-rag-query.js.map +1 -0
  197. package/dist/core/rag/phase-metadata.d.ts +23 -0
  198. package/dist/core/rag/phase-metadata.d.ts.map +1 -0
  199. package/dist/core/rag/phase-metadata.js +72 -0
  200. package/dist/core/rag/phase-metadata.js.map +1 -0
  201. package/dist/core/rag/phase-summary.d.ts +17 -0
  202. package/dist/core/rag/phase-summary.d.ts.map +1 -0
  203. package/dist/core/rag/phase-summary.js +104 -0
  204. package/dist/core/rag/phase-summary.js.map +1 -0
  205. package/dist/core/rag/prd-indexer.d.ts +16 -0
  206. package/dist/core/rag/prd-indexer.d.ts.map +1 -0
  207. package/dist/core/rag/prd-indexer.js +37 -0
  208. package/dist/core/rag/prd-indexer.js.map +1 -0
  209. package/dist/core/rag/skill-indexer.d.ts +16 -0
  210. package/dist/core/rag/skill-indexer.d.ts.map +1 -0
  211. package/dist/core/rag/skill-indexer.js +98 -0
  212. package/dist/core/rag/skill-indexer.js.map +1 -0
  213. package/dist/core/reviewer/review-readiness.d.ts +8 -0
  214. package/dist/core/reviewer/review-readiness.d.ts.map +1 -0
  215. package/dist/core/reviewer/review-readiness.js +159 -0
  216. package/dist/core/reviewer/review-readiness.js.map +1 -0
  217. package/dist/core/skills/built-in-skills.d.ts +26 -0
  218. package/dist/core/skills/built-in-skills.d.ts.map +1 -0
  219. package/dist/core/skills/built-in-skills.js +203 -0
  220. package/dist/core/skills/built-in-skills.js.map +1 -0
  221. package/dist/core/store/knowledge-store.d.ts +10 -1
  222. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  223. package/dist/core/store/knowledge-store.js +23 -1
  224. package/dist/core/store/knowledge-store.js.map +1 -1
  225. package/dist/core/store/migrations.d.ts.map +1 -1
  226. package/dist/core/store/migrations.js +89 -0
  227. package/dist/core/store/migrations.js.map +1 -1
  228. package/dist/core/store/tool-token-store.d.ts +39 -0
  229. package/dist/core/store/tool-token-store.d.ts.map +1 -0
  230. package/dist/core/store/tool-token-store.js +79 -0
  231. package/dist/core/store/tool-token-store.js.map +1 -0
  232. package/dist/core/validator/definition-of-ready.d.ts +8 -0
  233. package/dist/core/validator/definition-of-ready.d.ts.map +1 -0
  234. package/dist/core/validator/definition-of-ready.js +155 -0
  235. package/dist/core/validator/definition-of-ready.js.map +1 -0
  236. package/dist/core/validator/done-integrity-checker.d.ts +7 -0
  237. package/dist/core/validator/done-integrity-checker.d.ts.map +1 -0
  238. package/dist/core/validator/done-integrity-checker.js +38 -0
  239. package/dist/core/validator/done-integrity-checker.js.map +1 -0
  240. package/dist/core/validator/status-flow-checker.d.ts +7 -0
  241. package/dist/core/validator/status-flow-checker.d.ts.map +1 -0
  242. package/dist/core/validator/status-flow-checker.js +26 -0
  243. package/dist/core/validator/status-flow-checker.js.map +1 -0
  244. package/dist/mcp/app-factory.d.ts +0 -1
  245. package/dist/mcp/app-factory.d.ts.map +1 -1
  246. package/dist/mcp/app-factory.js +2 -2
  247. package/dist/mcp/app-factory.js.map +1 -1
  248. package/dist/mcp/lifecycle-wrapper.d.ts +10 -0
  249. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  250. package/dist/mcp/lifecycle-wrapper.js +48 -2
  251. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  252. package/dist/mcp/server.js +19 -14
  253. package/dist/mcp/server.js.map +1 -1
  254. package/dist/mcp/tools/{stats.d.ts → analyze.d.ts} +2 -2
  255. package/dist/mcp/tools/analyze.d.ts.map +1 -0
  256. package/dist/mcp/tools/analyze.js +272 -0
  257. package/dist/mcp/tools/analyze.js.map +1 -0
  258. package/dist/mcp/tools/import-prd.d.ts.map +1 -1
  259. package/dist/mcp/tools/import-prd.js +15 -1
  260. package/dist/mcp/tools/import-prd.js.map +1 -1
  261. package/dist/mcp/tools/index.js +10 -10
  262. package/dist/mcp/tools/index.js.map +1 -1
  263. package/dist/mcp/tools/list-skills.d.ts +7 -0
  264. package/dist/mcp/tools/list-skills.d.ts.map +1 -0
  265. package/dist/mcp/tools/list-skills.js +68 -0
  266. package/dist/mcp/tools/list-skills.js.map +1 -0
  267. package/dist/mcp/tools/memory.d.ts +8 -0
  268. package/dist/mcp/tools/memory.d.ts.map +1 -0
  269. package/dist/mcp/tools/memory.js +106 -0
  270. package/dist/mcp/tools/memory.js.map +1 -0
  271. package/dist/mcp/tools/{velocity.d.ts → metrics.d.ts} +2 -2
  272. package/dist/mcp/tools/metrics.d.ts.map +1 -0
  273. package/dist/mcp/tools/metrics.js +69 -0
  274. package/dist/mcp/tools/metrics.js.map +1 -0
  275. package/dist/mcp/tools/next.d.ts.map +1 -1
  276. package/dist/mcp/tools/next.js +19 -5
  277. package/dist/mcp/tools/next.js.map +1 -1
  278. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  279. package/dist/mcp/tools/plan-sprint.js +20 -0
  280. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  281. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  282. package/dist/mcp/tools/rag-context.js +20 -5
  283. package/dist/mcp/tools/rag-context.js.map +1 -1
  284. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  285. package/dist/mcp/tools/reindex-knowledge.js +11 -7
  286. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  287. package/dist/mcp/tools/set-phase.d.ts.map +1 -1
  288. package/dist/mcp/tools/set-phase.js +16 -1
  289. package/dist/mcp/tools/set-phase.js.map +1 -1
  290. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  291. package/dist/mcp/tools/update-status.js +21 -6
  292. package/dist/mcp/tools/update-status.js.map +1 -1
  293. package/dist/mcp/tools/{decompose.d.ts → validate-ac.d.ts} +2 -2
  294. package/dist/mcp/tools/validate-ac.d.ts.map +1 -0
  295. package/dist/mcp/tools/validate-ac.js +23 -0
  296. package/dist/mcp/tools/validate-ac.js.map +1 -0
  297. package/dist/schemas/ac-quality-schema.d.ts +90 -0
  298. package/dist/schemas/ac-quality-schema.d.ts.map +1 -0
  299. package/dist/schemas/ac-quality-schema.js +34 -0
  300. package/dist/schemas/ac-quality-schema.js.map +1 -0
  301. package/dist/schemas/analyzer-schema.d.ts +160 -0
  302. package/dist/schemas/analyzer-schema.d.ts.map +1 -0
  303. package/dist/schemas/analyzer-schema.js +74 -0
  304. package/dist/schemas/analyzer-schema.js.map +1 -0
  305. package/dist/schemas/designer-schema.d.ts +259 -0
  306. package/dist/schemas/designer-schema.d.ts.map +1 -0
  307. package/dist/schemas/designer-schema.js +102 -0
  308. package/dist/schemas/designer-schema.js.map +1 -0
  309. package/dist/schemas/handoff-schema.d.ts +49 -0
  310. package/dist/schemas/handoff-schema.d.ts.map +1 -0
  311. package/dist/schemas/handoff-schema.js +28 -0
  312. package/dist/schemas/handoff-schema.js.map +1 -0
  313. package/dist/schemas/implementer-schema.d.ts +187 -0
  314. package/dist/schemas/implementer-schema.d.ts.map +1 -0
  315. package/dist/schemas/implementer-schema.js +80 -0
  316. package/dist/schemas/implementer-schema.js.map +1 -0
  317. package/dist/schemas/knowledge.schema.d.ts +12 -0
  318. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  319. package/dist/schemas/knowledge.schema.js +1 -1
  320. package/dist/schemas/knowledge.schema.js.map +1 -1
  321. package/dist/schemas/listener-schema.d.ts +62 -0
  322. package/dist/schemas/listener-schema.d.ts.map +1 -0
  323. package/dist/schemas/listener-schema.js +35 -0
  324. package/dist/schemas/listener-schema.js.map +1 -0
  325. package/dist/schemas/reviewer-schema.d.ts +34 -0
  326. package/dist/schemas/reviewer-schema.d.ts.map +1 -0
  327. package/dist/schemas/reviewer-schema.js +17 -0
  328. package/dist/schemas/reviewer-schema.js.map +1 -0
  329. package/dist/schemas/validator-schema.d.ts +79 -0
  330. package/dist/schemas/validator-schema.d.ts.map +1 -0
  331. package/dist/schemas/validator-schema.js +43 -0
  332. package/dist/schemas/validator-schema.js.map +1 -0
  333. package/dist/web/dashboard/dist/assets/benchmark-tab-B5Sr8Cah.js +1 -0
  334. package/dist/web/dashboard/dist/assets/constants-kpH_c6vY.js +1 -0
  335. package/dist/web/dashboard/dist/assets/gitnexus-tab-DqmbSdzV.js +430 -0
  336. package/dist/web/dashboard/dist/assets/graph-tab-BKns5HdW.js +1 -0
  337. package/dist/web/dashboard/dist/assets/graph-utils-BxUWNvsI.js +7 -0
  338. package/dist/web/dashboard/dist/assets/index-CZOiKbTP.js +53 -0
  339. package/dist/web/dashboard/dist/assets/index-Dd4vKyDX.js +17 -0
  340. package/dist/web/dashboard/dist/assets/index-xyMN-_UV.css +1 -0
  341. package/dist/web/dashboard/dist/assets/insights-tab-B1kPckBM.js +52 -0
  342. package/dist/web/dashboard/dist/assets/{logs-tab-BPDyVj2B.js → logs-tab-BWfsrRlB.js} +1 -1
  343. package/dist/web/dashboard/dist/assets/memories-tab-D3zm-1Sq.js +1 -0
  344. package/dist/web/dashboard/dist/assets/prd-backlog-tab-DXP4dFP-.js +1 -0
  345. package/dist/web/dashboard/dist/assets/skills-tab-CAlVL80S.js +1 -0
  346. package/dist/web/dashboard/dist/index.html +2 -2
  347. package/package.json +2 -2
  348. package/dist/api/routes/gitnexus.d.ts +0 -12
  349. package/dist/api/routes/gitnexus.d.ts.map +0 -1
  350. package/dist/api/routes/gitnexus.js +0 -164
  351. package/dist/api/routes/gitnexus.js.map +0 -1
  352. package/dist/core/integrations/gitnexus-launcher.d.ts +0 -67
  353. package/dist/core/integrations/gitnexus-launcher.d.ts.map +0 -1
  354. package/dist/core/integrations/gitnexus-launcher.js +0 -268
  355. package/dist/core/integrations/gitnexus-launcher.js.map +0 -1
  356. package/dist/core/integrations/gitnexus-queries.d.ts +0 -55
  357. package/dist/core/integrations/gitnexus-queries.d.ts.map +0 -1
  358. package/dist/core/integrations/gitnexus-queries.js +0 -168
  359. package/dist/core/integrations/gitnexus-queries.js.map +0 -1
  360. package/dist/core/integrations/serena-reader.d.ts +0 -18
  361. package/dist/core/integrations/serena-reader.d.ts.map +0 -1
  362. package/dist/core/integrations/serena-reader.js +0 -68
  363. package/dist/core/integrations/serena-reader.js.map +0 -1
  364. package/dist/core/rag/serena-indexer.d.ts +0 -16
  365. package/dist/core/rag/serena-indexer.d.ts.map +0 -1
  366. package/dist/core/rag/serena-indexer.js.map +0 -1
  367. package/dist/core/rag/serena-rag-query.d.ts.map +0 -1
  368. package/dist/core/rag/serena-rag-query.js.map +0 -1
  369. package/dist/mcp/tools/bulk-update-status.d.ts +0 -4
  370. package/dist/mcp/tools/bulk-update-status.d.ts.map +0 -1
  371. package/dist/mcp/tools/bulk-update-status.js +0 -22
  372. package/dist/mcp/tools/bulk-update-status.js.map +0 -1
  373. package/dist/mcp/tools/decompose.d.ts.map +0 -1
  374. package/dist/mcp/tools/decompose.js +0 -25
  375. package/dist/mcp/tools/decompose.js.map +0 -1
  376. package/dist/mcp/tools/dependencies.d.ts +0 -4
  377. package/dist/mcp/tools/dependencies.d.ts.map +0 -1
  378. package/dist/mcp/tools/dependencies.js +0 -47
  379. package/dist/mcp/tools/dependencies.js.map +0 -1
  380. package/dist/mcp/tools/stats.d.ts.map +0 -1
  381. package/dist/mcp/tools/stats.js +0 -46
  382. package/dist/mcp/tools/stats.js.map +0 -1
  383. package/dist/mcp/tools/velocity.d.ts.map +0 -1
  384. package/dist/mcp/tools/velocity.js +0 -25
  385. package/dist/mcp/tools/velocity.js.map +0 -1
  386. package/dist/web/dashboard/dist/assets/benchmark-tab-DzYj_lJO.js +0 -1
  387. package/dist/web/dashboard/dist/assets/constants-BIEJOBya.js +0 -1
  388. package/dist/web/dashboard/dist/assets/gitnexus-tab-B16kDpcc.js +0 -312
  389. package/dist/web/dashboard/dist/assets/graph-tab-bgRao3Qi.js +0 -1
  390. package/dist/web/dashboard/dist/assets/graph-utils-CETPf3Qj.js +0 -23
  391. package/dist/web/dashboard/dist/assets/index-D4nxPvv8.css +0 -1
  392. package/dist/web/dashboard/dist/assets/index-DLehETrJ.js +0 -53
  393. package/dist/web/dashboard/dist/assets/insights-tab-MkpvetqF.js +0 -1
  394. package/dist/web/dashboard/dist/assets/prd-backlog-tab-DbnFo6Ve.js +0 -1
  395. package/dist/web/dashboard/dist/assets/serena-tab-CLJOpG5i.js +0 -1
@@ -9,7 +9,6 @@ export interface ApiRouterOptions {
9
9
  storeRef?: StoreRef;
10
10
  getBasePath?: () => string;
11
11
  storeManager?: import("../core/store/store-manager.js").StoreManager;
12
- gitnexusPort?: number;
13
12
  }
14
13
  export declare function createApiRouter(storeOrOptions: SqliteStore | ApiRouterOptions): Router;
15
14
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAyB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,gCAAgC,EAAE,YAAY,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAqEtF"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAyB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,gCAAgC,EAAE,YAAY,CAAC;CACtE;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAoEtF"}
@@ -13,7 +13,7 @@ import { createCaptureRouter } from "./routes/capture.js";
13
13
  import { createDocsCacheRouter } from "./routes/docs-cache.js";
14
14
  import { createContextRouter } from "./routes/context.js";
15
15
  import { createEventsRouter } from "./routes/events.js";
16
- import { createGitNexusRouter } from "./routes/gitnexus.js";
16
+ import { createCodeGraphRouter } from "./routes/code-graph.js";
17
17
  import { createRagRouter } from "./routes/rag.js";
18
18
  import { createKnowledgeRouter } from "./routes/knowledge.js";
19
19
  import { createBenchmarkRouter } from "./routes/benchmark.js";
@@ -49,14 +49,13 @@ export function createApiRouter(storeOrOptions) {
49
49
  router.use("/capture", createCaptureRouter());
50
50
  router.use("/docs", createDocsCacheRouter(storeRef));
51
51
  router.use("/context", createContextRouter(storeRef));
52
- const gitnexusPort = "gitnexusPort" in storeOrOptions ? storeOrOptions.gitnexusPort : undefined;
53
- router.use("/gitnexus", createGitNexusRouter({ getBasePath, gitnexusPort }));
52
+ router.use("/code-graph", createCodeGraphRouter({ storeRef, getBasePath }));
54
53
  router.use("/rag", createRagRouter(storeRef));
55
54
  router.use("/knowledge", createKnowledgeRouter(storeRef));
56
55
  router.use("/benchmark", createBenchmarkRouter(storeRef));
57
56
  router.use("/logs", createLogsRouter());
58
57
  if (storeManager) {
59
- router.use("/folder", createFolderRouter(storeManager, { gitnexusPort }));
58
+ router.use("/folder", createFolderRouter(storeManager));
60
59
  }
61
60
  if (eventBus) {
62
61
  router.use("/events", createEventsRouter(eventBus));
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYzD,MAAM,UAAU,eAAe,CAAC,cAA8C;IAC5E,MAAM,KAAK,GAAG,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;IAChF,MAAM,QAAQ,GAAG,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3G,MAAM,QAAQ,GAAG,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,4FAA4F;IAC5F,MAAM,YAAY,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,MAAM,QAAQ,GAAa,YAAY,EAAE,QAAQ,IAAI,CAAC,UAAU,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ;QAC3G,CAAC,CAAC,cAAc,CAAC,QAAQ;QACzB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACxB,MAAM,WAAW,GAAiB,YAAY,EAAE,aAAa,IAAI,CAAC,aAAa,IAAI,cAAc,IAAI,cAAc,CAAC,WAAW;QAC7H,CAAC,CAAC,cAAc,CAAC,WAAW;QAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAE1B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAExC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEpD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,WAAoB;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE;wBACP,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrD;iBACF,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/api/routes/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAIlE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA+FhE"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/api/routes/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAKlE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiJhE"}
@@ -1,6 +1,7 @@
1
1
  import { Router } from "express";
2
- import { buildTaskContext } from "../../core/context/compact-context.js";
2
+ import { buildTaskContext, computeLayeredMetrics } from "../../core/context/compact-context.js";
3
3
  import { detectCycles } from "../../core/planner/dependency-chain.js";
4
+ import { ToolTokenStore } from "../../core/store/tool-token-store.js";
4
5
  export function createBenchmarkRouter(storeRef) {
5
6
  const router = Router();
6
7
  router.get("/", (_req, res, next) => {
@@ -12,6 +13,7 @@ export function createBenchmarkRouter(storeRef) {
12
13
  const allEdges = doc.edges;
13
14
  // Per-task metrics via buildTaskContext
14
15
  const perTaskMetrics = [];
16
+ const layeredSamples = [];
15
17
  for (const node of allNodes) {
16
18
  if (node.type !== "task" && node.type !== "subtask")
17
19
  continue;
@@ -19,6 +21,9 @@ export function createBenchmarkRouter(storeRef) {
19
21
  if (!ctx)
20
22
  continue;
21
23
  const rawTokens = Math.ceil(ctx.metrics.originalChars / 4);
24
+ const layered = computeLayeredMetrics(store, node.id) ?? undefined;
25
+ if (layered)
26
+ layeredSamples.push(layered);
22
27
  perTaskMetrics.push({
23
28
  id: node.id,
24
29
  title: node.title,
@@ -27,6 +32,7 @@ export function createBenchmarkRouter(storeRef) {
27
32
  compressionPercent: ctx.metrics.reductionPercent,
28
33
  estimatedTokens: ctx.metrics.estimatedTokens,
29
34
  estimatedTokensSaved: Math.max(0, rawTokens - ctx.metrics.estimatedTokens),
35
+ layered,
30
36
  });
31
37
  }
32
38
  // Averages
@@ -38,6 +44,23 @@ export function createBenchmarkRouter(storeRef) {
38
44
  const avgTokensPerTask = sampleSize > 0
39
45
  ? Math.round(perTaskMetrics.reduce((s, m) => s + m.estimatedTokens, 0) / sampleSize)
40
46
  : 0;
47
+ // Layered compression aggregate
48
+ const avg = (fn) => Math.round(layeredSamples.reduce((s, l) => s + fn(l), 0) / layeredSamples.length);
49
+ const avgPct = (savingsKey) => avg((l) => l.naiveNeighborhoodTokens > 0 ? (l[savingsKey] / l.naiveNeighborhoodTokens) * 100 : 0);
50
+ const layeredCompression = layeredSamples.length > 0 ? {
51
+ avgNaiveNeighborhoodTokens: avg((l) => l.naiveNeighborhoodTokens),
52
+ avgCompactContextTokens: avg((l) => l.compactContextTokens),
53
+ avgNeighborTruncatedTokens: avg((l) => l.neighborTruncatedTokens),
54
+ avgDefaultOmittedTokens: avg((l) => l.defaultOmittedTokens),
55
+ avgShortKeysTokens: avg((l) => l.shortKeysTokens),
56
+ avgSummaryTierTokens: avg((l) => l.summaryTierTokens),
57
+ avgLayer1SavingsPercent: avgPct("layer1Savings"),
58
+ avgLayer2SavingsPercent: avgPct("layer2Savings"),
59
+ avgLayer3SavingsPercent: avgPct("layer3Savings"),
60
+ avgLayer4SavingsPercent: avgPct("layer4Savings"),
61
+ avgTotalRealSavingsPercent: avg((l) => l.totalRealSavingsPercent),
62
+ sampleSize: layeredSamples.length,
63
+ } : null;
41
64
  // Dependency intelligence
42
65
  const inferredDeps = allEdges.filter((e) => e.metadata?.inferred === true).length;
43
66
  const blockedTasks = allNodes.filter((n) => n.blocked === true).length;
@@ -47,6 +70,18 @@ export function createBenchmarkRouter(storeRef) {
47
70
  const sonnetInputPrice = 3.0; // $/MTok
48
71
  const opusPerTask = avgTokensPerTask > 0 ? (avgTokensPerTask * opusInputPrice) / 1_000_000 : 0;
49
72
  const sonnetPerTask = avgTokensPerTask > 0 ? (avgTokensPerTask * sonnetInputPrice) / 1_000_000 : 0;
73
+ // Tool token usage — nullable for backward compatibility
74
+ let toolTokenUsage = null;
75
+ try {
76
+ const project = store.getActiveProject();
77
+ if (project) {
78
+ const tokenStore = new ToolTokenStore(store.getDb());
79
+ toolTokenUsage = tokenStore.getSummary(project.id);
80
+ }
81
+ }
82
+ catch {
83
+ // Pre-migration: table may not exist yet
84
+ }
50
85
  res.json({
51
86
  tokenEconomy: {
52
87
  totalNodes: stats.totalNodes,
@@ -61,19 +96,29 @@ export function createBenchmarkRouter(storeRef) {
61
96
  sonnetPerTask: Math.round(sonnetPerTask * 1000) / 1000,
62
97
  },
63
98
  },
99
+ layeredCompression,
64
100
  dependencyIntelligence: {
65
101
  totalEdges: stats.totalEdges,
66
102
  inferredDeps,
67
103
  blockedTasks,
68
104
  cycles: cycles.length,
69
105
  },
106
+ toolTokenUsage,
70
107
  formulas: {
71
- compressionPercent: "1 - (compactChars / rawChars) * 100",
108
+ compressionPercent: "1 - (compactChars / rawChars) * 100 — vs full graph (inflated baseline)",
72
109
  tokenEstimate: "ceil(chars / 4) — industry standard ~4 chars/token",
73
110
  tokensSavedPerTask: "estimateTokens(rawChars) - estimateTokens(compactChars)",
74
111
  costPerTask: "tokens * pricePerMTok / 1_000_000",
75
112
  opusInputPrice: "$15.00/MTok",
76
113
  sonnetInputPrice: "$3.00/MTok",
114
+ toolInputTokens: "ceil(JSON.stringify(args).length / 4)",
115
+ toolOutputTokens: "ceil(responseContentText.length / 4)",
116
+ layer1Savings: "naiveNeighborhood - compactContext (field stripping)",
117
+ layer2Savings: "compactContext - neighborTruncated (neighbor desc truncation to 100 chars)",
118
+ layer3Savings: "neighborTruncated - defaultOmitted (omit priority:3, status:backlog, inferred:false, resolved:false)",
119
+ layer4Savings: "defaultOmitted - shortKeys (JSON key abbreviation)",
120
+ totalRealSavings: "naiveNeighborhoodTokens - summaryTierTokens (honest baseline)",
121
+ keyLegend: "i=id, t=type, n=title, s=status, p=priority, d=description, tk=task, par=parent, ch=children, bl=blockers, dep=dependsOn, ac=acceptanceCriteria, sr=sourceRef, rt=relationType, inf=inferred, res=resolved",
77
122
  },
78
123
  });
79
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../../src/api/routes/benchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../../src/api/routes/benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Code Graph API routes — native Code Intelligence engine.
3
+ * Replaces GitNexus API bridge with local TypeScript-based code analysis.
4
+ */
5
+ import { Router } from "express";
6
+ import type { StoreRef } from "../../core/store/store-manager.js";
7
+ export interface CodeGraphRouterOptions {
8
+ storeRef: StoreRef;
9
+ getBasePath: () => string;
10
+ }
11
+ export declare function createCodeGraphRouter(options: CodeGraphRouterOptions): Router;
12
+ //# sourceMappingURL=code-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-graph.d.ts","sourceRoot":"","sources":["../../../src/api/routes/code-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAelE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAsJ7E"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Code Graph API routes — native Code Intelligence engine.
3
+ * Replaces GitNexus API bridge with local TypeScript-based code analysis.
4
+ */
5
+ import { Router } from "express";
6
+ import { z } from "zod/v4";
7
+ import { CodeStore } from "../../core/code/code-store.js";
8
+ import { CodeIndexer } from "../../core/code/code-indexer.js";
9
+ import { getSymbolContext, analyzeImpact, getFullGraph } from "../../core/code/graph-traversal.js";
10
+ import { searchCodeSymbols } from "../../core/code/code-search.js";
11
+ import { detectProcesses } from "../../core/code/process-detector.js";
12
+ import { logger } from "../../core/utils/logger.js";
13
+ const SymbolBodySchema = z.object({ symbol: z.string().min(1) });
14
+ const SearchBodySchema = z.object({
15
+ query: z.string().min(1),
16
+ limit: z.number().int().min(1).max(100).optional(),
17
+ rerank: z.boolean().optional(),
18
+ });
19
+ const ImpactBodySchema = z.object({
20
+ symbol: z.string().min(1),
21
+ direction: z.enum(["upstream", "downstream"]).optional(),
22
+ maxDepth: z.number().int().min(1).max(5).optional(),
23
+ });
24
+ export function createCodeGraphRouter(options) {
25
+ const { storeRef, getBasePath } = options;
26
+ const router = Router();
27
+ function getCodeStore() {
28
+ return new CodeStore(storeRef.current.getDb());
29
+ }
30
+ function getProjectId() {
31
+ const project = storeRef.current.getProject();
32
+ return project?.id ?? "default";
33
+ }
34
+ // ── GET /status ───────────────────────────────
35
+ router.get("/status", (_req, res, next) => {
36
+ try {
37
+ const codeStore = getCodeStore();
38
+ const projectId = getProjectId();
39
+ const meta = codeStore.getIndexMeta(projectId);
40
+ res.json({
41
+ indexed: meta !== null,
42
+ basePath: getBasePath(),
43
+ symbolCount: meta?.symbolCount ?? 0,
44
+ relationCount: meta?.relationCount ?? 0,
45
+ fileCount: meta?.fileCount ?? 0,
46
+ lastIndexed: meta?.lastIndexed ?? null,
47
+ gitHash: meta?.gitHash ?? null,
48
+ });
49
+ }
50
+ catch (err) {
51
+ next(err);
52
+ }
53
+ });
54
+ // ── POST /reindex ─────────────────────────────
55
+ router.post("/reindex", (_req, res, next) => {
56
+ try {
57
+ const codeStore = getCodeStore();
58
+ const projectId = getProjectId();
59
+ const basePath = getBasePath();
60
+ logger.info("code-graph:reindex:start", { basePath });
61
+ const indexer = new CodeIndexer(codeStore, projectId);
62
+ codeStore.deleteAllSymbols(projectId);
63
+ const result = indexer.indexDirectory(basePath, basePath);
64
+ res.json({
65
+ success: true,
66
+ ...result,
67
+ });
68
+ }
69
+ catch (err) {
70
+ next(err);
71
+ }
72
+ });
73
+ // ── POST /search ──────────────────────────────
74
+ router.post("/search", (req, res, next) => {
75
+ try {
76
+ const parsed = SearchBodySchema.safeParse(req.body);
77
+ if (!parsed.success) {
78
+ res.status(400).json({ error: "Invalid request body", details: parsed.error.issues });
79
+ return;
80
+ }
81
+ const codeStore = getCodeStore();
82
+ const projectId = getProjectId();
83
+ const results = searchCodeSymbols(codeStore, parsed.data.query, projectId, {
84
+ limit: parsed.data.limit,
85
+ rerank: parsed.data.rerank,
86
+ });
87
+ res.json({ results });
88
+ }
89
+ catch (err) {
90
+ next(err);
91
+ }
92
+ });
93
+ // ── POST /context ─────────────────────────────
94
+ router.post("/context", (req, res, next) => {
95
+ try {
96
+ const parsed = SymbolBodySchema.safeParse(req.body);
97
+ if (!parsed.success) {
98
+ res.status(400).json({ error: "Missing required field: symbol" });
99
+ return;
100
+ }
101
+ const codeStore = getCodeStore();
102
+ const projectId = getProjectId();
103
+ const context = getSymbolContext(codeStore, parsed.data.symbol, projectId);
104
+ res.json(context);
105
+ }
106
+ catch (err) {
107
+ next(err);
108
+ }
109
+ });
110
+ // ── POST /impact ──────────────────────────────
111
+ router.post("/impact", (req, res, next) => {
112
+ try {
113
+ const parsed = ImpactBodySchema.safeParse(req.body);
114
+ if (!parsed.success) {
115
+ res.status(400).json({ error: "Missing required field: symbol" });
116
+ return;
117
+ }
118
+ const codeStore = getCodeStore();
119
+ const projectId = getProjectId();
120
+ const impact = analyzeImpact(codeStore, parsed.data.symbol, projectId, parsed.data.direction, parsed.data.maxDepth);
121
+ res.json(impact);
122
+ }
123
+ catch (err) {
124
+ next(err);
125
+ }
126
+ });
127
+ // ── GET /full ─────────────────────────────────
128
+ router.get("/full", (req, res, next) => {
129
+ try {
130
+ const limit = parseInt(String(req.query.limit ?? "500"), 10);
131
+ const codeStore = getCodeStore();
132
+ const projectId = getProjectId();
133
+ const graph = getFullGraph(codeStore, projectId, limit);
134
+ res.json(graph);
135
+ }
136
+ catch (err) {
137
+ next(err);
138
+ }
139
+ });
140
+ // ── GET /processes ────────────────────────────
141
+ router.get("/processes", (_req, res, next) => {
142
+ try {
143
+ const codeStore = getCodeStore();
144
+ const projectId = getProjectId();
145
+ const processes = detectProcesses(codeStore, projectId);
146
+ res.json({ processes });
147
+ }
148
+ catch (err) {
149
+ next(err);
150
+ }
151
+ });
152
+ return router;
153
+ }
154
+ //# sourceMappingURL=code-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-graph.js","sourceRoot":"","sources":["../../../src/api/routes/code-graph.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import { Router } from "express";
2
2
  import type { StoreManager } from "../../core/store/store-manager.js";
3
- export interface FolderRouterOptions {
4
- gitnexusPort?: number;
5
- }
6
- export declare function createFolderRouter(storeManager: StoreManager, options?: FolderRouterOptions): Router;
3
+ export declare function createFolderRouter(storeManager: StoreManager): Router;
7
4
  //# sourceMappingURL=folder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOtE,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAuGpG"}
1
+ {"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAQtE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAuGrE"}
@@ -4,9 +4,10 @@ import path from "node:path";
4
4
  import { OpenFolderBodySchema } from "../../schemas/folder.schema.js";
5
5
  import { validateBody } from "../middleware/validate.js";
6
6
  import { STORE_DIR, LEGACY_STORE_DIR, DB_FILE } from "../../core/utils/constants.js";
7
- import { ensureGitNexusAnalyzed, startGitNexusServe } from "../../core/integrations/gitnexus-launcher.js";
7
+ import { CodeStore } from "../../core/code/code-store.js";
8
+ import { CodeIndexer } from "../../core/code/code-indexer.js";
8
9
  import { logger } from "../../core/utils/logger.js";
9
- export function createFolderRouter(storeManager, options) {
10
+ export function createFolderRouter(storeManager) {
10
11
  const router = Router();
11
12
  router.get("/", (_req, res) => {
12
13
  res.json({
@@ -22,21 +23,23 @@ export function createFolderRouter(storeManager, options) {
22
23
  res.status(400).json({ ok: false, error: result.error });
23
24
  return;
24
25
  }
25
- // Trigger GitNexus re-index and re-serve for the new project (non-blocking)
26
- const gitnexusPort = options?.gitnexusPort;
27
- if (gitnexusPort) {
28
- const newBasePath = result.basePath;
29
- ensureGitNexusAnalyzed(newBasePath)
30
- .then(() => startGitNexusServe(newBasePath, gitnexusPort))
31
- .then((serveResult) => {
32
- if (serveResult.started) {
33
- logger.info("GitNexus re-started for new project", { basePath: newBasePath, port: gitnexusPort });
34
- }
35
- })
36
- .catch((err) => {
37
- logger.warn("GitNexus lifecycle after swap failed (non-blocking)", {
38
- error: err instanceof Error ? err.message : String(err),
26
+ // Trigger code graph re-index for the new project (non-blocking)
27
+ const newBasePath = result.basePath;
28
+ try {
29
+ const project = storeManager.store.getProject();
30
+ if (project) {
31
+ const codeStore = new CodeStore(storeManager.store.getDb());
32
+ const indexer = new CodeIndexer(codeStore, project.id);
33
+ const indexResult = indexer.indexDirectory(newBasePath, newBasePath);
34
+ logger.info("Code graph re-indexed after folder swap", {
35
+ basePath: newBasePath,
36
+ symbols: indexResult.symbolCount,
39
37
  });
38
+ }
39
+ }
40
+ catch (err) {
41
+ logger.warn("Code graph re-index after swap failed (non-blocking)", {
42
+ error: err instanceof Error ? err.message : String(err),
40
43
  });
41
44
  }
42
45
  res.json({
@@ -80,7 +83,6 @@ export function createFolderRouter(storeManager, options) {
80
83
  };
81
84
  })
82
85
  .sort((a, b) => {
83
- // Directories with graphs first, then alphabetical
84
86
  if (a.hasGraph !== b.hasGraph)
85
87
  return a.hasGraph ? -1 : 1;
86
88
  return a.name.localeCompare(b.name);
@@ -1 +1 @@
1
- {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/api/routes/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAMlE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,GAAG,MAAM,CA+E9F"}
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/api/routes/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAOlE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,GAAG,MAAM,CA0H9F"}
@@ -1,6 +1,7 @@
1
1
  import { Router } from "express";
2
2
  import { getIntegrationsStatus } from "../../core/integrations/tool-status.js";
3
- import { readSerenaMemory, readAllSerenaMemories } from "../../core/integrations/serena-reader.js";
3
+ import { readMemory, readAllMemories, writeMemory, deleteMemory } from "../../core/memory/memory-reader.js";
4
+ import { migrateSerenaMemories } from "../../core/memory/memory-migrator.js";
4
5
  import { buildEnrichedContext } from "../../core/integrations/enriched-context.js";
5
6
  import { KnowledgeStore } from "../../core/store/knowledge-store.js";
6
7
  export function createIntegrationsRouter(storeRef, getBasePath) {
@@ -14,19 +15,21 @@ export function createIntegrationsRouter(storeRef, getBasePath) {
14
15
  next(err);
15
16
  }
16
17
  });
17
- router.get("/serena/memories", async (_req, res, next) => {
18
+ // ── Memories CRUD ────────────────────────────────
19
+ router.get("/memories", async (_req, res, next) => {
18
20
  try {
19
- const memories = await readAllSerenaMemories(getBasePath());
21
+ await migrateSerenaMemories(getBasePath());
22
+ const memories = await readAllMemories(getBasePath());
20
23
  res.json(memories);
21
24
  }
22
25
  catch (err) {
23
26
  next(err);
24
27
  }
25
28
  });
26
- router.get("/serena/memories/:name", async (req, res, next) => {
29
+ router.get("/memories/:name", async (req, res, next) => {
27
30
  try {
28
31
  const name = req.params.name;
29
- const memory = await readSerenaMemory(getBasePath(), name);
32
+ const memory = await readMemory(getBasePath(), name);
30
33
  if (!memory) {
31
34
  res.status(404).json({ error: `Memory not found: ${name}` });
32
35
  return;
@@ -37,27 +40,68 @@ export function createIntegrationsRouter(storeRef, getBasePath) {
37
40
  next(err);
38
41
  }
39
42
  });
40
- router.get("/gitnexus/url", async (_req, res, next) => {
43
+ router.post("/memories", async (req, res, next) => {
41
44
  try {
42
- const status = await getIntegrationsStatus(getBasePath());
43
- if (!status.gitnexus.running) {
44
- res.status(503).json({
45
- error: "GitNexus is not running",
46
- instructions: "Run: gitnexus analyze && gitnexus serve",
47
- });
45
+ const { name, content } = req.body;
46
+ if (!name || !content) {
47
+ res.status(400).json({ error: "name and content are required" });
48
+ return;
49
+ }
50
+ await writeMemory(getBasePath(), name, content);
51
+ res.status(201).json({ ok: true, name });
52
+ }
53
+ catch (err) {
54
+ next(err);
55
+ }
56
+ });
57
+ router.delete("/memories/:name", async (req, res, next) => {
58
+ try {
59
+ const name = req.params.name;
60
+ const deleted = await deleteMemory(getBasePath(), name);
61
+ if (!deleted) {
62
+ res.status(404).json({ error: `Memory not found: ${name}` });
63
+ return;
64
+ }
65
+ res.json({ ok: true });
66
+ }
67
+ catch (err) {
68
+ next(err);
69
+ }
70
+ });
71
+ // Backward compat: redirect /serena/memories → /memories
72
+ router.get("/serena/memories", async (_req, res, next) => {
73
+ try {
74
+ await migrateSerenaMemories(getBasePath());
75
+ const memories = await readAllMemories(getBasePath());
76
+ res.json(memories);
77
+ }
78
+ catch (err) {
79
+ next(err);
80
+ }
81
+ });
82
+ router.get("/serena/memories/:name", async (req, res, next) => {
83
+ try {
84
+ const name = req.params.name;
85
+ const memory = await readMemory(getBasePath(), name);
86
+ if (!memory) {
87
+ res.status(404).json({ error: `Memory not found: ${name}` });
48
88
  return;
49
89
  }
50
- res.json({ url: status.gitnexus.url });
90
+ res.json(memory);
51
91
  }
52
92
  catch (err) {
53
93
  next(err);
54
94
  }
55
95
  });
56
- // ── Enriched context (Serena + GitNexus combined) ──
96
+ // ── Enriched context (Memories + Code Intelligence combined) ──
57
97
  router.get("/enriched-context/:symbol", async (req, res, next) => {
58
98
  try {
59
99
  const symbol = req.params.symbol;
60
- const ctx = await buildEnrichedContext(symbol, getBasePath());
100
+ const project = storeRef.current.getProject();
101
+ const ctx = await buildEnrichedContext(symbol, getBasePath(), 0, {
102
+ db: storeRef.current.getDb(),
103
+ projectId: project?.id,
104
+ });
61
105
  res.json(ctx);
62
106
  }
63
107
  catch (err) {
@@ -68,7 +112,7 @@ export function createIntegrationsRouter(storeRef, getBasePath) {
68
112
  router.get("/knowledge-status", (_req, res, next) => {
69
113
  try {
70
114
  const knowledgeStore = new KnowledgeStore(storeRef.current.getDb());
71
- const sourceTypes = ["upload", "serena", "code_context", "docs", "web_capture"];
115
+ const sourceTypes = ["upload", "memory", "serena", "code_context", "docs", "web_capture"];
72
116
  const statuses = sourceTypes.map((st) => ({
73
117
  source: st,
74
118
  documentCount: knowledgeStore.count(st),