codebase-onboarder 0.6.0 → 1.0.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 (526) hide show
  1. package/README.md +284 -53
  2. package/bin/build-if-source.js +23 -0
  3. package/bin/onboarder.js +0 -0
  4. package/cli/agent/command.d.ts +71 -0
  5. package/cli/agent/command.js +177 -0
  6. package/cli/agent/command.js.map +1 -0
  7. package/cli/agent/config.d.ts +31 -0
  8. package/cli/agent/config.js +98 -0
  9. package/cli/agent/config.js.map +1 -0
  10. package/cli/agent/contracts.d.ts +77 -0
  11. package/cli/agent/contracts.js +2 -0
  12. package/cli/agent/contracts.js.map +1 -0
  13. package/cli/agent/files.d.ts +19 -0
  14. package/cli/agent/files.js +109 -0
  15. package/cli/agent/files.js.map +1 -0
  16. package/cli/agent/gitSource.d.ts +18 -0
  17. package/cli/agent/gitSource.js +69 -0
  18. package/cli/agent/gitSource.js.map +1 -0
  19. package/cli/agent/github.d.ts +21 -0
  20. package/cli/agent/github.js +94 -0
  21. package/cli/agent/github.js.map +1 -0
  22. package/cli/agent/mcp.d.ts +15 -0
  23. package/cli/agent/mcp.js +78 -0
  24. package/cli/agent/mcp.js.map +1 -0
  25. package/cli/agent/process.d.ts +18 -0
  26. package/cli/agent/process.js +118 -0
  27. package/cli/agent/process.js.map +1 -0
  28. package/cli/agent/protocol.d.ts +3 -0
  29. package/cli/agent/protocol.js +26 -0
  30. package/cli/agent/protocol.js.map +1 -0
  31. package/cli/agent/runner.d.ts +34 -0
  32. package/cli/agent/runner.js +152 -0
  33. package/cli/agent/runner.js.map +1 -0
  34. package/cli/agent/stdio.d.ts +1 -0
  35. package/cli/agent/stdio.js +62 -0
  36. package/cli/agent/stdio.js.map +1 -0
  37. package/cli/agent/tools.d.ts +7 -0
  38. package/cli/agent/tools.js +201 -0
  39. package/cli/agent/tools.js.map +1 -0
  40. package/cli/chat/app.d.ts +16 -0
  41. package/cli/chat/app.js +345 -0
  42. package/cli/chat/app.js.map +1 -0
  43. package/cli/chat/commands.d.ts +11 -0
  44. package/cli/chat/commands.js +120 -0
  45. package/cli/chat/commands.js.map +1 -0
  46. package/cli/chat/composer.d.ts +75 -0
  47. package/cli/chat/composer.js +467 -0
  48. package/cli/chat/composer.js.map +1 -0
  49. package/cli/chat/controller.d.ts +60 -0
  50. package/cli/chat/controller.js +393 -0
  51. package/cli/chat/controller.js.map +1 -0
  52. package/cli/chat/logo.d.ts +3 -0
  53. package/cli/chat/logo.js +14 -0
  54. package/cli/chat/logo.js.map +1 -0
  55. package/cli/chat/models.d.ts +18 -0
  56. package/cli/chat/models.js +88 -0
  57. package/cli/chat/models.js.map +1 -0
  58. package/cli/chat/profile.d.ts +5 -0
  59. package/cli/chat/profile.js +98 -0
  60. package/cli/chat/profile.js.map +1 -0
  61. package/cli/chat/render.d.ts +40 -0
  62. package/cli/chat/render.js +259 -0
  63. package/cli/chat/render.js.map +1 -0
  64. package/cli/chat/screen.d.ts +26 -0
  65. package/cli/chat/screen.js +117 -0
  66. package/cli/chat/screen.js.map +1 -0
  67. package/cli/chat/source.d.ts +29 -0
  68. package/cli/chat/source.js +116 -0
  69. package/cli/chat/source.js.map +1 -0
  70. package/cli/chat/store.d.ts +43 -0
  71. package/cli/chat/store.js +94 -0
  72. package/cli/chat/store.js.map +1 -0
  73. package/cli/chat/text.d.ts +4 -0
  74. package/cli/chat/text.js +27 -0
  75. package/cli/chat/text.js.map +1 -0
  76. package/cli/commands.d.ts +26 -0
  77. package/cli/commands.js +836 -811
  78. package/cli/commands.js.map +1 -0
  79. package/cli/explorer/advanced.d.ts +14 -0
  80. package/cli/explorer/advanced.js +321 -329
  81. package/cli/explorer/advanced.js.map +1 -0
  82. package/cli/explorer/app.d.ts +2 -0
  83. package/cli/explorer/app.js +404 -314
  84. package/cli/explorer/app.js.map +1 -0
  85. package/cli/explorer/assistant.d.ts +9 -0
  86. package/cli/explorer/assistant.js +58 -0
  87. package/cli/explorer/assistant.js.map +1 -0
  88. package/cli/explorer/commands.d.ts +17 -0
  89. package/cli/explorer/commands.js +373 -302
  90. package/cli/explorer/commands.js.map +1 -0
  91. package/cli/explorer/featureViews.d.ts +124 -0
  92. package/cli/explorer/featureViews.js +179 -0
  93. package/cli/explorer/featureViews.js.map +1 -0
  94. package/cli/explorer/github.d.ts +21 -0
  95. package/cli/explorer/github.js +42 -44
  96. package/cli/explorer/github.js.map +1 -0
  97. package/cli/explorer/graphs.d.ts +7 -0
  98. package/cli/explorer/graphs.js +90 -95
  99. package/cli/explorer/graphs.js.map +1 -0
  100. package/cli/explorer/picker.d.ts +22 -0
  101. package/cli/explorer/picker.js +150 -0
  102. package/cli/explorer/picker.js.map +1 -0
  103. package/cli/explorer/report.d.ts +85 -0
  104. package/cli/explorer/report.js +60 -0
  105. package/cli/explorer/report.js.map +1 -0
  106. package/cli/explorer/session.d.ts +449 -0
  107. package/cli/explorer/session.js +143 -144
  108. package/cli/explorer/session.js.map +1 -0
  109. package/cli/explorer/views.d.ts +19 -0
  110. package/cli/explorer/views.js +465 -482
  111. package/cli/explorer/views.js.map +1 -0
  112. package/cli/explorer/wrap.d.ts +1 -0
  113. package/cli/explorer/wrap.js +28 -44
  114. package/cli/explorer/wrap.js.map +1 -0
  115. package/cli/main.d.ts +1 -0
  116. package/cli/main.js +251 -164
  117. package/cli/main.js.map +1 -0
  118. package/cli/prompt.d.ts +5 -0
  119. package/cli/prompt.js +84 -80
  120. package/cli/prompt.js.map +1 -0
  121. package/cli/scanOptions.d.ts +2 -0
  122. package/cli/scanOptions.js +11 -0
  123. package/cli/scanOptions.js.map +1 -0
  124. package/cli/ui.d.ts +33 -0
  125. package/cli/ui.js +35 -44
  126. package/cli/ui.js.map +1 -0
  127. package/cli/wizard.d.ts +187 -0
  128. package/cli/wizard.js +304 -284
  129. package/cli/wizard.js.map +1 -0
  130. package/docs/HERMES_RESEARCH.md +51 -0
  131. package/package.json +16 -4
  132. package/public/app.d.ts +1 -0
  133. package/public/app.js +1133 -1011
  134. package/public/app.js.map +1 -0
  135. package/public/assets/onboarder-mark.svg +11 -0
  136. package/public/browser.d.ts +71 -0
  137. package/public/browser.js +2 -0
  138. package/public/browser.js.map +1 -0
  139. package/public/index.html +54 -20
  140. package/public/js/about.d.ts +6 -0
  141. package/public/js/about.js +152 -172
  142. package/public/js/about.js.map +1 -0
  143. package/public/js/aiDraft.d.ts +4 -0
  144. package/public/js/aiDraft.js +166 -125
  145. package/public/js/aiDraft.js.map +1 -0
  146. package/public/js/analysisPanel.d.ts +7 -0
  147. package/public/js/analysisPanel.js +166 -166
  148. package/public/js/analysisPanel.js.map +1 -0
  149. package/public/js/analysisReport.d.ts +38 -0
  150. package/public/js/analysisReport.js +105 -110
  151. package/public/js/analysisReport.js.map +1 -0
  152. package/public/js/api.d.ts +29 -0
  153. package/public/js/api.js +198 -166
  154. package/public/js/api.js.map +1 -0
  155. package/public/js/atlas.d.ts +6 -0
  156. package/public/js/atlas.js +50 -58
  157. package/public/js/atlas.js.map +1 -0
  158. package/public/js/blameView.d.ts +2 -0
  159. package/public/js/blameView.js +36 -37
  160. package/public/js/blameView.js.map +1 -0
  161. package/public/js/codeTab.d.ts +3 -0
  162. package/public/js/codeTab.js +175 -180
  163. package/public/js/codeTab.js.map +1 -0
  164. package/public/js/codeViewer.d.ts +5 -0
  165. package/public/js/codeViewer.js +162 -150
  166. package/public/js/codeViewer.js.map +1 -0
  167. package/public/js/components/FileChip.d.ts +9 -0
  168. package/public/js/components/FileChip.js +45 -49
  169. package/public/js/components/FileChip.js.map +1 -0
  170. package/public/js/components/MetricSparkline.d.ts +7 -0
  171. package/public/js/components/MetricSparkline.js +35 -44
  172. package/public/js/components/MetricSparkline.js.map +1 -0
  173. package/public/js/components/RiskBadge.d.ts +9 -0
  174. package/public/js/components/RiskBadge.js +55 -63
  175. package/public/js/components/RiskBadge.js.map +1 -0
  176. package/public/js/deepAnalysisView.d.ts +99 -0
  177. package/public/js/deepAnalysisView.js +282 -302
  178. package/public/js/deepAnalysisView.js.map +1 -0
  179. package/public/js/diagramPane.d.ts +9 -0
  180. package/public/js/diagramPane.js +138 -135
  181. package/public/js/diagramPane.js.map +1 -0
  182. package/public/js/diffView.d.ts +6 -0
  183. package/public/js/diffView.js +222 -209
  184. package/public/js/diffView.js.map +1 -0
  185. package/public/js/docsView.d.ts +2 -0
  186. package/public/js/docsView.js +441 -442
  187. package/public/js/docsView.js.map +1 -0
  188. package/public/js/dom.d.ts +197 -0
  189. package/public/js/dom.js +5 -0
  190. package/public/js/dom.js.map +1 -0
  191. package/public/js/fileSourceBrowser.d.ts +5 -0
  192. package/public/js/fileSourceBrowser.js +33 -41
  193. package/public/js/fileSourceBrowser.js.map +1 -0
  194. package/public/js/flameGraph.d.ts +5 -0
  195. package/public/js/flameGraph.js +62 -72
  196. package/public/js/flameGraph.js.map +1 -0
  197. package/public/js/forceGraph.d.ts +10 -0
  198. package/public/js/forceGraph.js +581 -556
  199. package/public/js/forceGraph.js.map +1 -0
  200. package/public/js/heatmap.d.ts +4 -0
  201. package/public/js/heatmap.js +142 -164
  202. package/public/js/heatmap.js.map +1 -0
  203. package/public/js/highlight.d.ts +2 -0
  204. package/public/js/highlight.js +116 -107
  205. package/public/js/highlight.js.map +1 -0
  206. package/public/js/html.d.ts +2 -0
  207. package/public/js/html.js +14 -44
  208. package/public/js/html.js.map +1 -0
  209. package/public/js/insightsView.d.ts +5 -0
  210. package/public/js/insightsView.js +93 -111
  211. package/public/js/insightsView.js.map +1 -0
  212. package/public/js/inspector.d.ts +37 -0
  213. package/public/js/inspector.js +416 -445
  214. package/public/js/inspector.js.map +1 -0
  215. package/public/js/llm.d.ts +115 -0
  216. package/public/js/llm.js +246 -278
  217. package/public/js/llm.js.map +1 -0
  218. package/public/js/mapView.d.ts +3 -0
  219. package/public/js/mapView.js +121 -120
  220. package/public/js/mapView.js.map +1 -0
  221. package/public/js/markdown.d.ts +3 -0
  222. package/public/js/markdown.js +84 -91
  223. package/public/js/markdown.js.map +1 -0
  224. package/public/js/mindmap.d.ts +32 -0
  225. package/public/js/mindmap.js +244 -259
  226. package/public/js/mindmap.js.map +1 -0
  227. package/public/js/mobilePanels.d.ts +5 -0
  228. package/public/js/mobilePanels.js +50 -0
  229. package/public/js/mobilePanels.js.map +1 -0
  230. package/public/js/repoFiles.d.ts +12 -0
  231. package/public/js/repoFiles.js +29 -28
  232. package/public/js/repoFiles.js.map +1 -0
  233. package/public/js/reviewView.d.ts +28 -0
  234. package/public/js/reviewView.js +256 -0
  235. package/public/js/reviewView.js.map +1 -0
  236. package/public/js/sbomView.d.ts +3 -0
  237. package/public/js/sbomView.js +59 -67
  238. package/public/js/sbomView.js.map +1 -0
  239. package/public/js/scanCache.d.ts +16 -0
  240. package/public/js/scanCache.js +67 -65
  241. package/public/js/scanCache.js.map +1 -0
  242. package/public/js/search.d.ts +7 -0
  243. package/public/js/search.js +868 -800
  244. package/public/js/search.js.map +1 -0
  245. package/public/js/searchLocal.d.ts +42 -0
  246. package/public/js/searchLocal.js +87 -0
  247. package/public/js/searchLocal.js.map +1 -0
  248. package/public/js/serverSettings.d.ts +5 -0
  249. package/public/js/serverSettings.js +153 -164
  250. package/public/js/serverSettings.js.map +1 -0
  251. package/public/js/state.d.ts +798 -0
  252. package/public/js/state.js +114 -122
  253. package/public/js/state.js.map +1 -0
  254. package/public/js/tour.d.ts +6 -0
  255. package/public/js/tour.js +5 -7
  256. package/public/js/tour.js.map +1 -0
  257. package/public/js/transitions.d.ts +2 -0
  258. package/public/js/transitions.js +9 -10
  259. package/public/js/transitions.js.map +1 -0
  260. package/public/js/tree.d.ts +12 -0
  261. package/public/js/tree.js +157 -154
  262. package/public/js/tree.js.map +1 -0
  263. package/public/js/workflowsView.d.ts +3 -0
  264. package/public/js/workflowsView.js +15 -22
  265. package/public/js/workflowsView.js.map +1 -0
  266. package/public/search.css +495 -0
  267. package/public/styles.css +188 -346
  268. package/public/workbench.css +166 -0
  269. package/server/apiAuth.d.ts +3 -0
  270. package/server/apiAuth.js +18 -20
  271. package/server/apiAuth.js.map +1 -0
  272. package/server/apiDiff.d.ts +2 -0
  273. package/server/apiDiff.js +20 -18
  274. package/server/apiDiff.js.map +1 -0
  275. package/server/apiDocs.d.ts +2 -0
  276. package/server/apiDocs.js +38 -40
  277. package/server/apiDocs.js.map +1 -0
  278. package/server/apiFile.d.ts +1 -0
  279. package/server/apiFile.js +14 -17
  280. package/server/apiFile.js.map +1 -0
  281. package/server/apiGitBlame.d.ts +2 -0
  282. package/server/apiGitBlame.js +50 -51
  283. package/server/apiGitBlame.js.map +1 -0
  284. package/server/apiMcp.d.ts +4 -0
  285. package/server/apiMcp.js +64 -66
  286. package/server/apiMcp.js.map +1 -0
  287. package/server/apiReview.d.ts +2 -0
  288. package/server/apiReview.js +45 -0
  289. package/server/apiReview.js.map +1 -0
  290. package/server/apiScan.d.ts +5 -0
  291. package/server/apiScan.js +90 -71
  292. package/server/apiScan.js.map +1 -0
  293. package/server/apiSearch.d.ts +33 -0
  294. package/server/apiSearch.js +184 -200
  295. package/server/apiSearch.js.map +1 -0
  296. package/server/apiSettings.d.ts +4 -0
  297. package/server/apiSettings.js +84 -85
  298. package/server/apiSettings.js.map +1 -0
  299. package/server/apiTools.d.ts +3 -0
  300. package/server/apiTools.js +55 -56
  301. package/server/apiTools.js.map +1 -0
  302. package/server/auth.d.ts +5 -0
  303. package/server/auth.js +54 -51
  304. package/server/auth.js.map +1 -0
  305. package/server/config.d.ts +42 -0
  306. package/server/config.js +189 -194
  307. package/server/config.js.map +1 -0
  308. package/server/daemon.d.ts +12 -0
  309. package/server/daemon.js +124 -114
  310. package/server/daemon.js.map +1 -0
  311. package/server/fileSourceNode.d.ts +2 -0
  312. package/server/fileSourceNode.js +34 -36
  313. package/server/fileSourceNode.js.map +1 -0
  314. package/server/gitClone.d.ts +9 -0
  315. package/server/gitClone.js +59 -61
  316. package/server/gitClone.js.map +1 -0
  317. package/server/gitDiff.d.ts +36 -0
  318. package/server/gitDiff.js +271 -169
  319. package/server/gitDiff.js.map +1 -0
  320. package/server/gitHistory.d.ts +12 -0
  321. package/server/gitHistory.js +80 -80
  322. package/server/gitHistory.js.map +1 -0
  323. package/server/gitRemote.d.ts +12 -0
  324. package/server/gitRemote.js +37 -38
  325. package/server/gitRemote.js.map +1 -0
  326. package/server/hermesChat.d.ts +13 -0
  327. package/server/hermesChat.js +145 -0
  328. package/server/hermesChat.js.map +1 -0
  329. package/server/htmlText.d.ts +4 -0
  330. package/server/htmlText.js +16 -23
  331. package/server/htmlText.js.map +1 -0
  332. package/server/http.d.ts +6 -0
  333. package/server/http.js +27 -34
  334. package/server/http.js.map +1 -0
  335. package/server/httpGuards.d.ts +2 -0
  336. package/server/httpGuards.js +47 -43
  337. package/server/httpGuards.js.map +1 -0
  338. package/server/https.d.ts +34 -0
  339. package/server/https.js +121 -111
  340. package/server/https.js.map +1 -0
  341. package/server/index.d.ts +40 -0
  342. package/server/index.js +139 -147
  343. package/server/index.js.map +1 -0
  344. package/server/layout.d.ts +26 -0
  345. package/server/layout.js +59 -64
  346. package/server/layout.js.map +1 -0
  347. package/server/llmProxy.d.ts +3 -0
  348. package/server/llmProxy.js +137 -135
  349. package/server/llmProxy.js.map +1 -0
  350. package/server/logger.d.ts +38 -0
  351. package/server/logger.js +198 -211
  352. package/server/logger.js.map +1 -0
  353. package/server/mcp/analysis.d.ts +29 -0
  354. package/server/mcp/analysis.js +99 -120
  355. package/server/mcp/analysis.js.map +1 -0
  356. package/server/mcp/http.d.ts +9 -0
  357. package/server/mcp/http.js +128 -137
  358. package/server/mcp/http.js.map +1 -0
  359. package/server/mcp/runner.d.ts +68 -0
  360. package/server/mcp/runner.js +208 -218
  361. package/server/mcp/runner.js.map +1 -0
  362. package/server/mcp/server.d.ts +29 -0
  363. package/server/mcp/server.js +167 -180
  364. package/server/mcp/server.js.map +1 -0
  365. package/server/mcp/standalone.d.ts +1 -0
  366. package/server/mcp/standalone.js +8 -10
  367. package/server/mcp/standalone.js.map +1 -0
  368. package/server/mcp/tools.d.ts +2020 -0
  369. package/server/mcp/tools.js +523 -574
  370. package/server/mcp/tools.js.map +1 -0
  371. package/server/paths.d.ts +3 -0
  372. package/server/paths.js +17 -15
  373. package/server/paths.js.map +1 -0
  374. package/server/pidfile.d.ts +9 -0
  375. package/server/pidfile.js +43 -45
  376. package/server/pidfile.js.map +1 -0
  377. package/server/review.d.ts +5 -0
  378. package/server/review.js +35 -0
  379. package/server/review.js.map +1 -0
  380. package/server/router.d.ts +33 -0
  381. package/server/router.js +195 -197
  382. package/server/router.js.map +1 -0
  383. package/server/scanRequest.d.ts +3 -0
  384. package/server/scanRequest.js +36 -0
  385. package/server/scanRequest.js.map +1 -0
  386. package/server/searchIndex.d.ts +17 -0
  387. package/server/searchIndex.js +83 -80
  388. package/server/searchIndex.js.map +1 -0
  389. package/server/sessions.d.ts +14 -0
  390. package/server/sessions.js +62 -70
  391. package/server/sessions.js.map +1 -0
  392. package/server/startup.d.ts +118 -0
  393. package/server/startup.js +143 -148
  394. package/server/startup.js.map +1 -0
  395. package/server/static.d.ts +6 -0
  396. package/server/static.js +28 -31
  397. package/server/static.js.map +1 -0
  398. package/server/tools/install.d.ts +4 -0
  399. package/server/tools/install.js +176 -185
  400. package/server/tools/install.js.map +1 -0
  401. package/server/tools/parse.d.ts +8 -0
  402. package/server/tools/parse.js +112 -114
  403. package/server/tools/parse.js.map +1 -0
  404. package/server/tools/platform.d.ts +9 -0
  405. package/server/tools/platform.js +49 -47
  406. package/server/tools/platform.js.map +1 -0
  407. package/server/tools/registry.d.ts +137 -0
  408. package/server/tools/registry.js +173 -172
  409. package/server/tools/registry.js.map +1 -0
  410. package/server/tools/scan.d.ts +34 -0
  411. package/server/tools/scan.js +89 -98
  412. package/server/tools/scan.js.map +1 -0
  413. package/server/tools.d.ts +34 -0
  414. package/server/tools.js +94 -107
  415. package/server/tools.js.map +1 -0
  416. package/server/tunnel.d.ts +29 -0
  417. package/server/tunnel.js +61 -66
  418. package/server/tunnel.js.map +1 -0
  419. package/shared/analyzer/docs.d.ts +16 -0
  420. package/shared/analyzer/docs.js +99 -93
  421. package/shared/analyzer/docs.js.map +1 -0
  422. package/shared/analyzer/explainLocal.d.ts +4 -0
  423. package/shared/analyzer/explainLocal.js +122 -142
  424. package/shared/analyzer/explainLocal.js.map +1 -0
  425. package/shared/analyzer/github.d.ts +37 -0
  426. package/shared/analyzer/github.js +41 -43
  427. package/shared/analyzer/github.js.map +1 -0
  428. package/shared/analyzer/graph.d.ts +41 -0
  429. package/shared/analyzer/graph.js +393 -400
  430. package/shared/analyzer/graph.js.map +1 -0
  431. package/shared/analyzer/health.d.ts +33 -0
  432. package/shared/analyzer/health.js +197 -193
  433. package/shared/analyzer/health.js.map +1 -0
  434. package/shared/analyzer/history.d.ts +29 -0
  435. package/shared/analyzer/history.js +110 -111
  436. package/shared/analyzer/history.js.map +1 -0
  437. package/shared/analyzer/jsonConfig.d.ts +2 -0
  438. package/shared/analyzer/jsonConfig.js +61 -0
  439. package/shared/analyzer/jsonConfig.js.map +1 -0
  440. package/shared/analyzer/languages/csharp.d.ts +26 -0
  441. package/shared/analyzer/languages/csharp.js +83 -88
  442. package/shared/analyzer/languages/csharp.js.map +1 -0
  443. package/shared/analyzer/languages/generic.d.ts +23 -0
  444. package/shared/analyzer/languages/generic.js +94 -105
  445. package/shared/analyzer/languages/generic.js.map +1 -0
  446. package/shared/analyzer/languages/go.d.ts +24 -0
  447. package/shared/analyzer/languages/go.js +45 -54
  448. package/shared/analyzer/languages/go.js.map +1 -0
  449. package/shared/analyzer/languages/index.d.ts +6 -0
  450. package/shared/analyzer/languages/index.js +19 -20
  451. package/shared/analyzer/languages/index.js.map +1 -0
  452. package/shared/analyzer/languages/java.d.ts +20 -0
  453. package/shared/analyzer/languages/java.js +73 -78
  454. package/shared/analyzer/languages/java.js.map +1 -0
  455. package/shared/analyzer/languages/javascript.d.ts +12 -0
  456. package/shared/analyzer/languages/javascript.js +258 -209
  457. package/shared/analyzer/languages/javascript.js.map +1 -0
  458. package/shared/analyzer/languages/python.d.ts +23 -0
  459. package/shared/analyzer/languages/python.js +92 -100
  460. package/shared/analyzer/languages/python.js.map +1 -0
  461. package/shared/analyzer/languages/rust.d.ts +17 -0
  462. package/shared/analyzer/languages/rust.js +96 -98
  463. package/shared/analyzer/languages/rust.js.map +1 -0
  464. package/shared/analyzer/languages/typescript.d.ts +11 -0
  465. package/shared/analyzer/languages/typescript.js +117 -116
  466. package/shared/analyzer/languages/typescript.js.map +1 -0
  467. package/shared/analyzer/licenses.d.ts +18 -0
  468. package/shared/analyzer/licenses.js +130 -133
  469. package/shared/analyzer/licenses.js.map +1 -0
  470. package/shared/analyzer/metrics.d.ts +20 -0
  471. package/shared/analyzer/metrics.js +112 -104
  472. package/shared/analyzer/metrics.js.map +1 -0
  473. package/shared/analyzer/pathUtil.d.ts +10 -0
  474. package/shared/analyzer/pathUtil.js +29 -35
  475. package/shared/analyzer/pathUtil.js.map +1 -0
  476. package/shared/analyzer/patterns.d.ts +11 -0
  477. package/shared/analyzer/patterns.js +231 -253
  478. package/shared/analyzer/patterns.js.map +1 -0
  479. package/shared/analyzer/scan.d.ts +62 -0
  480. package/shared/analyzer/scan.js +451 -442
  481. package/shared/analyzer/scan.js.map +1 -0
  482. package/shared/analyzer/scanControl.d.ts +11 -0
  483. package/shared/analyzer/scanControl.js +62 -0
  484. package/shared/analyzer/scanControl.js.map +1 -0
  485. package/shared/analyzer/security.d.ts +18 -0
  486. package/shared/analyzer/security.js +159 -159
  487. package/shared/analyzer/security.js.map +1 -0
  488. package/shared/analyzer/services.d.ts +5 -0
  489. package/shared/analyzer/services.js +141 -138
  490. package/shared/analyzer/services.js.map +1 -0
  491. package/shared/analyzer/stack.d.ts +6 -0
  492. package/shared/analyzer/stack.js +134 -141
  493. package/shared/analyzer/stack.js.map +1 -0
  494. package/shared/analyzer/tour.d.ts +2 -0
  495. package/shared/analyzer/tour.js +45 -53
  496. package/shared/analyzer/tour.js.map +1 -0
  497. package/shared/analyzer/util.d.ts +8 -0
  498. package/shared/analyzer/util.js +130 -76
  499. package/shared/analyzer/util.js.map +1 -0
  500. package/shared/analyzer/workflows.d.ts +8 -0
  501. package/shared/analyzer/workflows.js +139 -134
  502. package/shared/analyzer/workflows.js.map +1 -0
  503. package/shared/contracts.d.ts +250 -0
  504. package/shared/contracts.js +2 -0
  505. package/shared/contracts.js.map +1 -0
  506. package/shared/diagram/aiFacts.d.ts +35 -0
  507. package/shared/diagram/aiFacts.js +102 -105
  508. package/shared/diagram/aiFacts.js.map +1 -0
  509. package/shared/diagram/aiMermaid.d.ts +5 -0
  510. package/shared/diagram/aiMermaid.js +50 -46
  511. package/shared/diagram/aiMermaid.js.map +1 -0
  512. package/shared/diagram/atlas.d.ts +16 -0
  513. package/shared/diagram/atlas.js +51 -60
  514. package/shared/diagram/atlas.js.map +1 -0
  515. package/shared/diagram/mermaid.d.ts +43 -0
  516. package/shared/diagram/mermaid.js +348 -370
  517. package/shared/diagram/mermaid.js.map +1 -0
  518. package/shared/review/contracts.d.ts +95 -0
  519. package/shared/review/contracts.js +2 -0
  520. package/shared/review/contracts.js.map +1 -0
  521. package/shared/review/review.d.ts +10 -0
  522. package/shared/review/review.js +184 -0
  523. package/shared/review/review.js.map +1 -0
  524. package/shared/search/query.d.ts +32 -0
  525. package/shared/search/query.js +395 -388
  526. package/shared/search/query.js.map +1 -0
