codebase-onboarder 0.5.0 → 0.7.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 (448) hide show
  1. package/README.md +196 -47
  2. package/bin/build-if-source.js +23 -0
  3. package/cli/commands.d.ts +26 -0
  4. package/cli/commands.js +836 -811
  5. package/cli/commands.js.map +1 -0
  6. package/cli/explorer/advanced.d.ts +14 -0
  7. package/cli/explorer/advanced.js +449 -0
  8. package/cli/explorer/advanced.js.map +1 -0
  9. package/cli/explorer/app.d.ts +1 -0
  10. package/cli/explorer/app.js +396 -229
  11. package/cli/explorer/app.js.map +1 -0
  12. package/cli/explorer/assistant.d.ts +9 -0
  13. package/cli/explorer/assistant.js +58 -0
  14. package/cli/explorer/assistant.js.map +1 -0
  15. package/cli/explorer/commands.d.ts +17 -0
  16. package/cli/explorer/commands.js +400 -162
  17. package/cli/explorer/commands.js.map +1 -0
  18. package/cli/explorer/featureViews.d.ts +124 -0
  19. package/cli/explorer/featureViews.js +179 -0
  20. package/cli/explorer/featureViews.js.map +1 -0
  21. package/cli/explorer/github.d.ts +21 -0
  22. package/cli/explorer/github.js +73 -0
  23. package/cli/explorer/github.js.map +1 -0
  24. package/cli/explorer/graphs.d.ts +7 -0
  25. package/cli/explorer/graphs.js +173 -0
  26. package/cli/explorer/graphs.js.map +1 -0
  27. package/cli/explorer/picker.d.ts +22 -0
  28. package/cli/explorer/picker.js +150 -0
  29. package/cli/explorer/picker.js.map +1 -0
  30. package/cli/explorer/report.d.ts +85 -0
  31. package/cli/explorer/report.js +60 -0
  32. package/cli/explorer/report.js.map +1 -0
  33. package/cli/explorer/session.d.ts +449 -0
  34. package/cli/explorer/session.js +184 -95
  35. package/cli/explorer/session.js.map +1 -0
  36. package/cli/explorer/views.d.ts +19 -0
  37. package/cli/explorer/views.js +496 -412
  38. package/cli/explorer/views.js.map +1 -0
  39. package/cli/explorer/wrap.d.ts +1 -0
  40. package/cli/explorer/wrap.js +33 -0
  41. package/cli/explorer/wrap.js.map +1 -0
  42. package/cli/main.d.ts +1 -0
  43. package/cli/main.js +235 -138
  44. package/cli/main.js.map +1 -0
  45. package/cli/prompt.d.ts +5 -0
  46. package/cli/prompt.js +84 -80
  47. package/cli/prompt.js.map +1 -0
  48. package/cli/scanOptions.d.ts +2 -0
  49. package/cli/scanOptions.js +11 -0
  50. package/cli/scanOptions.js.map +1 -0
  51. package/cli/ui.d.ts +33 -0
  52. package/cli/ui.js +55 -35
  53. package/cli/ui.js.map +1 -0
  54. package/cli/wizard.d.ts +187 -0
  55. package/cli/wizard.js +304 -284
  56. package/cli/wizard.js.map +1 -0
  57. package/package.json +15 -4
  58. package/public/app.d.ts +1 -0
  59. package/public/app.js +1057 -1009
  60. package/public/app.js.map +1 -0
  61. package/public/browser.d.ts +68 -0
  62. package/public/browser.js +2 -0
  63. package/public/browser.js.map +1 -0
  64. package/public/index.html +30 -13
  65. package/public/js/about.d.ts +6 -0
  66. package/public/js/about.js +165 -172
  67. package/public/js/about.js.map +1 -0
  68. package/public/js/aiDraft.d.ts +3 -0
  69. package/public/js/aiDraft.js +116 -124
  70. package/public/js/aiDraft.js.map +1 -0
  71. package/public/js/analysisPanel.d.ts +7 -0
  72. package/public/js/analysisPanel.js +166 -166
  73. package/public/js/analysisPanel.js.map +1 -0
  74. package/public/js/analysisReport.d.ts +38 -0
  75. package/public/js/analysisReport.js +105 -110
  76. package/public/js/analysisReport.js.map +1 -0
  77. package/public/js/api.d.ts +26 -0
  78. package/public/js/api.js +176 -167
  79. package/public/js/api.js.map +1 -0
  80. package/public/js/atlas.d.ts +6 -0
  81. package/public/js/atlas.js +50 -58
  82. package/public/js/atlas.js.map +1 -0
  83. package/public/js/blameView.d.ts +2 -0
  84. package/public/js/blameView.js +36 -37
  85. package/public/js/blameView.js.map +1 -0
  86. package/public/js/codeTab.d.ts +3 -0
  87. package/public/js/codeTab.js +175 -180
  88. package/public/js/codeTab.js.map +1 -0
  89. package/public/js/codeViewer.d.ts +5 -0
  90. package/public/js/codeViewer.js +162 -150
  91. package/public/js/codeViewer.js.map +1 -0
  92. package/public/js/components/FileChip.d.ts +9 -0
  93. package/public/js/components/FileChip.js +45 -49
  94. package/public/js/components/FileChip.js.map +1 -0
  95. package/public/js/components/MetricSparkline.d.ts +7 -0
  96. package/public/js/components/MetricSparkline.js +35 -44
  97. package/public/js/components/MetricSparkline.js.map +1 -0
  98. package/public/js/components/RiskBadge.d.ts +9 -0
  99. package/public/js/components/RiskBadge.js +55 -63
  100. package/public/js/components/RiskBadge.js.map +1 -0
  101. package/public/js/deepAnalysisView.d.ts +99 -0
  102. package/public/js/deepAnalysisView.js +282 -302
  103. package/public/js/deepAnalysisView.js.map +1 -0
  104. package/public/js/diagramPane.d.ts +8 -0
  105. package/public/js/diagramPane.js +133 -135
  106. package/public/js/diagramPane.js.map +1 -0
  107. package/public/js/diffView.d.ts +6 -0
  108. package/public/js/diffView.js +222 -209
  109. package/public/js/diffView.js.map +1 -0
  110. package/public/js/docsView.d.ts +2 -0
  111. package/public/js/docsView.js +441 -442
  112. package/public/js/docsView.js.map +1 -0
  113. package/public/js/dom.d.ts +189 -0
  114. package/public/js/dom.js +5 -0
  115. package/public/js/dom.js.map +1 -0
  116. package/public/js/fileSourceBrowser.d.ts +5 -0
  117. package/public/js/fileSourceBrowser.js +33 -41
  118. package/public/js/fileSourceBrowser.js.map +1 -0
  119. package/public/js/flameGraph.d.ts +5 -0
  120. package/public/js/flameGraph.js +62 -72
  121. package/public/js/flameGraph.js.map +1 -0
  122. package/public/js/forceGraph.d.ts +10 -0
  123. package/public/js/forceGraph.js +581 -556
  124. package/public/js/forceGraph.js.map +1 -0
  125. package/public/js/heatmap.d.ts +4 -0
  126. package/public/js/heatmap.js +142 -164
  127. package/public/js/heatmap.js.map +1 -0
  128. package/public/js/highlight.d.ts +2 -0
  129. package/public/js/highlight.js +116 -107
  130. package/public/js/highlight.js.map +1 -0
  131. package/public/js/html.d.ts +2 -0
  132. package/public/js/html.js +14 -44
  133. package/public/js/html.js.map +1 -0
  134. package/public/js/insightsView.d.ts +5 -0
  135. package/public/js/insightsView.js +93 -111
  136. package/public/js/insightsView.js.map +1 -0
  137. package/public/js/inspector.d.ts +37 -0
  138. package/public/js/inspector.js +416 -445
  139. package/public/js/inspector.js.map +1 -0
  140. package/public/js/llm.d.ts +113 -0
  141. package/public/js/llm.js +233 -272
  142. package/public/js/llm.js.map +1 -0
  143. package/public/js/mapView.d.ts +3 -0
  144. package/public/js/mapView.js +121 -120
  145. package/public/js/mapView.js.map +1 -0
  146. package/public/js/markdown.d.ts +3 -0
  147. package/public/js/markdown.js +84 -91
  148. package/public/js/markdown.js.map +1 -0
  149. package/public/js/mindmap.d.ts +32 -0
  150. package/public/js/mindmap.js +244 -259
  151. package/public/js/mindmap.js.map +1 -0
  152. package/public/js/mobilePanels.d.ts +5 -0
  153. package/public/js/mobilePanels.js +50 -0
  154. package/public/js/mobilePanels.js.map +1 -0
  155. package/public/js/repoFiles.d.ts +12 -0
  156. package/public/js/repoFiles.js +28 -27
  157. package/public/js/repoFiles.js.map +1 -0
  158. package/public/js/reviewView.d.ts +28 -0
  159. package/public/js/reviewView.js +256 -0
  160. package/public/js/reviewView.js.map +1 -0
  161. package/public/js/sbomView.d.ts +3 -0
  162. package/public/js/sbomView.js +59 -67
  163. package/public/js/sbomView.js.map +1 -0
  164. package/public/js/scanCache.d.ts +16 -0
  165. package/public/js/scanCache.js +67 -65
  166. package/public/js/scanCache.js.map +1 -0
  167. package/public/js/search.d.ts +7 -0
  168. package/public/js/search.js +868 -800
  169. package/public/js/search.js.map +1 -0
  170. package/public/js/searchLocal.d.ts +42 -0
  171. package/public/js/searchLocal.js +87 -0
  172. package/public/js/searchLocal.js.map +1 -0
  173. package/public/js/serverSettings.d.ts +5 -0
  174. package/public/js/serverSettings.js +153 -164
  175. package/public/js/serverSettings.js.map +1 -0
  176. package/public/js/state.d.ts +798 -0
  177. package/public/js/state.js +114 -122
  178. package/public/js/state.js.map +1 -0
  179. package/public/js/tour.d.ts +6 -0
  180. package/public/js/tour.js +5 -7
  181. package/public/js/tour.js.map +1 -0
  182. package/public/js/transitions.d.ts +2 -0
  183. package/public/js/transitions.js +9 -10
  184. package/public/js/transitions.js.map +1 -0
  185. package/public/js/tree.d.ts +12 -0
  186. package/public/js/tree.js +157 -154
  187. package/public/js/tree.js.map +1 -0
  188. package/public/js/workflowsView.d.ts +3 -0
  189. package/public/js/workflowsView.js +15 -22
  190. package/public/js/workflowsView.js.map +1 -0
  191. package/public/search.css +495 -0
  192. package/public/styles.css +163 -346
  193. package/public/workbench.css +166 -0
  194. package/server/apiAuth.d.ts +3 -0
  195. package/server/apiAuth.js +18 -20
  196. package/server/apiAuth.js.map +1 -0
  197. package/server/apiDiff.d.ts +2 -0
  198. package/server/apiDiff.js +20 -18
  199. package/server/apiDiff.js.map +1 -0
  200. package/server/apiDocs.d.ts +2 -0
  201. package/server/apiDocs.js +38 -40
  202. package/server/apiDocs.js.map +1 -0
  203. package/server/apiFile.d.ts +1 -0
  204. package/server/apiFile.js +14 -17
  205. package/server/apiFile.js.map +1 -0
  206. package/server/apiGitBlame.d.ts +2 -0
  207. package/server/apiGitBlame.js +50 -51
  208. package/server/apiGitBlame.js.map +1 -0
  209. package/server/apiMcp.d.ts +4 -0
  210. package/server/apiMcp.js +64 -66
  211. package/server/apiMcp.js.map +1 -0
  212. package/server/apiReview.d.ts +2 -0
  213. package/server/apiReview.js +45 -0
  214. package/server/apiReview.js.map +1 -0
  215. package/server/apiScan.d.ts +5 -0
  216. package/server/apiScan.js +90 -71
  217. package/server/apiScan.js.map +1 -0
  218. package/server/apiSearch.d.ts +33 -0
  219. package/server/apiSearch.js +184 -200
  220. package/server/apiSearch.js.map +1 -0
  221. package/server/apiSettings.d.ts +4 -0
  222. package/server/apiSettings.js +84 -85
  223. package/server/apiSettings.js.map +1 -0
  224. package/server/apiTools.d.ts +3 -0
  225. package/server/apiTools.js +55 -56
  226. package/server/apiTools.js.map +1 -0
  227. package/server/auth.d.ts +5 -0
  228. package/server/auth.js +54 -51
  229. package/server/auth.js.map +1 -0
  230. package/server/config.d.ts +42 -0
  231. package/server/config.js +189 -194
  232. package/server/config.js.map +1 -0
  233. package/server/daemon.d.ts +12 -0
  234. package/server/daemon.js +124 -114
  235. package/server/daemon.js.map +1 -0
  236. package/server/fileSourceNode.d.ts +2 -0
  237. package/server/fileSourceNode.js +34 -36
  238. package/server/fileSourceNode.js.map +1 -0
  239. package/server/gitClone.d.ts +9 -0
  240. package/server/gitClone.js +59 -61
  241. package/server/gitClone.js.map +1 -0
  242. package/server/gitDiff.d.ts +36 -0
  243. package/server/gitDiff.js +271 -169
  244. package/server/gitDiff.js.map +1 -0
  245. package/server/gitHistory.d.ts +12 -0
  246. package/server/gitHistory.js +80 -80
  247. package/server/gitHistory.js.map +1 -0
  248. package/server/gitRemote.d.ts +12 -0
  249. package/server/gitRemote.js +60 -0
  250. package/server/gitRemote.js.map +1 -0
  251. package/server/htmlText.d.ts +4 -0
  252. package/server/htmlText.js +16 -23
  253. package/server/htmlText.js.map +1 -0
  254. package/server/http.d.ts +5 -0
  255. package/server/http.js +27 -30
  256. package/server/http.js.map +1 -0
  257. package/server/httpGuards.d.ts +2 -0
  258. package/server/httpGuards.js +47 -43
  259. package/server/httpGuards.js.map +1 -0
  260. package/server/https.d.ts +34 -0
  261. package/server/https.js +121 -111
  262. package/server/https.js.map +1 -0
  263. package/server/index.d.ts +40 -0
  264. package/server/index.js +139 -147
  265. package/server/index.js.map +1 -0
  266. package/server/layout.d.ts +26 -0
  267. package/server/layout.js +59 -37
  268. package/server/layout.js.map +1 -0
  269. package/server/llmProxy.d.ts +3 -0
  270. package/server/llmProxy.js +137 -135
  271. package/server/llmProxy.js.map +1 -0
  272. package/server/logger.d.ts +38 -0
  273. package/server/logger.js +198 -211
  274. package/server/logger.js.map +1 -0
  275. package/server/mcp/analysis.d.ts +29 -0
  276. package/server/mcp/analysis.js +99 -120
  277. package/server/mcp/analysis.js.map +1 -0
  278. package/server/mcp/http.d.ts +9 -0
  279. package/server/mcp/http.js +128 -137
  280. package/server/mcp/http.js.map +1 -0
  281. package/server/mcp/runner.d.ts +68 -0
  282. package/server/mcp/runner.js +208 -218
  283. package/server/mcp/runner.js.map +1 -0
  284. package/server/mcp/server.d.ts +29 -0
  285. package/server/mcp/server.js +166 -179
  286. package/server/mcp/server.js.map +1 -0
  287. package/server/mcp/standalone.d.ts +1 -0
  288. package/server/mcp/standalone.js +8 -10
  289. package/server/mcp/standalone.js.map +1 -0
  290. package/server/mcp/tools.d.ts +2020 -0
  291. package/server/mcp/tools.js +523 -574
  292. package/server/mcp/tools.js.map +1 -0
  293. package/server/paths.d.ts +3 -0
  294. package/server/paths.js +17 -15
  295. package/server/paths.js.map +1 -0
  296. package/server/pidfile.d.ts +9 -0
  297. package/server/pidfile.js +43 -45
  298. package/server/pidfile.js.map +1 -0
  299. package/server/review.d.ts +5 -0
  300. package/server/review.js +35 -0
  301. package/server/review.js.map +1 -0
  302. package/server/router.d.ts +33 -0
  303. package/server/router.js +191 -197
  304. package/server/router.js.map +1 -0
  305. package/server/scanRequest.d.ts +3 -0
  306. package/server/scanRequest.js +36 -0
  307. package/server/scanRequest.js.map +1 -0
  308. package/server/searchIndex.d.ts +17 -0
  309. package/server/searchIndex.js +83 -80
  310. package/server/searchIndex.js.map +1 -0
  311. package/server/sessions.d.ts +14 -0
  312. package/server/sessions.js +62 -70
  313. package/server/sessions.js.map +1 -0
  314. package/server/startup.d.ts +118 -0
  315. package/server/startup.js +143 -148
  316. package/server/startup.js.map +1 -0
  317. package/server/static.d.ts +6 -0
  318. package/server/static.js +28 -31
  319. package/server/static.js.map +1 -0
  320. package/server/tools/install.d.ts +4 -0
  321. package/server/tools/install.js +176 -185
  322. package/server/tools/install.js.map +1 -0
  323. package/server/tools/parse.d.ts +8 -0
  324. package/server/tools/parse.js +112 -114
  325. package/server/tools/parse.js.map +1 -0
  326. package/server/tools/platform.d.ts +9 -0
  327. package/server/tools/platform.js +49 -47
  328. package/server/tools/platform.js.map +1 -0
  329. package/server/tools/registry.d.ts +137 -0
  330. package/server/tools/registry.js +173 -172
  331. package/server/tools/registry.js.map +1 -0
  332. package/server/tools/scan.d.ts +34 -0
  333. package/server/tools/scan.js +89 -98
  334. package/server/tools/scan.js.map +1 -0
  335. package/server/tools.d.ts +34 -0
  336. package/server/tools.js +94 -107
  337. package/server/tools.js.map +1 -0
  338. package/server/tunnel.d.ts +29 -0
  339. package/server/tunnel.js +61 -66
  340. package/server/tunnel.js.map +1 -0
  341. package/shared/analyzer/docs.d.ts +16 -0
  342. package/shared/analyzer/docs.js +99 -93
  343. package/shared/analyzer/docs.js.map +1 -0
  344. package/shared/analyzer/explainLocal.d.ts +4 -0
  345. package/shared/analyzer/explainLocal.js +122 -142
  346. package/shared/analyzer/explainLocal.js.map +1 -0
  347. package/shared/analyzer/github.d.ts +37 -0
  348. package/shared/analyzer/github.js +79 -0
  349. package/shared/analyzer/github.js.map +1 -0
  350. package/shared/analyzer/graph.d.ts +41 -0
  351. package/shared/analyzer/graph.js +393 -400
  352. package/shared/analyzer/graph.js.map +1 -0
  353. package/shared/analyzer/health.d.ts +33 -0
  354. package/shared/analyzer/health.js +197 -193
  355. package/shared/analyzer/health.js.map +1 -0
  356. package/shared/analyzer/history.d.ts +29 -0
  357. package/shared/analyzer/history.js +110 -111
  358. package/shared/analyzer/history.js.map +1 -0
  359. package/shared/analyzer/jsonConfig.d.ts +2 -0
  360. package/shared/analyzer/jsonConfig.js +61 -0
  361. package/shared/analyzer/jsonConfig.js.map +1 -0
  362. package/shared/analyzer/languages/csharp.d.ts +26 -0
  363. package/shared/analyzer/languages/csharp.js +83 -88
  364. package/shared/analyzer/languages/csharp.js.map +1 -0
  365. package/shared/analyzer/languages/generic.d.ts +23 -0
  366. package/shared/analyzer/languages/generic.js +94 -105
  367. package/shared/analyzer/languages/generic.js.map +1 -0
  368. package/shared/analyzer/languages/go.d.ts +24 -0
  369. package/shared/analyzer/languages/go.js +45 -54
  370. package/shared/analyzer/languages/go.js.map +1 -0
  371. package/shared/analyzer/languages/index.d.ts +6 -0
  372. package/shared/analyzer/languages/index.js +19 -20
  373. package/shared/analyzer/languages/index.js.map +1 -0
  374. package/shared/analyzer/languages/java.d.ts +20 -0
  375. package/shared/analyzer/languages/java.js +73 -78
  376. package/shared/analyzer/languages/java.js.map +1 -0
  377. package/shared/analyzer/languages/javascript.d.ts +12 -0
  378. package/shared/analyzer/languages/javascript.js +258 -209
  379. package/shared/analyzer/languages/javascript.js.map +1 -0
  380. package/shared/analyzer/languages/python.d.ts +23 -0
  381. package/shared/analyzer/languages/python.js +92 -100
  382. package/shared/analyzer/languages/python.js.map +1 -0
  383. package/shared/analyzer/languages/rust.d.ts +17 -0
  384. package/shared/analyzer/languages/rust.js +96 -98
  385. package/shared/analyzer/languages/rust.js.map +1 -0
  386. package/shared/analyzer/languages/typescript.d.ts +11 -0
  387. package/shared/analyzer/languages/typescript.js +117 -116
  388. package/shared/analyzer/languages/typescript.js.map +1 -0
  389. package/shared/analyzer/licenses.d.ts +18 -0
  390. package/shared/analyzer/licenses.js +130 -133
  391. package/shared/analyzer/licenses.js.map +1 -0
  392. package/shared/analyzer/metrics.d.ts +20 -0
  393. package/shared/analyzer/metrics.js +112 -104
  394. package/shared/analyzer/metrics.js.map +1 -0
  395. package/shared/analyzer/pathUtil.d.ts +10 -0
  396. package/shared/analyzer/pathUtil.js +29 -35
  397. package/shared/analyzer/pathUtil.js.map +1 -0
  398. package/shared/analyzer/patterns.d.ts +11 -0
  399. package/shared/analyzer/patterns.js +231 -253
  400. package/shared/analyzer/patterns.js.map +1 -0
  401. package/shared/analyzer/scan.d.ts +62 -0
  402. package/shared/analyzer/scan.js +451 -442
  403. package/shared/analyzer/scan.js.map +1 -0
  404. package/shared/analyzer/scanControl.d.ts +11 -0
  405. package/shared/analyzer/scanControl.js +62 -0
  406. package/shared/analyzer/scanControl.js.map +1 -0
  407. package/shared/analyzer/security.d.ts +18 -0
  408. package/shared/analyzer/security.js +159 -159
  409. package/shared/analyzer/security.js.map +1 -0
  410. package/shared/analyzer/services.d.ts +5 -0
  411. package/shared/analyzer/services.js +141 -138
  412. package/shared/analyzer/services.js.map +1 -0
  413. package/shared/analyzer/stack.d.ts +6 -0
  414. package/shared/analyzer/stack.js +134 -141
  415. package/shared/analyzer/stack.js.map +1 -0
  416. package/shared/analyzer/tour.d.ts +2 -0
  417. package/shared/analyzer/tour.js +45 -53
  418. package/shared/analyzer/tour.js.map +1 -0
  419. package/shared/analyzer/util.d.ts +8 -0
  420. package/shared/analyzer/util.js +130 -76
  421. package/shared/analyzer/util.js.map +1 -0
  422. package/shared/analyzer/workflows.d.ts +8 -0
  423. package/shared/analyzer/workflows.js +139 -134
  424. package/shared/analyzer/workflows.js.map +1 -0
  425. package/shared/contracts.d.ts +250 -0
  426. package/shared/contracts.js +2 -0
  427. package/shared/contracts.js.map +1 -0
  428. package/shared/diagram/aiFacts.d.ts +35 -0
  429. package/shared/diagram/aiFacts.js +102 -105
  430. package/shared/diagram/aiFacts.js.map +1 -0
  431. package/shared/diagram/aiMermaid.d.ts +5 -0
  432. package/shared/diagram/aiMermaid.js +46 -45
  433. package/shared/diagram/aiMermaid.js.map +1 -0
  434. package/shared/diagram/atlas.d.ts +16 -0
  435. package/shared/diagram/atlas.js +51 -60
  436. package/shared/diagram/atlas.js.map +1 -0
  437. package/shared/diagram/mermaid.d.ts +43 -0
  438. package/shared/diagram/mermaid.js +348 -370
  439. package/shared/diagram/mermaid.js.map +1 -0
  440. package/shared/review/contracts.d.ts +95 -0
  441. package/shared/review/contracts.js +2 -0
  442. package/shared/review/contracts.js.map +1 -0
  443. package/shared/review/review.d.ts +10 -0
  444. package/shared/review/review.js +184 -0
  445. package/shared/review/review.js.map +1 -0
  446. package/shared/search/query.d.ts +32 -0
  447. package/shared/search/query.js +395 -388
  448. package/shared/search/query.js.map +1 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4
