codebase-onboarder 0.6.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 +174 -46
  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 +321 -329
  8. package/cli/explorer/advanced.js.map +1 -0
  9. package/cli/explorer/app.d.ts +1 -0
  10. package/cli/explorer/app.js +384 -313
  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 +368 -302
  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 +42 -44
  23. package/cli/explorer/github.js.map +1 -0
  24. package/cli/explorer/graphs.d.ts +7 -0
  25. package/cli/explorer/graphs.js +90 -95
  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 +143 -144
  35. package/cli/explorer/session.js.map +1 -0
  36. package/cli/explorer/views.d.ts +19 -0
  37. package/cli/explorer/views.js +465 -482
  38. package/cli/explorer/views.js.map +1 -0
  39. package/cli/explorer/wrap.d.ts +1 -0
  40. package/cli/explorer/wrap.js +28 -44
  41. package/cli/explorer/wrap.js.map +1 -0
  42. package/cli/main.d.ts +1 -0
  43. package/cli/main.js +214 -161
  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 +35 -44
  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 +152 -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 +37 -38
  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 -64
  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 +41 -43
  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
 
@@ -63,8 +67,16 @@ It lands on a `map` of the repo, then waits:
63
67
  codebase > hotspots
64
68
  codebase > find resolveImport
65
69
  codebase > deps logger.js
70
+ codebase > inspect logger.js # one file’s links, exports, and findings
66
71
  codebase > blast pathUtil.js # what breaks if this breaks
67
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
68
80
  codebase > !git log --oneline -3 # shell, without leaving
69
81
  codebase > exit
70
82
  ```
@@ -72,16 +84,64 @@ It lands on a `map` of the repo, then waits:
72
84
  | | |
73
85
  |---|---|
74
86
  | **map · tour · explain** | What this is, the reading order for a new teammate, and a file or folder explained in prose |
75
- | **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 |
76
88
  | **graph · blast · symbols** | The dependency tree as arrows, the transitive blast radius, and a file's outline |
77
89
  | **health · hubs · layers · patterns** | The analysis, in the same words the site uses |
78
90
  | **coupling · clusters · risks** | Folder traffic as a heat grid, module groups, and everything wrong in one list |
79
91
  | **log · hotspots · blame** | Git history, the files that are complex *and* often changed, and who wrote a line |
80
- | **diagram · docs** | Real Mermaid source, and prose you can print or write to `ONBOARDER.md` |
81
- | **cd · rescan · web** | Switch repo, reload from disk, or start the web UI without leaving |
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 |
82
97
  | **github** | Stars, forks, watchers, license and topics from GitHub, for the repo you have loaded |
83
98
  | **Tab · `!cmd`** | Completes commands then file paths; runs a shell command inline |
84
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
+
85
145
  **It also takes a GitHub URL, the way the site does.** Point it at one and it clones, scans and opens that repo:
86
146
 
87
147
  ```
@@ -104,6 +164,7 @@ Details worth knowing:
104
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.
105
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.
106
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.
107
168
 
108
169
  ---
109
170
 
@@ -118,6 +179,72 @@ Details worth knowing:
118
179
 
119
180
  ## 🔍 Features & Views
120
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
+
121
248
  ### 1. Explorer (One Canvas, 6 Modes)
122
249
  - **Tree**: Hierarchical expandable cell map of directories, files, hubs, and entry points with ghost connection cells.
123
250
  - **Files**: Intra-folder dependency graphs with deep-dive call inspections.
@@ -128,6 +255,17 @@ Details worth knowing:
128
255
  - **Tour**: Curated step-by-step walkthrough of key architectural waypoints.
129
256
  - **Atlas**: Grid gallery of every pre-generated diagram across folders and components.
130
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
+
131
269
  ### 1b. Deep Analysis — plug in the best engines (Optional, self-hosted)
132
270
 
133
271
  Onboarder is the **frontend**; the sharpest open-source analyzers are the
@@ -375,43 +513,29 @@ Cloudflare quick tunnels and Tailscale remain supported. They terminate TLS and
375
513
 
376
514
  ```
377
515
  codebase-onboarder/
378
- ├── bin/ # npm entry point (shebang trampoline) & postinstall note
379
- ├── cli/ # Onboarding wizard, config commands, doctor, tunnels
380
- │ ├── main.js # argv → command; bare `onboarder` picks explorer vs server
381
- │ ├── ui.js # Terminal paint; --no-color / NO_COLOR strip it in one place
382
- │ └── explorer/ # The terminal app
383
- │ ├── app.js # The readline session, TTY guards, `web` bridge
384
- │ ├── session.js # Loads a repo exactly as POST /api/scan does
385
- │ ├── views.js # The site's screens, drawn as text (pure functions)
386
- │ └── commands.js# One command table: dispatch, help, and tests share it
387
- ├── server/ # Zero-dependency Node.js HTTP server
388
- │ ├── index.js # createServer / startServer / startup banner
389
- │ ├── config.js # Settings schema, normalization, atomic 0600 writes
390
- │ ├── pidfile.js # PID + run record (mode, url, log) for status / stop / restart
391
- │ ├── daemon.js # Detached background start, log file, readiness probe
392
- │ ├── startup.js # Login items: launchd plist / systemd --user unit / Startup folder
393
- │ ├── logger.js # Aligned-text or JSON log lines from one entry shape
394
- │ ├── layout.js # Shared terminal geometry: width, fit, panel, resize
395
- │ ├── router.js # Route table, live per-request settings, auth & CSRF gates
396
- │ ├── auth.js # Signed HttpOnly browser sessions
397
- │ ├── apiAuth.js # Login/status/logout endpoints
398
- │ ├── apiSettings.js# GET/PUT /api/settings, key rotation
399
- │ ├── tunnel.js # Cloudflare & Tailscale status/commands
400
- │ ├── https.js # Caddy config, ACME/TLS readiness & lifecycle
401
- │ ├── httpGuards.js# Host verification & CSRF/rebinding guards
402
- │ ├── apiScan.js # Local & remote scan coordination
403
- │ ├── apiFile.js # Path-traversal safe file serving
404
- │ ├── gitHistory.js# Local Git log parser & hotspot metrics
405
- │ └── sessions.js # Temporary clone lifecycle manager
406
- ├── shared/ # Isomorphic analyzer engine (Runs in Node & Browser)
407
- │ ├── analyzer/ # Language parsers, graph analytics, metrics, security
408
- │ └── diagram/ # Mermaid diagram generation
409
- ├── public/ # Frontend client application
410
- │ ├── js/ # Vanilla ES modules (State, Inspector, Views, Settings)
411
- │ ├── vendor/ # Vendored Mermaid & Monaco Editor (Offline)
412
- │ ├── index.html # Main application interface
413
- │ └── login.html # Self-hosted access-key sign-in
414
- └── 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
415
539
  ```
416
540
 
417
541
  ---
@@ -421,7 +545,10 @@ codebase-onboarder/
421
545
  Onboarder includes a comprehensive automated test suite built with Node's native test runner:
422
546
 
423
547
  ```bash
424
- # 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
425
552
  npm test
426
553
  ```
427
554
 
@@ -433,6 +560,7 @@ Test suites cover:
433
560
  - The settings layer end to end: schema validation, atomic config writes, the
434
561
  Bearer auth gate, key rotation, DNS-rebinding protection, and the wizard's
435
562
  branching/flag logic.
563
+ - Scan cancellation, bounded concurrent reads, UTF-8 limits, and request validation.
436
564
  - Deep Analysis tooling: engine detection across Windows/macOS/Linux, install-plan
437
565
  validation, output parsing, and report shaping.
438
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>;