symbiote-cli 0.1.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 (451) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin/symbiote.d.ts +3 -0
  3. package/dist/bin/symbiote.d.ts.map +1 -0
  4. package/dist/bin/symbiote.js +202 -0
  5. package/dist/bin/symbiote.js.map +1 -0
  6. package/dist/bin/synapse.d.ts +3 -0
  7. package/dist/bin/synapse.d.ts.map +1 -0
  8. package/dist/bin/synapse.js +369 -0
  9. package/dist/bin/synapse.js.map +1 -0
  10. package/dist/src/brain/embeddings.d.ts +9 -0
  11. package/dist/src/brain/embeddings.d.ts.map +1 -0
  12. package/dist/src/brain/embeddings.js +24 -0
  13. package/dist/src/brain/embeddings.js.map +1 -0
  14. package/dist/src/brain/health/constraint-checker.d.ts +16 -0
  15. package/dist/src/brain/health/constraint-checker.d.ts.map +1 -0
  16. package/dist/src/brain/health/constraint-checker.js +93 -0
  17. package/dist/src/brain/health/constraint-checker.js.map +1 -0
  18. package/dist/src/brain/health/coupling-analyzer.d.ts +9 -0
  19. package/dist/src/brain/health/coupling-analyzer.d.ts.map +1 -0
  20. package/dist/src/brain/health/coupling-analyzer.js +105 -0
  21. package/dist/src/brain/health/coupling-analyzer.js.map +1 -0
  22. package/dist/src/brain/health/cycle-detector.d.ts +12 -0
  23. package/dist/src/brain/health/cycle-detector.d.ts.map +1 -0
  24. package/dist/src/brain/health/cycle-detector.js +79 -0
  25. package/dist/src/brain/health/cycle-detector.js.map +1 -0
  26. package/dist/src/brain/health/dead-code-detector.d.ts +9 -0
  27. package/dist/src/brain/health/dead-code-detector.d.ts.map +1 -0
  28. package/dist/src/brain/health/dead-code-detector.js +72 -0
  29. package/dist/src/brain/health/dead-code-detector.js.map +1 -0
  30. package/dist/src/brain/health/history.d.ts +21 -0
  31. package/dist/src/brain/health/history.d.ts.map +1 -0
  32. package/dist/src/brain/health/history.js +35 -0
  33. package/dist/src/brain/health/history.js.map +1 -0
  34. package/dist/src/brain/health/index.d.ts +25 -0
  35. package/dist/src/brain/health/index.d.ts.map +1 -0
  36. package/dist/src/brain/health/index.js +76 -0
  37. package/dist/src/brain/health/index.js.map +1 -0
  38. package/dist/src/brain/health/scorer.d.ts +19 -0
  39. package/dist/src/brain/health/scorer.d.ts.map +1 -0
  40. package/dist/src/brain/health/scorer.js +47 -0
  41. package/dist/src/brain/health/scorer.js.map +1 -0
  42. package/dist/src/brain/health/types.d.ts +67 -0
  43. package/dist/src/brain/health/types.d.ts.map +1 -0
  44. package/dist/src/brain/health/types.js +2 -0
  45. package/dist/src/brain/health/types.js.map +1 -0
  46. package/dist/src/brain/health.d.ts +30 -0
  47. package/dist/src/brain/health.d.ts.map +1 -0
  48. package/dist/src/brain/health.js +147 -0
  49. package/dist/src/brain/health.js.map +1 -0
  50. package/dist/src/brain/index.d.ts +3 -0
  51. package/dist/src/brain/index.d.ts.map +1 -0
  52. package/dist/src/brain/index.js +3 -0
  53. package/dist/src/brain/index.js.map +1 -0
  54. package/dist/src/brain/intent.d.ts +31 -0
  55. package/dist/src/brain/intent.d.ts.map +1 -0
  56. package/dist/src/brain/intent.js +120 -0
  57. package/dist/src/brain/intent.js.map +1 -0
  58. package/dist/src/commands/dna.d.ts +2 -0
  59. package/dist/src/commands/dna.d.ts.map +1 -0
  60. package/dist/src/commands/dna.js +128 -0
  61. package/dist/src/commands/dna.js.map +1 -0
  62. package/dist/src/commands/hooks.d.ts +6 -0
  63. package/dist/src/commands/hooks.d.ts.map +1 -0
  64. package/dist/src/commands/hooks.js +210 -0
  65. package/dist/src/commands/hooks.js.map +1 -0
  66. package/dist/src/commands/impact.d.ts +2 -0
  67. package/dist/src/commands/impact.d.ts.map +1 -0
  68. package/dist/src/commands/impact.js +50 -0
  69. package/dist/src/commands/impact.js.map +1 -0
  70. package/dist/src/commands/index.d.ts +9 -0
  71. package/dist/src/commands/index.d.ts.map +1 -0
  72. package/dist/src/commands/index.js +9 -0
  73. package/dist/src/commands/index.js.map +1 -0
  74. package/dist/src/commands/init.d.ts +2 -0
  75. package/dist/src/commands/init.d.ts.map +1 -0
  76. package/dist/src/commands/init.js +132 -0
  77. package/dist/src/commands/init.js.map +1 -0
  78. package/dist/src/commands/install.d.ts +2 -0
  79. package/dist/src/commands/install.d.ts.map +1 -0
  80. package/dist/src/commands/install.js +67 -0
  81. package/dist/src/commands/install.js.map +1 -0
  82. package/dist/src/commands/mcp.d.ts +2 -0
  83. package/dist/src/commands/mcp.d.ts.map +1 -0
  84. package/dist/src/commands/mcp.js +51 -0
  85. package/dist/src/commands/mcp.js.map +1 -0
  86. package/dist/src/commands/scan.d.ts +2 -0
  87. package/dist/src/commands/scan.d.ts.map +1 -0
  88. package/dist/src/commands/scan.js +46 -0
  89. package/dist/src/commands/scan.js.map +1 -0
  90. package/dist/src/commands/serve.d.ts +2 -0
  91. package/dist/src/commands/serve.d.ts.map +1 -0
  92. package/dist/src/commands/serve.js +93 -0
  93. package/dist/src/commands/serve.js.map +1 -0
  94. package/dist/src/commands/shared.d.ts +11 -0
  95. package/dist/src/commands/shared.d.ts.map +1 -0
  96. package/dist/src/commands/shared.js +137 -0
  97. package/dist/src/commands/shared.js.map +1 -0
  98. package/dist/src/commands/unbond.d.ts +2 -0
  99. package/dist/src/commands/unbond.d.ts.map +1 -0
  100. package/dist/src/commands/unbond.js +29 -0
  101. package/dist/src/commands/unbond.js.map +1 -0
  102. package/dist/src/core/algorithms.d.ts +19 -0
  103. package/dist/src/core/algorithms.d.ts.map +1 -0
  104. package/dist/src/core/algorithms.js +98 -0
  105. package/dist/src/core/algorithms.js.map +1 -0
  106. package/dist/src/core/embeddings.d.ts +12 -0
  107. package/dist/src/core/embeddings.d.ts.map +1 -0
  108. package/dist/src/core/embeddings.js +64 -0
  109. package/dist/src/core/embeddings.js.map +1 -0
  110. package/dist/src/core/git-impact.d.ts +25 -0
  111. package/dist/src/core/git-impact.d.ts.map +1 -0
  112. package/dist/src/core/git-impact.js +97 -0
  113. package/dist/src/core/git-impact.js.map +1 -0
  114. package/dist/src/core/graph-builder.d.ts +5 -0
  115. package/dist/src/core/graph-builder.d.ts.map +1 -0
  116. package/dist/src/core/graph-builder.js +88 -0
  117. package/dist/src/core/graph-builder.js.map +1 -0
  118. package/dist/src/core/graph.d.ts +34 -0
  119. package/dist/src/core/graph.d.ts.map +1 -0
  120. package/dist/src/core/graph.js +95 -0
  121. package/dist/src/core/graph.js.map +1 -0
  122. package/dist/src/core/impact.d.ts +22 -0
  123. package/dist/src/core/impact.d.ts.map +1 -0
  124. package/dist/src/core/impact.js +68 -0
  125. package/dist/src/core/impact.js.map +1 -0
  126. package/dist/src/core/languages.d.ts +4 -0
  127. package/dist/src/core/languages.d.ts.map +1 -0
  128. package/dist/src/core/languages.js +59 -0
  129. package/dist/src/core/languages.js.map +1 -0
  130. package/dist/src/core/parser.d.ts +16 -0
  131. package/dist/src/core/parser.d.ts.map +1 -0
  132. package/dist/src/core/parser.js +689 -0
  133. package/dist/src/core/parser.js.map +1 -0
  134. package/dist/src/core/scanner.d.ts +26 -0
  135. package/dist/src/core/scanner.d.ts.map +1 -0
  136. package/dist/src/core/scanner.js +87 -0
  137. package/dist/src/core/scanner.js.map +1 -0
  138. package/dist/src/core/search.d.ts +34 -0
  139. package/dist/src/core/search.d.ts.map +1 -0
  140. package/dist/src/core/search.js +146 -0
  141. package/dist/src/core/search.js.map +1 -0
  142. package/dist/src/core/types.d.ts +29 -0
  143. package/dist/src/core/types.d.ts.map +1 -0
  144. package/dist/src/core/types.js +12 -0
  145. package/dist/src/core/types.js.map +1 -0
  146. package/dist/src/cortex/engine.d.ts +10 -0
  147. package/dist/src/cortex/engine.d.ts.map +1 -0
  148. package/dist/src/cortex/engine.js +93 -0
  149. package/dist/src/cortex/engine.js.map +1 -0
  150. package/dist/src/cortex/index.d.ts +13 -0
  151. package/dist/src/cortex/index.d.ts.map +1 -0
  152. package/dist/src/cortex/index.js +12 -0
  153. package/dist/src/cortex/index.js.map +1 -0
  154. package/dist/src/cortex/patterns.d.ts +63 -0
  155. package/dist/src/cortex/patterns.d.ts.map +1 -0
  156. package/dist/src/cortex/patterns.js +242 -0
  157. package/dist/src/cortex/patterns.js.map +1 -0
  158. package/dist/src/cortex/pgq-queries.d.ts +11 -0
  159. package/dist/src/cortex/pgq-queries.d.ts.map +1 -0
  160. package/dist/src/cortex/pgq-queries.js +23 -0
  161. package/dist/src/cortex/pgq-queries.js.map +1 -0
  162. package/dist/src/cortex/pgq.d.ts +5 -0
  163. package/dist/src/cortex/pgq.d.ts.map +1 -0
  164. package/dist/src/cortex/pgq.js +54 -0
  165. package/dist/src/cortex/pgq.js.map +1 -0
  166. package/dist/src/cortex/real-time-enrichment.d.ts +20 -0
  167. package/dist/src/cortex/real-time-enrichment.d.ts.map +1 -0
  168. package/dist/src/cortex/real-time-enrichment.js +96 -0
  169. package/dist/src/cortex/real-time-enrichment.js.map +1 -0
  170. package/dist/src/cortex/repository.d.ts +231 -0
  171. package/dist/src/cortex/repository.d.ts.map +1 -0
  172. package/dist/src/cortex/repository.js +1078 -0
  173. package/dist/src/cortex/repository.js.map +1 -0
  174. package/dist/src/cortex/schema.d.ts +9 -0
  175. package/dist/src/cortex/schema.d.ts.map +1 -0
  176. package/dist/src/cortex/schema.js +364 -0
  177. package/dist/src/cortex/schema.js.map +1 -0
  178. package/dist/src/cortex/stage-0-structure.d.ts +7 -0
  179. package/dist/src/cortex/stage-0-structure.d.ts.map +1 -0
  180. package/dist/src/cortex/stage-0-structure.js +119 -0
  181. package/dist/src/cortex/stage-0-structure.js.map +1 -0
  182. package/dist/src/cortex/stage-1-symbols.d.ts +7 -0
  183. package/dist/src/cortex/stage-1-symbols.d.ts.map +1 -0
  184. package/dist/src/cortex/stage-1-symbols.js +605 -0
  185. package/dist/src/cortex/stage-1-symbols.js.map +1 -0
  186. package/dist/src/cortex/stage-2-resolution.d.ts +7 -0
  187. package/dist/src/cortex/stage-2-resolution.d.ts.map +1 -0
  188. package/dist/src/cortex/stage-2-resolution.js +469 -0
  189. package/dist/src/cortex/stage-2-resolution.js.map +1 -0
  190. package/dist/src/cortex/stage-3-callgraph.d.ts +7 -0
  191. package/dist/src/cortex/stage-3-callgraph.d.ts.map +1 -0
  192. package/dist/src/cortex/stage-3-callgraph.js +323 -0
  193. package/dist/src/cortex/stage-3-callgraph.js.map +1 -0
  194. package/dist/src/cortex/stage-4-types.d.ts +7 -0
  195. package/dist/src/cortex/stage-4-types.d.ts.map +1 -0
  196. package/dist/src/cortex/stage-4-types.js +462 -0
  197. package/dist/src/cortex/stage-4-types.js.map +1 -0
  198. package/dist/src/cortex/stage-5-flow.d.ts +7 -0
  199. package/dist/src/cortex/stage-5-flow.d.ts.map +1 -0
  200. package/dist/src/cortex/stage-5-flow.js +702 -0
  201. package/dist/src/cortex/stage-5-flow.js.map +1 -0
  202. package/dist/src/cortex/stage-6-topology.d.ts +15 -0
  203. package/dist/src/cortex/stage-6-topology.d.ts.map +1 -0
  204. package/dist/src/cortex/stage-6-topology.js +382 -0
  205. package/dist/src/cortex/stage-6-topology.js.map +1 -0
  206. package/dist/src/cortex/stage-7-intelligence.d.ts +34 -0
  207. package/dist/src/cortex/stage-7-intelligence.d.ts.map +1 -0
  208. package/dist/src/cortex/stage-7-intelligence.js +258 -0
  209. package/dist/src/cortex/stage-7-intelligence.js.map +1 -0
  210. package/dist/src/cortex/topology-types.d.ts +78 -0
  211. package/dist/src/cortex/topology-types.d.ts.map +1 -0
  212. package/dist/src/cortex/topology-types.js +2 -0
  213. package/dist/src/cortex/topology-types.js.map +1 -0
  214. package/dist/src/cortex/types.d.ts +250 -0
  215. package/dist/src/cortex/types.d.ts.map +1 -0
  216. package/dist/src/cortex/types.js +2 -0
  217. package/dist/src/cortex/types.js.map +1 -0
  218. package/dist/src/dna/embeddings.d.ts +10 -0
  219. package/dist/src/dna/embeddings.d.ts.map +1 -0
  220. package/dist/src/dna/embeddings.js +46 -0
  221. package/dist/src/dna/embeddings.js.map +1 -0
  222. package/dist/src/dna/engine.d.ts +30 -0
  223. package/dist/src/dna/engine.d.ts.map +1 -0
  224. package/dist/src/dna/engine.js +254 -0
  225. package/dist/src/dna/engine.js.map +1 -0
  226. package/dist/src/dna/index.d.ts +5 -0
  227. package/dist/src/dna/index.d.ts.map +1 -0
  228. package/dist/src/dna/index.js +5 -0
  229. package/dist/src/dna/index.js.map +1 -0
  230. package/dist/src/dna/storage.d.ts +19 -0
  231. package/dist/src/dna/storage.d.ts.map +1 -0
  232. package/dist/src/dna/storage.js +112 -0
  233. package/dist/src/dna/storage.js.map +1 -0
  234. package/dist/src/dna/types.d.ts +38 -0
  235. package/dist/src/dna/types.d.ts.map +1 -0
  236. package/dist/src/dna/types.js +114 -0
  237. package/dist/src/dna/types.js.map +1 -0
  238. package/dist/src/events/bus.d.ts +10 -0
  239. package/dist/src/events/bus.d.ts.map +1 -0
  240. package/dist/src/events/bus.js +36 -0
  241. package/dist/src/events/bus.js.map +1 -0
  242. package/dist/src/events/ipc.d.ts +3 -0
  243. package/dist/src/events/ipc.d.ts.map +1 -0
  244. package/dist/src/events/ipc.js +25 -0
  245. package/dist/src/events/ipc.js.map +1 -0
  246. package/dist/src/events/session.d.ts +21 -0
  247. package/dist/src/events/session.d.ts.map +1 -0
  248. package/dist/src/events/session.js +39 -0
  249. package/dist/src/events/session.js.map +1 -0
  250. package/dist/src/events/types.d.ts +15 -0
  251. package/dist/src/events/types.d.ts.map +1 -0
  252. package/dist/src/events/types.js +26 -0
  253. package/dist/src/events/types.js.map +1 -0
  254. package/dist/src/hooks/attention.d.ts +26 -0
  255. package/dist/src/hooks/attention.d.ts.map +1 -0
  256. package/dist/src/hooks/attention.js +90 -0
  257. package/dist/src/hooks/attention.js.map +1 -0
  258. package/dist/src/hooks/handlers/post-tool-use-failure.d.ts +20 -0
  259. package/dist/src/hooks/handlers/post-tool-use-failure.d.ts.map +1 -0
  260. package/dist/src/hooks/handlers/post-tool-use-failure.js +60 -0
  261. package/dist/src/hooks/handlers/post-tool-use-failure.js.map +1 -0
  262. package/dist/src/hooks/handlers/post-tool-use.d.ts +22 -0
  263. package/dist/src/hooks/handlers/post-tool-use.d.ts.map +1 -0
  264. package/dist/src/hooks/handlers/post-tool-use.js +96 -0
  265. package/dist/src/hooks/handlers/post-tool-use.js.map +1 -0
  266. package/dist/src/hooks/handlers/pre-compact.d.ts +17 -0
  267. package/dist/src/hooks/handlers/pre-compact.d.ts.map +1 -0
  268. package/dist/src/hooks/handlers/pre-compact.js +28 -0
  269. package/dist/src/hooks/handlers/pre-compact.js.map +1 -0
  270. package/dist/src/hooks/handlers/pre-tool-use.d.ts +32 -0
  271. package/dist/src/hooks/handlers/pre-tool-use.d.ts.map +1 -0
  272. package/dist/src/hooks/handlers/pre-tool-use.js +219 -0
  273. package/dist/src/hooks/handlers/pre-tool-use.js.map +1 -0
  274. package/dist/src/hooks/handlers/session-end.d.ts +18 -0
  275. package/dist/src/hooks/handlers/session-end.d.ts.map +1 -0
  276. package/dist/src/hooks/handlers/session-end.js +42 -0
  277. package/dist/src/hooks/handlers/session-end.js.map +1 -0
  278. package/dist/src/hooks/handlers/session-start.d.ts +25 -0
  279. package/dist/src/hooks/handlers/session-start.d.ts.map +1 -0
  280. package/dist/src/hooks/handlers/session-start.js +61 -0
  281. package/dist/src/hooks/handlers/session-start.js.map +1 -0
  282. package/dist/src/hooks/handlers/stop.d.ts +21 -0
  283. package/dist/src/hooks/handlers/stop.d.ts.map +1 -0
  284. package/dist/src/hooks/handlers/stop.js +40 -0
  285. package/dist/src/hooks/handlers/stop.js.map +1 -0
  286. package/dist/src/hooks/handlers/subagent-start.d.ts +17 -0
  287. package/dist/src/hooks/handlers/subagent-start.d.ts.map +1 -0
  288. package/dist/src/hooks/handlers/subagent-start.js +48 -0
  289. package/dist/src/hooks/handlers/subagent-start.js.map +1 -0
  290. package/dist/src/hooks/handlers/user-prompt-submit.d.ts +12 -0
  291. package/dist/src/hooks/handlers/user-prompt-submit.d.ts.map +1 -0
  292. package/dist/src/hooks/handlers/user-prompt-submit.js +31 -0
  293. package/dist/src/hooks/handlers/user-prompt-submit.js.map +1 -0
  294. package/dist/src/hooks/index.d.ts +14 -0
  295. package/dist/src/hooks/index.d.ts.map +1 -0
  296. package/dist/src/hooks/index.js +13 -0
  297. package/dist/src/hooks/index.js.map +1 -0
  298. package/dist/src/hooks/post-tool-use.d.ts +12 -0
  299. package/dist/src/hooks/post-tool-use.d.ts.map +1 -0
  300. package/dist/src/hooks/post-tool-use.js +33 -0
  301. package/dist/src/hooks/post-tool-use.js.map +1 -0
  302. package/dist/src/hooks/pre-tool-use.d.ts +24 -0
  303. package/dist/src/hooks/pre-tool-use.d.ts.map +1 -0
  304. package/dist/src/hooks/pre-tool-use.js +117 -0
  305. package/dist/src/hooks/pre-tool-use.js.map +1 -0
  306. package/dist/src/hooks/session-store.d.ts +55 -0
  307. package/dist/src/hooks/session-store.d.ts.map +1 -0
  308. package/dist/src/hooks/session-store.js +69 -0
  309. package/dist/src/hooks/session-store.js.map +1 -0
  310. package/dist/src/hooks/types.d.ts +67 -0
  311. package/dist/src/hooks/types.d.ts.map +1 -0
  312. package/dist/src/hooks/types.js +28 -0
  313. package/dist/src/hooks/types.js.map +1 -0
  314. package/dist/src/index.d.ts +16 -0
  315. package/dist/src/index.d.ts.map +1 -0
  316. package/dist/src/index.js +16 -0
  317. package/dist/src/index.js.map +1 -0
  318. package/dist/src/init/agent-connector.d.ts +43 -0
  319. package/dist/src/init/agent-connector.d.ts.map +1 -0
  320. package/dist/src/init/agent-connector.js +338 -0
  321. package/dist/src/init/agent-connector.js.map +1 -0
  322. package/dist/src/init/dna-bootstrap.d.ts +10 -0
  323. package/dist/src/init/dna-bootstrap.d.ts.map +1 -0
  324. package/dist/src/init/dna-bootstrap.js +32 -0
  325. package/dist/src/init/dna-bootstrap.js.map +1 -0
  326. package/dist/src/init/index.d.ts +29 -0
  327. package/dist/src/init/index.d.ts.map +1 -0
  328. package/dist/src/init/index.js +81 -0
  329. package/dist/src/init/index.js.map +1 -0
  330. package/dist/src/init/overview-generator.d.ts +5 -0
  331. package/dist/src/init/overview-generator.d.ts.map +1 -0
  332. package/dist/src/init/overview-generator.js +85 -0
  333. package/dist/src/init/overview-generator.js.map +1 -0
  334. package/dist/src/init/parsers/eslint-config.d.ts +10 -0
  335. package/dist/src/init/parsers/eslint-config.d.ts.map +1 -0
  336. package/dist/src/init/parsers/eslint-config.js +50 -0
  337. package/dist/src/init/parsers/eslint-config.js.map +1 -0
  338. package/dist/src/init/parsers/markdown-rules.d.ts +3 -0
  339. package/dist/src/init/parsers/markdown-rules.d.ts.map +1 -0
  340. package/dist/src/init/parsers/markdown-rules.js +90 -0
  341. package/dist/src/init/parsers/markdown-rules.js.map +1 -0
  342. package/dist/src/init/parsers/package-json.d.ts +17 -0
  343. package/dist/src/init/parsers/package-json.d.ts.map +1 -0
  344. package/dist/src/init/parsers/package-json.js +75 -0
  345. package/dist/src/init/parsers/package-json.js.map +1 -0
  346. package/dist/src/init/parsers/prettier-config.d.ts +16 -0
  347. package/dist/src/init/parsers/prettier-config.d.ts.map +1 -0
  348. package/dist/src/init/parsers/prettier-config.js +30 -0
  349. package/dist/src/init/parsers/prettier-config.js.map +1 -0
  350. package/dist/src/init/parsers/tsconfig.d.ts +32 -0
  351. package/dist/src/init/parsers/tsconfig.d.ts.map +1 -0
  352. package/dist/src/init/parsers/tsconfig.js +64 -0
  353. package/dist/src/init/parsers/tsconfig.js.map +1 -0
  354. package/dist/src/init/parsers/types.d.ts +27 -0
  355. package/dist/src/init/parsers/types.d.ts.map +1 -0
  356. package/dist/src/init/parsers/types.js +2 -0
  357. package/dist/src/init/parsers/types.js.map +1 -0
  358. package/dist/src/init/project-analyzer.d.ts +3 -0
  359. package/dist/src/init/project-analyzer.d.ts.map +1 -0
  360. package/dist/src/init/project-analyzer.js +102 -0
  361. package/dist/src/init/project-analyzer.js.map +1 -0
  362. package/dist/src/init/rule-importer.d.ts +3 -0
  363. package/dist/src/init/rule-importer.d.ts.map +1 -0
  364. package/dist/src/init/rule-importer.js +101 -0
  365. package/dist/src/init/rule-importer.js.map +1 -0
  366. package/dist/src/mcp/context.d.ts +43 -0
  367. package/dist/src/mcp/context.d.ts.map +1 -0
  368. package/dist/src/mcp/context.js +167 -0
  369. package/dist/src/mcp/context.js.map +1 -0
  370. package/dist/src/mcp/http-api.d.ts +10 -0
  371. package/dist/src/mcp/http-api.d.ts.map +1 -0
  372. package/dist/src/mcp/http-api.js +580 -0
  373. package/dist/src/mcp/http-api.js.map +1 -0
  374. package/dist/src/mcp/index.d.ts +8 -0
  375. package/dist/src/mcp/index.d.ts.map +1 -0
  376. package/dist/src/mcp/index.js +8 -0
  377. package/dist/src/mcp/index.js.map +1 -0
  378. package/dist/src/mcp/resources.d.ts +5 -0
  379. package/dist/src/mcp/resources.d.ts.map +1 -0
  380. package/dist/src/mcp/resources.js +78 -0
  381. package/dist/src/mcp/resources.js.map +1 -0
  382. package/dist/src/mcp/server.d.ts +6 -0
  383. package/dist/src/mcp/server.d.ts.map +1 -0
  384. package/dist/src/mcp/server.js +265 -0
  385. package/dist/src/mcp/server.js.map +1 -0
  386. package/dist/src/mcp/tool-response.d.ts +6 -0
  387. package/dist/src/mcp/tool-response.d.ts.map +1 -0
  388. package/dist/src/mcp/tool-response.js +19 -0
  389. package/dist/src/mcp/tool-response.js.map +1 -0
  390. package/dist/src/mcp/tools/architecture-tools.d.ts +15 -0
  391. package/dist/src/mcp/tools/architecture-tools.d.ts.map +1 -0
  392. package/dist/src/mcp/tools/architecture-tools.js +56 -0
  393. package/dist/src/mcp/tools/architecture-tools.js.map +1 -0
  394. package/dist/src/mcp/tools/dna-tools.d.ts +21 -0
  395. package/dist/src/mcp/tools/dna-tools.d.ts.map +1 -0
  396. package/dist/src/mcp/tools/dna-tools.js +15 -0
  397. package/dist/src/mcp/tools/dna-tools.js.map +1 -0
  398. package/dist/src/mcp/tools/graph-tools.d.ts +49 -0
  399. package/dist/src/mcp/tools/graph-tools.d.ts.map +1 -0
  400. package/dist/src/mcp/tools/graph-tools.js +45 -0
  401. package/dist/src/mcp/tools/graph-tools.js.map +1 -0
  402. package/dist/src/mcp/tools/health-tools.d.ts +5 -0
  403. package/dist/src/mcp/tools/health-tools.d.ts.map +1 -0
  404. package/dist/src/mcp/tools/health-tools.js +7 -0
  405. package/dist/src/mcp/tools/health-tools.js.map +1 -0
  406. package/dist/src/mcp/tools/impact-tools.d.ts +21 -0
  407. package/dist/src/mcp/tools/impact-tools.d.ts.map +1 -0
  408. package/dist/src/mcp/tools/impact-tools.js +23 -0
  409. package/dist/src/mcp/tools/impact-tools.js.map +1 -0
  410. package/dist/src/mcp/tools/intent-tools.d.ts +32 -0
  411. package/dist/src/mcp/tools/intent-tools.d.ts.map +1 -0
  412. package/dist/src/mcp/tools/intent-tools.js +77 -0
  413. package/dist/src/mcp/tools/intent-tools.js.map +1 -0
  414. package/dist/src/mcp/tools/project-tools.d.ts +53 -0
  415. package/dist/src/mcp/tools/project-tools.d.ts.map +1 -0
  416. package/dist/src/mcp/tools/project-tools.js +91 -0
  417. package/dist/src/mcp/tools/project-tools.js.map +1 -0
  418. package/dist/src/mcp/tools/rename-tool.d.ts +25 -0
  419. package/dist/src/mcp/tools/rename-tool.d.ts.map +1 -0
  420. package/dist/src/mcp/tools/rename-tool.js +106 -0
  421. package/dist/src/mcp/tools/rename-tool.js.map +1 -0
  422. package/dist/src/mcp/tools/trace-tools.d.ts +4 -0
  423. package/dist/src/mcp/tools/trace-tools.d.ts.map +1 -0
  424. package/dist/src/mcp/tools/trace-tools.js +268 -0
  425. package/dist/src/mcp/tools/trace-tools.js.map +1 -0
  426. package/dist/src/storage/db.d.ts +13 -0
  427. package/dist/src/storage/db.d.ts.map +1 -0
  428. package/dist/src/storage/db.js +230 -0
  429. package/dist/src/storage/db.js.map +1 -0
  430. package/dist/src/storage/repository.d.ts +54 -0
  431. package/dist/src/storage/repository.d.ts.map +1 -0
  432. package/dist/src/storage/repository.js +257 -0
  433. package/dist/src/storage/repository.js.map +1 -0
  434. package/dist/src/utils/config.d.ts +18 -0
  435. package/dist/src/utils/config.d.ts.map +1 -0
  436. package/dist/src/utils/config.js +93 -0
  437. package/dist/src/utils/config.js.map +1 -0
  438. package/dist/src/utils/files.d.ts +3 -0
  439. package/dist/src/utils/files.d.ts.map +1 -0
  440. package/dist/src/utils/files.js +52 -0
  441. package/dist/src/utils/files.js.map +1 -0
  442. package/dist/src/utils/strings.d.ts +2 -0
  443. package/dist/src/utils/strings.d.ts.map +1 -0
  444. package/dist/src/utils/strings.js +11 -0
  445. package/dist/src/utils/strings.js.map +1 -0
  446. package/dist/tsconfig.tsbuildinfo +1 -0
  447. package/hooks/post-tool-use.sh +37 -0
  448. package/hooks/pre-tool-use.sh +43 -0
  449. package/hooks/session-start.sh +67 -0
  450. package/package.json +103 -0
  451. package/skills/symbiote-init/SKILL.md +104 -0
