mistagent 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 (353) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +14 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/api/auth.d.ts +7 -0
  6. package/dist/src/api/auth.d.ts.map +1 -0
  7. package/dist/src/api/auth.js +16 -0
  8. package/dist/src/api/auth.js.map +1 -0
  9. package/dist/src/api/chat.d.ts +8 -0
  10. package/dist/src/api/chat.d.ts.map +1 -0
  11. package/dist/src/api/chat.js +14 -0
  12. package/dist/src/api/chat.js.map +1 -0
  13. package/dist/src/api/client.d.ts +22 -0
  14. package/dist/src/api/client.d.ts.map +1 -0
  15. package/dist/src/api/client.js +140 -0
  16. package/dist/src/api/client.js.map +1 -0
  17. package/dist/src/api/commands.d.ts +8 -0
  18. package/dist/src/api/commands.d.ts.map +1 -0
  19. package/dist/src/api/commands.js +13 -0
  20. package/dist/src/api/commands.js.map +1 -0
  21. package/dist/src/api/models.d.ts +9 -0
  22. package/dist/src/api/models.d.ts.map +1 -0
  23. package/dist/src/api/models.js +13 -0
  24. package/dist/src/api/models.js.map +1 -0
  25. package/dist/src/api/sessions.d.ts +25 -0
  26. package/dist/src/api/sessions.d.ts.map +1 -0
  27. package/dist/src/api/sessions.js +26 -0
  28. package/dist/src/api/sessions.js.map +1 -0
  29. package/dist/src/api/tools.d.ts +7 -0
  30. package/dist/src/api/tools.d.ts.map +1 -0
  31. package/dist/src/api/tools.js +8 -0
  32. package/dist/src/api/tools.js.map +1 -0
  33. package/dist/src/components/App.d.ts +22 -0
  34. package/dist/src/components/App.d.ts.map +1 -0
  35. package/dist/src/components/App.js +61 -0
  36. package/dist/src/components/App.js.map +1 -0
  37. package/dist/src/components/AppLayout.d.ts +8 -0
  38. package/dist/src/components/AppLayout.d.ts.map +1 -0
  39. package/dist/src/components/AppLayout.js +18 -0
  40. package/dist/src/components/AppLayout.js.map +1 -0
  41. package/dist/src/components/Composer.d.ts +8 -0
  42. package/dist/src/components/Composer.d.ts.map +1 -0
  43. package/dist/src/components/Composer.js +294 -0
  44. package/dist/src/components/Composer.js.map +1 -0
  45. package/dist/src/components/Footer.d.ts +10 -0
  46. package/dist/src/components/Footer.d.ts.map +1 -0
  47. package/dist/src/components/Footer.js +34 -0
  48. package/dist/src/components/Footer.js.map +1 -0
  49. package/dist/src/components/Header.d.ts +3 -0
  50. package/dist/src/components/Header.d.ts.map +1 -0
  51. package/dist/src/components/Header.js +99 -0
  52. package/dist/src/components/Header.js.map +1 -0
  53. package/dist/src/components/HistoryItemDisplay.d.ts +8 -0
  54. package/dist/src/components/HistoryItemDisplay.d.ts.map +1 -0
  55. package/dist/src/components/HistoryItemDisplay.js +32 -0
  56. package/dist/src/components/HistoryItemDisplay.js.map +1 -0
  57. package/dist/src/components/InputPrompt.d.ts +11 -0
  58. package/dist/src/components/InputPrompt.d.ts.map +1 -0
  59. package/dist/src/components/InputPrompt.js +12 -0
  60. package/dist/src/components/InputPrompt.js.map +1 -0
  61. package/dist/src/components/LoadingIndicator.d.ts +8 -0
  62. package/dist/src/components/LoadingIndicator.d.ts.map +1 -0
  63. package/dist/src/components/LoadingIndicator.js +17 -0
  64. package/dist/src/components/LoadingIndicator.js.map +1 -0
  65. package/dist/src/components/LoginPrompt.d.ts +8 -0
  66. package/dist/src/components/LoginPrompt.d.ts.map +1 -0
  67. package/dist/src/components/LoginPrompt.js +76 -0
  68. package/dist/src/components/LoginPrompt.js.map +1 -0
  69. package/dist/src/components/MainContent.d.ts +3 -0
  70. package/dist/src/components/MainContent.d.ts.map +1 -0
  71. package/dist/src/components/MainContent.js +22 -0
  72. package/dist/src/components/MainContent.js.map +1 -0
  73. package/dist/src/components/ModelPicker.d.ts +3 -0
  74. package/dist/src/components/ModelPicker.d.ts.map +1 -0
  75. package/dist/src/components/ModelPicker.js +119 -0
  76. package/dist/src/components/ModelPicker.js.map +1 -0
  77. package/dist/src/components/MultiLineInput.d.ts +19 -0
  78. package/dist/src/components/MultiLineInput.d.ts.map +1 -0
  79. package/dist/src/components/MultiLineInput.js +108 -0
  80. package/dist/src/components/MultiLineInput.js.map +1 -0
  81. package/dist/src/components/SessionPicker.d.ts +3 -0
  82. package/dist/src/components/SessionPicker.d.ts.map +1 -0
  83. package/dist/src/components/SessionPicker.js +131 -0
  84. package/dist/src/components/SessionPicker.js.map +1 -0
  85. package/dist/src/components/SuggestionsDisplay.d.ts +16 -0
  86. package/dist/src/components/SuggestionsDisplay.d.ts.map +1 -0
  87. package/dist/src/components/SuggestionsDisplay.js +34 -0
  88. package/dist/src/components/SuggestionsDisplay.js.map +1 -0
  89. package/dist/src/components/messages/AssistantMessage.d.ts +8 -0
  90. package/dist/src/components/messages/AssistantMessage.d.ts.map +1 -0
  91. package/dist/src/components/messages/AssistantMessage.js +9 -0
  92. package/dist/src/components/messages/AssistantMessage.js.map +1 -0
  93. package/dist/src/components/messages/CommandResult.d.ts +8 -0
  94. package/dist/src/components/messages/CommandResult.d.ts.map +1 -0
  95. package/dist/src/components/messages/CommandResult.js +7 -0
  96. package/dist/src/components/messages/CommandResult.js.map +1 -0
  97. package/dist/src/components/messages/ErrorMessage.d.ts +7 -0
  98. package/dist/src/components/messages/ErrorMessage.d.ts.map +1 -0
  99. package/dist/src/components/messages/ErrorMessage.js +7 -0
  100. package/dist/src/components/messages/ErrorMessage.js.map +1 -0
  101. package/dist/src/components/messages/InfoMessage.d.ts +9 -0
  102. package/dist/src/components/messages/InfoMessage.d.ts.map +1 -0
  103. package/dist/src/components/messages/InfoMessage.js +8 -0
  104. package/dist/src/components/messages/InfoMessage.js.map +1 -0
  105. package/dist/src/components/messages/ModelMessage.d.ts +8 -0
  106. package/dist/src/components/messages/ModelMessage.d.ts.map +1 -0
  107. package/dist/src/components/messages/ModelMessage.js +7 -0
  108. package/dist/src/components/messages/ModelMessage.js.map +1 -0
  109. package/dist/src/components/messages/SessionMessage.d.ts +8 -0
  110. package/dist/src/components/messages/SessionMessage.d.ts.map +1 -0
  111. package/dist/src/components/messages/SessionMessage.js +12 -0
  112. package/dist/src/components/messages/SessionMessage.js.map +1 -0
  113. package/dist/src/components/messages/ToolCallMessage.d.ts +9 -0
  114. package/dist/src/components/messages/ToolCallMessage.d.ts.map +1 -0
  115. package/dist/src/components/messages/ToolCallMessage.js +14 -0
  116. package/dist/src/components/messages/ToolCallMessage.js.map +1 -0
  117. package/dist/src/components/messages/UserMessage.d.ts +7 -0
  118. package/dist/src/components/messages/UserMessage.d.ts.map +1 -0
  119. package/dist/src/components/messages/UserMessage.js +9 -0
  120. package/dist/src/components/messages/UserMessage.js.map +1 -0
  121. package/dist/src/components/shared/HorizontalLine.d.ts +11 -0
  122. package/dist/src/components/shared/HorizontalLine.d.ts.map +1 -0
  123. package/dist/src/components/shared/HorizontalLine.js +10 -0
  124. package/dist/src/components/shared/HorizontalLine.js.map +1 -0
  125. package/dist/src/components/shared/MarkdownRenderer.d.ts +7 -0
  126. package/dist/src/components/shared/MarkdownRenderer.d.ts.map +1 -0
  127. package/dist/src/components/shared/MarkdownRenderer.js +33 -0
  128. package/dist/src/components/shared/MarkdownRenderer.js.map +1 -0
  129. package/dist/src/components/shared/Spinner.d.ts +8 -0
  130. package/dist/src/components/shared/Spinner.d.ts.map +1 -0
  131. package/dist/src/components/shared/Spinner.js +7 -0
  132. package/dist/src/components/shared/Spinner.js.map +1 -0
  133. package/dist/src/components/shared/TextInput.d.ts +10 -0
  134. package/dist/src/components/shared/TextInput.d.ts.map +1 -0
  135. package/dist/src/components/shared/TextInput.js +110 -0
  136. package/dist/src/components/shared/TextInput.js.map +1 -0
  137. package/dist/src/contexts/AppContext.d.ts +21 -0
  138. package/dist/src/contexts/AppContext.d.ts.map +1 -0
  139. package/dist/src/contexts/AppContext.js +16 -0
  140. package/dist/src/contexts/AppContext.js.map +1 -0
  141. package/dist/src/contexts/ChatContext.d.ts +68 -0
  142. package/dist/src/contexts/ChatContext.d.ts.map +1 -0
  143. package/dist/src/contexts/ChatContext.js +158 -0
  144. package/dist/src/contexts/ChatContext.js.map +1 -0
  145. package/dist/src/contexts/KeypressContext.d.ts +47 -0
  146. package/dist/src/contexts/KeypressContext.d.ts.map +1 -0
  147. package/dist/src/contexts/KeypressContext.js +792 -0
  148. package/dist/src/contexts/KeypressContext.js.map +1 -0
  149. package/dist/src/contexts/ModelContext.d.ts +20 -0
  150. package/dist/src/contexts/ModelContext.d.ts.map +1 -0
  151. package/dist/src/contexts/ModelContext.js +42 -0
  152. package/dist/src/contexts/ModelContext.js.map +1 -0
  153. package/dist/src/contexts/PasteContext.d.ts +8 -0
  154. package/dist/src/contexts/PasteContext.d.ts.map +1 -0
  155. package/dist/src/contexts/PasteContext.js +12 -0
  156. package/dist/src/contexts/PasteContext.js.map +1 -0
  157. package/dist/src/contexts/SessionContext.d.ts +19 -0
  158. package/dist/src/contexts/SessionContext.d.ts.map +1 -0
  159. package/dist/src/contexts/SessionContext.js +56 -0
  160. package/dist/src/contexts/SessionContext.js.map +1 -0
  161. package/dist/src/contexts/UIContext.d.ts +15 -0
  162. package/dist/src/contexts/UIContext.d.ts.map +1 -0
  163. package/dist/src/contexts/UIContext.js +16 -0
  164. package/dist/src/contexts/UIContext.js.map +1 -0
  165. package/dist/src/hooks/useChat.d.ts +11 -0
  166. package/dist/src/hooks/useChat.d.ts.map +1 -0
  167. package/dist/src/hooks/useChat.js +146 -0
  168. package/dist/src/hooks/useChat.js.map +1 -0
  169. package/dist/src/hooks/useFileCompletion.d.ts +8 -0
  170. package/dist/src/hooks/useFileCompletion.d.ts.map +1 -0
  171. package/dist/src/hooks/useFileCompletion.js +75 -0
  172. package/dist/src/hooks/useFileCompletion.js.map +1 -0
  173. package/dist/src/hooks/useInputHistory.d.ts +6 -0
  174. package/dist/src/hooks/useInputHistory.d.ts.map +1 -0
  175. package/dist/src/hooks/useInputHistory.js +46 -0
  176. package/dist/src/hooks/useInputHistory.js.map +1 -0
  177. package/dist/src/hooks/useKeypress.d.ts +16 -0
  178. package/dist/src/hooks/useKeypress.d.ts.map +1 -0
  179. package/dist/src/hooks/useKeypress.js +23 -0
  180. package/dist/src/hooks/useKeypress.js.map +1 -0
  181. package/dist/src/hooks/useLoadingIndicator.d.ts +5 -0
  182. package/dist/src/hooks/useLoadingIndicator.d.ts.map +1 -0
  183. package/dist/src/hooks/useLoadingIndicator.js +31 -0
  184. package/dist/src/hooks/useLoadingIndicator.js.map +1 -0
  185. package/dist/src/hooks/useMultiLineInput.d.ts +37 -0
  186. package/dist/src/hooks/useMultiLineInput.d.ts.map +1 -0
  187. package/dist/src/hooks/useMultiLineInput.js +202 -0
  188. package/dist/src/hooks/useMultiLineInput.js.map +1 -0
  189. package/dist/src/hooks/usePasteBuffer.d.ts +10 -0
  190. package/dist/src/hooks/usePasteBuffer.d.ts.map +1 -0
  191. package/dist/src/hooks/usePasteBuffer.js +90 -0
  192. package/dist/src/hooks/usePasteBuffer.js.map +1 -0
  193. package/dist/src/hooks/useSlashCommand.d.ts +6 -0
  194. package/dist/src/hooks/useSlashCommand.d.ts.map +1 -0
  195. package/dist/src/hooks/useSlashCommand.js +198 -0
  196. package/dist/src/hooks/useSlashCommand.js.map +1 -0
  197. package/dist/src/hooks/useStdinInterceptor.d.ts +2 -0
  198. package/dist/src/hooks/useStdinInterceptor.d.ts.map +1 -0
  199. package/dist/src/hooks/useStdinInterceptor.js +85 -0
  200. package/dist/src/hooks/useStdinInterceptor.js.map +1 -0
  201. package/dist/src/hooks/useSymbolCompletion.d.ts +10 -0
  202. package/dist/src/hooks/useSymbolCompletion.d.ts.map +1 -0
  203. package/dist/src/hooks/useSymbolCompletion.js +65 -0
  204. package/dist/src/hooks/useSymbolCompletion.js.map +1 -0
  205. package/dist/src/hooks/useTextBuffer.d.ts +37 -0
  206. package/dist/src/hooks/useTextBuffer.d.ts.map +1 -0
  207. package/dist/src/hooks/useTextBuffer.js +627 -0
  208. package/dist/src/hooks/useTextBuffer.js.map +1 -0
  209. package/dist/src/main.d.ts +2 -0
  210. package/dist/src/main.d.ts.map +1 -0
  211. package/dist/src/main.js +152 -0
  212. package/dist/src/main.js.map +1 -0
  213. package/dist/src/tools/code-analyzer/config/ignore-service.d.ts +2 -0
  214. package/dist/src/tools/code-analyzer/config/ignore-service.d.ts.map +1 -0
  215. package/dist/src/tools/code-analyzer/config/ignore-service.js +209 -0
  216. package/dist/src/tools/code-analyzer/config/ignore-service.js.map +1 -0
  217. package/dist/src/tools/code-analyzer/config/supported-languages.d.ts +13 -0
  218. package/dist/src/tools/code-analyzer/config/supported-languages.d.ts.map +1 -0
  219. package/dist/src/tools/code-analyzer/config/supported-languages.js +17 -0
  220. package/dist/src/tools/code-analyzer/config/supported-languages.js.map +1 -0
  221. package/dist/src/tools/code-analyzer/core/graph/graph.d.ts +3 -0
  222. package/dist/src/tools/code-analyzer/core/graph/graph.d.ts.map +1 -0
  223. package/dist/src/tools/code-analyzer/core/graph/graph.js +67 -0
  224. package/dist/src/tools/code-analyzer/core/graph/graph.js.map +1 -0
  225. package/dist/src/tools/code-analyzer/core/graph/types.d.ts +62 -0
  226. package/dist/src/tools/code-analyzer/core/graph/types.d.ts.map +1 -0
  227. package/dist/src/tools/code-analyzer/core/graph/types.js +2 -0
  228. package/dist/src/tools/code-analyzer/core/graph/types.js.map +1 -0
  229. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.d.ts +12 -0
  230. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.d.ts.map +1 -0
  231. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.js +35 -0
  232. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.js.map +1 -0
  233. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.d.ts +16 -0
  234. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.d.ts.map +1 -0
  235. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.js +328 -0
  236. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.js.map +1 -0
  237. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.d.ts +40 -0
  238. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.d.ts.map +1 -0
  239. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.js +328 -0
  240. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.js.map +1 -0
  241. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.d.ts +40 -0
  242. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.d.ts.map +1 -0
  243. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.js +236 -0
  244. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.js.map +1 -0
  245. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.d.ts +29 -0
  246. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.d.ts.map +1 -0
  247. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.js +81 -0
  248. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.js.map +1 -0
  249. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.d.ts +39 -0
  250. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.d.ts.map +1 -0
  251. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.js +184 -0
  252. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.js.map +1 -0
  253. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.d.ts +21 -0
  254. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.d.ts.map +1 -0
  255. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.js +198 -0
  256. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.js.map +1 -0
  257. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.d.ts +39 -0
  258. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.d.ts.map +1 -0
  259. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.js +791 -0
  260. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.js.map +1 -0
  261. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.d.ts +16 -0
  262. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.d.ts.map +1 -0
  263. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.js +296 -0
  264. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.js.map +1 -0
  265. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.d.ts +3 -0
  266. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.d.ts.map +1 -0
  267. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.js +309 -0
  268. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.js.map +1 -0
  269. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.d.ts +52 -0
  270. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.d.ts.map +1 -0
  271. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.js +310 -0
  272. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.js.map +1 -0
  273. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.d.ts +3 -0
  274. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.d.ts.map +1 -0
  275. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.js +37 -0
  276. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.js.map +1 -0
  277. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.d.ts +34 -0
  278. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.d.ts.map +1 -0
  279. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.js +39 -0
  280. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.js.map +1 -0
  281. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.d.ts +13 -0
  282. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.d.ts.map +1 -0
  283. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.js +355 -0
  284. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.js.map +1 -0
  285. package/dist/src/tools/code-analyzer/core/ingestion/utils.d.ts +11 -0
  286. package/dist/src/tools/code-analyzer/core/ingestion/utils.d.ts.map +1 -0
  287. package/dist/src/tools/code-analyzer/core/ingestion/utils.js +48 -0
  288. package/dist/src/tools/code-analyzer/core/ingestion/utils.js.map +1 -0
  289. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.d.ts +59 -0
  290. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.d.ts.map +1 -0
  291. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.js +538 -0
  292. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.js.map +1 -0
  293. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.d.ts +17 -0
  294. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.d.ts.map +1 -0
  295. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.js +121 -0
  296. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.js.map +1 -0
  297. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.d.ts +5 -0
  298. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.d.ts.map +1 -0
  299. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.js +45 -0
  300. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.js.map +1 -0
  301. package/dist/src/tools/code-analyzer/index.d.ts +17 -0
  302. package/dist/src/tools/code-analyzer/index.d.ts.map +1 -0
  303. package/dist/src/tools/code-analyzer/index.js +15 -0
  304. package/dist/src/tools/code-analyzer/index.js.map +1 -0
  305. package/dist/src/tools/code-analyzer/lib/utils.d.ts +2 -0
  306. package/dist/src/tools/code-analyzer/lib/utils.d.ts.map +1 -0
  307. package/dist/src/tools/code-analyzer/lib/utils.js +4 -0
  308. package/dist/src/tools/code-analyzer/lib/utils.js.map +1 -0
  309. package/dist/src/tools/code-analyzer/types/pipeline.d.ts +33 -0
  310. package/dist/src/tools/code-analyzer/types/pipeline.d.ts.map +1 -0
  311. package/dist/src/tools/code-analyzer/types/pipeline.js +19 -0
  312. package/dist/src/tools/code-analyzer/types/pipeline.js.map +1 -0
  313. package/dist/src/types/api.d.ts +124 -0
  314. package/dist/src/types/api.d.ts.map +1 -0
  315. package/dist/src/types/api.js +3 -0
  316. package/dist/src/types/api.js.map +1 -0
  317. package/dist/src/types/history.d.ts +49 -0
  318. package/dist/src/types/history.d.ts.map +1 -0
  319. package/dist/src/types/history.js +10 -0
  320. package/dist/src/types/history.js.map +1 -0
  321. package/dist/src/utils/colors.d.ts +40 -0
  322. package/dist/src/utils/colors.d.ts.map +1 -0
  323. package/dist/src/utils/colors.js +48 -0
  324. package/dist/src/utils/colors.js.map +1 -0
  325. package/dist/src/utils/config.d.ts +13 -0
  326. package/dist/src/utils/config.d.ts.map +1 -0
  327. package/dist/src/utils/config.js +74 -0
  328. package/dist/src/utils/config.js.map +1 -0
  329. package/dist/src/utils/constants.d.ts +8 -0
  330. package/dist/src/utils/constants.d.ts.map +1 -0
  331. package/dist/src/utils/constants.js +48 -0
  332. package/dist/src/utils/constants.js.map +1 -0
  333. package/dist/src/utils/fileRef.d.ts +26 -0
  334. package/dist/src/utils/fileRef.d.ts.map +1 -0
  335. package/dist/src/utils/fileRef.js +305 -0
  336. package/dist/src/utils/fileRef.js.map +1 -0
  337. package/dist/src/utils/formatters.d.ts +4 -0
  338. package/dist/src/utils/formatters.d.ts.map +1 -0
  339. package/dist/src/utils/formatters.js +18 -0
  340. package/dist/src/utils/formatters.js.map +1 -0
  341. package/dist/src/utils/pasteTransform.d.ts +37 -0
  342. package/dist/src/utils/pasteTransform.d.ts.map +1 -0
  343. package/dist/src/utils/pasteTransform.js +161 -0
  344. package/dist/src/utils/pasteTransform.js.map +1 -0
  345. package/dist/src/utils/pasteUtils.d.ts +7 -0
  346. package/dist/src/utils/pasteUtils.d.ts.map +1 -0
  347. package/dist/src/utils/pasteUtils.js +33 -0
  348. package/dist/src/utils/pasteUtils.js.map +1 -0
  349. package/dist/src/utils/textUtils.d.ts +25 -0
  350. package/dist/src/utils/textUtils.d.ts.map +1 -0
  351. package/dist/src/utils/textUtils.js +107 -0
  352. package/dist/src/utils/textUtils.js.map +1 -0
  353. package/package.json +71 -0
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Community Detection Processor
3
+ *
4
+ * Uses the Leiden algorithm (via graphology-communities-leiden) to detect
5
+ * communities/clusters in the code graph based on CALLS relationships.
6
+ *
7
+ * Communities represent groups of code that work together frequently,
8
+ * helping agents navigate the codebase by functional area rather than file structure.
9
+ */
10
+ // NOTE: The Leiden algorithm source is vendored from graphology's repo
11
+ // (src/communities-leiden) because it was never published to npm.
12
+ // We use createRequire to load the CommonJS vendored files in ESM context.
13
+ import Graph from 'graphology';
14
+ import { createRequire } from 'node:module';
15
+ import { fileURLToPath } from 'node:url';
16
+ import { dirname, resolve } from 'node:path';
17
+ import { existsSync } from 'node:fs';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = dirname(__filename);
20
+ // Find project root by walking up until we find vendor/leiden/index.cjs
21
+ // (works from both src/ and dist/ regardless of nesting depth)
22
+ const findLeidenPath = () => {
23
+ let dir = __dirname;
24
+ for (let i = 0; i < 10; i++) {
25
+ const candidate = resolve(dir, 'vendor', 'leiden', 'index.cjs');
26
+ if (existsSync(candidate))
27
+ return candidate;
28
+ const parent = resolve(dir, '..');
29
+ if (parent === dir)
30
+ break;
31
+ dir = parent;
32
+ }
33
+ throw new Error('Could not find vendor/leiden/index.cjs');
34
+ };
35
+ const leidenPath = findLeidenPath();
36
+ const _require = createRequire(import.meta.url);
37
+ const leiden = _require(leidenPath);
38
+ // ============================================================================
39
+ // COMMUNITY COLORS (for visualization)
40
+ // ============================================================================
41
+ export const COMMUNITY_COLORS = [
42
+ '#ef4444', // red
43
+ '#f97316', // orange
44
+ '#eab308', // yellow
45
+ '#22c55e', // green
46
+ '#06b6d4', // cyan
47
+ '#3b82f6', // blue
48
+ '#8b5cf6', // violet
49
+ '#d946ef', // fuchsia
50
+ '#ec4899', // pink
51
+ '#f43f5e', // rose
52
+ '#14b8a6', // teal
53
+ '#84cc16', // lime
54
+ ];
55
+ export const getCommunityColor = (communityIndex) => {
56
+ return COMMUNITY_COLORS[communityIndex % COMMUNITY_COLORS.length];
57
+ };
58
+ // ============================================================================
59
+ // MAIN PROCESSOR
60
+ // ============================================================================
61
+ /**
62
+ * Detect communities in the knowledge graph using Leiden algorithm
63
+ *
64
+ * This runs AFTER all relationships (CALLS, IMPORTS, etc.) have been built.
65
+ * It uses primarily CALLS edges to cluster code that works together.
66
+ */
67
+ export const processCommunities = async (knowledgeGraph, onProgress) => {
68
+ onProgress?.('Building graph for community detection...', 0);
69
+ // Pre-check total symbol count to determine large-graph mode before building
70
+ let symbolCount = 0;
71
+ knowledgeGraph.forEachNode(node => {
72
+ if (node.label === 'Function' || node.label === 'Class' || node.label === 'Method' || node.label === 'Interface') {
73
+ symbolCount++;
74
+ }
75
+ });
76
+ const isLarge = symbolCount > 10_000;
77
+ const graph = buildGraphologyGraph(knowledgeGraph, isLarge);
78
+ if (graph.order === 0) {
79
+ return {
80
+ communities: [],
81
+ memberships: [],
82
+ stats: { totalCommunities: 0, modularity: 0, nodesProcessed: 0 }
83
+ };
84
+ }
85
+ const nodeCount = graph.order;
86
+ const edgeCount = graph.size;
87
+ onProgress?.(`Running Leiden on ${nodeCount} nodes, ${edgeCount} edges${isLarge ? ` (filtered from ${symbolCount} symbols)` : ''}...`, 30);
88
+ // Large graphs: higher resolution + capped iterations (matching Python leidenalg default of 2).
89
+ // The first 2 iterations capture ~95%+ of modularity; additional iterations have diminishing returns.
90
+ // Timeout: abort after 60s for pathological graph structures.
91
+ const LEIDEN_TIMEOUT_MS = 60_000;
92
+ let details;
93
+ try {
94
+ details = await Promise.race([
95
+ Promise.resolve(leiden.detailed(graph, {
96
+ resolution: isLarge ? 2.0 : 1.0,
97
+ maxIterations: isLarge ? 3 : 0,
98
+ })),
99
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Leiden timeout')), LEIDEN_TIMEOUT_MS)),
100
+ ]);
101
+ }
102
+ catch (e) {
103
+ if (e.message === 'Leiden timeout') {
104
+ onProgress?.('Community detection timed out, using fallback...', 60);
105
+ // Fallback: assign all nodes to community 0
106
+ const communities = {};
107
+ graph.forEachNode((node) => { communities[node] = 0; });
108
+ details = { communities, count: 1, modularity: 0 };
109
+ }
110
+ else {
111
+ throw e;
112
+ }
113
+ }
114
+ onProgress?.(`Found ${details.count} communities...`, 60);
115
+ // Step 3: Create community nodes with heuristic labels
116
+ const communityNodes = createCommunityNodes(details.communities, details.count, graph, knowledgeGraph);
117
+ onProgress?.('Creating membership edges...', 80);
118
+ // Step 4: Create membership mappings
119
+ const memberships = [];
120
+ Object.entries(details.communities).forEach(([nodeId, communityNum]) => {
121
+ memberships.push({
122
+ nodeId,
123
+ communityId: `comm_${communityNum}`,
124
+ });
125
+ });
126
+ onProgress?.('Community detection complete!', 100);
127
+ return {
128
+ communities: communityNodes,
129
+ memberships,
130
+ stats: {
131
+ totalCommunities: details.count,
132
+ modularity: details.modularity,
133
+ nodesProcessed: graph.order,
134
+ }
135
+ };
136
+ };
137
+ // ============================================================================
138
+ // HELPER: Build graphology graph from knowledge graph
139
+ // ============================================================================
140
+ /**
141
+ * Build a graphology graph containing only symbol nodes and clustering edges.
142
+ * For large graphs (>10K symbols), filter out low-confidence fuzzy-global edges
143
+ * and degree-1 nodes that add noise and massively increase Leiden runtime.
144
+ */
145
+ const MIN_CONFIDENCE_LARGE = 0.5;
146
+ const buildGraphologyGraph = (knowledgeGraph, isLarge) => {
147
+ const graph = new Graph({ type: 'undirected', allowSelfLoops: false });
148
+ const symbolTypes = new Set(['Function', 'Class', 'Method', 'Interface']);
149
+ const clusteringRelTypes = new Set(['CALLS', 'EXTENDS', 'IMPLEMENTS']);
150
+ const connectedNodes = new Set();
151
+ const nodeDegree = new Map();
152
+ knowledgeGraph.forEachRelationship(rel => {
153
+ if (!clusteringRelTypes.has(rel.type) || rel.sourceId === rel.targetId)
154
+ return;
155
+ if (isLarge && rel.confidence < MIN_CONFIDENCE_LARGE)
156
+ return;
157
+ connectedNodes.add(rel.sourceId);
158
+ connectedNodes.add(rel.targetId);
159
+ nodeDegree.set(rel.sourceId, (nodeDegree.get(rel.sourceId) || 0) + 1);
160
+ nodeDegree.set(rel.targetId, (nodeDegree.get(rel.targetId) || 0) + 1);
161
+ });
162
+ knowledgeGraph.forEachNode(node => {
163
+ if (!symbolTypes.has(node.label) || !connectedNodes.has(node.id))
164
+ return;
165
+ // For large graphs, skip degree-1 nodes — they just become singletons or
166
+ // get absorbed into their single neighbor's community, but cost iteration time.
167
+ if (isLarge && (nodeDegree.get(node.id) || 0) < 2)
168
+ return;
169
+ graph.addNode(node.id, {
170
+ name: node.properties.name,
171
+ filePath: node.properties.filePath,
172
+ type: node.label,
173
+ });
174
+ });
175
+ knowledgeGraph.forEachRelationship(rel => {
176
+ if (!clusteringRelTypes.has(rel.type))
177
+ return;
178
+ if (isLarge && rel.confidence < MIN_CONFIDENCE_LARGE)
179
+ return;
180
+ if (graph.hasNode(rel.sourceId) && graph.hasNode(rel.targetId) && rel.sourceId !== rel.targetId) {
181
+ if (!graph.hasEdge(rel.sourceId, rel.targetId)) {
182
+ graph.addEdge(rel.sourceId, rel.targetId);
183
+ }
184
+ }
185
+ });
186
+ return graph;
187
+ };
188
+ // ============================================================================
189
+ // HELPER: Create community nodes with heuristic labels
190
+ // ============================================================================
191
+ /**
192
+ * Create Community nodes with auto-generated labels based on member file paths
193
+ */
194
+ const createCommunityNodes = (communities, communityCount, graph, knowledgeGraph) => {
195
+ // Group node IDs by community
196
+ const communityMembers = new Map();
197
+ Object.entries(communities).forEach(([nodeId, commNum]) => {
198
+ if (!communityMembers.has(commNum)) {
199
+ communityMembers.set(commNum, []);
200
+ }
201
+ communityMembers.get(commNum).push(nodeId);
202
+ });
203
+ // Build node lookup for file paths
204
+ const nodePathMap = new Map();
205
+ for (const node of knowledgeGraph.iterNodes()) {
206
+ if (node.properties.filePath) {
207
+ nodePathMap.set(node.id, node.properties.filePath);
208
+ }
209
+ }
210
+ // Create community nodes - SKIP SINGLETONS (isolated nodes)
211
+ const communityNodes = [];
212
+ communityMembers.forEach((memberIds, commNum) => {
213
+ // Skip singleton communities - they're just isolated nodes
214
+ if (memberIds.length < 2)
215
+ return;
216
+ const heuristicLabel = generateHeuristicLabel(memberIds, nodePathMap, graph, commNum);
217
+ communityNodes.push({
218
+ id: `comm_${commNum}`,
219
+ label: heuristicLabel,
220
+ heuristicLabel,
221
+ cohesion: calculateCohesion(memberIds, graph),
222
+ symbolCount: memberIds.length,
223
+ });
224
+ });
225
+ // Sort by size descending
226
+ communityNodes.sort((a, b) => b.symbolCount - a.symbolCount);
227
+ return communityNodes;
228
+ };
229
+ // ============================================================================
230
+ // HELPER: Generate heuristic label from folder patterns
231
+ // ============================================================================
232
+ /**
233
+ * Generate a human-readable label from the most common folder name in the community
234
+ */
235
+ const generateHeuristicLabel = (memberIds, nodePathMap, graph, commNum) => {
236
+ // Collect folder names from file paths
237
+ const folderCounts = new Map();
238
+ memberIds.forEach(nodeId => {
239
+ const filePath = nodePathMap.get(nodeId) || '';
240
+ const parts = filePath.split('/').filter(Boolean);
241
+ // Get the most specific folder (parent directory)
242
+ if (parts.length >= 2) {
243
+ const folder = parts[parts.length - 2];
244
+ // Skip generic folder names
245
+ if (!['src', 'lib', 'core', 'utils', 'common', 'shared', 'helpers'].includes(folder.toLowerCase())) {
246
+ folderCounts.set(folder, (folderCounts.get(folder) || 0) + 1);
247
+ }
248
+ }
249
+ });
250
+ // Find most common folder
251
+ let maxCount = 0;
252
+ let bestFolder = '';
253
+ folderCounts.forEach((count, folder) => {
254
+ if (count > maxCount) {
255
+ maxCount = count;
256
+ bestFolder = folder;
257
+ }
258
+ });
259
+ if (bestFolder) {
260
+ // Capitalize first letter
261
+ return bestFolder.charAt(0).toUpperCase() + bestFolder.slice(1);
262
+ }
263
+ // Fallback: use function names to detect patterns
264
+ const names = [];
265
+ memberIds.forEach(nodeId => {
266
+ const name = graph.getNodeAttribute(nodeId, 'name');
267
+ if (name)
268
+ names.push(name);
269
+ });
270
+ // Look for common prefixes
271
+ if (names.length > 2) {
272
+ const commonPrefix = findCommonPrefix(names);
273
+ if (commonPrefix.length > 2) {
274
+ return commonPrefix.charAt(0).toUpperCase() + commonPrefix.slice(1);
275
+ }
276
+ }
277
+ // Last resort: generic name with community ID for uniqueness
278
+ return `Cluster_${commNum}`;
279
+ };
280
+ /**
281
+ * Find common prefix among strings
282
+ */
283
+ const findCommonPrefix = (strings) => {
284
+ if (strings.length === 0)
285
+ return '';
286
+ const sorted = strings.slice().sort();
287
+ const first = sorted[0];
288
+ const last = sorted[sorted.length - 1];
289
+ let i = 0;
290
+ while (i < first.length && first[i] === last[i]) {
291
+ i++;
292
+ }
293
+ return first.substring(0, i);
294
+ };
295
+ // ============================================================================
296
+ // HELPER: Calculate community cohesion
297
+ // ============================================================================
298
+ /**
299
+ * Estimate cohesion score (0-1) based on internal edge density.
300
+ * Uses sampling for large communities to avoid O(N^2) cost.
301
+ */
302
+ const calculateCohesion = (memberIds, graph) => {
303
+ if (memberIds.length <= 1)
304
+ return 1.0;
305
+ const memberSet = new Set(memberIds);
306
+ // Sample up to 50 members for large communities
307
+ const SAMPLE_SIZE = 50;
308
+ const sample = memberIds.length <= SAMPLE_SIZE
309
+ ? memberIds
310
+ : memberIds.slice(0, SAMPLE_SIZE);
311
+ let internalEdges = 0;
312
+ let totalEdges = 0;
313
+ for (const nodeId of sample) {
314
+ if (!graph.hasNode(nodeId))
315
+ continue;
316
+ graph.forEachNeighbor(nodeId, (neighbor) => {
317
+ totalEdges++;
318
+ if (memberSet.has(neighbor)) {
319
+ internalEdges++;
320
+ }
321
+ });
322
+ }
323
+ // Cohesion = fraction of edges that stay internal
324
+ if (totalEdges === 0)
325
+ return 1.0;
326
+ return Math.min(1.0, internalEdges / totalEdges);
327
+ };
328
+ //# sourceMappingURL=community-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-processor.js","sourceRoot":"","sources":["../../../../../../src/tools/code-analyzer/core/ingestion/community-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Entry Point Scoring
3
+ *
4
+ * Calculates entry point scores for process detection based on:
5
+ * 1. Call ratio (existing algorithm - callees / (callers + 1))
6
+ * 2. Export status (exported functions get higher priority)
7
+ * 3. Name patterns (functions matching entry point patterns like handle*, on*, *Controller)
8
+ * 4. Framework detection (path-based detection for Next.js, Express, Django, etc.)
9
+ *
10
+ * This module is language-agnostic - language-specific patterns are defined per language.
11
+ */
12
+ export interface EntryPointScoreResult {
13
+ score: number;
14
+ reasons: string[];
15
+ }
16
+ /**
17
+ * Calculate an entry point score for a function/method
18
+ *
19
+ * Higher scores indicate better entry point candidates.
20
+ * Score = baseScore × exportMultiplier × nameMultiplier
21
+ *
22
+ * @param name - Function/method name
23
+ * @param language - Programming language
24
+ * @param isExported - Whether the function is exported/public
25
+ * @param callerCount - Number of functions that call this function
26
+ * @param calleeCount - Number of functions this function calls
27
+ * @returns Score and array of reasons explaining the score
28
+ */
29
+ export declare function calculateEntryPointScore(name: string, language: string, isExported: boolean, callerCount: number, calleeCount: number, filePath?: string): EntryPointScoreResult;
30
+ /**
31
+ * Check if a file path is a test file (should be excluded from entry points)
32
+ * Covers common test file patterns across all supported languages
33
+ */
34
+ export declare function isTestFile(filePath: string): boolean;
35
+ /**
36
+ * Check if a file path is likely a utility/helper file
37
+ * These might still have entry points but should be lower priority
38
+ */
39
+ export declare function isUtilityFile(filePath: string): boolean;
40
+ //# sourceMappingURL=entry-point-scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point-scoring.d.ts","sourceRoot":"","sources":["../../../../../../src/tools/code-analyzer/core/ingestion/entry-point-scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8HH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAW,GACpB,qBAAqB,CAuDvB;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA0BpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkBvD"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Entry Point Scoring
3
+ *
4
+ * Calculates entry point scores for process detection based on:
5
+ * 1. Call ratio (existing algorithm - callees / (callers + 1))
6
+ * 2. Export status (exported functions get higher priority)
7
+ * 3. Name patterns (functions matching entry point patterns like handle*, on*, *Controller)
8
+ * 4. Framework detection (path-based detection for Next.js, Express, Django, etc.)
9
+ *
10
+ * This module is language-agnostic - language-specific patterns are defined per language.
11
+ */
12
+ import { detectFrameworkFromPath } from './framework-detection.js';
13
+ // ============================================================================
14
+ // NAME PATTERNS - All 9 supported languages
15
+ // ============================================================================
16
+ /**
17
+ * Common entry point naming patterns by language
18
+ * These patterns indicate functions that are likely feature entry points
19
+ */
20
+ const ENTRY_POINT_PATTERNS = {
21
+ // Universal patterns (apply to all languages)
22
+ '*': [
23
+ /^(main|init|bootstrap|start|run|setup|configure)$/i,
24
+ /^handle[A-Z]/, // handleLogin, handleSubmit
25
+ /^on[A-Z]/, // onClick, onSubmit
26
+ /Handler$/, // RequestHandler
27
+ /Controller$/, // UserController
28
+ /^process[A-Z]/, // processPayment
29
+ /^execute[A-Z]/, // executeQuery
30
+ /^perform[A-Z]/, // performAction
31
+ /^dispatch[A-Z]/, // dispatchEvent
32
+ /^trigger[A-Z]/, // triggerAction
33
+ /^fire[A-Z]/, // fireEvent
34
+ /^emit[A-Z]/, // emitEvent
35
+ ],
36
+ // JavaScript/TypeScript
37
+ 'javascript': [
38
+ /^use[A-Z]/, // React hooks (useEffect, etc.)
39
+ ],
40
+ 'typescript': [
41
+ /^use[A-Z]/, // React hooks
42
+ ],
43
+ // Python
44
+ 'python': [
45
+ /^app$/, // Flask/FastAPI app
46
+ /^(get|post|put|delete|patch)_/i, // REST conventions
47
+ /^api_/, // API functions
48
+ /^view_/, // Django views
49
+ ],
50
+ // Java
51
+ 'java': [
52
+ /^do[A-Z]/, // doGet, doPost (Servlets)
53
+ /^create[A-Z]/, // Factory patterns
54
+ /^build[A-Z]/, // Builder patterns
55
+ /Service$/, // UserService
56
+ ],
57
+ // C#
58
+ 'csharp': [
59
+ /^(Get|Post|Put|Delete)/, // ASP.NET conventions
60
+ /Action$/, // MVC actions
61
+ /^On[A-Z]/, // Event handlers
62
+ /Async$/, // Async entry points
63
+ ],
64
+ // Go
65
+ 'go': [
66
+ /Handler$/, // http.Handler pattern
67
+ /^Serve/, // ServeHTTP
68
+ /^New[A-Z]/, // Constructor pattern (returns new instance)
69
+ /^Make[A-Z]/, // Make functions
70
+ ],
71
+ // Rust
72
+ 'rust': [
73
+ /^(get|post|put|delete)_handler$/i,
74
+ /^handle_/, // handle_request
75
+ /^new$/, // Constructor pattern
76
+ /^run$/, // run entry point
77
+ /^spawn/, // Async spawn
78
+ ],
79
+ // C - explicit main() boost (critical for C programs)
80
+ 'c': [
81
+ /^main$/, // THE entry point
82
+ /^init_/, // Initialization functions
83
+ /^start_/, // Start functions
84
+ /^run_/, // Run functions
85
+ ],
86
+ // C++ - same as C plus class patterns
87
+ 'cpp': [
88
+ /^main$/, // THE entry point
89
+ /^init_/,
90
+ /^Create[A-Z]/, // Factory patterns
91
+ /^Run$/, // Run methods
92
+ /^Start$/, // Start methods
93
+ ],
94
+ };
95
+ // ============================================================================
96
+ // UTILITY PATTERNS - Functions that should be penalized
97
+ // ============================================================================
98
+ /**
99
+ * Patterns that indicate utility/helper functions (NOT entry points)
100
+ * These get penalized in scoring
101
+ */
102
+ const UTILITY_PATTERNS = [
103
+ /^(get|set|is|has|can|should|will|did)[A-Z]/, // Accessors/predicates
104
+ /^_/, // Private by convention
105
+ /^(format|parse|validate|convert|transform)/i, // Transformation utilities
106
+ /^(log|debug|error|warn|info)$/i, // Logging
107
+ /^(to|from)[A-Z]/, // Conversions
108
+ /^(encode|decode)/i, // Encoding utilities
109
+ /^(serialize|deserialize)/i, // Serialization
110
+ /^(clone|copy|deep)/i, // Cloning utilities
111
+ /^(merge|extend|assign)/i, // Object utilities
112
+ /^(filter|map|reduce|sort|find)/i, // Collection utilities (standalone)
113
+ /Helper$/,
114
+ /Util$/,
115
+ /Utils$/,
116
+ /^utils?$/i,
117
+ /^helpers?$/i,
118
+ ];
119
+ // ============================================================================
120
+ // MAIN SCORING FUNCTION
121
+ // ============================================================================
122
+ /**
123
+ * Calculate an entry point score for a function/method
124
+ *
125
+ * Higher scores indicate better entry point candidates.
126
+ * Score = baseScore × exportMultiplier × nameMultiplier
127
+ *
128
+ * @param name - Function/method name
129
+ * @param language - Programming language
130
+ * @param isExported - Whether the function is exported/public
131
+ * @param callerCount - Number of functions that call this function
132
+ * @param calleeCount - Number of functions this function calls
133
+ * @returns Score and array of reasons explaining the score
134
+ */
135
+ export function calculateEntryPointScore(name, language, isExported, callerCount, calleeCount, filePath = '' // Optional for backwards compatibility
136
+ ) {
137
+ const reasons = [];
138
+ // Must have outgoing calls to be an entry point (we need to trace forward)
139
+ if (calleeCount === 0) {
140
+ return { score: 0, reasons: ['no-outgoing-calls'] };
141
+ }
142
+ // Base score: call ratio (existing algorithm)
143
+ // High ratio = calls many, called by few = likely entry point
144
+ const baseScore = calleeCount / (callerCount + 1);
145
+ reasons.push(`base:${baseScore.toFixed(2)}`);
146
+ // Export bonus: exported/public functions are more likely entry points
147
+ const exportMultiplier = isExported ? 2.0 : 1.0;
148
+ if (isExported) {
149
+ reasons.push('exported');
150
+ }
151
+ // Name pattern scoring
152
+ let nameMultiplier = 1.0;
153
+ // Check negative patterns first (utilities get penalized)
154
+ if (UTILITY_PATTERNS.some(p => p.test(name))) {
155
+ nameMultiplier = 0.3; // Significant penalty
156
+ reasons.push('utility-pattern');
157
+ }
158
+ else {
159
+ // Check positive patterns
160
+ const universalPatterns = ENTRY_POINT_PATTERNS['*'] || [];
161
+ const langPatterns = ENTRY_POINT_PATTERNS[language] || [];
162
+ const allPatterns = [...universalPatterns, ...langPatterns];
163
+ if (allPatterns.some(p => p.test(name))) {
164
+ nameMultiplier = 1.5; // Bonus for matching entry point pattern
165
+ reasons.push('entry-pattern');
166
+ }
167
+ }
168
+ // Framework detection bonus (Phase 2)
169
+ let frameworkMultiplier = 1.0;
170
+ if (filePath) {
171
+ const frameworkHint = detectFrameworkFromPath(filePath);
172
+ if (frameworkHint) {
173
+ frameworkMultiplier = frameworkHint.entryPointMultiplier;
174
+ reasons.push(`framework:${frameworkHint.reason}`);
175
+ }
176
+ }
177
+ // Calculate final score
178
+ const finalScore = baseScore * exportMultiplier * nameMultiplier * frameworkMultiplier;
179
+ return {
180
+ score: finalScore,
181
+ reasons,
182
+ };
183
+ }
184
+ // ============================================================================
185
+ // HELPER FUNCTIONS
186
+ // ============================================================================
187
+ /**
188
+ * Check if a file path is a test file (should be excluded from entry points)
189
+ * Covers common test file patterns across all supported languages
190
+ */
191
+ export function isTestFile(filePath) {
192
+ const p = filePath.toLowerCase().replace(/\\/g, '/');
193
+ return (
194
+ // JavaScript/TypeScript test patterns
195
+ p.includes('.test.') ||
196
+ p.includes('.spec.') ||
197
+ p.includes('__tests__/') ||
198
+ p.includes('__mocks__/') ||
199
+ // Generic test folders
200
+ p.includes('/test/') ||
201
+ p.includes('/tests/') ||
202
+ p.includes('/testing/') ||
203
+ // Python test patterns
204
+ p.endsWith('_test.py') ||
205
+ p.includes('/test_') ||
206
+ // Go test patterns
207
+ p.endsWith('_test.go') ||
208
+ // Java test patterns
209
+ p.includes('/src/test/') ||
210
+ // Rust test patterns (inline tests are different, but test files)
211
+ p.includes('/tests/') ||
212
+ // C# test patterns
213
+ p.includes('.tests/') ||
214
+ p.includes('tests.cs'));
215
+ }
216
+ /**
217
+ * Check if a file path is likely a utility/helper file
218
+ * These might still have entry points but should be lower priority
219
+ */
220
+ export function isUtilityFile(filePath) {
221
+ const p = filePath.toLowerCase().replace(/\\/g, '/');
222
+ return (p.includes('/utils/') ||
223
+ p.includes('/util/') ||
224
+ p.includes('/helpers/') ||
225
+ p.includes('/helper/') ||
226
+ p.includes('/common/') ||
227
+ p.includes('/shared/') ||
228
+ p.includes('/lib/') ||
229
+ p.endsWith('/utils.ts') ||
230
+ p.endsWith('/utils.js') ||
231
+ p.endsWith('/helpers.ts') ||
232
+ p.endsWith('/helpers.js') ||
233
+ p.endsWith('_utils.py') ||
234
+ p.endsWith('_helpers.py'));
235
+ }
236
+ //# sourceMappingURL=entry-point-scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point-scoring.js","sourceRoot":"","sources":["../../../../../../src/tools/code-analyzer/core/ingestion/entry-point-scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface FileEntry {
2
+ path: string;
3
+ content: string;
4
+ }
5
+ /** Lightweight entry — path + size from stat, no content in memory */
6
+ export interface ScannedFile {
7
+ path: string;
8
+ size: number;
9
+ }
10
+ /** Path-only reference (for type signatures) */
11
+ export interface FilePath {
12
+ path: string;
13
+ }
14
+ /**
15
+ * Phase 1: Scan repository — stat files to get paths + sizes, no content loaded.
16
+ * Memory: ~10MB for 100K files vs ~1GB+ with content.
17
+ */
18
+ export declare const walkRepositoryPaths: (repoPath: string, onProgress?: (current: number, total: number, filePath: string) => void) => Promise<ScannedFile[]>;
19
+ /**
20
+ * Phase 2: Read file contents for a specific set of relative paths.
21
+ * Returns a Map for O(1) lookup. Silently skips files that fail to read.
22
+ */
23
+ export declare const readFileContents: (repoPath: string, relativePaths: string[]) => Promise<Map<string, string>>;
24
+ /**
25
+ * Legacy API — scans and reads everything into memory.
26
+ * Used by sequential fallback path only.
27
+ */
28
+ export declare const walkRepository: (repoPath: string, onProgress?: (current: number, total: number, filePath: string) => void) => Promise<FileEntry[]>;
29
+ //# sourceMappingURL=filesystem-walker.d.ts.map