codebase-onboarder 0.6.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +284 -53
- package/bin/build-if-source.js +23 -0
- package/bin/onboarder.js +0 -0
- package/cli/agent/command.d.ts +71 -0
- package/cli/agent/command.js +177 -0
- package/cli/agent/command.js.map +1 -0
- package/cli/agent/config.d.ts +31 -0
- package/cli/agent/config.js +98 -0
- package/cli/agent/config.js.map +1 -0
- package/cli/agent/contracts.d.ts +77 -0
- package/cli/agent/contracts.js +2 -0
- package/cli/agent/contracts.js.map +1 -0
- package/cli/agent/files.d.ts +19 -0
- package/cli/agent/files.js +109 -0
- package/cli/agent/files.js.map +1 -0
- package/cli/agent/gitSource.d.ts +18 -0
- package/cli/agent/gitSource.js +69 -0
- package/cli/agent/gitSource.js.map +1 -0
- package/cli/agent/github.d.ts +21 -0
- package/cli/agent/github.js +94 -0
- package/cli/agent/github.js.map +1 -0
- package/cli/agent/mcp.d.ts +15 -0
- package/cli/agent/mcp.js +78 -0
- package/cli/agent/mcp.js.map +1 -0
- package/cli/agent/process.d.ts +18 -0
- package/cli/agent/process.js +118 -0
- package/cli/agent/process.js.map +1 -0
- package/cli/agent/protocol.d.ts +3 -0
- package/cli/agent/protocol.js +26 -0
- package/cli/agent/protocol.js.map +1 -0
- package/cli/agent/runner.d.ts +34 -0
- package/cli/agent/runner.js +152 -0
- package/cli/agent/runner.js.map +1 -0
- package/cli/agent/stdio.d.ts +1 -0
- package/cli/agent/stdio.js +62 -0
- package/cli/agent/stdio.js.map +1 -0
- package/cli/agent/tools.d.ts +7 -0
- package/cli/agent/tools.js +201 -0
- package/cli/agent/tools.js.map +1 -0
- package/cli/chat/app.d.ts +16 -0
- package/cli/chat/app.js +345 -0
- package/cli/chat/app.js.map +1 -0
- package/cli/chat/commands.d.ts +11 -0
- package/cli/chat/commands.js +120 -0
- package/cli/chat/commands.js.map +1 -0
- package/cli/chat/composer.d.ts +75 -0
- package/cli/chat/composer.js +467 -0
- package/cli/chat/composer.js.map +1 -0
- package/cli/chat/controller.d.ts +60 -0
- package/cli/chat/controller.js +393 -0
- package/cli/chat/controller.js.map +1 -0
- package/cli/chat/logo.d.ts +3 -0
- package/cli/chat/logo.js +14 -0
- package/cli/chat/logo.js.map +1 -0
- package/cli/chat/models.d.ts +18 -0
- package/cli/chat/models.js +88 -0
- package/cli/chat/models.js.map +1 -0
- package/cli/chat/profile.d.ts +5 -0
- package/cli/chat/profile.js +98 -0
- package/cli/chat/profile.js.map +1 -0
- package/cli/chat/render.d.ts +40 -0
- package/cli/chat/render.js +259 -0
- package/cli/chat/render.js.map +1 -0
- package/cli/chat/screen.d.ts +26 -0
- package/cli/chat/screen.js +117 -0
- package/cli/chat/screen.js.map +1 -0
- package/cli/chat/source.d.ts +29 -0
- package/cli/chat/source.js +116 -0
- package/cli/chat/source.js.map +1 -0
- package/cli/chat/store.d.ts +43 -0
- package/cli/chat/store.js +94 -0
- package/cli/chat/store.js.map +1 -0
- package/cli/chat/text.d.ts +4 -0
- package/cli/chat/text.js +27 -0
- package/cli/chat/text.js.map +1 -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 +2 -0
- package/cli/explorer/app.js +404 -314
- 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 +373 -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 +251 -164
- 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/docs/HERMES_RESEARCH.md +51 -0
- package/package.json +16 -4
- package/public/app.d.ts +1 -0
- package/public/app.js +1133 -1011
- package/public/app.js.map +1 -0
- package/public/assets/onboarder-mark.svg +11 -0
- package/public/browser.d.ts +71 -0
- package/public/browser.js +2 -0
- package/public/browser.js.map +1 -0
- package/public/index.html +54 -20
- 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 +4 -0
- package/public/js/aiDraft.js +166 -125
- 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 +29 -0
- package/public/js/api.js +198 -166
- 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 +9 -0
- package/public/js/diagramPane.js +138 -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 +197 -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 +115 -0
- package/public/js/llm.js +246 -278
- 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 +29 -28
- 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 +188 -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/hermesChat.d.ts +13 -0
- package/server/hermesChat.js +145 -0
- package/server/hermesChat.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 +6 -0
- package/server/http.js +27 -34
- 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 +167 -180
- 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 +195 -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 +50 -46
- 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.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
Onboarder reads a software repository the way a senior engineer would: starting at the front door, tracing import graphs, mapping architectural layers, computing risk/health metrics, discovering dead exports and dependency drift, and charting Git hotspots — rendering everything as interactive, zoomable diagrams.
|
|
14
14
|
|
|
15
|
-
**
|
|
15
|
+
**Local analysis**: Repository maps and the offline explorer run on your machine without an account. Optional AI chat sends task context and requested source to your configured model provider.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -22,9 +22,12 @@ 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
|
+
# Open the repository chat harness in your terminal
|
|
26
26
|
onboarder
|
|
27
27
|
|
|
28
|
+
# Browse offline, including folders and Git URLs
|
|
29
|
+
onboarder explore
|
|
30
|
+
|
|
28
31
|
# …or start the web UI instead
|
|
29
32
|
onboarder start
|
|
30
33
|
```
|
|
@@ -34,13 +37,14 @@ Or from source:
|
|
|
34
37
|
```bash
|
|
35
38
|
git clone https://github.com/Amitpandey88/onboarder.git
|
|
36
39
|
cd onboarder
|
|
40
|
+
npm ci
|
|
37
41
|
npm start
|
|
38
42
|
```
|
|
39
43
|
|
|
40
44
|
Open **http://localhost:4310** in your browser (the CLI opens it for you).
|
|
41
45
|
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
46
|
+
- **Chat, explorer, and web UI.** `onboarder` opens the Hermes chat harness; `onboarder explore` opens offline browsing; `onboarder start` opens the web UI. Repository analysis uses the same engine in all three.
|
|
47
|
+
- **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
48
|
- **Zero runtime dependencies**: Powered by Node.js built-ins (`node:http`, `node:fs`, `node:crypto`).
|
|
45
49
|
- **Offline ready**: Vendored Mermaid.js and Monaco Editor builds are included in `public/vendor/`.
|
|
46
50
|
|
|
@@ -48,23 +52,87 @@ Open **http://localhost:4310** in your browser (the CLI opens it for you).
|
|
|
48
52
|
|
|
49
53
|
## 🖥️ The terminal app
|
|
50
54
|
|
|
51
|
-
Type `onboarder`
|
|
55
|
+
Type `onboarder` to open the Hermes-powered chat interface for the current repository, or `onboarder chat ~/work/some-repo` to open another local checkout. An amber welcome screen shows the actual configured model, repository, permissions, six workflow skills, and 37 registered tools. The composer has a session status bar with recorded token usage, elapsed run time, and live tool activity. It keeps terminal scrollback and loads the browsing engine only when requested.
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
onboarder chat
|
|
59
|
+
onboarder chat ~/work/some-repo --mode review
|
|
60
|
+
onboarder chat https://github.com/owner/repo
|
|
61
|
+
onboarder chat --resume <conversation-id>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Inside the chat:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
codebase ask › /model configure
|
|
68
|
+
codebase ask › /repo https://github.com/owner/repo
|
|
69
|
+
codebase ask › Explain how authentication works
|
|
70
|
+
codebase ask › Where are those permissions checked?
|
|
71
|
+
codebase ask › /review 42 Focus on correctness and security
|
|
72
|
+
codebase review › /triage 12
|
|
73
|
+
codebase triage › /permissions checks on
|
|
74
|
+
codebase triage › /implement Fix the bug described in issue 12
|
|
75
|
+
codebase implement › /diff
|
|
76
|
+
codebase implement › Add a regression test for that fix
|
|
77
|
+
codebase implement › /history
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
| Commands | Purpose |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| `/ask`, `/review`, `/triage`, `/implement`, `/pr`, `/github` | Start a workflow; following messages continue it |
|
|
83
|
+
| `/mode`, `/model`, `/permissions`, `/limits` | Control the workflow, provider, allowed actions, timeout, and turn budget |
|
|
84
|
+
| `/map`, `/tree`, `/find`, `/show`, `/diff`, `/health`, `/rescan` | Browse and analyze offline; inspect the active implementation workspace |
|
|
85
|
+
| `/tour`, `/explain`, `/deps`, `/inspect`, `/graph`, `/blast`, `/symbols` | Follow the reading order, inspect modules, and trace dependencies |
|
|
86
|
+
| `/hubs`, `/layers`, `/patterns`, `/stats`, `/security`, `/stack`, `/entry`, `/externals`, `/coupling`, `/clusters`, `/risks` | Explore repository structure, health, and risks |
|
|
87
|
+
| `/log`, `/hotspots`, `/blame`, `/diagram`, `/layers-diagram`, `/atlas`, `/docs`, `/workflows`, `/sbom` | Inspect Git history, diagrams, documentation, CI, and licenses |
|
|
88
|
+
| `/engines`, `/deep`, `/web`, `/about` | Discover and run optional analyzers, start the web interface, and inspect repository details |
|
|
89
|
+
| `/new`, `/history`, `/resume`, `/repo`, `/status` | Manage saved conversations, repository context, and workspaces |
|
|
90
|
+
| `/clone <GitHub URL>`, `/pull` | Clone a GitHub repository and refresh a clean saved checkout |
|
|
91
|
+
| `/paste`, `/send`, `/discard` | Compose or discard multiline prompts and code |
|
|
92
|
+
| `/setup`, `/doctor`, `/help`, `/clear`, `/cancel`, `/exit` | Set up Hermes, check readiness, and control the terminal session |
|
|
93
|
+
| `/tools`, `/skills`, `/runs`, `/run`, `/export` | Inspect actual capabilities, saved runs, and export this chat as Markdown |
|
|
94
|
+
|
|
95
|
+
Typing `/` immediately opens a searchable command menu with descriptions. Keep typing to filter, use ↑/↓ to choose, and press Tab or Enter to fill the command without starting a task. A fully typed command executes on Enter. Esc dismisses the menu and restores normal history navigation. Tab also completes settings and indexed file paths. Alt-Enter adds a newline; bracketed paste keeps multiline code together and waits for Enter before sending. Ctrl-A/E move to the start/end, Ctrl-U clears the draft, and Ctrl-C cancels an active task. Ctrl-D cancels, saves, and exits when the draft is empty.
|
|
96
|
+
|
|
97
|
+
Chat opens in a **full-screen terminal interface** with the composer pinned to the bottom. The welcome, conversation and menus automatically reflow when the terminal window changes size. **Page Up / Page Down** scroll the conversation without editing your draft; new output preserves your reading position until you return to the latest messages. Narrow or short windows use compact layouts, and the original Onboarder **code-compass** logo appears in full or compact terminal art. Its reusable vector image is [public/assets/onboarder-mark.svg](public/assets/onboarder-mark.svg).
|
|
98
|
+
|
|
99
|
+
The screen paints only changed rows and batches streamed output. Drafts survive resizes and model-wizard handoffs, and leaving chat restores the original shell screen. The in-memory viewport retains up to 4,000 logical lines or 2 MiB; conversation storage and `/export` remain available separately. Follow-ups reuse the saved Hermes session and its isolated implementation workspace. Changing the workflow, PR/issue target, model, or permissions starts a new session. `/clear` clears the screen while keeping context; `/new` resets the conversation. Checks and GitHub writes default to off. `/deep` requires checks permission. `/pr` prepares changes locally unless GitHub writes are enabled; publishing must also be requested in the task. `/export` saves a private Markdown transcript under the agent home's `exports` folder.
|
|
100
|
+
|
|
101
|
+
`/model` opens a Hermes-style provider/model picker below the input. Type to filter, use ↑/↓ to select, and press Enter to choose. Available providers and models come from the installed Hermes catalog; selection uses Hermes' own credential resolution and saves the model to the dedicated Onboarder profile. Escape keeps your current model and conversation. Choose **Configure provider / authentication**, or run `/model configure`, for the full official Hermes configuration, including custom endpoints and provider login. Older Hermes installations can use this full wizard when the quick picker is unavailable. No model names or provider credentials are hardcoded into the picker.
|
|
102
|
+
|
|
103
|
+
At startup, an unconfigured profile offers **Choose a provider and model** or **Continue offline**. Configured profiles start directly in chat. Hermes must be installed separately for AI tasks; offline commands work without it. Conversation summaries are stored privately in `~/.config/onboarder/agent/chats`, alongside agent runs, and known environment credentials are redacted. `/resume` requires a conversation for the current repository and preserves your current permission choices. `onboarder chat --resume` takes a **conversation ID**; `onboarder agent … --resume` takes an **agent run ID**.
|
|
104
|
+
|
|
105
|
+
To ask about a GitHub repository, launch `onboarder chat https://github.com/owner/repo`, use `/repo <URL>` or `/clone <URL>`, or simply paste the URL into chat. You can also paste `<URL> Explain this repository` to clone and ask in one message. HTTPS and GitHub SSH URLs work; private repositories use your existing Git credentials. Cloning shows progress and can be cancelled with Ctrl-C.
|
|
106
|
+
|
|
107
|
+
Chat checkouts are saved under `~/.config/onboarder/agent/repositories` and remain after exit, so conversations and isolated implementation workspaces can resume. Reopening the same URL reuses its checkout. `/pull` fetches current changes with a fast-forward-only pull and refuses local changes; use `/new` first if an implementation workspace is active. A successful pull resets AI context so the next question reads the updated source. To resume later, reopen the same URL and use `/history`, then `/resume <conversation-id>`.
|
|
108
|
+
|
|
109
|
+
The original explorer remains available for its full browsing, source picker, diagrams, and optional analyzer commands:
|
|
52
110
|
|
|
53
111
|
```bash
|
|
54
|
-
onboarder
|
|
112
|
+
onboarder explore # choose a source; Enter uses the current directory
|
|
55
113
|
onboarder explore ~/work/some-repo
|
|
56
|
-
onboarder
|
|
114
|
+
onboarder report . # one-shot summary, no interactive terminal needed
|
|
115
|
+
onboarder report . --json # stable JSON for scripts and CI
|
|
116
|
+
onboarder --server # force the web UI
|
|
57
117
|
```
|
|
58
118
|
|
|
59
|
-
|
|
119
|
+
The explorer lands on a `map` of the repo, then waits:
|
|
60
120
|
|
|
61
121
|
```
|
|
62
122
|
codebase > tour
|
|
63
123
|
codebase > hotspots
|
|
64
124
|
codebase > find resolveImport
|
|
65
125
|
codebase > deps logger.js
|
|
126
|
+
codebase > inspect logger.js # one file’s links, exports, and findings
|
|
66
127
|
codebase > blast pathUtil.js # what breaks if this breaks
|
|
67
128
|
codebase > github # what GitHub says about this repo
|
|
129
|
+
codebase > workflows # CI triggers, jobs, and steps
|
|
130
|
+
codebase > sbom express # dependency and license inventory
|
|
131
|
+
codebase > diff HEAD~1 HEAD # changes and dependent-file impact
|
|
132
|
+
codebase > engines # optional deep analyzers on this machine
|
|
133
|
+
codebase > deep gitleaks # run one analyzer when requested
|
|
134
|
+
codebase > ask Where should I start? # optional AI answer with scan context
|
|
135
|
+
codebase > pick # choose another local folder or Git URL
|
|
68
136
|
codebase > !git log --oneline -3 # shell, without leaving
|
|
69
137
|
codebase > exit
|
|
70
138
|
```
|
|
@@ -72,16 +140,107 @@ It lands on a `map` of the repo, then waits:
|
|
|
72
140
|
| | |
|
|
73
141
|
|---|---|
|
|
74
142
|
| **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
|
|
143
|
+
| **tree · find · show · inspect · deps** | Browse, search, read, inspect, and trace files |
|
|
76
144
|
| **graph · blast · symbols** | The dependency tree as arrows, the transitive blast radius, and a file's outline |
|
|
77
145
|
| **health · hubs · layers · patterns** | The analysis, in the same words the site uses |
|
|
78
146
|
| **coupling · clusters · risks** | Folder traffic as a heat grid, module groups, and everything wrong in one list |
|
|
79
147
|
| **log · hotspots · blame** | Git history, the files that are complex *and* often changed, and who wrote a line |
|
|
80
|
-
| **diagram · docs** |
|
|
81
|
-
| **
|
|
148
|
+
| **diagram · atlas · docs** | Mermaid source, a diagram index, and prose you can print or write to `ONBOARDER.md` |
|
|
149
|
+
| **workflows · sbom · diff** | CI pipelines, dependency/license inventory, and changed files with blast radius |
|
|
150
|
+
| **engines · deep** | See optional analyzers, then run one (`deep semgrep`) or all (`deep all`) |
|
|
151
|
+
| **ask** | Ask an OpenAI-compatible model a question using the current repository scan |
|
|
152
|
+
| **pick · cd · rescan · web** | Browse device folders, switch repo, reload from disk, or start the web UI |
|
|
82
153
|
| **github** | Stars, forks, watchers, license and topics from GitHub, for the repo you have loaded |
|
|
83
154
|
| **Tab · `!cmd`** | Completes commands then file paths; runs a shell command inline |
|
|
84
155
|
|
|
156
|
+
`report` reads a local folder or Git URL once, prints file counts, import resolution,
|
|
157
|
+
entry points, health, security, and test reachability, then exits. Its JSON output
|
|
158
|
+
has `schemaVersion: 1` and contains no source text.
|
|
159
|
+
|
|
160
|
+
All application modules are authored in TypeScript under `src/`: the server,
|
|
161
|
+
MCP tools, analyzer, diagrams, CLI, and browser views. Builds emit JavaScript,
|
|
162
|
+
declarations, and source maps into the existing runtime folders, so the npm CLI
|
|
163
|
+
and Node 20+ keep their existing entry points. Edit `src/`, rather than generated
|
|
164
|
+
files in `cli/`, `server/`, `shared/`, or `public/js/`.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm ci
|
|
168
|
+
npm run dev # rebuild on changes; restart after a successful compilation
|
|
169
|
+
npm run build # typecheck and generate the distributable files
|
|
170
|
+
npm run check # typecheck, tests, and generated-build consistency
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
`tsconfig.json` checks the whole application. The new portable contracts, scan
|
|
174
|
+
controls, request validator, browser adapter, editor wrapper, and terminal layout
|
|
175
|
+
also pass the strict checks in `tsconfig.strict.json`. Older view and orchestration
|
|
176
|
+
code still uses permissive types; converting every legacy callback and data bag
|
|
177
|
+
to strict types is follow-up work. No application file disables type checking.
|
|
178
|
+
|
|
179
|
+
Scans accept validated limits and bounded read concurrency. The browser offers a
|
|
180
|
+
**Cancel scan** button, browser-folder scans report progress, and disconnected
|
|
181
|
+
server requests stop scanning. File limits measure UTF-8 bytes, including
|
|
182
|
+
non-ASCII source. TypeScript configs support comments, trailing commas, slash
|
|
183
|
+
aliases, and mapping generated JavaScript imports back to TypeScript source. CLI limits work with `report` and persist across `explore` rescans and repository changes:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
onboarder report . --max-files 10000 --max-file-size 524288 --read-concurrency 4
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The HTTP equivalent is `{ "path": "/repo", "options": { "maxFiles": 10000,
|
|
190
|
+
"maxFileSize": 524288, "readConcurrency": 4 } }`. Defaults are 4,000 files,
|
|
191
|
+
200 KiB per file, and 8 concurrent reads. Maximums are 100,000 files, 10 MiB,
|
|
192
|
+
and 32 reads. Scan cache keys include every file and its imports, exports, and
|
|
193
|
+
findings, so changes beyond the first hundred files also invalidate the cache.
|
|
194
|
+
|
|
195
|
+
The explorer's `ask` command is optional. Set `ONBOARDER_AI_BASE_URL` and `ONBOARDER_AI_MODEL`, plus
|
|
196
|
+
`ONBOARDER_AI_API_KEY` when the endpoint requires a key. The CLI also accepts
|
|
197
|
+
`OPENAI_BASE_URL`, `OPENAI_MODEL`, and `OPENAI_API_KEY`. It sends the question
|
|
198
|
+
and a limited scan summary only when you run `ask`; the key stays in the
|
|
199
|
+
process environment and is not saved in Onboarder's config.
|
|
200
|
+
|
|
201
|
+
### Hermes repository and GitHub agent
|
|
202
|
+
|
|
203
|
+
`onboarder agent` adds multi-step repository work through [Nous Research's Hermes Agent](https://github.com/NousResearch/hermes-agent). Hermes is an optional, separately installed Python runtime; Onboarder's npm package still has no runtime dependencies. The TypeScript harness supplies **37 scoped MCP tools** built around Onboarder's existing analysis and GitHub's API.
|
|
204
|
+
|
|
205
|
+
```sh
|
|
206
|
+
onboarder agent setup
|
|
207
|
+
onboarder agent model # choose a provider/model in the dedicated profile
|
|
208
|
+
onboarder agent doctor
|
|
209
|
+
onboarder agent ask . --task "Explain the authentication flow"
|
|
210
|
+
onboarder agent review . --pr 42 --task "Review correctness and security"
|
|
211
|
+
onboarder agent triage . --issue 12 --task "Investigate the cause and propose labels"
|
|
212
|
+
onboarder agent implement . --issue 12 --task "Fix this issue" --allow-checks
|
|
213
|
+
onboarder agent pr . --task "Implement the fix and open a draft PR" --allow-checks --allow-github-writes
|
|
214
|
+
onboarder agent github . --task "Explain why the latest CI run failed"
|
|
215
|
+
onboarder agent runs
|
|
216
|
+
onboarder agent show <run-id>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
The same commands work inside the explorer: `agent review --pr 42` uses the loaded repository. Implementation and PR work require a persistent local checkout; the explorer's temporary URL clones are removed on exit. `agent help` lists setup and workflow options. Use `--dry-run --json` to inspect a plan without creating a workspace or calling a model. Use `--json` for one machine-readable result; progress stays on stderr.
|
|
220
|
+
|
|
221
|
+
| Workflow | Result |
|
|
222
|
+
| --- | --- |
|
|
223
|
+
| `ask` | Repository Q&A grounded in scan, architecture, search and source tools |
|
|
224
|
+
| `review` | Local-change or GitHub PR findings, patch coverage, discussion and checks at the PR head SHA |
|
|
225
|
+
| `triage` | Issue investigation, duplicate candidates, priority, labels and a proposed implementation plan |
|
|
226
|
+
| `implement` | Edits in a separate Git worktree, diff inspection and optional npm checks |
|
|
227
|
+
| `pr` | Implementation plus a proposed PR; publishes a **draft** when GitHub writes are enabled |
|
|
228
|
+
| `github` | Repository, issues, PR discussions, labels, CI runs/jobs, comments and review tasks |
|
|
229
|
+
|
|
230
|
+
GitHub access uses the local checkout's **github.com `origin`** and `GITHUB_TOKEN` or `GH_TOKEN`. Public reads can work without a token; private reads and writes need a token with access to the requested resources. Git transport uses your existing Git credentials. Publishing a review requires the freshly read PR head SHA and refuses a changed head.
|
|
231
|
+
|
|
232
|
+
Source editing is available only in `implement`/`pr` worktrees created at **committed HEAD** on a `codex/agent-…` branch. Uncommitted changes in your source checkout are excluded. File tools refuse symlinks, credential files, traversal and files larger than 128 KiB; edits require the hash of a fresh read. Workspaces remain available after completion or failure for inspection. Publishing commits workspace changes, pushes that task branch and creates a draft PR; it does not merge. The PR target defaults to the cached `origin/HEAD` branch, falling back to the current branch; choose another with `--base`. Repeated identical successful writes are deduplicated within one running tool server.
|
|
233
|
+
|
|
234
|
+
`--allow-checks` allows lockfile dependency installation with lifecycle scripts disabled, plus `npm test`, `npm run typecheck` and `npm run build`. Test/build scripts can execute repository code and may write files. `--allow-github-writes` enables issue updates, comments, PR reviews and draft PR publishing. Both permissions are enforced by the tools and default to off. Onboarder supplies only its dedicated MCP toolset to Hermes.
|
|
235
|
+
|
|
236
|
+
Runs have a default 24-turn, 300-second limit; adjust with `--max-turns` and `--timeout`. Ctrl-C cancels an active agent in both the CLI and explorer. `--resume <run-id>` continues a saved Hermes session in its original workspace; repeat any enabled permission flags. Resume cannot expand the original permissions. Timeouts, missing completion frames and nonzero process exits are recorded as failures.
|
|
237
|
+
|
|
238
|
+
Run metadata, final answers and operation audits live under `~/.config/onboarder/agent` (override with `ONBOARDER_AGENT_HOME`). Hermes configuration and transcripts use a dedicated named profile under the installation's `profiles` folder; `agent setup` prints its path. Audit records contain operation names, outcome and timing; Hermes session transcripts can contain prompts and source. Repository/tool content is sent to the configured model during agent tasks. Known environment credentials are redacted from Onboarder diagnostics and final answers. API keys supplied through the environment are not written by Onboarder.
|
|
239
|
+
|
|
240
|
+
For an existing compatible endpoint, set `ONBOARDER_AI_BASE_URL`, `ONBOARDER_AI_MODEL` and optionally `ONBOARDER_AI_API_KEY` **before the first `agent setup`**. Standard `OPENAI_BASE_URL`, `OPENAI_MODEL`, `OPENAI_API_KEY` aliases also work. Later, `agent model` updates the dedicated profile without changing your normal Hermes profile. Use `ONBOARDER_HERMES_BIN` to select a Hermes executable. For a nonstandard source installation, preserve its `HERMES_HOME`/`HERMES_RUNTIME_DIR` environment so the harness can locate its shared Python packages.
|
|
241
|
+
|
|
242
|
+
`onboarder agent source` fetches the official MIT-licensed source at the researched revision into the agent source cache. This does not install Python dependencies or vendor Hermes into the npm package. The source review and integration decisions are documented in [Hermes research](docs/HERMES_RESEARCH.md). Developers can run `node scripts/hermes-smoke.mjs` after building to verify a real installed Hermes runtime against a local model fixture, without external inference or GitHub writes.
|
|
243
|
+
|
|
85
244
|
**It also takes a GitHub URL, the way the site does.** Point it at one and it clones, scans and opens that repo:
|
|
86
245
|
|
|
87
246
|
```
|
|
@@ -104,6 +263,7 @@ Details worth knowing:
|
|
|
104
263
|
- **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
264
|
- **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
265
|
- **Bridges to the web.** `web` starts the UI in the background and prints the URL, without ending your session.
|
|
266
|
+
- **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
267
|
|
|
108
268
|
---
|
|
109
269
|
|
|
@@ -118,6 +278,72 @@ Details worth knowing:
|
|
|
118
278
|
|
|
119
279
|
## 🔍 Features & Views
|
|
120
280
|
|
|
281
|
+
### Change Review — a local review workbench
|
|
282
|
+
|
|
283
|
+
After opening a repository by its local path, the **Review** tab is the first
|
|
284
|
+
workspace. Choose working-tree changes (including untracked files), staged
|
|
285
|
+
changes, or a branch/commit range, then select **Run review**.
|
|
286
|
+
|
|
287
|
+
- Security and quality patterns are flagged on **added lines**, with file and
|
|
288
|
+
line references, severity, and suggested next steps. Credential excerpts are
|
|
289
|
+
redacted from reports, including other findings on the same credential line.
|
|
290
|
+
- A risk-sorted walkthrough groups source, tests, documentation, dependencies,
|
|
291
|
+
and configuration changes. Dependency impact uses the last repository scan;
|
|
292
|
+
rescan after structural edits and treat branch-range impact as an estimate.
|
|
293
|
+
- The checklist reports high-severity patterns, conflict markers, test-file
|
|
294
|
+
changes, change size, and skipped files. Tests are **not executed** and
|
|
295
|
+
test-file changes do not establish coverage.
|
|
296
|
+
- Filter findings, acknowledge them locally, and export Markdown or JSON.
|
|
297
|
+
Acknowledgements belong to an exact comparison fingerprint; editing the
|
|
298
|
+
change starts a fresh review. Exports always include all detected findings.
|
|
299
|
+
- An optional **reviewer's brief** sends the report to your configured AI
|
|
300
|
+
provider for a summary and testing plan. It does not send the raw diff.
|
|
301
|
+
Core reviews work offline without an API key.
|
|
302
|
+
|
|
303
|
+
The same review is available to scripts:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
onboarder review .
|
|
307
|
+
onboarder review . --staged --json
|
|
308
|
+
onboarder review . --base main --head feature/my-change
|
|
309
|
+
onboarder review . --profile focused --fail-on high
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
`--fail-on` exits with status 1 for findings at or above the selected severity.
|
|
313
|
+
Conflict markers also return 1. Invalid comparisons return a failure instead
|
|
314
|
+
of falling back to a different diff. Reviews use the Git repository root;
|
|
315
|
+
subfolder scans cannot read changes outside the scanned folder.
|
|
316
|
+
|
|
317
|
+
Optional `.onboarder-review.json` in the repository root:
|
|
318
|
+
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"profile": "balanced",
|
|
322
|
+
"exclude": ["dist/**", "**/*.generated.ts"],
|
|
323
|
+
"instructions": [
|
|
324
|
+
{ "path": "src/auth/**", "instruction": "Check permission boundaries and failure handling." }
|
|
325
|
+
]
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Profiles: `focused` includes medium/above, `balanced` low/above, and `thorough`
|
|
330
|
+
all patterns. Exclusions use `*`, `**`, and `?` path globs. Guidelines are shown
|
|
331
|
+
for human review and included in the optional AI brief; the pattern engine
|
|
332
|
+
does not claim to enforce natural-language guidelines. Configuration always
|
|
333
|
+
comes from the current working tree, including for staged and branch reviews.
|
|
334
|
+
This project's configuration excludes generated JavaScript and vendored files
|
|
335
|
+
so changes are reviewed in their canonical TypeScript source.
|
|
336
|
+
|
|
337
|
+
Git commands have a 15-second timeout and a 5 MB output limit. Working reviews
|
|
338
|
+
include at most 200 untracked files, each at most 1 MB; oversized inputs fail
|
|
339
|
+
explicitly. Binary content, deleted files, metadata-only changes, exclusions,
|
|
340
|
+
and untracked symlinks have visible skip reasons. Reviews can be canceled.
|
|
341
|
+
|
|
342
|
+
Inspired by CodeRabbit's change summaries, path guidelines, and pre-merge
|
|
343
|
+
checks, this is a local pattern review workflow. It does not install a GitHub
|
|
344
|
+
App, automatically post PR comments, apply fixes, execute repository scripts,
|
|
345
|
+
or replace a human/security review.
|
|
346
|
+
|
|
121
347
|
### 1. Explorer (One Canvas, 6 Modes)
|
|
122
348
|
- **Tree**: Hierarchical expandable cell map of directories, files, hubs, and entry points with ghost connection cells.
|
|
123
349
|
- **Files**: Intra-folder dependency graphs with deep-dive call inspections.
|
|
@@ -128,6 +354,17 @@ Details worth knowing:
|
|
|
128
354
|
- **Tour**: Curated step-by-step walkthrough of key architectural waypoints.
|
|
129
355
|
- **Atlas**: Grid gallery of every pre-generated diagram across folders and components.
|
|
130
356
|
|
|
357
|
+
**Search:** Click Search or press `Cmd/Ctrl+K` to find files, symbols, and file
|
|
358
|
+
contents. Arrow keys select results; Enter opens them and `Cmd/Ctrl+Enter`
|
|
359
|
+
opens the source. `Alt+Left/Right` switches result kinds. Tab moves between
|
|
360
|
+
dialog controls; Escape clears the query, then closes. Filters such as
|
|
361
|
+
`path:src ext:ts render` can be removed using their chips.
|
|
362
|
+
|
|
363
|
+
Search reuses the scan's symbol index, combines rapid keystrokes, and displays
|
|
364
|
+
bounded previews with exact local match counts. Graph animation pauses outside
|
|
365
|
+
the Graph tab, while search is open, and when the browser tab is hidden. Review
|
|
366
|
+
filters update the findings without rebuilding the surrounding workspace.
|
|
367
|
+
|
|
131
368
|
### 1b. Deep Analysis — plug in the best engines (Optional, self-hosted)
|
|
132
369
|
|
|
133
370
|
Onboarder is the **frontend**; the sharpest open-source analyzers are the
|
|
@@ -167,8 +404,8 @@ Next to **Explorer** in the top nav. One page with everything:
|
|
|
167
404
|
- **What this means** — the AI reads the report: *"Explain this analysis"* for a
|
|
168
405
|
prioritised read, or ask about a specific finding (*"is the eval finding
|
|
169
406
|
reachable?"*). It is told which engines did **not** run, so it will not claim
|
|
170
|
-
coverage it does not have. Needs an
|
|
171
|
-
report is still fully readable and the button offers the
|
|
407
|
+
coverage it does not have. Needs a Hermes connection or an AI endpoint; without one the
|
|
408
|
+
report is still fully readable and the button offers the AI connection drawer.
|
|
172
409
|
|
|
173
410
|
Rules that keep this safe to self-host:
|
|
174
411
|
|
|
@@ -202,8 +439,12 @@ Rules that keep this safe to self-host:
|
|
|
202
439
|
|
|
203
440
|
### 5. AI Notes & Explainers (Optional)
|
|
204
441
|
- Works 100% offline out-of-the-box.
|
|
442
|
+
- In **AI connection**, choose **Hermes · use my configured login** to reuse the Onboarder CLI's Hermes provider and model. No API key is needed in the browser. The drawer shows the current model/provider; use **Test connection**, then **Save**. Install Hermes on the computer running the server and run `onboarder agent model` to sign in or change models, then refresh the configuration in the drawer.
|
|
205
443
|
- Connect any OpenAI-compatible LLM endpoint (OpenAI, Azure OpenAI, Groq, OpenRouter, Ollama, LM Studio) to generate streaming explanations and repository documentation.
|
|
206
|
-
-
|
|
444
|
+
- Hermes powers questions, explanations, diagrams, documentation, analysis summaries and review briefs using their supplied repository context. Web explanations have no machine tools. Each request starts a fresh conversation, with a two-minute runtime budget and at most two concurrent requests; closing or cancelling an answer stops its Hermes process. Runtime startup can add a few seconds to the first response.
|
|
445
|
+
- **AI sketch** draws the current map, folder, file or architecture view using that connection. Sketches are checked with Mermaid before they are cached and displayed. **Static** returns to the original map; **AI sketch ✓** restores the cached sketch. Generated diagrams support **Copy Mermaid**, **Save SVG**, pan/zoom and file links. **Cancel sketch**, changing views, or opening another repository cancels an unfinished request. Hermes diagram requests use low reasoning without changing the saved chat configuration.
|
|
446
|
+
- Hermes owns its login and may save prompts/source in its session transcripts. Context is sent to the configured provider under its normal account usage limits. Existing API endpoint settings still work; API-mode keys are saved in browser `localStorage` and never logged or written to the server's disk. Hermes requests do not forward these browser keys.
|
|
447
|
+
- Developers can run `node scripts/hermes-web-smoke.mjs` after building to verify the HTTP integration against a real installed Hermes runtime and a local model fixture without external inference.
|
|
207
448
|
|
|
208
449
|
### 6. MCP Server — let any AI agent onboard itself
|
|
209
450
|
|
|
@@ -375,43 +616,29 @@ Cloudflare quick tunnels and Tailscale remain supported. They terminate TLS and
|
|
|
375
616
|
|
|
376
617
|
```
|
|
377
618
|
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
|
|
619
|
+
├── src/ # Canonical TypeScript application source
|
|
620
|
+
│ ├── cli/ # Wizard, lifecycle commands, terminal explorer, reports
|
|
621
|
+
│ ├── server/ # HTTP server, auth, settings, clone sessions, MCP, tools
|
|
622
|
+
│ ├── shared/ # Portable contracts and the isomorphic analysis engine
|
|
623
|
+
│ │ ├── contracts.ts # FileSource, scan options/progress, settings, analysis types
|
|
624
|
+
│ │ ├── analyzer/ # Language parsers, graph analytics, scan controls, metrics
|
|
625
|
+
│ │ ├── diagram/ # Mermaid and AI diagram generation
|
|
626
|
+
│ │ └── search/ # Shared query language
|
|
627
|
+
│ └── public/ # Browser application, views, components, integration types
|
|
628
|
+
├── bin/ # npm entry-point trampoline and postinstall note
|
|
629
|
+
├── cli/ # Generated terminal runtime and declarations
|
|
630
|
+
├── server/ # Generated server/MCP runtime and declarations
|
|
631
|
+
├── shared/ # Generated shared engine, served at /shared/
|
|
632
|
+
├── public/
|
|
633
|
+
│ ├── app.js & js/ # Generated browser ES modules
|
|
634
|
+
│ ├── vendor/ # Offline Mermaid and Monaco builds
|
|
635
|
+
│ ├── index.html # App shell and scan controls
|
|
636
|
+
│ ├── login.html # Self-hosted access-key sign-in
|
|
637
|
+
│ └── styles.css # Existing paper-and-ink design
|
|
638
|
+
├── scripts/ # Development watcher and build consistency verification
|
|
639
|
+
├── tsconfig.json # Whole-application compilation
|
|
640
|
+
├── tsconfig.strict.json # Strict core checks
|
|
641
|
+
└── tests/ # Native node:test regression suite
|
|
415
642
|
```
|
|
416
643
|
|
|
417
644
|
---
|
|
@@ -421,7 +648,10 @@ codebase-onboarder/
|
|
|
421
648
|
Onboarder includes a comprehensive automated test suite built with Node's native test runner:
|
|
422
649
|
|
|
423
650
|
```bash
|
|
424
|
-
# Run all
|
|
651
|
+
# Run all checks (also exercised in CI on Node 20, 22, and 24)
|
|
652
|
+
npm run check
|
|
653
|
+
|
|
654
|
+
# Run the regression suite
|
|
425
655
|
npm test
|
|
426
656
|
```
|
|
427
657
|
|
|
@@ -433,6 +663,7 @@ Test suites cover:
|
|
|
433
663
|
- The settings layer end to end: schema validation, atomic config writes, the
|
|
434
664
|
Bearer auth gate, key rotation, DNS-rebinding protection, and the wizard's
|
|
435
665
|
branching/flag logic.
|
|
666
|
+
- Scan cancellation, bounded concurrent reads, UTF-8 limits, and request validation.
|
|
436
667
|
- Deep Analysis tooling: engine detection across Windows/macOS/Linux, install-plan
|
|
437
668
|
validation, output parsing, and report shaping.
|
|
438
669
|
|
|
@@ -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
|
+
}
|
package/bin/onboarder.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export declare const AGENT_HELP = "\n Onboarder agent \u2014 Hermes with repository and GitHub tools\n\n onboarder agent setup Create a dedicated Hermes profile\n onboarder chat [folder] Open the conversational harness with / commands\n onboarder agent model Configure its model/provider interactively\n onboarder agent doctor Check runtime and integration compatibility\n onboarder agent source Fetch the researched official Hermes source\n onboarder agent runs List saved runs\n onboarder agent show <run-id> Inspect a saved result and workspace\n onboarder agent <workflow> [folder] --task \"...\"\n\n Workflows: ask, review, triage, implement, pr, github\n --pr <number> Review/inspect a GitHub pull request\n --issue <number> Work from an issue\n --base <branch> PR target (default: origin HEAD, or current branch)\n --allow-checks Allow npm install/test/typecheck/build (repository code)\n --allow-github-writes Allow issue/review/comment updates and draft PR publishing\n --max-turns <1\u2013100> Agent turn limit (default: 24)\n --timeout <seconds> Run limit, 15\u20133600 (default: 300)\n --model <name> --provider <name> Override the dedicated Hermes model\n --resume <run-id> Continue a session; repeat allowed permission flags\n --dry-run Print the plan without a model call or worktree\n --json One JSON result; progress goes to stderr\n\n implement/pr use a new Git worktree at committed HEAD. Uncommitted source\n changes are excluded. Without --allow-github-writes, pr prepares a draft locally.\n GitHub uses the checkout's github.com origin and GITHUB_TOKEN or GH_TOKEN.\n Hermes is an optional separate Python runtime: https://github.com/NousResearch/hermes-agent\n Profile/history: ONBOARDER_AGENT_HOME (default: ~/.config/onboarder/agent).\n\n onboarder agent ask . --task \"Explain the authentication flow\"\n onboarder agent review . --pr 42 --task \"Find correctness and security issues\"\n onboarder agent triage . --issue 12 --task \"Investigate and propose a fix\"\n onboarder agent implement . --task \"Fix issue 12\" --issue 12 --allow-checks\n onboarder agent pr . --task \"Fix issue 12 and open a draft PR\" --issue 12 --allow-checks --allow-github-writes\n";
|
|
2
|
+
export declare const AGENT_OPTIONS: {
|
|
3
|
+
task: {
|
|
4
|
+
type: 'string';
|
|
5
|
+
};
|
|
6
|
+
pr: {
|
|
7
|
+
type: 'string';
|
|
8
|
+
};
|
|
9
|
+
issue: {
|
|
10
|
+
type: 'string';
|
|
11
|
+
};
|
|
12
|
+
'max-turns': {
|
|
13
|
+
type: 'string';
|
|
14
|
+
};
|
|
15
|
+
timeout: {
|
|
16
|
+
type: 'string';
|
|
17
|
+
};
|
|
18
|
+
resume: {
|
|
19
|
+
type: 'string';
|
|
20
|
+
};
|
|
21
|
+
'allow-checks': {
|
|
22
|
+
type: 'boolean';
|
|
23
|
+
};
|
|
24
|
+
'allow-github-writes': {
|
|
25
|
+
type: 'boolean';
|
|
26
|
+
};
|
|
27
|
+
'dry-run': {
|
|
28
|
+
type: 'boolean';
|
|
29
|
+
};
|
|
30
|
+
model: {
|
|
31
|
+
type: 'string';
|
|
32
|
+
};
|
|
33
|
+
provider: {
|
|
34
|
+
type: 'string';
|
|
35
|
+
};
|
|
36
|
+
json: {
|
|
37
|
+
type: 'boolean';
|
|
38
|
+
};
|
|
39
|
+
help: {
|
|
40
|
+
type: 'boolean';
|
|
41
|
+
short: string;
|
|
42
|
+
};
|
|
43
|
+
base: {
|
|
44
|
+
type: 'string';
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export declare function agentDoctor(home?: string, env?: NodeJS.ProcessEnv): Promise<{
|
|
48
|
+
runtime: boolean;
|
|
49
|
+
compatible: boolean;
|
|
50
|
+
server: boolean;
|
|
51
|
+
profile: boolean;
|
|
52
|
+
githubToken: boolean;
|
|
53
|
+
home: string;
|
|
54
|
+
ready: boolean;
|
|
55
|
+
detail: string;
|
|
56
|
+
next: string;
|
|
57
|
+
}>;
|
|
58
|
+
export declare function fetchHermesSource(home?: string, signal?: AbortSignal): Promise<{
|
|
59
|
+
source: string;
|
|
60
|
+
revision: string;
|
|
61
|
+
directory: string;
|
|
62
|
+
license: string;
|
|
63
|
+
installed: boolean;
|
|
64
|
+
}>;
|
|
65
|
+
export declare function agentCommand(sub?: string, positionals?: string[], flags?: Record<string, any>, options?: {
|
|
66
|
+
root?: string;
|
|
67
|
+
signal?: AbortSignal;
|
|
68
|
+
out?: (text: string) => void;
|
|
69
|
+
err?: (text: string) => void;
|
|
70
|
+
}): Promise<number>;
|
|
71
|
+
export declare function explorerAgent(args: string[], root: string, signal: AbortSignal, out: (text: string) => void, err: (text: string) => void): Promise<string>;
|