@@ -0,0 +1,45 @@
1
+ import { executePgqQuery } from '#cortex/pgq-queries.js';
2
+ import { wrapResponse, getMaxDepth } from '../tool-response.js';
3
+ export function isLegacyQueryFormat(input) {
4
+ return 'type' in input && typeof input.type === 'string';
5
+ }
6
+ export async function handleQueryGraphV2(ctx, input) {
7
+ const rows = await executePgqQuery(ctx.db, input.query);
8
+ const depth = await getMaxDepth(ctx.cortexRepo);
9
+ return wrapResponse(rows, depth, false);
10
+ }
11
+ export async function handleGetContextForSymbol(ctx, input) {
12
+ const depth = await getMaxDepth(ctx.cortexRepo);
13
+ const matches = await ctx.cortexRepo.getSymbolByName(input.symbol);
14
+ if (matches.length === 0) {
15
+ const byId = await ctx.cortexRepo.getSymbolById(input.symbol);
16
+ if (!byId) {
17
+ return wrapResponse({ error: `Symbol '${input.symbol}' not found` }, depth, false);
18
+ }
19
+ matches.push(byId);
20
+ }
21
+ const symbol = matches[0];
22
+ const refs = await ctx.cortexRepo.getReferencesForSymbol(symbol.id);
23
+ const callees = await ctx.cortexRepo.getCallsFrom(symbol.id);
24
+ const result = {
25
+ symbol,
26
+ callers: refs.callers.map((c) => ({
27
+ sourceId: c.sourceId,
28
+ line: c.line,
29
+ confidence: c.confidence,
30
+ })),
31
+ callees: callees.map((c) => ({
32
+ targetId: c.targetId,
33
+ line: c.line,
34
+ confidence: c.confidence,
35
+ })),
36
+ importers: refs.importers.map((i) => ({
37
+ sourceId: i.sourceId,
38
+ kind: i.kind,
39
+ })),
40
+ extenders: refs.extenders.map((e) => ({ sourceId: e.sourceId })),
41
+ implementors: refs.implementors.map((i) => ({ sourceId: i.sourceId })),
42
+ };
43
+ return wrapResponse(result, depth, false);
44
+ }
45
+ //# sourceMappingURL=graph-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/graph-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA+BhE,MAAM,UAAU,mBAAmB,CAAC,KAA8B;IAC9D,OAAO,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,GAAqB,EACrB,KAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,GAAqB,EACrB,KAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,CAAC,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAkB;QAC1B,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;SAC3B,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;SAC3B,CAAC,CAAC;QACH,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;SACf,CAAC,CAAC;QACH,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;KACzE,CAAC;IAEF,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ServerContext } from '../context.js';
2
+ import type { HealthReport } from '#brain/health/index.js';
3
+ import type { ToolResponse } from '#cortex/types.js';
4
+ export declare function handleGetHealth(ctx: ServerContext): Promise<ToolResponse<HealthReport>>;
5
+ //# sourceMappingURL=health-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/health-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,wBAAsB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAI7F"}
@@ -0,0 +1,7 @@
1
+ import { wrapResponse, getMaxDepth } from '../tool-response.js';
2
+ export async function handleGetHealth(ctx) {
3
+ const report = await ctx.health.analyze();
4
+ const depth = await getMaxDepth(ctx.cortexRepo);
5
+ return wrapResponse(report, depth, false);
6
+ }
7
+ //# sourceMappingURL=health-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/health-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAkB;IACpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { ImpactAnalyzer } from '#core/impact.js';
2
+ import type { ImpactResult } from '#core/impact.js';
3
+ import type { GitImpactResult } from '#core/git-impact.js';
4
+ import type { GraphInstance } from '#core/types.js';
5
+ import type { CortexRepository } from '#cortex/repository.js';
6
+ import type { ToolResponse } from '#cortex/types.js';
7
+ export interface ImpactToolContext {
8
+ graph: GraphInstance;
9
+ impact: ImpactAnalyzer;
10
+ cortexRepo: CortexRepository;
11
+ }
12
+ export interface GetImpactInput {
13
+ target: string;
14
+ maxDepth?: number;
15
+ }
16
+ export declare function handleGetImpact(ctx: ImpactToolContext, input: GetImpactInput): Promise<ToolResponse<ImpactResult>>;
17
+ export interface DetectChangesInput {
18
+ cwd?: string;
19
+ }
20
+ export declare function handleDetectChanges(ctx: ImpactToolContext, input: DetectChangesInput): Promise<ToolResponse<GitImpactResult>>;
21
+ //# sourceMappingURL=impact-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/impact-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CACjC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,cAAc,GACtB,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAmBrC;AAED,MAAM,WAAW,kBAAkB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAKxC"}
@@ -0,0 +1,23 @@
1
+ import { GitImpactAnalyzer } from '#core/git-impact.js';
2
+ import { wrapResponse, getMaxDepth } from '../tool-response.js';
3
+ export async function handleGetImpact(ctx, input) {
4
+ const maxDepth = input.maxDepth ?? 3;
5
+ const depth = await getMaxDepth(ctx.cortexRepo);
6
+ if (!ctx.graph.hasNode(input.target)) {
7
+ return wrapResponse({
8
+ depths: {
9
+ 0: [{ node: input.target, depth: 0, path: [input.target], confidence: 1.0 }],
10
+ },
11
+ summary: { totalAffected: 0, criticalPaths: 0, riskLevel: 'LOW' },
12
+ }, depth, false);
13
+ }
14
+ const result = ctx.impact.getBlastRadius(input.target, maxDepth);
15
+ return wrapResponse(result, depth, false);
16
+ }
17
+ export async function handleDetectChanges(ctx, input) {
18
+ const gitImpact = new GitImpactAnalyzer(ctx.graph);
19
+ const result = await gitImpact.analyzeWorkingChanges(input.cwd);
20
+ const depth = await getMaxDepth(ctx.cortexRepo);
21
+ return wrapResponse(result, depth, false);
22
+ }
23
+ //# sourceMappingURL=impact-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/impact-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,GAAsB,EACtB,KAAqB;IAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,YAAY,CACf;YACI,MAAM,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;aAC/E;YACD,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;SACpE,EACD,KAAK,EACL,KAAK,CACR,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,GAAsB,EACtB,KAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { ServerContext } from '../context.js';
2
+ import type { IntentEntry } from '#brain/intent.js';
3
+ export interface GetConstraintsInput {
4
+ scope?: string;
5
+ }
6
+ export interface GetConstraintsOutput {
7
+ constraints: IntentEntry[];
8
+ }
9
+ export declare function handleGetConstraints(ctx: ServerContext, input: GetConstraintsInput): Promise<GetConstraintsOutput>;
10
+ export interface GetDecisionsInput {
11
+ scope?: string;
12
+ }
13
+ export interface GetDecisionsOutput {
14
+ decisions: IntentEntry[];
15
+ }
16
+ export declare function handleGetDecisions(ctx: ServerContext, input: GetDecisionsInput): Promise<GetDecisionsOutput>;
17
+ export interface ProposeDecisionInput {
18
+ id: string;
19
+ content: string;
20
+ scope: string;
21
+ }
22
+ export interface ProposeEntryOutput {
23
+ entry: IntentEntry;
24
+ }
25
+ export declare function handleProposeDecision(ctx: ServerContext, input: ProposeDecisionInput): ProposeEntryOutput;
26
+ export interface ProposeConstraintInput {
27
+ id: string;
28
+ content: string;
29
+ scope: string;
30
+ }
31
+ export declare function handleProposeConstraint(ctx: ServerContext, input: ProposeConstraintInput): ProposeEntryOutput;
32
+ //# sourceMappingURL=intent-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/intent-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyBpD,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED,wBAAsB,oBAAoB,CACtC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,wBAAsB,kBAAkB,CACpC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,WAAW,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACjC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,oBAAoB,GAC5B,kBAAkB,CAkBpB;AAED,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,uBAAuB,CACnC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,sBAAsB,GAC9B,kBAAkB,CAkBpB"}
@@ -0,0 +1,77 @@
1
+ const MAX_ID_LENGTH = 200;
2
+ function validateId(id) {
3
+ if (id.length > MAX_ID_LENGTH) {
4
+ throw new Error(`Invalid id: must not exceed ${MAX_ID_LENGTH} characters`);
5
+ }
6
+ if (id.includes('/') || id.includes('\\') || id.includes('..')) {
7
+ throw new Error('Invalid id: must not contain path separators or ".."');
8
+ }
9
+ if (id.includes('\x00') || /[\x00-\x1f]/.test(id)) {
10
+ throw new Error('Invalid id: must not contain null bytes or control characters');
11
+ }
12
+ }
13
+ function validateScope(scope) {
14
+ if (scope.length > MAX_ID_LENGTH) {
15
+ throw new Error(`Invalid scope: must not exceed ${MAX_ID_LENGTH} characters`);
16
+ }
17
+ if (scope.includes('..') || scope.includes('\x00') || /[\x00-\x1f]/.test(scope)) {
18
+ throw new Error('Invalid scope: must not contain ".." or control characters');
19
+ }
20
+ }
21
+ export async function handleGetConstraints(ctx, input) {
22
+ const constraints = await ctx.intent.listEntries('constraint');
23
+ if (input.scope) {
24
+ return {
25
+ constraints: constraints.filter((c) => c.frontmatter.scope === 'global' ||
26
+ c.frontmatter.scope === '*' ||
27
+ input.scope.startsWith(c.frontmatter.scope)),
28
+ };
29
+ }
30
+ return { constraints };
31
+ }
32
+ export async function handleGetDecisions(ctx, input) {
33
+ const decisions = await ctx.intent.listEntries('decision');
34
+ if (input.scope) {
35
+ return {
36
+ decisions: decisions.filter((d) => d.frontmatter.scope === 'global' ||
37
+ d.frontmatter.scope === '*' ||
38
+ input.scope.startsWith(d.frontmatter.scope)),
39
+ };
40
+ }
41
+ return { decisions };
42
+ }
43
+ export function handleProposeDecision(ctx, input) {
44
+ validateId(input.id);
45
+ validateScope(input.scope);
46
+ const entry = {
47
+ frontmatter: {
48
+ id: input.id,
49
+ type: 'decision',
50
+ scope: input.scope,
51
+ status: 'proposed',
52
+ author: 'ai',
53
+ createdAt: new Date().toISOString().split('T')[0],
54
+ },
55
+ content: input.content,
56
+ };
57
+ ctx.intent.writeEntry(entry);
58
+ return { entry };
59
+ }
60
+ export function handleProposeConstraint(ctx, input) {
61
+ validateId(input.id);
62
+ validateScope(input.scope);
63
+ const entry = {
64
+ frontmatter: {
65
+ id: input.id,
66
+ type: 'constraint',
67
+ scope: input.scope,
68
+ status: 'proposed',
69
+ author: 'ai',
70
+ createdAt: new Date().toISOString().split('T')[0],
71
+ },
72
+ content: input.content,
73
+ };
74
+ ctx.intent.writeEntry(entry);
75
+ return { entry };
76
+ }
77
+ //# sourceMappingURL=intent-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/intent-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { ServerContext } from '../context.js';
2
+ import type { NodeRecord } from '#storage/repository.js';
3
+ import type { IntentEntry } from '#brain/intent.js';
4
+ import type { ToolResponse } from '#cortex/types.js';
5
+ export interface ProjectOverviewOutput {
6
+ totalNodes: number;
7
+ totalEdges: number;
8
+ totalFiles: number;
9
+ nodesByType: Record<string, number>;
10
+ constraints: IntentEntry[];
11
+ decisions: IntentEntry[];
12
+ }
13
+ export declare function handleGetProjectOverview(ctx: ServerContext): Promise<ToolResponse<ProjectOverviewOutput>>;
14
+ export interface GetContextForFileInput {
15
+ filePath: string;
16
+ }
17
+ export interface FileContextOutput {
18
+ filePath: string;
19
+ nodes: NodeRecord[];
20
+ dependencies: Array<{
21
+ node: NodeRecord;
22
+ type: string;
23
+ }>;
24
+ dependents: Array<{
25
+ node: NodeRecord;
26
+ type: string;
27
+ }>;
28
+ constraints: IntentEntry[];
29
+ decisions: IntentEntry[];
30
+ }
31
+ export declare function handleGetContextForFile(ctx: ServerContext, input: GetContextForFileInput): Promise<ToolResponse<FileContextOutput>>;
32
+ export interface QueryGraphInput {
33
+ query: string;
34
+ type: 'search' | 'dependencies' | 'dependents' | 'hubs';
35
+ limit?: number;
36
+ }
37
+ export interface QueryGraphOutput {
38
+ results: NodeRecord[];
39
+ edgeCounts?: number[];
40
+ }
41
+ export declare function handleQueryGraph(ctx: ServerContext, input: QueryGraphInput): Promise<ToolResponse<QueryGraphOutput>>;
42
+ export interface SemanticSearchInput {
43
+ query: string;
44
+ limit?: number;
45
+ }
46
+ export interface SemanticSearchOutput {
47
+ results: Array<{
48
+ node: NodeRecord | null;
49
+ distance: number;
50
+ }>;
51
+ }
52
+ export declare function handleSemanticSearch(ctx: ServerContext, input: SemanticSearchInput): Promise<ToolResponse<SemanticSearchOutput>>;
53
+ //# sourceMappingURL=project-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/project-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,wBAAsB,wBAAwB,CAC1C,GAAG,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAsB9C;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,wBAAsB,uBAAuB,CACzC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,sBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAiC1C;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAmCzC;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,wBAAsB,oBAAoB,CACtC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAmC7C"}
@@ -0,0 +1,91 @@
1
+ import { wrapResponse, getMaxDepth } from '../tool-response.js';
2
+ export async function handleGetProjectOverview(ctx) {
3
+ const overview = await ctx.graph.getOverview();
4
+ const constraints = await ctx.intent.listEntries('constraint', {
5
+ status: 'active',
6
+ });
7
+ const decisions = await ctx.intent.listEntries('decision', {
8
+ status: 'active',
9
+ });
10
+ const depth = await getMaxDepth(ctx.cortexRepo);
11
+ return wrapResponse({
12
+ totalNodes: overview.totalNodes,
13
+ totalEdges: overview.totalEdges,
14
+ totalFiles: overview.totalFiles,
15
+ nodesByType: overview.nodesByType,
16
+ constraints,
17
+ decisions,
18
+ }, depth, false);
19
+ }
20
+ export async function handleGetContextForFile(ctx, input) {
21
+ const fileCtx = await ctx.graph.getFileContext(input.filePath);
22
+ const allConstraints = await ctx.intent.listEntries('constraint');
23
+ const constraints = allConstraints.filter((c) => c.frontmatter.scope === 'global' || input.filePath.startsWith(c.frontmatter.scope));
24
+ const allDecisions = await ctx.intent.listEntries('decision');
25
+ const decisions = allDecisions.filter((d) => d.frontmatter.scope === 'global' || input.filePath.startsWith(d.frontmatter.scope));
26
+ const depth = await getMaxDepth(ctx.cortexRepo);
27
+ return wrapResponse({
28
+ filePath: input.filePath,
29
+ nodes: fileCtx.nodes,
30
+ dependencies: fileCtx.dependencies.map((d) => ({
31
+ node: d.node,
32
+ type: d.edge.type,
33
+ })),
34
+ dependents: fileCtx.dependents.map((d) => ({
35
+ node: d.node,
36
+ type: d.edge.type,
37
+ })),
38
+ constraints,
39
+ decisions,
40
+ }, depth, false);
41
+ }
42
+ export async function handleQueryGraph(ctx, input) {
43
+ const depth = await getMaxDepth(ctx.cortexRepo);
44
+ switch (input.type) {
45
+ case 'search': {
46
+ const results = await ctx.search.textSearch(input.query);
47
+ return wrapResponse({ results: results.map((r) => r.node) }, depth, false);
48
+ }
49
+ case 'dependencies':
50
+ return wrapResponse({
51
+ results: await ctx.graph.getDependencies(input.query),
52
+ }, depth, false);
53
+ case 'dependents':
54
+ return wrapResponse({
55
+ results: await ctx.graph.getDependents(input.query),
56
+ }, depth, false);
57
+ case 'hubs': {
58
+ const hubs = await ctx.graph.getHubs(input.limit ?? 20);
59
+ return wrapResponse({
60
+ results: hubs.map((h) => h.node),
61
+ edgeCounts: hubs.map((h) => h.edgeCount),
62
+ }, depth, false);
63
+ }
64
+ }
65
+ }
66
+ export async function handleSemanticSearch(ctx, input) {
67
+ const limit = input.limit ?? 10;
68
+ const depth = await getMaxDepth(ctx.cortexRepo);
69
+ try {
70
+ const results = await ctx.search.search(input.query, { limit });
71
+ if (results.length > 0) {
72
+ return wrapResponse({
73
+ results: results.map((r) => ({
74
+ node: r.node,
75
+ distance: 1 - r.score,
76
+ })),
77
+ }, depth, false);
78
+ }
79
+ }
80
+ catch (err) {
81
+ console.warn('[symbiote] Semantic search failed, falling back to text:', err instanceof Error ? err.message : String(err));
82
+ }
83
+ const textResults = await ctx.search.textSearch(input.query, limit);
84
+ return wrapResponse({
85
+ results: textResults.map((r) => ({
86
+ node: r.node,
87
+ distance: 1 - r.score,
88
+ })),
89
+ }, depth, false);
90
+ }
91
+ //# sourceMappingURL=project-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/project-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { CortexRepository } from '#cortex/repository.js';
2
+ import type { ToolResponse } from '#cortex/types.js';
3
+ export interface RenameToolContext {
4
+ cortexRepo: CortexRepository;
5
+ rootDir: string;
6
+ }
7
+ export interface RenameSymbolInput {
8
+ symbol: string;
9
+ newName: string;
10
+ scope?: 'file' | 'project';
11
+ }
12
+ export interface RenameChange {
13
+ file: string;
14
+ line: number;
15
+ oldText: string;
16
+ newText: string;
17
+ }
18
+ export interface RenameResult {
19
+ changes: RenameChange[];
20
+ }
21
+ export interface RenameError {
22
+ error: string;
23
+ }
24
+ export declare function handleRenameSymbol(ctx: RenameToolContext, input: RenameSymbolInput): Promise<ToolResponse<RenameResult | RenameError>>;
25
+ //# sourceMappingURL=rename-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/rename-tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,kBAAkB,CACpC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAqBnD"}
@@ -0,0 +1,106 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { wrapResponse, getMaxDepth } from '../tool-response.js';
4
+ export async function handleRenameSymbol(ctx, input) {
5
+ const depth = await getMaxDepth(ctx.cortexRepo);
6
+ const matches = await ctx.cortexRepo.getSymbolByName(input.symbol);
7
+ if (matches.length === 0) {
8
+ const byId = await ctx.cortexRepo.getSymbolById(input.symbol);
9
+ if (!byId) {
10
+ return wrapResponse({ error: `Symbol '${input.symbol}' not found` }, depth, false);
11
+ }
12
+ matches.push(byId);
13
+ }
14
+ const symbol = matches[0];
15
+ const refs = await ctx.cortexRepo.getReferencesForSymbol(symbol.id);
16
+ const changes = [];
17
+ addDefinitionChange(ctx, symbol, input.newName, changes);
18
+ addCallerChanges(ctx, refs.callers, symbol.name, input.newName, changes);
19
+ addImportChanges(ctx, refs.importers, symbol.name, input.newName, changes);
20
+ return wrapResponse({ changes }, depth, false);
21
+ }
22
+ function addDefinitionChange(ctx, symbol, newName, changes) {
23
+ const content = readFileSafe(ctx.rootDir, symbol.filePath);
24
+ if (!content)
25
+ return;
26
+ const lines = content.split('\n');
27
+ const line = lines[symbol.lineStart - 1];
28
+ if (!line)
29
+ return;
30
+ const idx = line.indexOf(symbol.name);
31
+ if (idx === -1)
32
+ return;
33
+ changes.push({
34
+ file: symbol.filePath,
35
+ line: symbol.lineStart,
36
+ oldText: line,
37
+ newText: line.substring(0, idx) + newName + line.substring(idx + symbol.name.length),
38
+ });
39
+ }
40
+ function addCallerChanges(ctx, callers, oldName, newName, changes) {
41
+ for (const caller of callers) {
42
+ if (!caller.line)
43
+ continue;
44
+ const filePath = extractFilePath(caller.sourceId);
45
+ if (!filePath)
46
+ continue;
47
+ const content = readFileSafe(ctx.rootDir, filePath);
48
+ if (!content)
49
+ continue;
50
+ const lines = content.split('\n');
51
+ const lineText = lines[caller.line - 1];
52
+ if (!lineText || !lineText.includes(oldName))
53
+ continue;
54
+ changes.push({
55
+ file: filePath,
56
+ line: caller.line,
57
+ oldText: lineText,
58
+ newText: lineText.replaceAll(oldName, newName),
59
+ });
60
+ }
61
+ }
62
+ function addImportChanges(ctx, importers, oldName, newName, changes) {
63
+ for (const imp of importers) {
64
+ if (!imp.line)
65
+ continue;
66
+ const importerName = imp.originalName ?? oldName;
67
+ if (importerName !== oldName)
68
+ continue;
69
+ const filePath = extractFilePath(imp.sourceId);
70
+ if (!filePath)
71
+ continue;
72
+ const content = readFileSafe(ctx.rootDir, filePath);
73
+ if (!content)
74
+ continue;
75
+ const lines = content.split('\n');
76
+ const lineText = lines[imp.line - 1];
77
+ if (!lineText || !lineText.includes(oldName))
78
+ continue;
79
+ changes.push({
80
+ file: filePath,
81
+ line: imp.line,
82
+ oldText: lineText,
83
+ newText: lineText.replaceAll(oldName, newName),
84
+ });
85
+ }
86
+ }
87
+ function extractFilePath(nodeId) {
88
+ const prefixes = ['fn:', 'class:', 'method:', 'interface:', 'type:', 'var:', 'file:'];
89
+ for (const prefix of prefixes) {
90
+ if (nodeId.startsWith(prefix)) {
91
+ const rest = nodeId.slice(prefix.length);
92
+ const colonIdx = rest.indexOf(':');
93
+ return colonIdx === -1 ? rest : rest.substring(0, colonIdx);
94
+ }
95
+ }
96
+ return null;
97
+ }
98
+ function readFileSafe(rootDir, filePath) {
99
+ try {
100
+ return readFileSync(resolve(rootDir, filePath), 'utf-8');
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ }
106
+ //# sourceMappingURL=rename-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-tool.js","sourceRoot":"","sources":["../../../../src/mcp/tools/rename-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { CortexRepository } from '#cortex/repository.js';
3
+ export declare function registerTraceTools(server: McpServer, repo: CortexRepository): void;
4
+ //# sourceMappingURL=trace-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/trace-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA2R9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAgFlF"}