@egentica/codemap 0.1.5

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 (527) hide show
  1. package/LICENSE.md +165 -0
  2. package/README.md +479 -0
  3. package/dist/adapters/EgenticaMcpAdapter.d.ts +128 -0
  4. package/dist/adapters/EgenticaMcpAdapter.d.ts.map +1 -0
  5. package/dist/adapters/EgenticaMcpAdapter.js +218 -0
  6. package/dist/adapters/EgenticaMcpAdapter.js.map +1 -0
  7. package/dist/assist/AssistEngine.d.ts +107 -0
  8. package/dist/assist/AssistEngine.d.ts.map +1 -0
  9. package/dist/assist/AssistEngine.js +188 -0
  10. package/dist/assist/AssistEngine.js.map +1 -0
  11. package/dist/assist/AssistScorer.d.ts +91 -0
  12. package/dist/assist/AssistScorer.d.ts.map +1 -0
  13. package/dist/assist/AssistScorer.js +254 -0
  14. package/dist/assist/AssistScorer.js.map +1 -0
  15. package/dist/assist/PatternAggregator.d.ts +116 -0
  16. package/dist/assist/PatternAggregator.d.ts.map +1 -0
  17. package/dist/assist/PatternAggregator.js +311 -0
  18. package/dist/assist/PatternAggregator.js.map +1 -0
  19. package/dist/assist/RelevanceScorer.d.ts +104 -0
  20. package/dist/assist/RelevanceScorer.d.ts.map +1 -0
  21. package/dist/assist/RelevanceScorer.js +240 -0
  22. package/dist/assist/RelevanceScorer.js.map +1 -0
  23. package/dist/assist/index.d.ts +6 -0
  24. package/dist/assist/index.d.ts.map +1 -0
  25. package/dist/assist/index.js +9 -0
  26. package/dist/assist/index.js.map +1 -0
  27. package/dist/core/AnnotationStore.d.ts +101 -0
  28. package/dist/core/AnnotationStore.d.ts.map +1 -0
  29. package/dist/core/AnnotationStore.js +236 -0
  30. package/dist/core/AnnotationStore.js.map +1 -0
  31. package/dist/core/BackupManager.d.ts +92 -0
  32. package/dist/core/BackupManager.d.ts.map +1 -0
  33. package/dist/core/BackupManager.js +311 -0
  34. package/dist/core/BackupManager.js.map +1 -0
  35. package/dist/core/ChecklistStore.d.ts +66 -0
  36. package/dist/core/ChecklistStore.d.ts.map +1 -0
  37. package/dist/core/ChecklistStore.js +199 -0
  38. package/dist/core/ChecklistStore.js.map +1 -0
  39. package/dist/core/CodeMap.d.ts +614 -0
  40. package/dist/core/CodeMap.d.ts.map +1 -0
  41. package/dist/core/CodeMap.js +880 -0
  42. package/dist/core/CodeMap.js.map +1 -0
  43. package/dist/core/DisplayFilter.d.ts +83 -0
  44. package/dist/core/DisplayFilter.d.ts.map +1 -0
  45. package/dist/core/DisplayFilter.js +228 -0
  46. package/dist/core/DisplayFilter.js.map +1 -0
  47. package/dist/core/EventBus.d.ts +114 -0
  48. package/dist/core/EventBus.d.ts.map +1 -0
  49. package/dist/core/EventBus.js +192 -0
  50. package/dist/core/EventBus.js.map +1 -0
  51. package/dist/core/ExperienceStore.d.ts +170 -0
  52. package/dist/core/ExperienceStore.d.ts.map +1 -0
  53. package/dist/core/ExperienceStore.js +292 -0
  54. package/dist/core/ExperienceStore.js.map +1 -0
  55. package/dist/core/ExperienceTracker.d.ts +110 -0
  56. package/dist/core/ExperienceTracker.d.ts.map +1 -0
  57. package/dist/core/ExperienceTracker.js +291 -0
  58. package/dist/core/ExperienceTracker.js.map +1 -0
  59. package/dist/core/FileSystemGraph.d.ts +157 -0
  60. package/dist/core/FileSystemGraph.d.ts.map +1 -0
  61. package/dist/core/FileSystemGraph.js +316 -0
  62. package/dist/core/FileSystemGraph.js.map +1 -0
  63. package/dist/core/FileSystemIO.d.ts +222 -0
  64. package/dist/core/FileSystemIO.d.ts.map +1 -0
  65. package/dist/core/FileSystemIO.js +403 -0
  66. package/dist/core/FileSystemIO.js.map +1 -0
  67. package/dist/core/FuzzyMatcher.d.ts +51 -0
  68. package/dist/core/FuzzyMatcher.d.ts.map +1 -0
  69. package/dist/core/FuzzyMatcher.js +280 -0
  70. package/dist/core/FuzzyMatcher.js.map +1 -0
  71. package/dist/core/GroupStore.d.ts +114 -0
  72. package/dist/core/GroupStore.d.ts.map +1 -0
  73. package/dist/core/GroupStore.js +246 -0
  74. package/dist/core/GroupStore.js.map +1 -0
  75. package/dist/core/HelpRegistry.d.ts +116 -0
  76. package/dist/core/HelpRegistry.d.ts.map +1 -0
  77. package/dist/core/HelpRegistry.js +160 -0
  78. package/dist/core/HelpRegistry.js.map +1 -0
  79. package/dist/core/HintRegistry.d.ts +49 -0
  80. package/dist/core/HintRegistry.d.ts.map +1 -0
  81. package/dist/core/HintRegistry.js +81 -0
  82. package/dist/core/HintRegistry.js.map +1 -0
  83. package/dist/core/LabelStore.d.ts +88 -0
  84. package/dist/core/LabelStore.d.ts.map +1 -0
  85. package/dist/core/LabelStore.js +520 -0
  86. package/dist/core/LabelStore.js.map +1 -0
  87. package/dist/core/LineRangeWriter.d.ts +63 -0
  88. package/dist/core/LineRangeWriter.d.ts.map +1 -0
  89. package/dist/core/LineRangeWriter.js +179 -0
  90. package/dist/core/LineRangeWriter.js.map +1 -0
  91. package/dist/core/ParserRegistry.d.ts +70 -0
  92. package/dist/core/ParserRegistry.d.ts.map +1 -0
  93. package/dist/core/ParserRegistry.js +109 -0
  94. package/dist/core/ParserRegistry.js.map +1 -0
  95. package/dist/core/PluginRegistry.d.ts +120 -0
  96. package/dist/core/PluginRegistry.d.ts.map +1 -0
  97. package/dist/core/PluginRegistry.js +230 -0
  98. package/dist/core/PluginRegistry.js.map +1 -0
  99. package/dist/core/QueryEngine.d.ts +134 -0
  100. package/dist/core/QueryEngine.d.ts.map +1 -0
  101. package/dist/core/QueryEngine.js +211 -0
  102. package/dist/core/QueryEngine.js.map +1 -0
  103. package/dist/core/Scanner.d.ts +84 -0
  104. package/dist/core/Scanner.d.ts.map +1 -0
  105. package/dist/core/Scanner.js +184 -0
  106. package/dist/core/Scanner.js.map +1 -0
  107. package/dist/core/SessionTransactionLog.d.ts +138 -0
  108. package/dist/core/SessionTransactionLog.d.ts.map +1 -0
  109. package/dist/core/SessionTransactionLog.js +397 -0
  110. package/dist/core/SessionTransactionLog.js.map +1 -0
  111. package/dist/core/TargetParser.d.ts +85 -0
  112. package/dist/core/TargetParser.d.ts.map +1 -0
  113. package/dist/core/TargetParser.js +167 -0
  114. package/dist/core/TargetParser.js.map +1 -0
  115. package/dist/core/TargetResolver.d.ts +115 -0
  116. package/dist/core/TargetResolver.d.ts.map +1 -0
  117. package/dist/core/TargetResolver.js +237 -0
  118. package/dist/core/TargetResolver.js.map +1 -0
  119. package/dist/core/WriteSafetyGuard.d.ts +101 -0
  120. package/dist/core/WriteSafetyGuard.d.ts.map +1 -0
  121. package/dist/core/WriteSafetyGuard.js +265 -0
  122. package/dist/core/WriteSafetyGuard.js.map +1 -0
  123. package/dist/core/index.d.ts +38 -0
  124. package/dist/core/index.d.ts.map +1 -0
  125. package/dist/core/index.js +51 -0
  126. package/dist/core/index.js.map +1 -0
  127. package/dist/core/query/DependencyTraversal.d.ts +23 -0
  128. package/dist/core/query/DependencyTraversal.d.ts.map +1 -0
  129. package/dist/core/query/DependencyTraversal.js +55 -0
  130. package/dist/core/query/DependencyTraversal.js.map +1 -0
  131. package/dist/core/query/ResultProcessor.d.ts +20 -0
  132. package/dist/core/query/ResultProcessor.d.ts.map +1 -0
  133. package/dist/core/query/ResultProcessor.js +99 -0
  134. package/dist/core/query/ResultProcessor.js.map +1 -0
  135. package/dist/core/query/SymbolSearchEngine.d.ts +20 -0
  136. package/dist/core/query/SymbolSearchEngine.d.ts.map +1 -0
  137. package/dist/core/query/SymbolSearchEngine.js +109 -0
  138. package/dist/core/query/SymbolSearchEngine.js.map +1 -0
  139. package/dist/core/query/TextSearchEngine.d.ts +23 -0
  140. package/dist/core/query/TextSearchEngine.d.ts.map +1 -0
  141. package/dist/core/query/TextSearchEngine.js +69 -0
  142. package/dist/core/query/TextSearchEngine.js.map +1 -0
  143. package/dist/core/query/index.d.ts +11 -0
  144. package/dist/core/query/index.d.ts.map +1 -0
  145. package/dist/core/query/index.js +18 -0
  146. package/dist/core/query/index.js.map +1 -0
  147. package/dist/core/scan/DependencyResolver.d.ts +26 -0
  148. package/dist/core/scan/DependencyResolver.d.ts.map +1 -0
  149. package/dist/core/scan/DependencyResolver.js +81 -0
  150. package/dist/core/scan/DependencyResolver.js.map +1 -0
  151. package/dist/core/scan/DirectoryWalker.d.ts +39 -0
  152. package/dist/core/scan/DirectoryWalker.d.ts.map +1 -0
  153. package/dist/core/scan/DirectoryWalker.js +136 -0
  154. package/dist/core/scan/DirectoryWalker.js.map +1 -0
  155. package/dist/core/scan/IgnorePatternMatcher.d.ts +32 -0
  156. package/dist/core/scan/IgnorePatternMatcher.d.ts.map +1 -0
  157. package/dist/core/scan/IgnorePatternMatcher.js +120 -0
  158. package/dist/core/scan/IgnorePatternMatcher.js.map +1 -0
  159. package/dist/core/scan/index.d.ts +10 -0
  160. package/dist/core/scan/index.d.ts.map +1 -0
  161. package/dist/core/scan/index.js +16 -0
  162. package/dist/core/scan/index.js.map +1 -0
  163. package/dist/core/utils/packageDiscovery.d.ts +24 -0
  164. package/dist/core/utils/packageDiscovery.d.ts.map +1 -0
  165. package/dist/core/utils/packageDiscovery.js +37 -0
  166. package/dist/core/utils/packageDiscovery.js.map +1 -0
  167. package/dist/index.d.ts +18 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +37 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/mcp/operations/annotations.d.ts +9 -0
  172. package/dist/mcp/operations/annotations.d.ts.map +1 -0
  173. package/dist/mcp/operations/annotations.js +66 -0
  174. package/dist/mcp/operations/annotations.js.map +1 -0
  175. package/dist/mcp/operations/files.d.ts +13 -0
  176. package/dist/mcp/operations/files.d.ts.map +1 -0
  177. package/dist/mcp/operations/files.js +173 -0
  178. package/dist/mcp/operations/files.js.map +1 -0
  179. package/dist/mcp/operations/graph.d.ts +10 -0
  180. package/dist/mcp/operations/graph.d.ts.map +1 -0
  181. package/dist/mcp/operations/graph.js +69 -0
  182. package/dist/mcp/operations/graph.js.map +1 -0
  183. package/dist/mcp/operations/groups.d.ts +55 -0
  184. package/dist/mcp/operations/groups.d.ts.map +1 -0
  185. package/dist/mcp/operations/groups.js +233 -0
  186. package/dist/mcp/operations/groups.js.map +1 -0
  187. package/dist/mcp/operations/help.d.ts +36 -0
  188. package/dist/mcp/operations/help.d.ts.map +1 -0
  189. package/dist/mcp/operations/help.js +322 -0
  190. package/dist/mcp/operations/help.js.map +1 -0
  191. package/dist/mcp/operations/session.d.ts +13 -0
  192. package/dist/mcp/operations/session.d.ts.map +1 -0
  193. package/dist/mcp/operations/session.js +169 -0
  194. package/dist/mcp/operations/session.js.map +1 -0
  195. package/dist/mcp/operations/writes.d.ts +14 -0
  196. package/dist/mcp/operations/writes.d.ts.map +1 -0
  197. package/dist/mcp/operations/writes.js +287 -0
  198. package/dist/mcp/operations/writes.js.map +1 -0
  199. package/dist/mcp/registry/ToolRegistry.d.ts +54 -0
  200. package/dist/mcp/registry/ToolRegistry.d.ts.map +1 -0
  201. package/dist/mcp/registry/ToolRegistry.js +219 -0
  202. package/dist/mcp/registry/ToolRegistry.js.map +1 -0
  203. package/dist/mcp/registry/context-guard.d.ts +13 -0
  204. package/dist/mcp/registry/context-guard.d.ts.map +1 -0
  205. package/dist/mcp/registry/context-guard.js +19 -0
  206. package/dist/mcp/registry/context-guard.js.map +1 -0
  207. package/dist/mcp/registry/schemas.d.ts +221 -0
  208. package/dist/mcp/registry/schemas.d.ts.map +1 -0
  209. package/dist/mcp/registry/schemas.js +217 -0
  210. package/dist/mcp/registry/schemas.js.map +1 -0
  211. package/dist/mcp/registry/types.d.ts +50 -0
  212. package/dist/mcp/registry/types.d.ts.map +1 -0
  213. package/dist/mcp/registry/types.js +5 -0
  214. package/dist/mcp/registry/types.js.map +1 -0
  215. package/dist/mcp/server.d.ts +35 -0
  216. package/dist/mcp/server.d.ts.map +1 -0
  217. package/dist/mcp/server.js +264 -0
  218. package/dist/mcp/server.js.map +1 -0
  219. package/dist/mcp/tools/annotations/add.tool.d.ts +10 -0
  220. package/dist/mcp/tools/annotations/add.tool.d.ts.map +1 -0
  221. package/dist/mcp/tools/annotations/add.tool.js +88 -0
  222. package/dist/mcp/tools/annotations/add.tool.js.map +1 -0
  223. package/dist/mcp/tools/annotations/edit.tool.d.ts +10 -0
  224. package/dist/mcp/tools/annotations/edit.tool.d.ts.map +1 -0
  225. package/dist/mcp/tools/annotations/edit.tool.js +92 -0
  226. package/dist/mcp/tools/annotations/edit.tool.js.map +1 -0
  227. package/dist/mcp/tools/annotations/remove.tool.d.ts +9 -0
  228. package/dist/mcp/tools/annotations/remove.tool.d.ts.map +1 -0
  229. package/dist/mcp/tools/annotations/remove.tool.js +87 -0
  230. package/dist/mcp/tools/annotations/remove.tool.js.map +1 -0
  231. package/dist/mcp/tools/annotations/search-annotations.tool.d.ts +11 -0
  232. package/dist/mcp/tools/annotations/search-annotations.tool.d.ts.map +1 -0
  233. package/dist/mcp/tools/annotations/search-annotations.tool.js +91 -0
  234. package/dist/mcp/tools/annotations/search-annotations.tool.js.map +1 -0
  235. package/dist/mcp/tools/backup/list.tool.d.ts +16 -0
  236. package/dist/mcp/tools/backup/list.tool.d.ts.map +1 -0
  237. package/dist/mcp/tools/backup/list.tool.js +48 -0
  238. package/dist/mcp/tools/backup/list.tool.js.map +1 -0
  239. package/dist/mcp/tools/backup/restore.tool.d.ts +15 -0
  240. package/dist/mcp/tools/backup/restore.tool.d.ts.map +1 -0
  241. package/dist/mcp/tools/backup/restore.tool.js +138 -0
  242. package/dist/mcp/tools/backup/restore.tool.js.map +1 -0
  243. package/dist/mcp/tools/checklist/add.tool.d.ts +17 -0
  244. package/dist/mcp/tools/checklist/add.tool.d.ts.map +1 -0
  245. package/dist/mcp/tools/checklist/add.tool.js +53 -0
  246. package/dist/mcp/tools/checklist/add.tool.js.map +1 -0
  247. package/dist/mcp/tools/checklist/list.tool.d.ts +11 -0
  248. package/dist/mcp/tools/checklist/list.tool.d.ts.map +1 -0
  249. package/dist/mcp/tools/checklist/list.tool.js +53 -0
  250. package/dist/mcp/tools/checklist/list.tool.js.map +1 -0
  251. package/dist/mcp/tools/checklist/remove.tool.d.ts +9 -0
  252. package/dist/mcp/tools/checklist/remove.tool.d.ts.map +1 -0
  253. package/dist/mcp/tools/checklist/remove.tool.js +63 -0
  254. package/dist/mcp/tools/checklist/remove.tool.js.map +1 -0
  255. package/dist/mcp/tools/graph/get-dependencies.tool.d.ts +8 -0
  256. package/dist/mcp/tools/graph/get-dependencies.tool.d.ts.map +1 -0
  257. package/dist/mcp/tools/graph/get-dependencies.tool.js +58 -0
  258. package/dist/mcp/tools/graph/get-dependencies.tool.js.map +1 -0
  259. package/dist/mcp/tools/graph/get-related.tool.d.ts +9 -0
  260. package/dist/mcp/tools/graph/get-related.tool.d.ts.map +1 -0
  261. package/dist/mcp/tools/graph/get-related.tool.js +63 -0
  262. package/dist/mcp/tools/graph/get-related.tool.js.map +1 -0
  263. package/dist/mcp/tools/graph/impact-analysis.tool.d.ts +9 -0
  264. package/dist/mcp/tools/graph/impact-analysis.tool.d.ts.map +1 -0
  265. package/dist/mcp/tools/graph/impact-analysis.tool.js +61 -0
  266. package/dist/mcp/tools/graph/impact-analysis.tool.js.map +1 -0
  267. package/dist/mcp/tools/graph/traverse.tool.d.ts +13 -0
  268. package/dist/mcp/tools/graph/traverse.tool.d.ts.map +1 -0
  269. package/dist/mcp/tools/graph/traverse.tool.js +59 -0
  270. package/dist/mcp/tools/graph/traverse.tool.js.map +1 -0
  271. package/dist/mcp/tools/groups/add.tool.d.ts +10 -0
  272. package/dist/mcp/tools/groups/add.tool.d.ts.map +1 -0
  273. package/dist/mcp/tools/groups/add.tool.js +85 -0
  274. package/dist/mcp/tools/groups/add.tool.js.map +1 -0
  275. package/dist/mcp/tools/groups/notate.tool.d.ts +11 -0
  276. package/dist/mcp/tools/groups/notate.tool.d.ts.map +1 -0
  277. package/dist/mcp/tools/groups/notate.tool.js +86 -0
  278. package/dist/mcp/tools/groups/notate.tool.js.map +1 -0
  279. package/dist/mcp/tools/groups/search.tool.d.ts +8 -0
  280. package/dist/mcp/tools/groups/search.tool.d.ts.map +1 -0
  281. package/dist/mcp/tools/groups/search.tool.js +81 -0
  282. package/dist/mcp/tools/groups/search.tool.js.map +1 -0
  283. package/dist/mcp/tools/io/append.tool.d.ts +10 -0
  284. package/dist/mcp/tools/io/append.tool.d.ts.map +1 -0
  285. package/dist/mcp/tools/io/append.tool.js +103 -0
  286. package/dist/mcp/tools/io/append.tool.js.map +1 -0
  287. package/dist/mcp/tools/io/create.tool.d.ts +11 -0
  288. package/dist/mcp/tools/io/create.tool.d.ts.map +1 -0
  289. package/dist/mcp/tools/io/create.tool.js +119 -0
  290. package/dist/mcp/tools/io/create.tool.js.map +1 -0
  291. package/dist/mcp/tools/io/delete.tool.d.ts +9 -0
  292. package/dist/mcp/tools/io/delete.tool.d.ts.map +1 -0
  293. package/dist/mcp/tools/io/delete.tool.js +129 -0
  294. package/dist/mcp/tools/io/delete.tool.js.map +1 -0
  295. package/dist/mcp/tools/io/get-annotations.tool.d.ts +10 -0
  296. package/dist/mcp/tools/io/get-annotations.tool.d.ts.map +1 -0
  297. package/dist/mcp/tools/io/get-annotations.tool.js +97 -0
  298. package/dist/mcp/tools/io/get-annotations.tool.js.map +1 -0
  299. package/dist/mcp/tools/io/get-symbols.tool.d.ts +9 -0
  300. package/dist/mcp/tools/io/get-symbols.tool.d.ts.map +1 -0
  301. package/dist/mcp/tools/io/get-symbols.tool.js +63 -0
  302. package/dist/mcp/tools/io/get-symbols.tool.js.map +1 -0
  303. package/dist/mcp/tools/io/list.tool.d.ts +8 -0
  304. package/dist/mcp/tools/io/list.tool.d.ts.map +1 -0
  305. package/dist/mcp/tools/io/list.tool.js +68 -0
  306. package/dist/mcp/tools/io/list.tool.js.map +1 -0
  307. package/dist/mcp/tools/io/peek.tool.d.ts +11 -0
  308. package/dist/mcp/tools/io/peek.tool.d.ts.map +1 -0
  309. package/dist/mcp/tools/io/peek.tool.js +74 -0
  310. package/dist/mcp/tools/io/peek.tool.js.map +1 -0
  311. package/dist/mcp/tools/io/read-multiple.tool.d.ts +9 -0
  312. package/dist/mcp/tools/io/read-multiple.tool.d.ts.map +1 -0
  313. package/dist/mcp/tools/io/read-multiple.tool.js +72 -0
  314. package/dist/mcp/tools/io/read-multiple.tool.js.map +1 -0
  315. package/dist/mcp/tools/io/read.tool.d.ts +13 -0
  316. package/dist/mcp/tools/io/read.tool.d.ts.map +1 -0
  317. package/dist/mcp/tools/io/read.tool.js +132 -0
  318. package/dist/mcp/tools/io/read.tool.js.map +1 -0
  319. package/dist/mcp/tools/io/rename.tool.d.ts +9 -0
  320. package/dist/mcp/tools/io/rename.tool.d.ts.map +1 -0
  321. package/dist/mcp/tools/io/rename.tool.js +101 -0
  322. package/dist/mcp/tools/io/rename.tool.js.map +1 -0
  323. package/dist/mcp/tools/io/replace-many.tool.d.ts +10 -0
  324. package/dist/mcp/tools/io/replace-many.tool.d.ts.map +1 -0
  325. package/dist/mcp/tools/io/replace-many.tool.js +114 -0
  326. package/dist/mcp/tools/io/replace-many.tool.js.map +1 -0
  327. package/dist/mcp/tools/io/replace-text.tool.d.ts +12 -0
  328. package/dist/mcp/tools/io/replace-text.tool.d.ts.map +1 -0
  329. package/dist/mcp/tools/io/replace-text.tool.js +213 -0
  330. package/dist/mcp/tools/io/replace-text.tool.js.map +1 -0
  331. package/dist/mcp/tools/io/write.tool.d.ts +10 -0
  332. package/dist/mcp/tools/io/write.tool.d.ts.map +1 -0
  333. package/dist/mcp/tools/io/write.tool.js +103 -0
  334. package/dist/mcp/tools/io/write.tool.js.map +1 -0
  335. package/dist/mcp/tools/labels/assign.tool.d.ts +16 -0
  336. package/dist/mcp/tools/labels/assign.tool.d.ts.map +1 -0
  337. package/dist/mcp/tools/labels/assign.tool.js +52 -0
  338. package/dist/mcp/tools/labels/assign.tool.js.map +1 -0
  339. package/dist/mcp/tools/labels/create.tool.d.ts +12 -0
  340. package/dist/mcp/tools/labels/create.tool.d.ts.map +1 -0
  341. package/dist/mcp/tools/labels/create.tool.js +51 -0
  342. package/dist/mcp/tools/labels/create.tool.js.map +1 -0
  343. package/dist/mcp/tools/labels/delete.tool.d.ts +9 -0
  344. package/dist/mcp/tools/labels/delete.tool.d.ts.map +1 -0
  345. package/dist/mcp/tools/labels/delete.tool.js +48 -0
  346. package/dist/mcp/tools/labels/delete.tool.js.map +1 -0
  347. package/dist/mcp/tools/labels/edit.tool.d.ts +13 -0
  348. package/dist/mcp/tools/labels/edit.tool.d.ts.map +1 -0
  349. package/dist/mcp/tools/labels/edit.tool.js +58 -0
  350. package/dist/mcp/tools/labels/edit.tool.js.map +1 -0
  351. package/dist/mcp/tools/labels/list.tool.d.ts +11 -0
  352. package/dist/mcp/tools/labels/list.tool.d.ts.map +1 -0
  353. package/dist/mcp/tools/labels/list.tool.js +47 -0
  354. package/dist/mcp/tools/labels/list.tool.js.map +1 -0
  355. package/dist/mcp/tools/labels/migrate.tool.d.ts +10 -0
  356. package/dist/mcp/tools/labels/migrate.tool.d.ts.map +1 -0
  357. package/dist/mcp/tools/labels/migrate.tool.js +50 -0
  358. package/dist/mcp/tools/labels/migrate.tool.js.map +1 -0
  359. package/dist/mcp/tools/labels/search.tool.d.ts +16 -0
  360. package/dist/mcp/tools/labels/search.tool.d.ts.map +1 -0
  361. package/dist/mcp/tools/labels/search.tool.js +55 -0
  362. package/dist/mcp/tools/labels/search.tool.js.map +1 -0
  363. package/dist/mcp/tools/labels/unassign.tool.d.ts +9 -0
  364. package/dist/mcp/tools/labels/unassign.tool.d.ts.map +1 -0
  365. package/dist/mcp/tools/labels/unassign.tool.js +49 -0
  366. package/dist/mcp/tools/labels/unassign.tool.js.map +1 -0
  367. package/dist/mcp/tools/search/find-by-name.tool.d.ts +8 -0
  368. package/dist/mcp/tools/search/find-by-name.tool.d.ts.map +1 -0
  369. package/dist/mcp/tools/search/find-by-name.tool.js +57 -0
  370. package/dist/mcp/tools/search/find-by-name.tool.js.map +1 -0
  371. package/dist/mcp/tools/search/find-relevant.tool.d.ts +9 -0
  372. package/dist/mcp/tools/search/find-relevant.tool.d.ts.map +1 -0
  373. package/dist/mcp/tools/search/find-relevant.tool.js +71 -0
  374. package/dist/mcp/tools/search/find-relevant.tool.js.map +1 -0
  375. package/dist/mcp/tools/search/scan.tool.d.ts +8 -0
  376. package/dist/mcp/tools/search/scan.tool.d.ts.map +1 -0
  377. package/dist/mcp/tools/search/scan.tool.js +103 -0
  378. package/dist/mcp/tools/search/scan.tool.js.map +1 -0
  379. package/dist/mcp/tools/search/search-elements.tool.d.ts +11 -0
  380. package/dist/mcp/tools/search/search-elements.tool.d.ts.map +1 -0
  381. package/dist/mcp/tools/search/search-elements.tool.js +71 -0
  382. package/dist/mcp/tools/search/search-elements.tool.js.map +1 -0
  383. package/dist/mcp/tools/search/search-in-files.tool.d.ts +14 -0
  384. package/dist/mcp/tools/search/search-in-files.tool.d.ts.map +1 -0
  385. package/dist/mcp/tools/search/search-in-files.tool.js +204 -0
  386. package/dist/mcp/tools/search/search-in-files.tool.js.map +1 -0
  387. package/dist/mcp/tools/search/search.tool.d.ts +25 -0
  388. package/dist/mcp/tools/search/search.tool.d.ts.map +1 -0
  389. package/dist/mcp/tools/search/search.tool.js +109 -0
  390. package/dist/mcp/tools/search/search.tool.js.map +1 -0
  391. package/dist/mcp/tools/session/audit.tool.d.ts +6 -0
  392. package/dist/mcp/tools/session/audit.tool.d.ts.map +1 -0
  393. package/dist/mcp/tools/session/audit.tool.js +64 -0
  394. package/dist/mcp/tools/session/audit.tool.js.map +1 -0
  395. package/dist/mcp/tools/session/close.tool.d.ts +11 -0
  396. package/dist/mcp/tools/session/close.tool.d.ts.map +1 -0
  397. package/dist/mcp/tools/session/close.tool.js +79 -0
  398. package/dist/mcp/tools/session/close.tool.js.map +1 -0
  399. package/dist/mcp/tools/session/execute-shell.tool.d.ts +11 -0
  400. package/dist/mcp/tools/session/execute-shell.tool.d.ts.map +1 -0
  401. package/dist/mcp/tools/session/execute-shell.tool.js +87 -0
  402. package/dist/mcp/tools/session/execute-shell.tool.js.map +1 -0
  403. package/dist/mcp/tools/session/help.tool.d.ts +8 -0
  404. package/dist/mcp/tools/session/help.tool.d.ts.map +1 -0
  405. package/dist/mcp/tools/session/help.tool.js +84 -0
  406. package/dist/mcp/tools/session/help.tool.js.map +1 -0
  407. package/dist/mcp/tools/session/list.tool.d.ts +9 -0
  408. package/dist/mcp/tools/session/list.tool.d.ts.map +1 -0
  409. package/dist/mcp/tools/session/list.tool.js +49 -0
  410. package/dist/mcp/tools/session/list.tool.js.map +1 -0
  411. package/dist/mcp/tools/session/next-session.tool.d.ts +8 -0
  412. package/dist/mcp/tools/session/next-session.tool.d.ts.map +1 -0
  413. package/dist/mcp/tools/session/next-session.tool.js +87 -0
  414. package/dist/mcp/tools/session/next-session.tool.js.map +1 -0
  415. package/dist/mcp/tools/session/orient.tool.d.ts +11 -0
  416. package/dist/mcp/tools/session/orient.tool.d.ts.map +1 -0
  417. package/dist/mcp/tools/session/orient.tool.js +239 -0
  418. package/dist/mcp/tools/session/orient.tool.js.map +1 -0
  419. package/dist/mcp/tools/session/read.tool.d.ts +8 -0
  420. package/dist/mcp/tools/session/read.tool.d.ts.map +1 -0
  421. package/dist/mcp/tools/session/read.tool.js +63 -0
  422. package/dist/mcp/tools/session/read.tool.js.map +1 -0
  423. package/dist/mcp/tools/session/reindex.tool.d.ts +6 -0
  424. package/dist/mcp/tools/session/reindex.tool.d.ts.map +1 -0
  425. package/dist/mcp/tools/session/reindex.tool.js +59 -0
  426. package/dist/mcp/tools/session/reindex.tool.js.map +1 -0
  427. package/dist/mcp/tools/session/start.tool.d.ts +8 -0
  428. package/dist/mcp/tools/session/start.tool.d.ts.map +1 -0
  429. package/dist/mcp/tools/session/start.tool.js +170 -0
  430. package/dist/mcp/tools/session/start.tool.js.map +1 -0
  431. package/dist/mcp/tools/session/stats.tool.d.ts +6 -0
  432. package/dist/mcp/tools/session/stats.tool.d.ts.map +1 -0
  433. package/dist/mcp/tools/session/stats.tool.js +46 -0
  434. package/dist/mcp/tools/session/stats.tool.js.map +1 -0
  435. package/dist/plugins/parser-typescript/index.d.ts +80 -0
  436. package/dist/plugins/parser-typescript/index.d.ts.map +1 -0
  437. package/dist/plugins/parser-typescript/index.js +467 -0
  438. package/dist/plugins/parser-typescript/index.js.map +1 -0
  439. package/dist/plugins/parser-vue/index.d.ts +20 -0
  440. package/dist/plugins/parser-vue/index.d.ts.map +1 -0
  441. package/dist/plugins/parser-vue/index.js +88 -0
  442. package/dist/plugins/parser-vue/index.js.map +1 -0
  443. package/dist/plugins/parser-vue/script-parser.d.ts +18 -0
  444. package/dist/plugins/parser-vue/script-parser.d.ts.map +1 -0
  445. package/dist/plugins/parser-vue/script-parser.js +100 -0
  446. package/dist/plugins/parser-vue/script-parser.js.map +1 -0
  447. package/dist/plugins/parser-vue/template-parser.d.ts +14 -0
  448. package/dist/plugins/parser-vue/template-parser.d.ts.map +1 -0
  449. package/dist/plugins/parser-vue/template-parser.js +95 -0
  450. package/dist/plugins/parser-vue/template-parser.js.map +1 -0
  451. package/dist/query/SymbolSearch.d.ts +56 -0
  452. package/dist/query/SymbolSearch.d.ts.map +1 -0
  453. package/dist/query/SymbolSearch.js +132 -0
  454. package/dist/query/SymbolSearch.js.map +1 -0
  455. package/dist/query/TextSearch.d.ts +47 -0
  456. package/dist/query/TextSearch.d.ts.map +1 -0
  457. package/dist/query/TextSearch.js +110 -0
  458. package/dist/query/TextSearch.js.map +1 -0
  459. package/dist/storage/NodeFsProvider.d.ts +148 -0
  460. package/dist/storage/NodeFsProvider.d.ts.map +1 -0
  461. package/dist/storage/NodeFsProvider.js +264 -0
  462. package/dist/storage/NodeFsProvider.js.map +1 -0
  463. package/dist/types/annotation.d.ts +79 -0
  464. package/dist/types/annotation.d.ts.map +1 -0
  465. package/dist/types/annotation.js +10 -0
  466. package/dist/types/annotation.js.map +1 -0
  467. package/dist/types/assist.d.ts +147 -0
  468. package/dist/types/assist.d.ts.map +1 -0
  469. package/dist/types/assist.js +12 -0
  470. package/dist/types/assist.js.map +1 -0
  471. package/dist/types/contracts/FileSystemProvider.d.ts +24 -0
  472. package/dist/types/contracts/FileSystemProvider.d.ts.map +1 -0
  473. package/dist/types/contracts/FileSystemProvider.js +9 -0
  474. package/dist/types/contracts/FileSystemProvider.js.map +1 -0
  475. package/dist/types/contracts/LanguageParser.d.ts +146 -0
  476. package/dist/types/contracts/LanguageParser.d.ts.map +1 -0
  477. package/dist/types/contracts/LanguageParser.js +43 -0
  478. package/dist/types/contracts/LanguageParser.js.map +1 -0
  479. package/dist/types/contracts/Plugin.d.ts +226 -0
  480. package/dist/types/contracts/Plugin.d.ts.map +1 -0
  481. package/dist/types/contracts/Plugin.js +21 -0
  482. package/dist/types/contracts/Plugin.js.map +1 -0
  483. package/dist/types/contracts/index.d.ts +10 -0
  484. package/dist/types/contracts/index.d.ts.map +1 -0
  485. package/dist/types/contracts/index.js +26 -0
  486. package/dist/types/contracts/index.js.map +1 -0
  487. package/dist/types/core.d.ts +170 -0
  488. package/dist/types/core.d.ts.map +1 -0
  489. package/dist/types/core.js +10 -0
  490. package/dist/types/core.js.map +1 -0
  491. package/dist/types/events.d.ts +29 -0
  492. package/dist/types/events.d.ts.map +1 -0
  493. package/dist/types/events.js +18 -0
  494. package/dist/types/events.js.map +1 -0
  495. package/dist/types/experience.d.ts +153 -0
  496. package/dist/types/experience.d.ts.map +1 -0
  497. package/dist/types/experience.js +9 -0
  498. package/dist/types/experience.js.map +1 -0
  499. package/dist/types/graph.d.ts +35 -0
  500. package/dist/types/graph.d.ts.map +1 -0
  501. package/dist/types/graph.js +8 -0
  502. package/dist/types/graph.js.map +1 -0
  503. package/dist/types/index.d.ts +17 -0
  504. package/dist/types/index.d.ts.map +1 -0
  505. package/dist/types/index.js +33 -0
  506. package/dist/types/index.js.map +1 -0
  507. package/dist/types/label.d.ts +150 -0
  508. package/dist/types/label.d.ts.map +1 -0
  509. package/dist/types/label.js +9 -0
  510. package/dist/types/label.js.map +1 -0
  511. package/dist/types/query.d.ts +104 -0
  512. package/dist/types/query.d.ts.map +1 -0
  513. package/dist/types/query.js +11 -0
  514. package/dist/types/query.js.map +1 -0
  515. package/dist/types/response.d.ts +133 -0
  516. package/dist/types/response.d.ts.map +1 -0
  517. package/dist/types/response.js +60 -0
  518. package/dist/types/response.js.map +1 -0
  519. package/dist/types/target.d.ts +68 -0
  520. package/dist/types/target.d.ts.map +1 -0
  521. package/dist/types/target.js +11 -0
  522. package/dist/types/target.js.map +1 -0
  523. package/dist/utils/version.d.ts +9 -0
  524. package/dist/utils/version.d.ts.map +1 -0
  525. package/dist/utils/version.js +30 -0
  526. package/dist/utils/version.js.map +1 -0
  527. package/package.json +53 -0
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ /**
3
+ * PatternAggregator - Analyzes experience data to extract scoring patterns.
4
+ *
5
+ * Reads from ExperienceStore and provides:
6
+ * - Query pattern matching (which queries led to which files)
7
+ * - Usage metadata matching (curated usage phrases)
8
+ * - Anti-result penalties (learn from mistakes)
9
+ * - File experience metrics (success rate, recency, heat)
10
+ * - Symbol experience metrics (edit history, keywords)
11
+ *
12
+ * This is the intelligence layer that powers AssistMap's experience scoring.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const aggregator = new PatternAggregator(experienceStore);
17
+ *
18
+ * // Get query pattern matches
19
+ * const matches = await aggregator.getQueryPatternMatches('file.ts', 'make cards draggable');
20
+ * // → Returns matching queries + confidence score
21
+ *
22
+ * // Get usage metadata matches
23
+ * const usageMatches = await aggregator.getUsageMatches('make cards draggable');
24
+ * // → Returns files with matching usage phrases
25
+ *
26
+ * // Get anti-result penalty
27
+ * const penalty = await aggregator.getAntiResultPenalty('file.ts', 'drag drop');
28
+ * // → Returns negative score if this file was previously rejected
29
+ * ```
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.PatternAggregator = void 0;
33
+ class PatternAggregator {
34
+ store;
35
+ constructor(store) {
36
+ this.store = store;
37
+ }
38
+ // ── Query Pattern Matching ─────────────────────────────────────────────────
39
+ /**
40
+ * Get query pattern matches for a file.
41
+ *
42
+ * Finds successful queries from journey history that led to this file.
43
+ *
44
+ * @param filePath - Target file path
45
+ * @param currentQuery - Current query to compare against
46
+ * @returns Query pattern match result
47
+ */
48
+ async getQueryPatternMatches(filePath, currentQuery) {
49
+ // Get journeys that ended with this file
50
+ const journeys = await this.store.getJourneysForFile(filePath);
51
+ if (journeys.length === 0) {
52
+ return {
53
+ file: filePath,
54
+ matchingQueries: [],
55
+ score: 0
56
+ };
57
+ }
58
+ // Extract queries that led to this file
59
+ const matchingQueries = [];
60
+ const currentKeywords = this.extractKeywords(currentQuery);
61
+ for (const journey of journeys) {
62
+ for (const step of journey.searchPath) {
63
+ // Check if this step's query is similar to current query
64
+ const stepKeywords = this.extractKeywords(step.query);
65
+ const overlap = this.calculateKeywordOverlap(currentKeywords, stepKeywords);
66
+ if (overlap >= 0.5) { // 50% keyword overlap threshold
67
+ matchingQueries.push({
68
+ query: step.query,
69
+ timestamp: step.timestamp
70
+ });
71
+ }
72
+ }
73
+ }
74
+ // Calculate confidence score
75
+ const score = Math.min(matchingQueries.length / 5, 1.0); // Cap at 5 matches
76
+ return {
77
+ file: filePath,
78
+ matchingQueries,
79
+ score
80
+ };
81
+ }
82
+ // ── Usage Metadata Matching ────────────────────────────────────────────────
83
+ /**
84
+ * Get usage metadata matches for a query.
85
+ *
86
+ * Finds files with usage phrases matching the query.
87
+ *
88
+ * @param query - Search query
89
+ * @returns Array of usage matches
90
+ */
91
+ async getUsageMatches(query) {
92
+ const allMetadata = await this.store.getAllUsageMetadata();
93
+ const matches = [];
94
+ const queryKeywords = this.extractKeywords(query);
95
+ for (const metadata of allMetadata) {
96
+ const matchingUsages = [];
97
+ for (const usage of metadata.usages) {
98
+ const usageKeywords = this.extractKeywords(usage);
99
+ const overlap = this.calculateKeywordOverlap(queryKeywords, usageKeywords);
100
+ if (overlap >= 0.4) { // 40% threshold for usage matches
101
+ matchingUsages.push(usage);
102
+ }
103
+ }
104
+ if (matchingUsages.length > 0) {
105
+ matches.push({
106
+ file: metadata.target,
107
+ matchingUsages,
108
+ score: Math.min(matchingUsages.length / 3, 1.0) // Cap at 3 matches
109
+ });
110
+ }
111
+ }
112
+ return matches;
113
+ }
114
+ // ── Anti-Result Penalties ──────────────────────────────────────────────────
115
+ /**
116
+ * Get anti-result penalty for a file.
117
+ *
118
+ * Returns negative score if this file was previously shown but rejected
119
+ * or abandoned for similar queries.
120
+ *
121
+ * @param filePath - File path
122
+ * @param currentQuery - Current query
123
+ * @returns Anti-result penalty
124
+ */
125
+ async getAntiResultPenalty(filePath, currentQuery) {
126
+ const antiResults = await this.store.getAntiResults(filePath);
127
+ if (antiResults.length === 0) {
128
+ return {
129
+ file: filePath,
130
+ penalty: 0,
131
+ reason: 'no_anti_results'
132
+ };
133
+ }
134
+ let penalty = 0;
135
+ const queryKeywords = this.extractKeywords(currentQuery);
136
+ for (const anti of antiResults) {
137
+ const antiKeywords = this.extractKeywords(anti.query);
138
+ const overlap = this.calculateKeywordOverlap(queryKeywords, antiKeywords);
139
+ if (overlap >= 0.5) { // 50% overlap with failed query
140
+ const basePenalty = anti.reason === 'read_but_abandoned' ? -3 : -1;
141
+ penalty += basePenalty;
142
+ }
143
+ }
144
+ // Cap penalty at -10
145
+ penalty = Math.max(penalty, -10);
146
+ return {
147
+ file: filePath,
148
+ penalty,
149
+ reason: penalty < 0 ? 'similar_to_failed_queries' : 'no_relevant_anti_results'
150
+ };
151
+ }
152
+ // ── File Experience Metrics ────────────────────────────────────────────────
153
+ /**
154
+ * Get experience metrics for a file.
155
+ *
156
+ * @param filePath - File path
157
+ * @returns File experience metrics
158
+ */
159
+ async getFileMetrics(filePath) {
160
+ const events = await this.getEventsForFile(filePath);
161
+ if (events.length === 0) {
162
+ return {
163
+ successRate: 0,
164
+ totalOps: 0,
165
+ successfulOps: 0,
166
+ heatScore: 0
167
+ };
168
+ }
169
+ const successfulOps = events.filter(e => e.outcome === 'success').length;
170
+ const successRate = successfulOps / events.length;
171
+ // Find most recent event
172
+ const sortedEvents = events.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
173
+ const lastAccessed = sortedEvents[0]?.timestamp;
174
+ // Calculate days since last access
175
+ const daysSinceAccess = lastAccessed
176
+ ? (Date.now() - new Date(lastAccessed).getTime()) / (1000 * 60 * 60 * 24)
177
+ : undefined;
178
+ // Calculate heat score (decays over time)
179
+ const heatScore = this.calculateHeatScore(events);
180
+ return {
181
+ successRate,
182
+ totalOps: events.length,
183
+ successfulOps,
184
+ lastAccessed,
185
+ daysSinceAccess,
186
+ heatScore
187
+ };
188
+ }
189
+ // ── Symbol Experience Metrics ──────────────────────────────────────────────
190
+ /**
191
+ * Get symbol experience metrics for a file.
192
+ *
193
+ * @param filePath - File path
194
+ * @returns Array of symbol metrics
195
+ */
196
+ async getSymbolMetrics(filePath) {
197
+ const events = await this.getEventsForFile(filePath);
198
+ const symbolMap = new Map();
199
+ for (const event of events) {
200
+ if (event.symbolMetadata) {
201
+ const { symbolRef } = event.symbolMetadata;
202
+ const existing = symbolMap.get(symbolRef) || { editCount: 0, successes: 0 };
203
+ existing.editCount++;
204
+ if (event.outcome === 'success') {
205
+ existing.successes++;
206
+ }
207
+ symbolMap.set(symbolRef, existing);
208
+ }
209
+ }
210
+ const metrics = [];
211
+ for (const [symbolRef, stats] of symbolMap.entries()) {
212
+ // Extract domain keywords from symbolRef
213
+ // e.g., "src/renderer/components/TaskCard.vue$handleDragStart"
214
+ const domainKeywords = this.extractDomainKeywords(symbolRef);
215
+ metrics.push({
216
+ symbolRef,
217
+ editCount: stats.editCount,
218
+ successRate: stats.successes / stats.editCount,
219
+ domainKeywords
220
+ });
221
+ }
222
+ return metrics;
223
+ }
224
+ // ── Utilities ──────────────────────────────────────────────────────────────
225
+ /**
226
+ * Get all events for a specific file.
227
+ *
228
+ * @param filePath - File path
229
+ * @returns Array of events
230
+ */
231
+ async getEventsForFile(filePath) {
232
+ // Get current session events
233
+ const events = await this.store.getCurrentSessionEvents();
234
+ // Filter to this file
235
+ return events.filter(e => e.target === filePath);
236
+ }
237
+ /**
238
+ * Extract keywords from a query string.
239
+ *
240
+ * @param text - Query text
241
+ * @returns Array of keywords
242
+ */
243
+ extractKeywords(text) {
244
+ // Convert to lowercase, split on non-alphanumeric
245
+ const words = text.toLowerCase().split(/[^a-z0-9]+/);
246
+ // Filter out stop words and short words
247
+ const stopWords = new Set(['a', 'an', 'the', 'is', 'are', 'was', 'were', 'be', 'to', 'of', 'in', 'on', 'at']);
248
+ return words
249
+ .filter(w => w.length > 2 && !stopWords.has(w))
250
+ .filter((w, i, arr) => arr.indexOf(w) === i); // Deduplicate
251
+ }
252
+ /**
253
+ * Calculate keyword overlap between two keyword sets.
254
+ *
255
+ * @param keywords1 - First set
256
+ * @param keywords2 - Second set
257
+ * @returns Overlap ratio (0-1)
258
+ */
259
+ calculateKeywordOverlap(keywords1, keywords2) {
260
+ if (keywords1.length === 0 || keywords2.length === 0) {
261
+ return 0;
262
+ }
263
+ const set1 = new Set(keywords1);
264
+ const set2 = new Set(keywords2);
265
+ let overlap = 0;
266
+ for (const keyword of set1) {
267
+ if (set2.has(keyword)) {
268
+ overlap++;
269
+ }
270
+ }
271
+ return overlap / Math.max(keywords1.length, keywords2.length);
272
+ }
273
+ /**
274
+ * Calculate heat score based on recent activity.
275
+ *
276
+ * @param events - Events for a file
277
+ * @returns Heat score (0-1)
278
+ */
279
+ calculateHeatScore(events) {
280
+ if (events.length === 0)
281
+ return 0;
282
+ const now = Date.now();
283
+ const sevenDaysAgo = now - (7 * 24 * 60 * 60 * 1000);
284
+ // Count events in last 7 days
285
+ const recentEvents = events.filter((e) => new Date(e.timestamp).getTime() > sevenDaysAgo);
286
+ // Heat score: 0.1 per recent event, capped at 1.0
287
+ return Math.min(recentEvents.length * 0.1, 1.0);
288
+ }
289
+ /**
290
+ * Extract domain keywords from a symbol reference.
291
+ *
292
+ * @param symbolRef - Symbol reference (e.g., "src/renderer/components/TaskCard.vue$handleDragStart")
293
+ * @returns Array of domain keywords
294
+ */
295
+ extractDomainKeywords(symbolRef) {
296
+ // Split on $ to separate path from symbol name
297
+ const [path, symbolName] = symbolRef.split('$');
298
+ // Split path on slashes and dots to extract meaningful parts
299
+ const parts = [...path.split('/'), ...(symbolName ? [symbolName] : [])];
300
+ // Extract camelCase/PascalCase words
301
+ const keywords = [];
302
+ for (const part of parts) {
303
+ // Split camelCase: handleDragStart → [handle, drag, start]
304
+ const camelWords = part.replace(/([A-Z])/g, ' $1').trim().split(/\s+/);
305
+ keywords.push(...camelWords.map(w => w.toLowerCase()));
306
+ }
307
+ return keywords.filter(k => k.length > 2);
308
+ }
309
+ }
310
+ exports.PatternAggregator = PatternAggregator;
311
+ //# sourceMappingURL=PatternAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternAggregator.js","sourceRoot":"","sources":["../../src/assist/PatternAggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * RelevanceScorer — Search-engine-quality file ranking.
3
+ *
4
+ * Deep-dives every file to score relevance based on multiple factors:
5
+ * - Domain annotations (@codemap.domain.*)
6
+ * - Usage metadata (@codemap.meta.usage, keywords)
7
+ * - Core annotations (policy, systempolicy, note, warning)
8
+ * - Symbol names (functions, classes, exports)
9
+ * - File path keywords
10
+ * - Word matching with frequency weighting
11
+ *
12
+ * Best-ranked files bubble to the top like a real search engine.
13
+ */
14
+ import type { FileEntry } from '../types';
15
+ /**
16
+ * Scored file result.
17
+ */
18
+ export interface ScoredFile {
19
+ file: FileEntry;
20
+ score: number;
21
+ breakdown: ScoreBreakdown;
22
+ }
23
+ /**
24
+ * Score breakdown for debugging.
25
+ */
26
+ export interface ScoreBreakdown {
27
+ domainScore: number;
28
+ usageScore: number;
29
+ policyScore: number;
30
+ symbolScore: number;
31
+ pathScore: number;
32
+ wordMatchScore: number;
33
+ totalMatches: number;
34
+ }
35
+ /**
36
+ * Scoring weights (tunable).
37
+ */
38
+ export interface ScoringWeights {
39
+ domain: number;
40
+ usage: number;
41
+ policy: number;
42
+ symbol: number;
43
+ path: number;
44
+ wordMatch: number;
45
+ }
46
+ export declare class RelevanceScorer {
47
+ private weights;
48
+ private queryTokens;
49
+ constructor(weights?: ScoringWeights);
50
+ /**
51
+ * Score all files for a given goal/query.
52
+ *
53
+ * @param files - All files to score
54
+ * @param goal - User's goal/query
55
+ * @param topN - Number of top results to return
56
+ * @returns Top N scored files
57
+ */
58
+ scoreFiles(files: FileEntry[], goal: string, topN?: number): ScoredFile[];
59
+ /**
60
+ * Score a single file.
61
+ */
62
+ private scoreFile;
63
+ /**
64
+ * Score domain annotations.
65
+ * Domain is the STRONGEST signal — explicit project vocabulary.
66
+ */
67
+ private scoreDomains;
68
+ /**
69
+ * Score usage metadata.
70
+ * Usage is explicit — tells us WHEN to use this file.
71
+ */
72
+ private scoreUsage;
73
+ /**
74
+ * Score policy annotations.
75
+ * Policies contain architectural keywords and constraints.
76
+ */
77
+ private scorePolicies;
78
+ /**
79
+ * Score symbol names.
80
+ * Function/class names are strong intent signals.
81
+ */
82
+ private scoreSymbols;
83
+ /**
84
+ * Score file path keywords.
85
+ * Path structure reveals intent (e.g., src/auth/login.ts).
86
+ */
87
+ private scorePath;
88
+ /**
89
+ * Generic word matching across all text.
90
+ * Weakest signal but catches everything else.
91
+ */
92
+ private scoreWordMatch;
93
+ /**
94
+ * Count how many query tokens appear in target tokens.
95
+ * Uses TF-like weighting — more occurrences = higher score.
96
+ */
97
+ private countMatches;
98
+ /**
99
+ * Tokenize text into words.
100
+ * Handles camelCase, PascalCase, snake_case, kebab-case.
101
+ */
102
+ private tokenize;
103
+ }
104
+ //# sourceMappingURL=RelevanceScorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelevanceScorer.d.ts","sourceRoot":"","sources":["../../src/assist/RelevanceScorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,qBAAa,eAAe;IAE1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAW;gBAElB,OAAO,GAAE,cAAgC;IAKrD;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,UAAU,EAAE;IAc7E;;OAEG;IACH,OAAO,CAAC,SAAS;IAyCjB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAyBpB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAuBlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAyBpB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA0BtB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwBpB;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAQjB"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ /**
3
+ * RelevanceScorer — Search-engine-quality file ranking.
4
+ *
5
+ * Deep-dives every file to score relevance based on multiple factors:
6
+ * - Domain annotations (@codemap.domain.*)
7
+ * - Usage metadata (@codemap.meta.usage, keywords)
8
+ * - Core annotations (policy, systempolicy, note, warning)
9
+ * - Symbol names (functions, classes, exports)
10
+ * - File path keywords
11
+ * - Word matching with frequency weighting
12
+ *
13
+ * Best-ranked files bubble to the top like a real search engine.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RelevanceScorer = void 0;
17
+ const DEFAULT_WEIGHTS = {
18
+ domain: 10.0, // Highest weight — domain is THE relevance signal
19
+ usage: 8.0, // Usage metadata is explicit intent
20
+ policy: 5.0, // Policies contain architectural keywords
21
+ symbol: 4.0, // Symbol names are strong signals
22
+ path: 3.0, // Path keywords are moderate signals
23
+ wordMatch: 1.0, // Base word matching
24
+ };
25
+ class RelevanceScorer {
26
+ weights;
27
+ queryTokens;
28
+ constructor(weights = DEFAULT_WEIGHTS) {
29
+ this.weights = weights;
30
+ this.queryTokens = [];
31
+ }
32
+ /**
33
+ * Score all files for a given goal/query.
34
+ *
35
+ * @param files - All files to score
36
+ * @param goal - User's goal/query
37
+ * @param topN - Number of top results to return
38
+ * @returns Top N scored files
39
+ */
40
+ scoreFiles(files, goal, topN = 10) {
41
+ // Tokenize query
42
+ this.queryTokens = this.tokenize(goal);
43
+ // Score all files
44
+ const scored = files.map(file => this.scoreFile(file));
45
+ // Sort by score descending
46
+ scored.sort((a, b) => b.score - a.score);
47
+ // Return top N
48
+ return scored.slice(0, topN);
49
+ }
50
+ /**
51
+ * Score a single file.
52
+ */
53
+ scoreFile(file) {
54
+ const breakdown = {
55
+ domainScore: 0,
56
+ usageScore: 0,
57
+ policyScore: 0,
58
+ symbolScore: 0,
59
+ pathScore: 0,
60
+ wordMatchScore: 0,
61
+ totalMatches: 0,
62
+ };
63
+ // 1. Domain annotations (@codemap.domain.*)
64
+ breakdown.domainScore = this.scoreDomains(file);
65
+ // 2. Usage metadata (@codemap.meta.usage, keywords)
66
+ breakdown.usageScore = this.scoreUsage(file);
67
+ // 3. Policy annotations
68
+ breakdown.policyScore = this.scorePolicies(file);
69
+ // 4. Symbol names
70
+ breakdown.symbolScore = this.scoreSymbols(file);
71
+ // 5. File path keywords
72
+ breakdown.pathScore = this.scorePath(file);
73
+ // 6. Generic word matching
74
+ breakdown.wordMatchScore = this.scoreWordMatch(file);
75
+ // Calculate total score
76
+ const score = breakdown.domainScore * this.weights.domain +
77
+ breakdown.usageScore * this.weights.usage +
78
+ breakdown.policyScore * this.weights.policy +
79
+ breakdown.symbolScore * this.weights.symbol +
80
+ breakdown.pathScore * this.weights.path +
81
+ breakdown.wordMatchScore * this.weights.wordMatch;
82
+ return { file, score, breakdown };
83
+ }
84
+ /**
85
+ * Score domain annotations.
86
+ * Domain is the STRONGEST signal — explicit project vocabulary.
87
+ */
88
+ scoreDomains(file) {
89
+ if (!file.categorizedAnnotations)
90
+ return 0;
91
+ const domainAnnotations = file.categorizedAnnotations.filter(ann => ann.category === 'domain');
92
+ if (domainAnnotations.length === 0)
93
+ return 0;
94
+ let score = 0;
95
+ for (const ann of domainAnnotations) {
96
+ // Check if annotation value matches query tokens
97
+ const annTokens = this.tokenize(ann.value);
98
+ const matches = this.countMatches(this.queryTokens, annTokens);
99
+ score += matches;
100
+ // Bonus for path matches (e.g., domain.medical.diagnosis)
101
+ const pathTokens = this.tokenize(ann.path);
102
+ const pathMatches = this.countMatches(this.queryTokens, pathTokens);
103
+ score += pathMatches * 0.5;
104
+ }
105
+ return score;
106
+ }
107
+ /**
108
+ * Score usage metadata.
109
+ * Usage is explicit — tells us WHEN to use this file.
110
+ */
111
+ scoreUsage(file) {
112
+ if (!file.categorizedAnnotations)
113
+ return 0;
114
+ const usageAnnotations = file.categorizedAnnotations.filter(ann => ann.category === 'meta' && (ann.path.includes('usage') ||
115
+ ann.path.includes('keyword') ||
116
+ ann.path.includes('tag')));
117
+ if (usageAnnotations.length === 0)
118
+ return 0;
119
+ let score = 0;
120
+ for (const ann of usageAnnotations) {
121
+ const annTokens = this.tokenize(ann.value);
122
+ const matches = this.countMatches(this.queryTokens, annTokens);
123
+ score += matches * 1.5; // Boost usage matches
124
+ }
125
+ return score;
126
+ }
127
+ /**
128
+ * Score policy annotations.
129
+ * Policies contain architectural keywords and constraints.
130
+ */
131
+ scorePolicies(file) {
132
+ if (!file.annotations)
133
+ return 0;
134
+ const policyAnnotations = file.annotations.filter(ann => ann.type === 'policy' || ann.type === 'systempolicy');
135
+ if (policyAnnotations.length === 0)
136
+ return 0;
137
+ let score = 0;
138
+ for (const ann of policyAnnotations) {
139
+ const annTokens = this.tokenize(ann.message);
140
+ const matches = this.countMatches(this.queryTokens, annTokens);
141
+ score += matches * 0.8; // Policy matches are good but not strongest
142
+ }
143
+ return score;
144
+ }
145
+ /**
146
+ * Score symbol names.
147
+ * Function/class names are strong intent signals.
148
+ */
149
+ scoreSymbols(file) {
150
+ if (!file.symbols || file.symbols.length === 0)
151
+ return 0;
152
+ let score = 0;
153
+ for (const symbol of file.symbols) {
154
+ // Check symbol name
155
+ const nameTokens = this.tokenize(symbol.name);
156
+ const nameMatches = this.countMatches(this.queryTokens, nameTokens);
157
+ score += nameMatches;
158
+ // Bonus for exported symbols (public API)
159
+ if (symbol.exported) {
160
+ score += nameMatches * 0.3;
161
+ }
162
+ // Check symbol kind matches
163
+ const kindMatch = this.queryTokens.some(t => symbol.kind.toLowerCase().includes(t.toLowerCase()));
164
+ if (kindMatch)
165
+ score += 0.5;
166
+ }
167
+ return score;
168
+ }
169
+ /**
170
+ * Score file path keywords.
171
+ * Path structure reveals intent (e.g., src/auth/login.ts).
172
+ */
173
+ scorePath(file) {
174
+ const pathParts = file.relativePath.split(/[\/\\]/);
175
+ const pathTokens = pathParts.flatMap(part => this.tokenize(part));
176
+ const matches = this.countMatches(this.queryTokens, pathTokens);
177
+ return matches;
178
+ }
179
+ /**
180
+ * Generic word matching across all text.
181
+ * Weakest signal but catches everything else.
182
+ */
183
+ scoreWordMatch(file) {
184
+ // Collect all text from file
185
+ const allText = [];
186
+ // Add relative path
187
+ allText.push(file.relativePath);
188
+ // Add all annotation text
189
+ if (file.annotations) {
190
+ allText.push(...file.annotations.map(a => a.message));
191
+ }
192
+ if (file.categorizedAnnotations) {
193
+ allText.push(...file.categorizedAnnotations.map(a => `${a.path} ${a.value}`));
194
+ }
195
+ // Add all symbol names
196
+ if (file.symbols) {
197
+ allText.push(...file.symbols.map(s => s.name));
198
+ }
199
+ // Tokenize and count matches
200
+ const allTokens = allText.flatMap(text => this.tokenize(text));
201
+ return this.countMatches(this.queryTokens, allTokens);
202
+ }
203
+ /**
204
+ * Count how many query tokens appear in target tokens.
205
+ * Uses TF-like weighting — more occurrences = higher score.
206
+ */
207
+ countMatches(queryTokens, targetTokens) {
208
+ const targetSet = new Map();
209
+ // Count frequency of each token in target
210
+ for (const token of targetTokens) {
211
+ const lower = token.toLowerCase();
212
+ targetSet.set(lower, (targetSet.get(lower) || 0) + 1);
213
+ }
214
+ // Sum matches with frequency weighting
215
+ let score = 0;
216
+ for (const queryToken of queryTokens) {
217
+ const lower = queryToken.toLowerCase();
218
+ const freq = targetSet.get(lower) || 0;
219
+ // Score: 1 for first occurrence, +0.2 for each additional
220
+ if (freq > 0) {
221
+ score += 1 + (freq - 1) * 0.2;
222
+ }
223
+ }
224
+ return score;
225
+ }
226
+ /**
227
+ * Tokenize text into words.
228
+ * Handles camelCase, PascalCase, snake_case, kebab-case.
229
+ */
230
+ tokenize(text) {
231
+ return text
232
+ .replace(/([a-z])([A-Z])/g, '$1 $2') // camelCase → camel Case
233
+ .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2') // XMLParser → XML Parser
234
+ .split(/[\s_\-\.\/\\]+/) // Split on whitespace, _, -, ., /, \
235
+ .filter(t => t.length > 2) // Filter out short tokens
236
+ .map(t => t.toLowerCase());
237
+ }
238
+ }
239
+ exports.RelevanceScorer = RelevanceScorer;
240
+ //# sourceMappingURL=RelevanceScorer.js.map