@@ -0,0 +1,32 @@
1
+ export declare const GEOMETRY: {
2
+ colW: number;
3
+ rowH: number;
4
+ cellW: number;
5
+ cellH: number;
6
+ pad: number;
7
+ maxFolderChildren: number;
8
+ maxNeighbors: number;
9
+ };
10
+ export declare function buildSpecs({ root, expanded, folderInfo, fileInfo, rootSummary }: {
11
+ expanded: any;
12
+ fileInfo: any;
13
+ folderInfo: any;
14
+ root: any;
15
+ rootSummary: any;
16
+ }): {
17
+ id: string;
18
+ kind: string;
19
+ name: any;
20
+ summary: any;
21
+ cls: any;
22
+ expandable: boolean;
23
+ nav: any;
24
+ kids: () => any[];
25
+ };
26
+ export declare function layoutMindMap(rootSpec: any, expanded: any): {
27
+ cells: any[];
28
+ edges: any[];
29
+ width: number;
30
+ height: number;
31
+ };
32
+ export declare function renderMindMap(container: any, layout: any, expanded: any, handlers: any): HTMLDivElement;
@@ -4,286 +4,271 @@
4
4
  // shrink. Every cell carries a one-line description. Layout is a small
5
5
  // tidy-tree: leaves get rows in order, parents center on their children.
