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.
- package/README.md +174 -46
- package/bin/build-if-source.js +23 -0
- package/cli/commands.d.ts +26 -0
- package/cli/commands.js +836 -811
- package/cli/commands.js.map +1 -0
- package/cli/explorer/advanced.d.ts +14 -0
- package/cli/explorer/advanced.js +321 -329
- package/cli/explorer/advanced.js.map +1 -0
- package/cli/explorer/app.d.ts +1 -0
- package/cli/explorer/app.js +384 -313
- package/cli/explorer/app.js.map +1 -0
- package/cli/explorer/assistant.d.ts +9 -0
- package/cli/explorer/assistant.js +58 -0
- package/cli/explorer/assistant.js.map +1 -0
- package/cli/explorer/commands.d.ts +17 -0
- package/cli/explorer/commands.js +368 -302
- package/cli/explorer/commands.js.map +1 -0
- package/cli/explorer/featureViews.d.ts +124 -0
- package/cli/explorer/featureViews.js +179 -0
- package/cli/explorer/featureViews.js.map +1 -0
- package/cli/explorer/github.d.ts +21 -0
- package/cli/explorer/github.js +42 -44
- package/cli/explorer/github.js.map +1 -0
- package/cli/explorer/graphs.d.ts +7 -0
- package/cli/explorer/graphs.js +90 -95
- package/cli/explorer/graphs.js.map +1 -0
- package/cli/explorer/picker.d.ts +22 -0
- package/cli/explorer/picker.js +150 -0
- package/cli/explorer/picker.js.map +1 -0
- package/cli/explorer/report.d.ts +85 -0
- package/cli/explorer/report.js +60 -0
- package/cli/explorer/report.js.map +1 -0
- package/cli/explorer/session.d.ts +449 -0
- package/cli/explorer/session.js +143 -144
- package/cli/explorer/session.js.map +1 -0
- package/cli/explorer/views.d.ts +19 -0
- package/cli/explorer/views.js +465 -482
- package/cli/explorer/views.js.map +1 -0
- package/cli/explorer/wrap.d.ts +1 -0
- package/cli/explorer/wrap.js +28 -44
- package/cli/explorer/wrap.js.map +1 -0
- package/cli/main.d.ts +1 -0
- package/cli/main.js +214 -161
- package/cli/main.js.map +1 -0
- package/cli/prompt.d.ts +5 -0
- package/cli/prompt.js +84 -80
- package/cli/prompt.js.map +1 -0
- package/cli/scanOptions.d.ts +2 -0
- package/cli/scanOptions.js +11 -0
- package/cli/scanOptions.js.map +1 -0
- package/cli/ui.d.ts +33 -0
- package/cli/ui.js +35 -44
- package/cli/ui.js.map +1 -0
- package/cli/wizard.d.ts +187 -0
- package/cli/wizard.js +304 -284
- package/cli/wizard.js.map +1 -0
- package/package.json +15 -4
- package/public/app.d.ts +1 -0
- package/public/app.js +1057 -1009
- package/public/app.js.map +1 -0
- package/public/browser.d.ts +68 -0
- package/public/browser.js +2 -0
- package/public/browser.js.map +1 -0
- package/public/index.html +30 -13
- package/public/js/about.d.ts +6 -0
- package/public/js/about.js +152 -172
- package/public/js/about.js.map +1 -0
- package/public/js/aiDraft.d.ts +3 -0
- package/public/js/aiDraft.js +116 -124
- package/public/js/aiDraft.js.map +1 -0
- package/public/js/analysisPanel.d.ts +7 -0
- package/public/js/analysisPanel.js +166 -166
- package/public/js/analysisPanel.js.map +1 -0
- package/public/js/analysisReport.d.ts +38 -0
- package/public/js/analysisReport.js +105 -110
- package/public/js/analysisReport.js.map +1 -0
- package/public/js/api.d.ts +26 -0
- package/public/js/api.js +176 -167
- package/public/js/api.js.map +1 -0
- package/public/js/atlas.d.ts +6 -0
- package/public/js/atlas.js +50 -58
- package/public/js/atlas.js.map +1 -0
- package/public/js/blameView.d.ts +2 -0
- package/public/js/blameView.js +36 -37
- package/public/js/blameView.js.map +1 -0
- package/public/js/codeTab.d.ts +3 -0
- package/public/js/codeTab.js +175 -180
- package/public/js/codeTab.js.map +1 -0
- package/public/js/codeViewer.d.ts +5 -0
- package/public/js/codeViewer.js +162 -150
- package/public/js/codeViewer.js.map +1 -0
- package/public/js/components/FileChip.d.ts +9 -0
- package/public/js/components/FileChip.js +45 -49
- package/public/js/components/FileChip.js.map +1 -0
- package/public/js/components/MetricSparkline.d.ts +7 -0
- package/public/js/components/MetricSparkline.js +35 -44
- package/public/js/components/MetricSparkline.js.map +1 -0
- package/public/js/components/RiskBadge.d.ts +9 -0
- package/public/js/components/RiskBadge.js +55 -63
- package/public/js/components/RiskBadge.js.map +1 -0
- package/public/js/deepAnalysisView.d.ts +99 -0
- package/public/js/deepAnalysisView.js +282 -302
- package/public/js/deepAnalysisView.js.map +1 -0
- package/public/js/diagramPane.d.ts +8 -0
- package/public/js/diagramPane.js +133 -135
- package/public/js/diagramPane.js.map +1 -0
- package/public/js/diffView.d.ts +6 -0
- package/public/js/diffView.js +222 -209
- package/public/js/diffView.js.map +1 -0
- package/public/js/docsView.d.ts +2 -0
- package/public/js/docsView.js +441 -442
- package/public/js/docsView.js.map +1 -0
- package/public/js/dom.d.ts +189 -0
- package/public/js/dom.js +5 -0
- package/public/js/dom.js.map +1 -0
- package/public/js/fileSourceBrowser.d.ts +5 -0
- package/public/js/fileSourceBrowser.js +33 -41
- package/public/js/fileSourceBrowser.js.map +1 -0
- package/public/js/flameGraph.d.ts +5 -0
- package/public/js/flameGraph.js +62 -72
- package/public/js/flameGraph.js.map +1 -0
- package/public/js/forceGraph.d.ts +10 -0
- package/public/js/forceGraph.js +581 -556
- package/public/js/forceGraph.js.map +1 -0
- package/public/js/heatmap.d.ts +4 -0
- package/public/js/heatmap.js +142 -164
- package/public/js/heatmap.js.map +1 -0
- package/public/js/highlight.d.ts +2 -0
- package/public/js/highlight.js +116 -107
- package/public/js/highlight.js.map +1 -0
- package/public/js/html.d.ts +2 -0
- package/public/js/html.js +14 -44
- package/public/js/html.js.map +1 -0
- package/public/js/insightsView.d.ts +5 -0
- package/public/js/insightsView.js +93 -111
- package/public/js/insightsView.js.map +1 -0
- package/public/js/inspector.d.ts +37 -0
- package/public/js/inspector.js +416 -445
- package/public/js/inspector.js.map +1 -0
- package/public/js/llm.d.ts +113 -0
- package/public/js/llm.js +233 -272
- package/public/js/llm.js.map +1 -0
- package/public/js/mapView.d.ts +3 -0
- package/public/js/mapView.js +121 -120
- package/public/js/mapView.js.map +1 -0
- package/public/js/markdown.d.ts +3 -0
- package/public/js/markdown.js +84 -91
- package/public/js/markdown.js.map +1 -0
- package/public/js/mindmap.d.ts +32 -0
- package/public/js/mindmap.js +244 -259
- package/public/js/mindmap.js.map +1 -0
- package/public/js/mobilePanels.d.ts +5 -0
- package/public/js/mobilePanels.js +50 -0
- package/public/js/mobilePanels.js.map +1 -0
- package/public/js/repoFiles.d.ts +12 -0
- package/public/js/repoFiles.js +28 -27
- package/public/js/repoFiles.js.map +1 -0
- package/public/js/reviewView.d.ts +28 -0
- package/public/js/reviewView.js +256 -0
- package/public/js/reviewView.js.map +1 -0
- package/public/js/sbomView.d.ts +3 -0
- package/public/js/sbomView.js +59 -67
- package/public/js/sbomView.js.map +1 -0
- package/public/js/scanCache.d.ts +16 -0
- package/public/js/scanCache.js +67 -65
- package/public/js/scanCache.js.map +1 -0
- package/public/js/search.d.ts +7 -0
- package/public/js/search.js +868 -800
- package/public/js/search.js.map +1 -0
- package/public/js/searchLocal.d.ts +42 -0
- package/public/js/searchLocal.js +87 -0
- package/public/js/searchLocal.js.map +1 -0
- package/public/js/serverSettings.d.ts +5 -0
- package/public/js/serverSettings.js +153 -164
- package/public/js/serverSettings.js.map +1 -0
- package/public/js/state.d.ts +798 -0
- package/public/js/state.js +114 -122
- package/public/js/state.js.map +1 -0
- package/public/js/tour.d.ts +6 -0
- package/public/js/tour.js +5 -7
- package/public/js/tour.js.map +1 -0
- package/public/js/transitions.d.ts +2 -0
- package/public/js/transitions.js +9 -10
- package/public/js/transitions.js.map +1 -0
- package/public/js/tree.d.ts +12 -0
- package/public/js/tree.js +157 -154
- package/public/js/tree.js.map +1 -0
- package/public/js/workflowsView.d.ts +3 -0
- package/public/js/workflowsView.js +15 -22
- package/public/js/workflowsView.js.map +1 -0
- package/public/search.css +495 -0
- package/public/styles.css +163 -346
- package/public/workbench.css +166 -0
- package/server/apiAuth.d.ts +3 -0
- package/server/apiAuth.js +18 -20
- package/server/apiAuth.js.map +1 -0
- package/server/apiDiff.d.ts +2 -0
- package/server/apiDiff.js +20 -18
- package/server/apiDiff.js.map +1 -0
- package/server/apiDocs.d.ts +2 -0
- package/server/apiDocs.js +38 -40
- package/server/apiDocs.js.map +1 -0
- package/server/apiFile.d.ts +1 -0
- package/server/apiFile.js +14 -17
- package/server/apiFile.js.map +1 -0
- package/server/apiGitBlame.d.ts +2 -0
- package/server/apiGitBlame.js +50 -51
- package/server/apiGitBlame.js.map +1 -0
- package/server/apiMcp.d.ts +4 -0
- package/server/apiMcp.js +64 -66
- package/server/apiMcp.js.map +1 -0
- package/server/apiReview.d.ts +2 -0
- package/server/apiReview.js +45 -0
- package/server/apiReview.js.map +1 -0
- package/server/apiScan.d.ts +5 -0
- package/server/apiScan.js +90 -71
- package/server/apiScan.js.map +1 -0
- package/server/apiSearch.d.ts +33 -0
- package/server/apiSearch.js +184 -200
- package/server/apiSearch.js.map +1 -0
- package/server/apiSettings.d.ts +4 -0
- package/server/apiSettings.js +84 -85
- package/server/apiSettings.js.map +1 -0
- package/server/apiTools.d.ts +3 -0
- package/server/apiTools.js +55 -56
- package/server/apiTools.js.map +1 -0
- package/server/auth.d.ts +5 -0
- package/server/auth.js +54 -51
- package/server/auth.js.map +1 -0
- package/server/config.d.ts +42 -0
- package/server/config.js +189 -194
- package/server/config.js.map +1 -0
- package/server/daemon.d.ts +12 -0
- package/server/daemon.js +124 -114
- package/server/daemon.js.map +1 -0
- package/server/fileSourceNode.d.ts +2 -0
- package/server/fileSourceNode.js +34 -36
- package/server/fileSourceNode.js.map +1 -0
- package/server/gitClone.d.ts +9 -0
- package/server/gitClone.js +59 -61
- package/server/gitClone.js.map +1 -0
- package/server/gitDiff.d.ts +36 -0
- package/server/gitDiff.js +271 -169
- package/server/gitDiff.js.map +1 -0
- package/server/gitHistory.d.ts +12 -0
- package/server/gitHistory.js +80 -80
- package/server/gitHistory.js.map +1 -0
- package/server/gitRemote.d.ts +12 -0
- package/server/gitRemote.js +37 -38
- package/server/gitRemote.js.map +1 -0
- package/server/htmlText.d.ts +4 -0
- package/server/htmlText.js +16 -23
- package/server/htmlText.js.map +1 -0
- package/server/http.d.ts +5 -0
- package/server/http.js +27 -30
- package/server/http.js.map +1 -0
- package/server/httpGuards.d.ts +2 -0
- package/server/httpGuards.js +47 -43
- package/server/httpGuards.js.map +1 -0
- package/server/https.d.ts +34 -0
- package/server/https.js +121 -111
- package/server/https.js.map +1 -0
- package/server/index.d.ts +40 -0
- package/server/index.js +139 -147
- package/server/index.js.map +1 -0
- package/server/layout.d.ts +26 -0
- package/server/layout.js +59 -64
- package/server/layout.js.map +1 -0
- package/server/llmProxy.d.ts +3 -0
- package/server/llmProxy.js +137 -135
- package/server/llmProxy.js.map +1 -0
- package/server/logger.d.ts +38 -0
- package/server/logger.js +198 -211
- package/server/logger.js.map +1 -0
- package/server/mcp/analysis.d.ts +29 -0
- package/server/mcp/analysis.js +99 -120
- package/server/mcp/analysis.js.map +1 -0
- package/server/mcp/http.d.ts +9 -0
- package/server/mcp/http.js +128 -137
- package/server/mcp/http.js.map +1 -0
- package/server/mcp/runner.d.ts +68 -0
- package/server/mcp/runner.js +208 -218
- package/server/mcp/runner.js.map +1 -0
- package/server/mcp/server.d.ts +29 -0
- package/server/mcp/server.js +166 -179
- package/server/mcp/server.js.map +1 -0
- package/server/mcp/standalone.d.ts +1 -0
- package/server/mcp/standalone.js +8 -10
- package/server/mcp/standalone.js.map +1 -0
- package/server/mcp/tools.d.ts +2020 -0
- package/server/mcp/tools.js +523 -574
- package/server/mcp/tools.js.map +1 -0
- package/server/paths.d.ts +3 -0
- package/server/paths.js +17 -15
- package/server/paths.js.map +1 -0
- package/server/pidfile.d.ts +9 -0
- package/server/pidfile.js +43 -45
- package/server/pidfile.js.map +1 -0
- package/server/review.d.ts +5 -0
- package/server/review.js +35 -0
- package/server/review.js.map +1 -0
- package/server/router.d.ts +33 -0
- package/server/router.js +191 -197
- package/server/router.js.map +1 -0
- package/server/scanRequest.d.ts +3 -0
- package/server/scanRequest.js +36 -0
- package/server/scanRequest.js.map +1 -0
- package/server/searchIndex.d.ts +17 -0
- package/server/searchIndex.js +83 -80
- package/server/searchIndex.js.map +1 -0
- package/server/sessions.d.ts +14 -0
- package/server/sessions.js +62 -70
- package/server/sessions.js.map +1 -0
- package/server/startup.d.ts +118 -0
- package/server/startup.js +143 -148
- package/server/startup.js.map +1 -0
- package/server/static.d.ts +6 -0
- package/server/static.js +28 -31
- package/server/static.js.map +1 -0
- package/server/tools/install.d.ts +4 -0
- package/server/tools/install.js +176 -185
- package/server/tools/install.js.map +1 -0
- package/server/tools/parse.d.ts +8 -0
- package/server/tools/parse.js +112 -114
- package/server/tools/parse.js.map +1 -0
- package/server/tools/platform.d.ts +9 -0
- package/server/tools/platform.js +49 -47
- package/server/tools/platform.js.map +1 -0
- package/server/tools/registry.d.ts +137 -0
- package/server/tools/registry.js +173 -172
- package/server/tools/registry.js.map +1 -0
- package/server/tools/scan.d.ts +34 -0
- package/server/tools/scan.js +89 -98
- package/server/tools/scan.js.map +1 -0
- package/server/tools.d.ts +34 -0
- package/server/tools.js +94 -107
- package/server/tools.js.map +1 -0
- package/server/tunnel.d.ts +29 -0
- package/server/tunnel.js +61 -66
- package/server/tunnel.js.map +1 -0
- package/shared/analyzer/docs.d.ts +16 -0
- package/shared/analyzer/docs.js +99 -93
- package/shared/analyzer/docs.js.map +1 -0
- package/shared/analyzer/explainLocal.d.ts +4 -0
- package/shared/analyzer/explainLocal.js +122 -142
- package/shared/analyzer/explainLocal.js.map +1 -0
- package/shared/analyzer/github.d.ts +37 -0
- package/shared/analyzer/github.js +41 -43
- package/shared/analyzer/github.js.map +1 -0
- package/shared/analyzer/graph.d.ts +41 -0
- package/shared/analyzer/graph.js +393 -400
- package/shared/analyzer/graph.js.map +1 -0
- package/shared/analyzer/health.d.ts +33 -0
- package/shared/analyzer/health.js +197 -193
- package/shared/analyzer/health.js.map +1 -0
- package/shared/analyzer/history.d.ts +29 -0
- package/shared/analyzer/history.js +110 -111
- package/shared/analyzer/history.js.map +1 -0
- package/shared/analyzer/jsonConfig.d.ts +2 -0
- package/shared/analyzer/jsonConfig.js +61 -0
- package/shared/analyzer/jsonConfig.js.map +1 -0
- package/shared/analyzer/languages/csharp.d.ts +26 -0
- package/shared/analyzer/languages/csharp.js +83 -88
- package/shared/analyzer/languages/csharp.js.map +1 -0
- package/shared/analyzer/languages/generic.d.ts +23 -0
- package/shared/analyzer/languages/generic.js +94 -105
- package/shared/analyzer/languages/generic.js.map +1 -0
- package/shared/analyzer/languages/go.d.ts +24 -0
- package/shared/analyzer/languages/go.js +45 -54
- package/shared/analyzer/languages/go.js.map +1 -0
- package/shared/analyzer/languages/index.d.ts +6 -0
- package/shared/analyzer/languages/index.js +19 -20
- package/shared/analyzer/languages/index.js.map +1 -0
- package/shared/analyzer/languages/java.d.ts +20 -0
- package/shared/analyzer/languages/java.js +73 -78
- package/shared/analyzer/languages/java.js.map +1 -0
- package/shared/analyzer/languages/javascript.d.ts +12 -0
- package/shared/analyzer/languages/javascript.js +258 -209
- package/shared/analyzer/languages/javascript.js.map +1 -0
- package/shared/analyzer/languages/python.d.ts +23 -0
- package/shared/analyzer/languages/python.js +92 -100
- package/shared/analyzer/languages/python.js.map +1 -0
- package/shared/analyzer/languages/rust.d.ts +17 -0
- package/shared/analyzer/languages/rust.js +96 -98
- package/shared/analyzer/languages/rust.js.map +1 -0
- package/shared/analyzer/languages/typescript.d.ts +11 -0
- package/shared/analyzer/languages/typescript.js +117 -116
- package/shared/analyzer/languages/typescript.js.map +1 -0
- package/shared/analyzer/licenses.d.ts +18 -0
- package/shared/analyzer/licenses.js +130 -133
- package/shared/analyzer/licenses.js.map +1 -0
- package/shared/analyzer/metrics.d.ts +20 -0
- package/shared/analyzer/metrics.js +112 -104
- package/shared/analyzer/metrics.js.map +1 -0
- package/shared/analyzer/pathUtil.d.ts +10 -0
- package/shared/analyzer/pathUtil.js +29 -35
- package/shared/analyzer/pathUtil.js.map +1 -0
- package/shared/analyzer/patterns.d.ts +11 -0
- package/shared/analyzer/patterns.js +231 -253
- package/shared/analyzer/patterns.js.map +1 -0
- package/shared/analyzer/scan.d.ts +62 -0
- package/shared/analyzer/scan.js +451 -442
- package/shared/analyzer/scan.js.map +1 -0
- package/shared/analyzer/scanControl.d.ts +11 -0
- package/shared/analyzer/scanControl.js +62 -0
- package/shared/analyzer/scanControl.js.map +1 -0
- package/shared/analyzer/security.d.ts +18 -0
- package/shared/analyzer/security.js +159 -159
- package/shared/analyzer/security.js.map +1 -0
- package/shared/analyzer/services.d.ts +5 -0
- package/shared/analyzer/services.js +141 -138
- package/shared/analyzer/services.js.map +1 -0
- package/shared/analyzer/stack.d.ts +6 -0
- package/shared/analyzer/stack.js +134 -141
- package/shared/analyzer/stack.js.map +1 -0
- package/shared/analyzer/tour.d.ts +2 -0
- package/shared/analyzer/tour.js +45 -53
- package/shared/analyzer/tour.js.map +1 -0
- package/shared/analyzer/util.d.ts +8 -0
- package/shared/analyzer/util.js +130 -76
- package/shared/analyzer/util.js.map +1 -0
- package/shared/analyzer/workflows.d.ts +8 -0
- package/shared/analyzer/workflows.js +139 -134
- package/shared/analyzer/workflows.js.map +1 -0
- package/shared/contracts.d.ts +250 -0
- package/shared/contracts.js +2 -0
- package/shared/contracts.js.map +1 -0
- package/shared/diagram/aiFacts.d.ts +35 -0
- package/shared/diagram/aiFacts.js +102 -105
- package/shared/diagram/aiFacts.js.map +1 -0
- package/shared/diagram/aiMermaid.d.ts +5 -0
- package/shared/diagram/aiMermaid.js +46 -45
- package/shared/diagram/aiMermaid.js.map +1 -0
- package/shared/diagram/atlas.d.ts +16 -0
- package/shared/diagram/atlas.js +51 -60
- package/shared/diagram/atlas.js.map +1 -0
- package/shared/diagram/mermaid.d.ts +43 -0
- package/shared/diagram/mermaid.js +348 -370
- package/shared/diagram/mermaid.js.map +1 -0
- package/shared/review/contracts.d.ts +95 -0
- package/shared/review/contracts.js +2 -0
- package/shared/review/contracts.js.map +1 -0
- package/shared/review/review.d.ts +10 -0
- package/shared/review/review.js +184 -0
- package/shared/review/review.js.map +1 -0
- package/shared/search/query.d.ts +32 -0
- package/shared/search/query.js +395 -388
- package/shared/search/query.js.map +1 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://nodejs.org/)
|
|
5
5
|
[](package.json)
|
|
6
|
-
[](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
|
-
#
|
|
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
|
-
- **
|
|
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`
|
|
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 #
|
|
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
|
|
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** |
|
|
81
|
-
| **
|
|
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
|
-
├──
|
|
379
|
-
├── cli/
|
|
380
|
-
│ ├──
|
|
381
|
-
│ ├──
|
|
382
|
-
│
|
|
383
|
-
│
|
|
384
|
-
│
|
|
385
|
-
│
|
|
386
|
-
│
|
|
387
|
-
├──
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
│ ├──
|
|
393
|
-
│ ├──
|
|
394
|
-
│ ├──
|
|
395
|
-
│ ├──
|
|
396
|
-
│
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
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
|
|
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>;
|