4
  [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
5
5
  [![Zero Dependencies](https://img.shields.io/badge/runtime%20dependencies-0-success.svg)](package.json)
6
- [![Tests](https://img.shields.io/badge/tests-560%20passing-brightgreen.svg)](tests/)
6
+ [![Tests](https://github.com/Amitpandey88/onboarder/actions/workflows/ci.yml/badge.svg)](https://github.com/Amitpandey88/onboarder/actions/workflows/ci.yml)
7
7
 
8
8
  > **Drop a path. Get a map.**
9
9
  > A lightweight, zero-dependency codebase visualizer and architectural map generator that runs entirely on your local machine.
@@ -22,7 +22,7 @@ Onboarder reads a software repository the way a senior engineer would: starting
22
22
  # Install from npm (Node 20+, zero runtime dependencies)
23
23
  npm install -g codebase-onboarder
24
24
 
25
- # Explore the repo you are standing in, right in your terminal
25
+ # Choose a folder or Git URL to explore in your terminal
26
26
  onboarder
27
27
 
28
28
  # …or start the web UI instead
@@ -34,13 +34,14 @@ Or from source:
34
34
  ```bash
35
35
  git clone https://github.com/Amitpandey88/onboarder.git
36
36
  cd onboarder
37
+ npm ci
37
38
  npm start
38
39
  ```
39
40
 
40
41
  Open **http://localhost:4310** in your browser (the CLI opens it for you).
41
42
 
42
43
  - **Two front doors, one engine.** `onboarder` opens an interactive terminal session; `onboarder start` opens the web UI. Both run the *same* analyzer, so they can never disagree about a repository.
43
- - **Zero build steps**: Native ES modules.
44
+ - **Ready to run from npm**: Compiled JavaScript is included in the package. Application source lives in `src/` as TypeScript. Run `npm run build` after editing it, or use `npm run dev` for automatic rebuilds and server restarts.
44
45
  - **Zero runtime dependencies**: Powered by Node.js built-ins (`node:http`, `node:fs`, `node:crypto`).
45
46
  - **Offline ready**: Vendored Mermaid.js and Monaco Editor builds are included in `public/vendor/`.
46
47
 
@@ -48,11 +49,14 @@ Open **http://localhost:4310** in your browser (the CLI opens it for you).
48
49
 
49
50
  ## 🖥️ The terminal app
50
51
 
51
- Type `onboarder` in any repo and you get the website, in your terminal. No server, no browser, no network — it reads the folder directly.
52
+ Type `onboarder` to choose the current folder, browse directories, or paste a Git URL. Local folders are read directly, with no server or browser.
52
53
 
53
54
  ```bash
54
- onboarder # explore the current directory
55
+ onboarder # choose a source; Enter uses the current directory
55
56
  onboarder explore ~/work/some-repo
57
+ onboarder report . # one-shot summary, no interactive terminal needed
58
+ onboarder report . --json # stable JSON for scripts and CI
59
+ onboarder explore # same source chooser
56
60
  onboarder --server # force the web UI (what bare `onboarder` used to do)
57
61
  ```
58
62
 
@@ -60,22 +64,99 @@ It lands on a `map` of the repo, then waits:
60
64
 
61
65
  ```
62
66
  codebase > tour
67
+ codebase > hotspots
63
68
  codebase > find resolveImport
64
69
  codebase > deps logger.js
65
- codebase > show logger.js
70
+ codebase > inspect logger.js # one file’s links, exports, and findings
71
+ codebase > blast pathUtil.js # what breaks if this breaks
72
+ codebase > github # what GitHub says about this repo
73
+ codebase > workflows # CI triggers, jobs, and steps
74
+ codebase > sbom express # dependency and license inventory
75
+ codebase > diff HEAD~1 HEAD # changes and dependent-file impact
76
+ codebase > engines # optional deep analyzers on this machine
77
+ codebase > deep gitleaks # run one analyzer when requested
78
+ codebase > ask Where should I start? # optional AI answer with scan context
79
+ codebase > pick # choose another local folder or Git URL
80
+ codebase > !git log --oneline -3 # shell, without leaving
66
81
  codebase > exit
67
82
  ```
68
83
 
69
84
  | | |
70
85
  |---|---|
71
86
  | **map · tour · explain** | What this is, the reading order for a new teammate, and a file or folder explained in prose |
72
- | **tree · find · show · deps** | Browse it, search it, read it, and trace what it connects to |
87
+ | **tree · find · show · inspect · deps** | Browse, search, read, inspect, and trace files |
88
+ | **graph · blast · symbols** | The dependency tree as arrows, the transitive blast radius, and a file's outline |
73
89
  | **health · hubs · layers · patterns** | The analysis, in the same words the site uses |
74
- | **stats · security · stack · entry · externals** | Numbers, findings, dependencies, and drift |
75
- | **cd · rescan · web** | Switch repo, reload from disk, or start the web UI without leaving |
90
+ | **coupling · clusters · risks** | Folder traffic as a heat grid, module groups, and everything wrong in one list |
91
+ | **log · hotspots · blame** | Git history, the files that are complex *and* often changed, and who wrote a line |
92
+ | **diagram · atlas · docs** | Mermaid source, a diagram index, and prose you can print or write to `ONBOARDER.md` |
93
+ | **workflows · sbom · diff** | CI pipelines, dependency/license inventory, and changed files with blast radius |
94
+ | **engines · deep** | See optional analyzers, then run one (`deep semgrep`) or all (`deep all`) |
95
+ | **ask** | Ask an OpenAI-compatible model a question using the current repository scan |
96
+ | **pick · cd · rescan · web** | Browse device folders, switch repo, reload from disk, or start the web UI |
97
+ | **github** | Stars, forks, watchers, license and topics from GitHub, for the repo you have loaded |
98
+ | **Tab · `!cmd`** | Completes commands then file paths; runs a shell command inline |
99
+
100
+ `report` reads a local folder or Git URL once, prints file counts, import resolution,
101
+ entry points, health, security, and test reachability, then exits. Its JSON output
102
+ has `schemaVersion: 1` and contains no source text.
103
+
104
+ All application modules are authored in TypeScript under `src/`: the server,
105
+ MCP tools, analyzer, diagrams, CLI, and browser views. Builds emit JavaScript,
106
+ declarations, and source maps into the existing runtime folders, so the npm CLI
107
+ and Node 20+ keep their existing entry points. Edit `src/`, rather than generated
108
+ files in `cli/`, `server/`, `shared/`, or `public/js/`.
109
+
110
+ ```bash
111
+ npm ci
112
+ npm run dev # rebuild on changes; restart after a successful compilation
113
+ npm run build # typecheck and generate the distributable files
114
+ npm run check # typecheck, tests, and generated-build consistency
115
+ ```
116
+
117
+ `tsconfig.json` checks the whole application. The new portable contracts, scan
118
+ controls, request validator, browser adapter, editor wrapper, and terminal layout
119
+ also pass the strict checks in `tsconfig.strict.json`. Older view and orchestration
120
+ code still uses permissive types; converting every legacy callback and data bag
121
+ to strict types is follow-up work. No application file disables type checking.
122
+
123
+ Scans accept validated limits and bounded read concurrency. The browser offers a
124
+ **Cancel scan** button, browser-folder scans report progress, and disconnected
125
+ server requests stop scanning. File limits measure UTF-8 bytes, including
126
+ non-ASCII source. TypeScript configs support comments, trailing commas, slash
127
+ aliases, and mapping generated JavaScript imports back to TypeScript source. CLI limits work with `report` and persist across `explore` rescans and repository changes:
128
+
129
+ ```bash
130
+ onboarder report . --max-files 10000 --max-file-size 524288 --read-concurrency 4
131
+ ```
132
+
133
+ The HTTP equivalent is `{ "path": "/repo", "options": { "maxFiles": 10000,
134
+ "maxFileSize": 524288, "readConcurrency": 4 } }`. Defaults are 4,000 files,
135
+ 200 KiB per file, and 8 concurrent reads. Maximums are 100,000 files, 10 MiB,
136
+ and 32 reads. Scan cache keys include every file and its imports, exports, and
137
+ findings, so changes beyond the first hundred files also invalidate the cache.
138
+
139
+ `ask` is optional. Set `ONBOARDER_AI_BASE_URL` and `ONBOARDER_AI_MODEL`, plus
140
+ `ONBOARDER_AI_API_KEY` when the endpoint requires a key. The CLI also accepts
141
+ `OPENAI_BASE_URL`, `OPENAI_MODEL`, and `OPENAI_API_KEY`. It sends the question
142
+ and a limited scan summary only when you run `ask`; the key stays in the
143
+ process environment and is not saved in Onboarder's config.
144
+
145
+ **It also takes a GitHub URL, the way the site does.** Point it at one and it clones, scans and opens that repo:
146
+
147
+ ```
148
+ onboarder explore https://github.com/expressjs/express
149
+ codebase > cd https://github.com/sindresorhus/is.git
150
+ ```
151
+
152
+ The clone is blobless and single-branch — the full history, none of the file contents — because history is half of what this tool has to say (churn × complexity) and the blobs are not. It lands in the OS temp dir and is removed when you `cd` away or leave, so nothing is left behind and nothing you already had open gets deleted. A folder you `cd` to is never touched, whatever it happens to be called.
153
+
154
+ `github` asks GitHub about whatever is loaded: the URL if this session cloned it, otherwise `git remote get-url origin`, so it works in a checkout you were already standing in. It sends `GITHUB_TOKEN` or `GH_TOKEN` when you have one, which turns GitHub's 60-requests-an-hour guest allowance into 5,000 — a browser has nowhere to keep a secret, so this is the one thing the terminal does strictly better than the site. It also separates "GitHub said no" into rate-limited, private-or-gone, and throttled, because those need three different responses.
76
155
 
77
156
  **It is the website's engine, not a reimplementation.** `onboarder explore` runs the same modules in the same order as `POST /api/scan` — `scanRepo` → `detectManifest` → `computeFacts` → `buildSearchIndex` — and the same projections the browser's views are projections of. A second implementation would drift, and a drifted map is worse than no map.
78
157
 
158
+ Where the site draws a canvas, the terminal draws its own idiom from the same numbers: the coupling heat grid becomes block characters (which survive being piped to a file or read in black and white), and the force-directed graph becomes an arrow tree (`→` imports, `←` imported by) that shows the part that answers *what breaks if I break this*.
159
+
79
160
  Details worth knowing:
80
161
 
81
162
  - **Forgiving paths.** `show logger.js` finds `server/logger.js`. A genuinely ambiguous name (`index.js`) lists the candidates instead of guessing — silently picking the wrong file is how a map loses your trust.
@@ -83,6 +164,7 @@ Details worth knowing:
83
164
  - **Fits your terminal.** Every line is fitted to the current width and re-fits on resize; prose wraps instead of running off the edge. `NO_COLOR` and `COLUMNS` are honored.
84
165
  - **It refuses to hang.** Without a TTY, `onboarder explore` explains itself and exits rather than waiting for input that will never come. Scripts and CI keep working.
85
166
  - **Bridges to the web.** `web` starts the UI in the background and prints the URL, without ending your session.
167
+ - **Interactive source picker.** `pick` or a bare `cd` lists device folders, supports parent/home navigation and paging, and accepts pasted paths or Git URLs. A failed load leaves the current repository open.
86
168
 
87
169
  ---
88
170
 
@@ -97,6 +179,72 @@ Details worth knowing:
97
179
 
98
180
  ## 🔍 Features & Views
99
181
 
182
+ ### Change Review — a local review workbench
183
+
184
+ After opening a repository by its local path, the **Review** tab is the first
185
+ workspace. Choose working-tree changes (including untracked files), staged
186
+ changes, or a branch/commit range, then select **Run review**.
187
+
188
+ - Security and quality patterns are flagged on **added lines**, with file and
189
+ line references, severity, and suggested next steps. Credential excerpts are
190
+ redacted from reports, including other findings on the same credential line.
191
+ - A risk-sorted walkthrough groups source, tests, documentation, dependencies,
192
+ and configuration changes. Dependency impact uses the last repository scan;
193
+ rescan after structural edits and treat branch-range impact as an estimate.
194
+ - The checklist reports high-severity patterns, conflict markers, test-file
195
+ changes, change size, and skipped files. Tests are **not executed** and
196
+ test-file changes do not establish coverage.
197
+ - Filter findings, acknowledge them locally, and export Markdown or JSON.
198
+ Acknowledgements belong to an exact comparison fingerprint; editing the
199
+ change starts a fresh review. Exports always include all detected findings.
200
+ - An optional **reviewer's brief** sends the report to your configured AI
201
+ provider for a summary and testing plan. It does not send the raw diff.
202
+ Core reviews work offline without an API key.
203
+
204
+ The same review is available to scripts:
205
+
206
+ ```bash
207
+ onboarder review .
208
+ onboarder review . --staged --json
209
+ onboarder review . --base main --head feature/my-change
210
+ onboarder review . --profile focused --fail-on high
211
+ ```
212
+
213
+ `--fail-on` exits with status 1 for findings at or above the selected severity.
214
+ Conflict markers also return 1. Invalid comparisons return a failure instead
215
+ of falling back to a different diff. Reviews use the Git repository root;
216
+ subfolder scans cannot read changes outside the scanned folder.
217
+
218
+ Optional `.onboarder-review.json` in the repository root:
219
+
220
+ ```json
221
+ {
222
+ "profile": "balanced",
223
+ "exclude": ["dist/**", "**/*.generated.ts"],
224
+ "instructions": [
225
+ { "path": "src/auth/**", "instruction": "Check permission boundaries and failure handling." }
226
+ ]
227
+ }
228
+ ```
229
+
230
+ Profiles: `focused` includes medium/above, `balanced` low/above, and `thorough`
231
+ all patterns. Exclusions use `*`, `**`, and `?` path globs. Guidelines are shown
232
+ for human review and included in the optional AI brief; the pattern engine
233
+ does not claim to enforce natural-language guidelines. Configuration always
234
+ comes from the current working tree, including for staged and branch reviews.
235
+ This project's configuration excludes generated JavaScript and vendored files
236
+ so changes are reviewed in their canonical TypeScript source.
237
+
238
+ Git commands have a 15-second timeout and a 5 MB output limit. Working reviews
239
+ include at most 200 untracked files, each at most 1 MB; oversized inputs fail
240
+ explicitly. Binary content, deleted files, metadata-only changes, exclusions,
241
+ and untracked symlinks have visible skip reasons. Reviews can be canceled.
242
+
243
+ Inspired by CodeRabbit's change summaries, path guidelines, and pre-merge
244
+ checks, this is a local pattern review workflow. It does not install a GitHub
245
+ App, automatically post PR comments, apply fixes, execute repository scripts,
246
+ or replace a human/security review.
247
+
100
248
  ### 1. Explorer (One Canvas, 6 Modes)
101
249
  - **Tree**: Hierarchical expandable cell map of directories, files, hubs, and entry points with ghost connection cells.
102
250
  - **Files**: Intra-folder dependency graphs with deep-dive call inspections.
@@ -107,6 +255,17 @@ Details worth knowing:
107
255
  - **Tour**: Curated step-by-step walkthrough of key architectural waypoints.
108
256
  - **Atlas**: Grid gallery of every pre-generated diagram across folders and components.
109
257
 
258
+ **Search:** Click Search or press `Cmd/Ctrl+K` to find files, symbols, and file
259
+ contents. Arrow keys select results; Enter opens them and `Cmd/Ctrl+Enter`
260
+ opens the source. `Alt+Left/Right` switches result kinds. Tab moves between
261
+ dialog controls; Escape clears the query, then closes. Filters such as
262
+ `path:src ext:ts render` can be removed using their chips.
263
+
264
+ Search reuses the scan's symbol index, combines rapid keystrokes, and displays
265
+ bounded previews with exact local match counts. Graph animation pauses outside
266
+ the Graph tab, while search is open, and when the browser tab is hidden. Review
267
+ filters update the findings without rebuilding the surrounding workspace.
268
+
110
269
  ### 1b. Deep Analysis — plug in the best engines (Optional, self-hosted)
111
270
 
112
271
  Onboarder is the **frontend**; the sharpest open-source analyzers are the
@@ -354,43 +513,29 @@ Cloudflare quick tunnels and Tailscale remain supported. They terminate TLS and
354
513
 
355
514
  ```
356
515
  codebase-onboarder/
357
- ├── bin/ # npm entry point (shebang trampoline) & postinstall note
358
- ├── cli/ # Onboarding wizard, config commands, doctor, tunnels
359
- │ ├── main.js # argv → command; bare `onboarder` picks explorer vs server
360
- │ ├── ui.js # Terminal paint; --no-color / NO_COLOR strip it in one place
361
- │ └── explorer/ # The terminal app
362
- │ ├── app.js # The readline session, TTY guards, `web` bridge
363
- │ ├── session.js # Loads a repo exactly as POST /api/scan does
364
- │ ├── views.js # The site's screens, drawn as text (pure functions)
365
- │ └── commands.js# One command table: dispatch, help, and tests share it
366
- ├── server/ # Zero-dependency Node.js HTTP server
367
- │ ├── index.js # createServer / startServer / startup banner
368
- │ ├── config.js # Settings schema, normalization, atomic 0600 writes
369
- │ ├── pidfile.js # PID + run record (mode, url, log) for status / stop / restart
370
- │ ├── daemon.js # Detached background start, log file, readiness probe
371
- │ ├── startup.js # Login items: launchd plist / systemd --user unit / Startup folder
372
- │ ├── logger.js # Aligned-text or JSON log lines from one entry shape
373
- │ ├── layout.js # Shared terminal geometry: width, fit, panel, resize
374
- │ ├── router.js # Route table, live per-request settings, auth & CSRF gates
375
- │ ├── auth.js # Signed HttpOnly browser sessions
376
- │ ├── apiAuth.js # Login/status/logout endpoints
377
- │ ├── apiSettings.js# GET/PUT /api/settings, key rotation
378
- │ ├── tunnel.js # Cloudflare & Tailscale status/commands
379
- │ ├── https.js # Caddy config, ACME/TLS readiness & lifecycle
380
- │ ├── httpGuards.js# Host verification & CSRF/rebinding guards
381
- │ ├── apiScan.js # Local & remote scan coordination
382
- │ ├── apiFile.js # Path-traversal safe file serving
383
- │ ├── gitHistory.js# Local Git log parser & hotspot metrics
384
- │ └── sessions.js # Temporary clone lifecycle manager
385
- ├── shared/ # Isomorphic analyzer engine (Runs in Node & Browser)
386
- │ ├── analyzer/ # Language parsers, graph analytics, metrics, security
387
- │ └── diagram/ # Mermaid diagram generation
388
- ├── public/ # Frontend client application
389
- │ ├── js/ # Vanilla ES modules (State, Inspector, Views, Settings)
390
- │ ├── vendor/ # Vendored Mermaid & Monaco Editor (Offline)
391
- │ ├── index.html # Main application interface
392
- │ └── login.html # Self-hosted access-key sign-in
393
- └── tests/ # Comprehensive node:test suite
516
+ ├── src/ # Canonical TypeScript application source
517
+ │ ├── cli/ # Wizard, lifecycle commands, terminal explorer, reports
518
+ │ ├── server/ # HTTP server, auth, settings, clone sessions, MCP, tools
519
+ │ ├── shared/ # Portable contracts and the isomorphic analysis engine
520
+ │ │ ├── contracts.ts # FileSource, scan options/progress, settings, analysis types
521
+ │ │ ├── analyzer/ # Language parsers, graph analytics, scan controls, metrics
522
+ │ │ ├── diagram/ # Mermaid and AI diagram generation
523
+ │ │ └── search/ # Shared query language
524
+ │ └── public/ # Browser application, views, components, integration types
525
+ ├── bin/ # npm entry-point trampoline and postinstall note
526
+ ├── cli/ # Generated terminal runtime and declarations
527
+ ├── server/ # Generated server/MCP runtime and declarations
528
+ ├── shared/ # Generated shared engine, served at /shared/
529
+ ├── public/
530
+ │ ├── app.js & js/ # Generated browser ES modules
531
+ │ ├── vendor/ # Offline Mermaid and Monaco builds
532
+ │ ├── index.html # App shell and scan controls
533
+ │ ├── login.html # Self-hosted access-key sign-in
534
+ │ └── styles.css # Existing paper-and-ink design
535
+ ├── scripts/ # Development watcher and build consistency verification
536
+ ├── tsconfig.json # Whole-application compilation
537
+ ├── tsconfig.strict.json # Strict core checks
538
+ └── tests/ # Native node:test regression suite
394
539
  ```
395
540
 
396
541
  ---
@@ -400,7 +545,10 @@ codebase-onboarder/
400
545
  Onboarder includes a comprehensive automated test suite built with Node's native test runner:
401
546
 
402
547
  ```bash
403
- # Run all 565 tests
548
+ # Run all checks (also exercised in CI on Node 20, 22, and 24)
549
+ npm run check
550
+
551
+ # Run the regression suite
404
552
  npm test
405
553
  ```
406
554
 
@@ -412,6 +560,7 @@ Test suites cover:
412
560
  - The settings layer end to end: schema validation, atomic config writes, the
413
561
  Bearer auth gate, key rotation, DNS-rebinding protection, and the wizard's
414
562
  branching/flag logic.
563
+ - Scan cancellation, bounded concurrent reads, UTF-8 limits, and request validation.
415
564
  - Deep Analysis tooling: engine detection across Windows/macOS/Linux, install-plan
416
565
  validation, output parsing, and report shaping.
417
566
 
@@ -0,0 +1,23 @@
1
+ // Source checkouts need compilation; published npm installs already contain it.
2
+ import { existsSync } from 'node:fs';
3
+ import { spawnSync } from 'node:child_process';
4
+ import { fileURLToPath } from 'node:url';
5
+ import path from 'node:path';
6
+
7
+ const root = fileURLToPath(new URL('../', import.meta.url));
8
+ if (existsSync(path.join(root, 'src')) && existsSync(path.join(root, 'tsconfig.json'))) {
9
+ const compiler = path.join(root, 'node_modules/typescript/bin/tsc');
10
+ if (!existsSync(compiler)) {
11
+ console.error('Run npm ci to install the TypeScript development tools before starting from source.');
12
+ process.exitCode = 1;
13
+ } else {
14
+ for (const args of [
15
+ ['-p', 'tsconfig.json', '--noEmit'],
16
+ ['-p', 'tsconfig.strict.json'],
17
+ ['-p', 'tsconfig.json'],
18
+ ]) {
19
+ const result = spawnSync(process.execPath, [compiler, ...args], { cwd: root, stdio: 'inherit' });
20
+ if (result.status !== 0) { process.exitCode = result.status || 1; break; }
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,26 @@
1
+ export declare function runSetup({ flags, out, err, version }?: Record<string, any>): any;
2
+ export declare function serverDetails(started: any, { configFile, pid, mode, logFile }?: Record<string, any>): {
3
+ rows: {
4
+ label: string;
5
+ value: string;
6
+ }[];
7
+ urls: import("../shared/contracts.js").ServerUrls;
8
+ mode: any;
9
+ };
10
+ export declare function watchResize(render: any, stream?: NodeJS.WriteStream & {
11
+ fd: 1;
12
+ }): (..._args: unknown[]) => void;
13
+ export declare function runStart({ flags, out, err }?: Record<string, any>): any;
14
+ export declare function runStartBackground({ flags, out, err }?: Record<string, any>): any;
15
+ export declare function runStatus({ flags, out }?: Record<string, any>): Promise<number>;
16
+ export declare function humanDuration(ms: any): string;
17
+ export declare function runStop({ flags, out, err }?: Record<string, any>): Promise<0 | 1>;
18
+ export declare function runRestart(options?: Record<string, any>): Promise<any>;
19
+ export declare function runLogs({ flags, out, err }?: Record<string, any>): Promise<0 | 1 | 2>;
20
+ export declare function runStartup(action?: string, { flags, out, err }?: Record<string, any>): Promise<0 | 1>;
21
+ export declare function runConfig(sub: any, args: any, { flags, out }?: Record<string, any>): Promise<number>;
22
+ export declare function runConfigKey(action: any, args: any, { flags, out, err }?: Record<string, any>): Promise<number>;
23
+ export declare function runConfigReset({ flags, out, err }?: Record<string, any>): Promise<0 | 1>;
24
+ export declare function runDoctor({ flags, out }?: Record<string, any>): Promise<0 | 1>;
25
+ export declare function runHttps(action?: string, { flags, out, err }?: Record<string, any>): Promise<0 | 1>;
26
+ export declare function runTunnel(kind: any, { flags, out, err }?: Record<string, any>): Promise<unknown>;