6
6
  // Pure logic up front so it can be unit-tested without a DOM.
7
-
8
7
  export const GEOMETRY = {
9
- colW: 250,
10
- rowH: 58,
11
- cellW: 204,
12
- cellH: 46,
13
- pad: 10,
14
- maxFolderChildren: 30,
15
- maxNeighbors: 6,
8
+ colW: 250,
9
+ rowH: 58,
10
+ cellW: 204,
11
+ cellH: 46,
12
+ pad: 10,
13
+ maxFolderChildren: 30,
14
+ maxNeighbors: 6,
16
15
  };
17
-
18
16
  // Builds the root spec from the file tree. The app supplies the prose:
19
17
  // folderInfo(node) -> { summary, cls }
20
18
  // fileInfo(path) -> { summary, cls, parsed, neighbors: [{path, relation}] }
21
19
  // `expanded` is a Set of spec ids ('dir:…', 'file:…') currently open.
22
20
  export function buildSpecs({ root, expanded, folderInfo, fileInfo, rootSummary }) {
23
- const folderSpec = (node) => ({
24
- id: 'dir:' + node.path,
25
- kind: node.path ? 'folder' : 'root',
26
- name: node.path ? node.name + '/' : rootSummary.name,
27
- summary: node.path ? folderInfo(node).summary : rootSummary.summary,
28
- cls: node.path ? folderInfo(node).cls || '' : 'is-root',
29
- expandable: true,
30
- nav: node.path || null,
31
- kids: () => folderKids(node),
32
- });
33
-
34
- const folderKids = (node) => {
35
- const dirs = [...node.dirs.values()]
36
- .sort((a, b) => a.name.localeCompare(b.name))
37
- .map(folderSpec);
38
- const files = node.files.slice().sort().map(fileSpec);
39
- const shown = files.slice(0, GEOMETRY.maxFolderChildren);
40
- const hidden = files.length - shown.length;
41
- const more = hidden > 0
42
- ? [{
43
- id: 'more:' + node.path,
44
- kind: 'more',
45
- name: '+ ' + hidden + ' more',
46
- summary: 'see them in Files view',
47
- cls: 'is-ghost',
48
- expandable: false,
49
- navFolder: node.path,
50
- kids: null,
51
- }]
52
- : [];
53
- return [...dirs, ...shown, ...more];
54
- };
55
-
56
- const fileSpec = (path) => {
57
- const info = fileInfo(path);
58
- const name = path.split('/').pop();
59
- if (!info.parsed) {
60
- return {
61
- id: 'file:' + path,
62
- kind: 'file',
63
- name,
64
- summary: info.summary,
65
- cls: 'is-plain',
66
- expandable: false,
67
- nav: path,
68
- kids: null,
69
- };
70
- }
71
- const neighbors = info.neighbors || [];
72
- return {
73
- id: 'file:' + path,
74
- kind: 'file',
75
- name,
76
- summary: info.summary,
77
- cls: info.cls || '',
78
- expandable: neighbors.length > 0,
79
- nav: path,
80
- kids: () => {
81
- const shown = neighbors.slice(0, GEOMETRY.maxNeighbors);
82
- const hidden = neighbors.length - shown.length;
83
- const specs = shown.map((n) => ({
84
- id: 'g:' + path + ':' + n.path,
85
- kind: 'ghost',
86
- name: n.path.split('/').pop(),
87
- summary: `${n.relation} · ${dirPart(n.path)}`,
88
- cls: 'is-ghost',
89
- expandable: false,
90
- nav: n.path,
91
- kids: null,
92
- }));
93
- if (hidden > 0) {
94
- specs.push({
95
- id: 'gmore:' + path,
96
- kind: 'more',
97
- name: '+ ' + hidden + ' more',
98
- summary: 'open the deep-dive',
99
- cls: 'is-ghost',
100
- expandable: false,
101
- nav: path,
102
- kids: null,
103
- });
21
+ const folderSpec = (node) => ({
22
+ id: 'dir:' + node.path,
23
+ kind: node.path ? 'folder' : 'root',
24
+ name: node.path ? node.name + '/' : rootSummary.name,
25
+ summary: node.path ? folderInfo(node).summary : rootSummary.summary,
26
+ cls: node.path ? folderInfo(node).cls || '' : 'is-root',
27
+ expandable: true,
28
+ nav: node.path || null,
29
+ kids: () => folderKids(node),
30
+ });
31
+ const folderKids = (node) => {
32
+ const dirs = [...node.dirs.values()]
33
+ .sort((a, b) => a.name.localeCompare(b.name))
34
+ .map(folderSpec);
35
+ const files = node.files.slice().sort().map(fileSpec);
36
+ const shown = files.slice(0, GEOMETRY.maxFolderChildren);
37
+ const hidden = files.length - shown.length;
38
+ const more = hidden > 0
39
+ ? [{
40
+ id: 'more:' + node.path,
41
+ kind: 'more',
42
+ name: '+ ' + hidden + ' more',
43
+ summary: 'see them in Files view',
44
+ cls: 'is-ghost',
45
+ expandable: false,
46
+ navFolder: node.path,
47
+ kids: null,
48
+ }]
49
+ : [];
50
+ return [...dirs, ...shown, ...more];
51
+ };
52
+ const fileSpec = (path) => {
53
+ const info = fileInfo(path);
54
+ const name = path.split('/').pop();
55
+ if (!info.parsed) {
56
+ return {
57
+ id: 'file:' + path,
58
+ kind: 'file',
59
+ name,
60
+ summary: info.summary,
61
+ cls: 'is-plain',
62
+ expandable: false,
63
+ nav: path,
64
+ kids: null,
65
+ };
104
66
  }
105
- return specs;
106
- },
67
+ const neighbors = info.neighbors || [];
68
+ return {
69
+ id: 'file:' + path,
70
+ kind: 'file',
71
+ name,
72
+ summary: info.summary,
73
+ cls: info.cls || '',
74
+ expandable: neighbors.length > 0,
75
+ nav: path,
76
+ kids: () => {
77
+ const shown = neighbors.slice(0, GEOMETRY.maxNeighbors);
78
+ const hidden = neighbors.length - shown.length;
79
+ const specs = shown.map((n) => ({
80
+ id: 'g:' + path + ':' + n.path,
81
+ kind: 'ghost',
82
+ name: n.path.split('/').pop(),
83
+ summary: `${n.relation} · ${dirPart(n.path)}`,
84
+ cls: 'is-ghost',
85
+ expandable: false,
86
+ nav: n.path,
87
+ kids: null,
88
+ }));
89
+ if (hidden > 0) {
90
+ specs.push({
91
+ id: 'gmore:' + path,
92
+ kind: 'more',
93
+ name: '+ ' + hidden + ' more',
94
+ summary: 'open the deep-dive',
95
+ cls: 'is-ghost',
96
+ expandable: false,
97
+ nav: path,
98
+ kids: null,
99
+ });
100
+ }
101
+ return specs;
102
+ },
103
+ };
107
104
  };
108
- };
109
-
110
- return folderSpec(root);
105
+ return folderSpec(root);
111
106
  }
112
-
113
107
  // Lays out the visible cells. Returns flat cell + edge lists with absolute
114
108
  // coordinates, plus the total size of the drawing.
115
109
  export function layoutMindMap(rootSpec, expanded) {
116
- const cells = [];
117
- const edges = [];
118
- let nextRow = 0;
119
- let maxDepth = 0;
120
- const G = GEOMETRY;
121
-
122
- const walk = (spec, depth) => {
123
- const cell = {
124
- id: spec.id,
125
- kind: spec.kind,
126
- name: spec.name,
127
- summary: spec.summary,
128
- cls: spec.cls,
129
- expandable: spec.expandable,
130
- nav: spec.nav ?? null,
131
- navFolder: spec.navFolder ?? null,
132
- depth,
133
- x: G.pad + depth * G.colW,
134
- w: G.cellW,
135
- h: G.cellH,
110
+ const cells = [];
111
+ const edges = [];
112
+ let nextRow = 0;
113
+ let maxDepth = 0;
114
+ const G = GEOMETRY;
115
+ const walk = (spec, depth) => {
116
+ const cell = {
117
+ id: spec.id,
118
+ kind: spec.kind,
119
+ name: spec.name,
120
+ summary: spec.summary,
121
+ cls: spec.cls,
122
+ expandable: spec.expandable,
123
+ nav: spec.nav ?? null,
124
+ navFolder: spec.navFolder ?? null,
125
+ depth,
126
+ x: G.pad + depth * G.colW,
127
+ w: G.cellW,
128
+ h: G.cellH,
129
+ row: 0,
130
+ y: 0,
131
+ };
132
+ cells.push(cell);
133
+ maxDepth = Math.max(maxDepth, depth);
134
+ const open = spec.expandable && expanded.has(spec.id);
135
+ const kidSpecs = open && spec.kids ? spec.kids() : [];
136
+ const kidCells = kidSpecs.map((k) => {
137
+ const kc = walk(k, depth + 1);
138
+ edges.push({ from: cell, to: kc, dashed: k.kind === 'ghost' || k.kind === 'more' });
139
+ return kc;
140
+ });
141
+ cell.row = kidCells.length
142
+ ? (kidCells[0].row + kidCells[kidCells.length - 1].row) / 2
143
+ : nextRow++;
144
+ cell.y = G.pad + cell.row * G.rowH;
145
+ return cell;
146
+ };
147
+ walk(rootSpec, 0);
148
+ return {
149
+ cells,
150
+ edges,
151
+ width: G.pad * 2 + (maxDepth + 1) * G.colW,
152
+ height: G.pad * 2 + nextRow * G.rowH,
136
153
  };
137
- cells.push(cell);
138
- maxDepth = Math.max(maxDepth, depth);
139
-
140
- const open = spec.expandable && expanded.has(spec.id);
141
- const kidSpecs = open && spec.kids ? spec.kids() : [];
142
- const kidCells = kidSpecs.map((k) => {
143
- const kc = walk(k, depth + 1);
144
- edges.push({ from: cell, to: kc, dashed: k.kind === 'ghost' || k.kind === 'more' });
145
- return kc;
146
- });
147
- cell.row = kidCells.length
148
- ? (kidCells[0].row + kidCells[kidCells.length - 1].row) / 2
149
- : nextRow++;
150
- cell.y = G.pad + cell.row * G.rowH;
151
- return cell;
152
- };
153
-
154
- walk(rootSpec, 0);
155
-
156
- return {
157
- cells,
158
- edges,
159
- width: G.pad * 2 + (maxDepth + 1) * G.colW,
160
- height: G.pad * 2 + nextRow * G.rowH,
161
- };
162
154
  }
163
155
  // Draws the layout into the canvas: SVG elbow edges underneath, HTML cells
164
156
  // on top (better text handling and click targets than SVG text).
165
157
  // handlers: onToggle(cell) for real cells, onNavigate(cell) for ghosts.
166
158
  export function renderMindMap(container, layout, expanded, handlers) {
167
- container.innerHTML = '';
168
-
169
- const wrap = document.createElement('div');
170
- wrap.className = 'mm';
171
- wrap.style.width = layout.width + 'px';
172
- wrap.style.height = layout.height + 'px';
173
-
174
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
175
- svg.setAttribute('class', 'mm-svg');
176
- svg.setAttribute('width', layout.width);
177
- svg.setAttribute('height', layout.height);
178
-
179
- const edgePaths = new Map(); // edge -> svgPath
180
- const cellElements = new Map(); // cellId -> domElement
181
- const parentMap = new Map(); // cell -> { parentCell, edge }
182
- const childMap = new Map(); // cell -> Array<{ childCell, edge }>
183
-
184
- for (const edge of layout.edges) {
185
- const x1 = edge.from.x + edge.from.w;
186
- const y1 = edge.from.y + edge.from.h / 2;
187
- const x2 = edge.to.x;
188
- const y2 = edge.to.y + edge.to.h / 2;
189
- const bend = Math.max(30, (x2 - x1) / 2);
190
- const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
191
- path.setAttribute('d', `M ${x1} ${y1} C ${x1 + bend} ${y1}, ${x2 - bend} ${y2}, ${x2} ${y2}`);
192
- path.setAttribute('class', 'mm-edge' + (edge.dashed ? ' is-dashed' : ''));
193
- svg.appendChild(path);
194
- edgePaths.set(edge, path);
195
-
196
- parentMap.set(edge.to, { parentCell: edge.from, edge });
197
- if (!childMap.has(edge.from)) childMap.set(edge.from, []);
198
- childMap.get(edge.from).push({ childCell: edge.to, edge });
199
- }
200
- wrap.appendChild(svg);
201
-
202
- for (const cell of layout.cells) {
203
- const el = document.createElement('div');
204
- el.className = 'mm-cell ' + (cell.cls || '') + ' kind-' + cell.kind;
205
- el.style.left = cell.x + 'px';
206
- el.style.top = cell.y + 'px';
207
- el.style.width = cell.w + 'px';
208
- el.style.minHeight = cell.h + 'px';
209
- cellElements.set(cell.id, el);
210
-
211
- const head = document.createElement('div');
212
- head.className = 'mm-head';
213
- if (cell.expandable) {
214
- const caret = document.createElement('span');
215
- caret.className = 'mm-caret';
216
- caret.textContent = expanded.has(cell.id) ? '▾' : '▸';
217
- head.appendChild(caret);
159
+ container.innerHTML = '';
160
+ const wrap = document.createElement('div');
161
+ wrap.className = 'mm';
162
+ wrap.style.width = layout.width + 'px';
163
+ wrap.style.height = layout.height + 'px';
164
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
165
+ svg.setAttribute('class', 'mm-svg');
166
+ svg.setAttribute('width', layout.width);
167
+ svg.setAttribute('height', layout.height);
168
+ const edgePaths = new Map(); // edge -> svgPath
169
+ const cellElements = new Map(); // cellId -> domElement
170
+ const parentMap = new Map(); // cell -> { parentCell, edge }
171
+ const childMap = new Map(); // cell -> Array<{ childCell, edge }>
172
+ for (const edge of layout.edges) {
173
+ const x1 = edge.from.x + edge.from.w;
174
+ const y1 = edge.from.y + edge.from.h / 2;
175
+ const x2 = edge.to.x;
176
+ const y2 = edge.to.y + edge.to.h / 2;
177
+ const bend = Math.max(30, (x2 - x1) / 2);
178
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
179
+ path.setAttribute('d', `M ${x1} ${y1} C ${x1 + bend} ${y1}, ${x2 - bend} ${y2}, ${x2} ${y2}`);
180
+ path.setAttribute('class', 'mm-edge' + (edge.dashed ? ' is-dashed' : ''));
181
+ svg.appendChild(path);
182
+ edgePaths.set(edge, path);
183
+ parentMap.set(edge.to, { parentCell: edge.from, edge });
184
+ if (!childMap.has(edge.from))
185
+ childMap.set(edge.from, []);
186
+ childMap.get(edge.from).push({ childCell: edge.to, edge });
218
187
  }
219
- const name = document.createElement('span');
220
- name.className = 'mm-name';
221
- name.textContent = cell.name;
222
- name.title = cell.nav || cell.name;
223
- head.appendChild(name);
224
- el.appendChild(head);
225
-
226
- if (cell.summary) {
227
- const sum = document.createElement('div');
228
- sum.className = 'mm-sum';
229
- sum.textContent = cell.summary;
230
- el.appendChild(sum);
188
+ wrap.appendChild(svg);
189
+ for (const cell of layout.cells) {
190
+ const el = document.createElement('div');
191
+ el.className = 'mm-cell ' + (cell.cls || '') + ' kind-' + cell.kind;
192
+ el.style.left = cell.x + 'px';
193
+ el.style.top = cell.y + 'px';
194
+ el.style.width = cell.w + 'px';
195
+ el.style.minHeight = cell.h + 'px';
196
+ cellElements.set(cell.id, el);
197
+ const head = document.createElement('div');
198
+ head.className = 'mm-head';
199
+ if (cell.expandable) {
200
+ const caret = document.createElement('span');
201
+ caret.className = 'mm-caret';
202
+ caret.textContent = expanded.has(cell.id) ? '▾' : '▸';
203
+ head.appendChild(caret);
204
+ }
205
+ const name = document.createElement('span');
206
+ name.className = 'mm-name';
207
+ name.textContent = cell.name;
208
+ name.title = cell.nav || cell.name;
209
+ head.appendChild(name);
210
+ el.appendChild(head);
211
+ if (cell.summary) {
212
+ const sum = document.createElement('div');
213
+ sum.className = 'mm-sum';
214
+ sum.textContent = cell.summary;
215
+ el.appendChild(sum);
216
+ }
217
+ // Branch hover highlighting
218
+ el.addEventListener('mouseenter', () => {
219
+ wrap.classList.add('has-hover');
220
+ el.classList.add('is-active-branch');
221
+ // Trace ancestors up to root
222
+ let cur = cell;
223
+ while (parentMap.has(cur)) {
224
+ const { parentCell, edge } = parentMap.get(cur);
225
+ const edgePath = edgePaths.get(edge);
226
+ if (edgePath)
227
+ edgePath.classList.add('is-active');
228
+ const pEl = cellElements.get(parentCell.id);
229
+ if (pEl)
230
+ pEl.classList.add('is-active-branch');
231
+ cur = parentCell;
232
+ }
233
+ // Trace direct children
234
+ const kids = childMap.get(cell) || [];
235
+ for (const { childCell, edge } of kids) {
236
+ const edgePath = edgePaths.get(edge);
237
+ if (edgePath)
238
+ edgePath.classList.add('is-active');
239
+ const cEl = cellElements.get(childCell.id);
240
+ if (cEl)
241
+ cEl.classList.add('is-active-branch');
242
+ }
243
+ });
244
+ el.addEventListener('mouseleave', () => {
245
+ wrap.classList.remove('has-hover');
246
+ for (const edgePath of edgePaths.values()) {
247
+ edgePath.classList.remove('is-active');
248
+ }
249
+ for (const cellEl of cellElements.values()) {
250
+ cellEl.classList.remove('is-active-branch');
251
+ }
252
+ });
253
+ el.addEventListener('click', (event) => {
254
+ event.stopPropagation();
255
+ if (cell.kind === 'ghost' || cell.kind === 'more') {
256
+ handlers.onNavigate(cell);
257
+ }
258
+ else if (cell.expandable) {
259
+ handlers.onToggle(cell);
260
+ }
261
+ else {
262
+ handlers.onNavigate(cell);
263
+ }
264
+ });
265
+ wrap.appendChild(el);
231
266
  }
232
-
233
- // Branch hover highlighting
234
- el.addEventListener('mouseenter', () => {
235
- wrap.classList.add('has-hover');
236
- el.classList.add('is-active-branch');
237
-
238
- // Trace ancestors up to root
239
- let cur = cell;
240
- while (parentMap.has(cur)) {
241
- const { parentCell, edge } = parentMap.get(cur);
242
- const edgePath = edgePaths.get(edge);
243
- if (edgePath) edgePath.classList.add('is-active');
244
- const pEl = cellElements.get(parentCell.id);
245
- if (pEl) pEl.classList.add('is-active-branch');
246
- cur = parentCell;
247
- }
248
-
249
- // Trace direct children
250
- const kids = childMap.get(cell) || [];
251
- for (const { childCell, edge } of kids) {
252
- const edgePath = edgePaths.get(edge);
253
- if (edgePath) edgePath.classList.add('is-active');
254
- const cEl = cellElements.get(childCell.id);
255
- if (cEl) cEl.classList.add('is-active-branch');
256
- }
257
- });
258
-
259
- el.addEventListener('mouseleave', () => {
260
- wrap.classList.remove('has-hover');
261
- for (const edgePath of edgePaths.values()) {
262
- edgePath.classList.remove('is-active');
263
- }
264
- for (const cellEl of cellElements.values()) {
265
- cellEl.classList.remove('is-active-branch');
266
- }
267
- });
268
-
269
- el.addEventListener('click', (event) => {
270
- event.stopPropagation();
271
- if (cell.kind === 'ghost' || cell.kind === 'more') {
272
- handlers.onNavigate(cell);
273
- } else if (cell.expandable) {
274
- handlers.onToggle(cell);
275
- } else {
276
- handlers.onNavigate(cell);
277
- }
278
- });
279
- wrap.appendChild(el);
280
- }
281
-
282
- container.appendChild(wrap);
283
- return wrap;
267
+ container.appendChild(wrap);
268
+ return wrap;
284
269
  }
285
-
286
270
  function dirPart(path) {
287
- const i = path.lastIndexOf('/');
288
- return i === -1 ? '(root)' : path.slice(0, i);
271
+ const i = path.lastIndexOf('/');
272
+ return i === -1 ? '(root)' : path.slice(0, i);
289
273
  }
274
+ //# sourceMappingURL=mindmap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindmap.js","sourceRoot":"","sources":["../../src/public/js/mindmap.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,sEAAsE;AACtE,uEAAuE;AACvE,yEAAyE;AACzE,8DAA8D;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,uEAAuE;AACvE,yCAAyC;AACzC,gFAAgF;AAChF,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;IAC9E,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACnC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI;QACpD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO;QACnE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACvD,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,CAAC,UAAU,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC;YACrB,CAAC,CAAC,CAAC;oBACC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI;oBACvB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO;oBAC7B,OAAO,EAAE,wBAAwB;oBACjC,GAAG,EAAE,UAAU;oBACf,UAAU,EAAE,KAAK;oBACjB,SAAS,EAAE,IAAI,CAAC,IAAI;oBACpB,IAAI,EAAE,IAAI;iBACX,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,EAAE,EAAE,OAAO,GAAG,IAAI;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,EAAE,UAAU;gBACf,UAAU,EAAE,KAAK;gBACjB,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,OAAO;YACL,EAAE,EAAE,OAAO,GAAG,IAAI;YAClB,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACnB,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC;YAChC,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI;oBAC9B,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;oBAC7B,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBAC7C,GAAG,EAAE,UAAU;oBACf,UAAU,EAAE,KAAK;oBACjB,GAAG,EAAE,CAAC,CAAC,IAAI;oBACX,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC,CAAC;gBACJ,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC;wBACT,EAAE,EAAE,QAAQ,GAAG,IAAI;wBACnB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO;wBAC7B,OAAO,EAAE,oBAAoB;wBAC7B,GAAG,EAAE,UAAU;wBACf,UAAU,EAAE,KAAK;wBACjB,GAAG,EAAE,IAAI;wBACT,IAAI,EAAE,IAAI;qBACX,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,QAAQ,EAAE,QAAQ;IAC9C,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,QAAQ,CAAC;IAEnB,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,KAAK;YACL,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI;YACzB,CAAC,EAAE,CAAC,CAAC,KAAK;YACV,CAAC,EAAE,CAAC,CAAC,KAAK;YACV,GAAG,EAAE,CAAC;YACN,CAAC,EAAE,CAAC;SACL,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;YACpF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM;YACxB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAC3D,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAElB,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;QAC1C,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI;KACrC,CAAC;AACJ,CAAC;AACD,2EAA2E;AAC3E,iEAAiE;AACjE,wEAAwE;AACxE,MAAM,UAAU,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IACjE,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAEzC,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC1E,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,kBAAkB;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,uBAAuB;IACvD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,+BAA+B;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAEjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,EAAE,CAAC,SAAS,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACpE,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACnC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAE9B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;YAC7B,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;YACzB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;YAC/B,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,4BAA4B;QAC5B,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAErC,6BAA6B;YAC7B,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAI,GAAG;oBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC/C,GAAG,GAAG,UAAU,CAAC;YACnB,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,GAAG;oBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1C,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,IAAI;IACnB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC","sourcesContent":["// The Map view: the whole repository as a left-to-right tree of cells.\n// Folders expand into their contents; files expand into the cells they are\n// connected to (what they pull in, who leans on them); click again to\n// shrink. Every cell carries a one-line description. Layout is a small\n// tidy-tree: leaves get rows in order, parents center on their children.\n// Pure logic up front so it can be unit-tested without a DOM.\n\nexport const GEOMETRY = {\n colW: 250,\n rowH: 58,\n cellW: 204,\n cellH: 46,\n pad: 10,\n maxFolderChildren: 30,\n maxNeighbors: 6,\n};\n\n// Builds the root spec from the file tree. The app supplies the prose:\n// folderInfo(node) -> { summary, cls }\n// fileInfo(path) -> { summary, cls, parsed, neighbors: [{path, relation}] }\n// `expanded` is a Set of spec ids ('dir:…', 'file:…') currently open.\nexport function buildSpecs({ root, expanded, folderInfo, fileInfo, rootSummary }) {\n const folderSpec = (node) => ({\n id: 'dir:' + node.path,\n kind: node.path ? 'folder' : 'root',\n name: node.path ? node.name + '/' : rootSummary.name,\n summary: node.path ? folderInfo(node).summary : rootSummary.summary,\n cls: node.path ? folderInfo(node).cls || '' : 'is-root',\n expandable: true,\n nav: node.path || null,\n kids: () => folderKids(node),\n });\n\n const folderKids = (node) => {\n const dirs = [...node.dirs.values()]\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(folderSpec);\n const files = node.files.slice().sort().map(fileSpec);\n const shown = files.slice(0, GEOMETRY.maxFolderChildren);\n const hidden = files.length - shown.length;\n const more = hidden > 0\n ? [{\n id: 'more:' + node.path,\n kind: 'more',\n name: '+ ' + hidden + ' more',\n summary: 'see them in Files view',\n cls: 'is-ghost',\n expandable: false,\n navFolder: node.path,\n kids: null,\n }]\n : [];\n return [...dirs, ...shown, ...more];\n };\n\n const fileSpec = (path) => {\n const info = fileInfo(path);\n const name = path.split('/').pop();\n if (!info.parsed) {\n return {\n id: 'file:' + path,\n kind: 'file',\n name,\n summary: info.summary,\n cls: 'is-plain',\n expandable: false,\n nav: path,\n kids: null,\n };\n }\n const neighbors = info.neighbors || [];\n return {\n id: 'file:' + path,\n kind: 'file',\n name,\n summary: info.summary,\n cls: info.cls || '',\n expandable: neighbors.length > 0,\n nav: path,\n kids: () => {\n const shown = neighbors.slice(0, GEOMETRY.maxNeighbors);\n const hidden = neighbors.length - shown.length;\n const specs = shown.map((n) => ({\n id: 'g:' + path + ':' + n.path,\n kind: 'ghost',\n name: n.path.split('/').pop(),\n summary: `${n.relation} · ${dirPart(n.path)}`,\n cls: 'is-ghost',\n expandable: false,\n nav: n.path,\n kids: null,\n }));\n if (hidden > 0) {\n specs.push({\n id: 'gmore:' + path,\n kind: 'more',\n name: '+ ' + hidden + ' more',\n summary: 'open the deep-dive',\n cls: 'is-ghost',\n expandable: false,\n nav: path,\n kids: null,\n });\n }\n return specs;\n },\n };\n };\n\n return folderSpec(root);\n}\n\n// Lays out the visible cells. Returns flat cell + edge lists with absolute\n// coordinates, plus the total size of the drawing.\nexport function layoutMindMap(rootSpec, expanded) {\n const cells = [];\n const edges = [];\n let nextRow = 0;\n let maxDepth = 0;\n const G = GEOMETRY;\n\n const walk = (spec, depth) => {\n const cell = {\n id: spec.id,\n kind: spec.kind,\n name: spec.name,\n summary: spec.summary,\n cls: spec.cls,\n expandable: spec.expandable,\n nav: spec.nav ?? null,\n navFolder: spec.navFolder ?? null,\n depth,\n x: G.pad + depth * G.colW,\n w: G.cellW,\n h: G.cellH,\n row: 0,\n y: 0,\n };\n cells.push(cell);\n maxDepth = Math.max(maxDepth, depth);\n\n const open = spec.expandable && expanded.has(spec.id);\n const kidSpecs = open && spec.kids ? spec.kids() : [];\n const kidCells = kidSpecs.map((k) => {\n const kc = walk(k, depth + 1);\n edges.push({ from: cell, to: kc, dashed: k.kind === 'ghost' || k.kind === 'more' });\n return kc;\n });\n cell.row = kidCells.length\n ? (kidCells[0].row + kidCells[kidCells.length - 1].row) / 2\n : nextRow++;\n cell.y = G.pad + cell.row * G.rowH;\n return cell;\n };\n\n walk(rootSpec, 0);\n\n return {\n cells,\n edges,\n width: G.pad * 2 + (maxDepth + 1) * G.colW,\n height: G.pad * 2 + nextRow * G.rowH,\n };\n}\n// Draws the layout into the canvas: SVG elbow edges underneath, HTML cells\n// on top (better text handling and click targets than SVG text).\n// handlers: onToggle(cell) for real cells, onNavigate(cell) for ghosts.\nexport function renderMindMap(container, layout, expanded, handlers) {\n container.innerHTML = '';\n\n const wrap = document.createElement('div');\n wrap.className = 'mm';\n wrap.style.width = layout.width + 'px';\n wrap.style.height = layout.height + 'px';\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('class', 'mm-svg');\n svg.setAttribute('width', layout.width);\n svg.setAttribute('height', layout.height);\n\n const edgePaths = new Map(); // edge -> svgPath\n const cellElements = new Map(); // cellId -> domElement\n const parentMap = new Map(); // cell -> { parentCell, edge }\n const childMap = new Map(); // cell -> Array<{ childCell, edge }>\n\n for (const edge of layout.edges) {\n const x1 = edge.from.x + edge.from.w;\n const y1 = edge.from.y + edge.from.h / 2;\n const x2 = edge.to.x;\n const y2 = edge.to.y + edge.to.h / 2;\n const bend = Math.max(30, (x2 - x1) / 2);\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', `M ${x1} ${y1} C ${x1 + bend} ${y1}, ${x2 - bend} ${y2}, ${x2} ${y2}`);\n path.setAttribute('class', 'mm-edge' + (edge.dashed ? ' is-dashed' : ''));\n svg.appendChild(path);\n edgePaths.set(edge, path);\n\n parentMap.set(edge.to, { parentCell: edge.from, edge });\n if (!childMap.has(edge.from)) childMap.set(edge.from, []);\n childMap.get(edge.from).push({ childCell: edge.to, edge });\n }\n wrap.appendChild(svg);\n\n for (const cell of layout.cells) {\n const el = document.createElement('div');\n el.className = 'mm-cell ' + (cell.cls || '') + ' kind-' + cell.kind;\n el.style.left = cell.x + 'px';\n el.style.top = cell.y + 'px';\n el.style.width = cell.w + 'px';\n el.style.minHeight = cell.h + 'px';\n cellElements.set(cell.id, el);\n\n const head = document.createElement('div');\n head.className = 'mm-head';\n if (cell.expandable) {\n const caret = document.createElement('span');\n caret.className = 'mm-caret';\n caret.textContent = expanded.has(cell.id) ? '▾' : '▸';\n head.appendChild(caret);\n }\n const name = document.createElement('span');\n name.className = 'mm-name';\n name.textContent = cell.name;\n name.title = cell.nav || cell.name;\n head.appendChild(name);\n el.appendChild(head);\n\n if (cell.summary) {\n const sum = document.createElement('div');\n sum.className = 'mm-sum';\n sum.textContent = cell.summary;\n el.appendChild(sum);\n }\n\n // Branch hover highlighting\n el.addEventListener('mouseenter', () => {\n wrap.classList.add('has-hover');\n el.classList.add('is-active-branch');\n\n // Trace ancestors up to root\n let cur = cell;\n while (parentMap.has(cur)) {\n const { parentCell, edge } = parentMap.get(cur);\n const edgePath = edgePaths.get(edge);\n if (edgePath) edgePath.classList.add('is-active');\n const pEl = cellElements.get(parentCell.id);\n if (pEl) pEl.classList.add('is-active-branch');\n cur = parentCell;\n }\n\n // Trace direct children\n const kids = childMap.get(cell) || [];\n for (const { childCell, edge } of kids) {\n const edgePath = edgePaths.get(edge);\n if (edgePath) edgePath.classList.add('is-active');\n const cEl = cellElements.get(childCell.id);\n if (cEl) cEl.classList.add('is-active-branch');\n }\n });\n\n el.addEventListener('mouseleave', () => {\n wrap.classList.remove('has-hover');\n for (const edgePath of edgePaths.values()) {\n edgePath.classList.remove('is-active');\n }\n for (const cellEl of cellElements.values()) {\n cellEl.classList.remove('is-active-branch');\n }\n });\n\n el.addEventListener('click', (event) => {\n event.stopPropagation();\n if (cell.kind === 'ghost' || cell.kind === 'more') {\n handlers.onNavigate(cell);\n } else if (cell.expandable) {\n handlers.onToggle(cell);\n } else {\n handlers.onNavigate(cell);\n }\n });\n wrap.appendChild(el);\n }\n\n container.appendChild(wrap);\n return wrap;\n}\n\nfunction dirPart(path) {\n const i = path.lastIndexOf('/');\n return i === -1 ? '(root)' : path.slice(0, i);\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export interface MobilePanels {
2
+ close(): void;
3
+ }
4
+ /** Small screen file tree and inspector drawers, with one active panel at a time. */
5
+ export declare function initMobilePanels(): MobilePanels;