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
|
@@ -13,142 +13,137 @@
|
|
|
13
13
|
// * What survives a filter? Severity, engine and free text, applied as one
|
|
14
14
|
// predicate so the counts above and the table below can never disagree
|
|
15
15
|
// about what is being shown.
|
|
16
|
-
|
|
17
16
|
export const SEV_ORDER = ['critical', 'high', 'medium', 'low', 'info'];
|
|
18
|
-
|
|
19
17
|
export function sevRank(severity) {
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
const at = SEV_ORDER.indexOf(severity);
|
|
19
|
+
return at === -1 ? SEV_ORDER.length : at;
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
export const BUILTIN_TOOL = 'built-in';
|
|
25
|
-
|
|
26
22
|
// One flat list of findings, worst first. `security` is the roll-up from
|
|
27
23
|
// `summarizeSecurity`, which is also what the Security panel draws.
|
|
28
24
|
export function findingsFromSecurity(security) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
25
|
+
const rows = [];
|
|
26
|
+
// The parenthesised default is hoisted rather than inlined: `for (const x of
|
|
27
|
+
// (a || []))` reads as a call to a function named `of` to the front end's
|
|
28
|
+
// dangling-call lint, and the lint is right to be suspicious of that shape.
|
|
29
|
+
const files = (security && security.files) || [];
|
|
30
|
+
for (const file of files) {
|
|
31
|
+
for (const finding of file.findings || []) {
|
|
32
|
+
rows.push({
|
|
33
|
+
path: file.path,
|
|
34
|
+
name: file.name || String(file.path || '').split('/').pop(),
|
|
35
|
+
line: finding.line || 1,
|
|
36
|
+
severity: SEV_ORDER.includes(finding.severity) ? finding.severity : 'info',
|
|
37
|
+
rule: finding.rule || 'unknown',
|
|
38
|
+
category: finding.category || 'other',
|
|
39
|
+
message: finding.message || '',
|
|
40
|
+
excerpt: finding.excerpt || '',
|
|
41
|
+
tool: finding.source === 'external' ? (finding.tool || 'external') : BUILTIN_TOOL,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|| a.line - b.line);
|
|
45
|
+
return rows.sort((a, b) => sevRank(a.severity) - sevRank(b.severity)
|
|
46
|
+
|| a.path.localeCompare(b.path)
|
|
47
|
+
|| a.line - b.line);
|
|
52
48
|
}
|
|
53
|
-
|
|
54
49
|
// Counts for the header and the prompt. `external` vs `builtin` is kept because
|
|
55
50
|
// "the built-in regex scanner said so" and "Semgrep said so" carry different
|
|
56
51
|
// weight, and the UI should be able to say which.
|
|
57
52
|
export function tabulate(rows) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
const bySeverity = {};
|
|
54
|
+
const byTool = {};
|
|
55
|
+
const byCategory = {};
|
|
56
|
+
for (const row of rows) {
|
|
57
|
+
bySeverity[row.severity] = (bySeverity[row.severity] || 0) + 1;
|
|
58
|
+
byTool[row.tool] = (byTool[row.tool] || 0) + 1;
|
|
59
|
+
byCategory[row.category] = (byCategory[row.category] || 0) + 1;
|
|
60
|
+
}
|
|
61
|
+
const external = rows.filter((r) => r.tool !== BUILTIN_TOOL).length;
|
|
62
|
+
return {
|
|
63
|
+
total: rows.length,
|
|
64
|
+
bySeverity,
|
|
65
|
+
byTool,
|
|
66
|
+
byCategory,
|
|
67
|
+
external,
|
|
68
|
+
builtin: rows.length - external,
|
|
69
|
+
critical: bySeverity.critical || 0,
|
|
70
|
+
high: bySeverity.high || 0,
|
|
71
|
+
medium: bySeverity.medium || 0,
|
|
72
|
+
low: (bySeverity.low || 0) + (bySeverity.info || 0),
|
|
73
|
+
};
|
|
79
74
|
}
|
|
80
|
-
|
|
81
75
|
// The filter is one predicate over three independent axes. `all` on an axis
|
|
82
76
|
// means "do not filter on this", which is why the default object is usable as-is.
|
|
83
77
|
export function filterFindings(rows, { severity = 'all', tool = 'all', q = '' } = {}) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
78
|
+
const needle = String(q || '').trim().toLowerCase();
|
|
79
|
+
return rows.filter((row) => {
|
|
80
|
+
if (severity !== 'all' && row.severity !== severity)
|
|
81
|
+
return false;
|
|
82
|
+
if (tool !== 'all' && row.tool !== tool)
|
|
83
|
+
return false;
|
|
84
|
+
if (!needle)
|
|
85
|
+
return true;
|
|
86
|
+
return row.path.toLowerCase().includes(needle)
|
|
87
|
+
|| row.message.toLowerCase().includes(needle)
|
|
88
|
+
|| row.rule.toLowerCase().includes(needle)
|
|
89
|
+
|| row.category.toLowerCase().includes(needle);
|
|
90
|
+
});
|
|
94
91
|
}
|
|
95
|
-
|
|
96
92
|
// The engine table: what each tool is, whether it is installed, and what it did
|
|
97
93
|
// last time it ran. `status` comes from `GET /api/tools`, `report` from the last
|
|
98
94
|
// `POST /api/tools/run` — they are joined here so the view has one list to draw
|
|
99
95
|
// instead of two to reconcile.
|
|
100
96
|
export function engineRows(status, report) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
97
|
+
const passes = (report && report.passes) || [];
|
|
98
|
+
return Object.keys(status || {}).map((id) => {
|
|
99
|
+
const meta = status[id] || {};
|
|
100
|
+
const pass = passes.find((p) => p.id === id) || null;
|
|
101
|
+
return {
|
|
102
|
+
id,
|
|
103
|
+
label: meta.label || id,
|
|
104
|
+
kind: meta.kind || 'security',
|
|
105
|
+
purpose: meta.purpose || '',
|
|
106
|
+
available: !!meta.available,
|
|
107
|
+
how: meta.how || null,
|
|
108
|
+
reason: meta.reason || null,
|
|
109
|
+
// The option schema and its defaults, for the Configure form; `installable`
|
|
110
|
+
// is whether the server knows how to install this engine from the GUI.
|
|
111
|
+
options: Array.isArray(meta.options) ? meta.options : [],
|
|
112
|
+
defaults: meta.defaults || {},
|
|
113
|
+
installable: meta.installable !== false,
|
|
114
|
+
ran: !!(pass && pass.ok),
|
|
115
|
+
failed: !!(pass && !pass.ok && pass.available),
|
|
116
|
+
findings: pass && pass.ok ? (pass.findings || []).length : 0,
|
|
117
|
+
ms: pass && pass.ok ? pass.ms : null,
|
|
118
|
+
failure: pass && !pass.ok && pass.available ? pass.reason : null,
|
|
119
|
+
};
|
|
120
|
+
});
|
|
125
121
|
}
|
|
126
|
-
|
|
127
122
|
// The one-line verdict under the engine list. Written here rather than in the
|
|
128
123
|
// view because "nothing ran" and "nothing found" must never be confused, and
|
|
129
124
|
// that distinction is the whole point of the panel.
|
|
130
125
|
export function engineSummary(report, rows) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
126
|
+
if (!report) {
|
|
127
|
+
return { tone: 'idle', text: 'No run yet. The built-in scanner is the whole story until you run an engine.' };
|
|
128
|
+
}
|
|
129
|
+
const ran = rows.filter((r) => r.ran).length;
|
|
130
|
+
const missing = rows.filter((r) => !r.available).length;
|
|
131
|
+
const failed = rows.filter((r) => r.failed).length;
|
|
132
|
+
if (!ran) {
|
|
133
|
+
return {
|
|
134
|
+
tone: 'none',
|
|
135
|
+
text: missing === rows.length && rows.length
|
|
136
|
+
? 'No engine is installed on this machine. Install any of the ones below and run again — the built-in scan still stands.'
|
|
137
|
+
: 'No engine managed to run. The reasons are listed above.',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const findings = (report.findings || []).length;
|
|
141
|
+
const parts = [`${ran} of ${rows.length} engines ran in ${report.ms}ms`];
|
|
142
|
+
parts.push(findings ? `${findings} finding${findings === 1 ? '' : 's'} came back` : 'none of them found anything');
|
|
143
|
+
if (failed)
|
|
144
|
+
parts.push(`${failed} failed`);
|
|
145
|
+
if (missing)
|
|
146
|
+
parts.push(`${missing} not installed`);
|
|
147
|
+
return { tone: findings ? 'found' : 'clean', text: parts.join(' · ') + '.' };
|
|
153
148
|
}
|
|
154
|
-
|
|
149
|
+
//# sourceMappingURL=analysisReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisReport.js","sourceRoot":"","sources":["../../src/public/js/analysisReport.ts"],"names":[],"mappings":"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","sourcesContent":["// Shaping an analysis report for the Deep Analysis view — pure, DOM-free, and\n// therefore testable in Node.\n//\n// Three questions get answered here, and nowhere else:\n//\n// * What findings do we actually have? The built-in scanner's findings live\n// under `security.files[].findings`; the external engines' findings are\n// merged into the same place, tagged `source: 'external'`. Flattening them\n// into rows is the only place that difference is spelled out, so every view\n// downstream can stop caring which engine answered.\n// * What is the shape of the report? Counts by severity, by tool and by\n// category are what the header chips and the AI prompt both run on.\n// * What survives a filter? Severity, engine and free text, applied as one\n// predicate so the counts above and the table below can never disagree\n// about what is being shown.\n\nexport const SEV_ORDER = ['critical', 'high', 'medium', 'low', 'info'];\n\nexport function sevRank(severity) {\n const at = SEV_ORDER.indexOf(severity);\n return at === -1 ? SEV_ORDER.length : at;\n}\n\nexport const BUILTIN_TOOL = 'built-in';\n\n// One flat list of findings, worst first. `security` is the roll-up from\n// `summarizeSecurity`, which is also what the Security panel draws.\nexport function findingsFromSecurity(security) {\n const rows = [];\n // The parenthesised default is hoisted rather than inlined: `for (const x of\n // (a || []))` reads as a call to a function named `of` to the front end's\n // dangling-call lint, and the lint is right to be suspicious of that shape.\n const files = (security && security.files) || [];\n for (const file of files) {\n for (const finding of file.findings || []) {\n rows.push({\n path: file.path,\n name: file.name || String(file.path || '').split('/').pop(),\n line: finding.line || 1,\n severity: SEV_ORDER.includes(finding.severity) ? finding.severity : 'info',\n rule: finding.rule || 'unknown',\n category: finding.category || 'other',\n message: finding.message || '',\n excerpt: finding.excerpt || '',\n tool: finding.source === 'external' ? (finding.tool || 'external') : BUILTIN_TOOL,\n });\n }\n }\n return rows.sort((a, b) => sevRank(a.severity) - sevRank(b.severity)\n || a.path.localeCompare(b.path)\n || a.line - b.line);\n}\n\n// Counts for the header and the prompt. `external` vs `builtin` is kept because\n// \"the built-in regex scanner said so\" and \"Semgrep said so\" carry different\n// weight, and the UI should be able to say which.\nexport function tabulate(rows) {\n const bySeverity: Record<string, any> = {};\n const byTool: Record<string, any> = {};\n const byCategory: Record<string, any> = {};\n for (const row of rows) {\n bySeverity[row.severity] = (bySeverity[row.severity] || 0) + 1;\n byTool[row.tool] = (byTool[row.tool] || 0) + 1;\n byCategory[row.category] = (byCategory[row.category] || 0) + 1;\n }\n const external = rows.filter((r) => r.tool !== BUILTIN_TOOL).length;\n return {\n total: rows.length,\n bySeverity,\n byTool,\n byCategory,\n external,\n builtin: rows.length - external,\n critical: bySeverity.critical || 0,\n high: bySeverity.high || 0,\n medium: bySeverity.medium || 0,\n low: (bySeverity.low || 0) + (bySeverity.info || 0),\n };\n}\n\n// The filter is one predicate over three independent axes. `all` on an axis\n// means \"do not filter on this\", which is why the default object is usable as-is.\nexport function filterFindings(rows, { severity = 'all', tool = 'all', q = '' }: Record<string, any> = {}) {\n const needle = String(q || '').trim().toLowerCase();\n return rows.filter((row) => {\n if (severity !== 'all' && row.severity !== severity) return false;\n if (tool !== 'all' && row.tool !== tool) return false;\n if (!needle) return true;\n return row.path.toLowerCase().includes(needle)\n || row.message.toLowerCase().includes(needle)\n || row.rule.toLowerCase().includes(needle)\n || row.category.toLowerCase().includes(needle);\n });\n}\n\n// The engine table: what each tool is, whether it is installed, and what it did\n// last time it ran. `status` comes from `GET /api/tools`, `report` from the last\n// `POST /api/tools/run` — they are joined here so the view has one list to draw\n// instead of two to reconcile.\nexport function engineRows(status, report) {\n const passes = (report && report.passes) || [];\n return Object.keys(status || {}).map((id) => {\n const meta = status[id] || {};\n const pass = passes.find((p) => p.id === id) || null;\n return {\n id,\n label: meta.label || id,\n kind: meta.kind || 'security',\n purpose: meta.purpose || '',\n available: !!meta.available,\n how: meta.how || null,\n reason: meta.reason || null,\n // The option schema and its defaults, for the Configure form; `installable`\n // is whether the server knows how to install this engine from the GUI.\n options: Array.isArray(meta.options) ? meta.options : [],\n defaults: meta.defaults || {},\n installable: meta.installable !== false,\n ran: !!(pass && pass.ok),\n failed: !!(pass && !pass.ok && pass.available),\n findings: pass && pass.ok ? (pass.findings || []).length : 0,\n ms: pass && pass.ok ? pass.ms : null,\n failure: pass && !pass.ok && pass.available ? pass.reason : null,\n };\n });\n}\n\n// The one-line verdict under the engine list. Written here rather than in the\n// view because \"nothing ran\" and \"nothing found\" must never be confused, and\n// that distinction is the whole point of the panel.\nexport function engineSummary(report, rows) {\n if (!report) {\n return { tone: 'idle', text: 'No run yet. The built-in scanner is the whole story until you run an engine.' };\n }\n const ran = rows.filter((r) => r.ran).length;\n const missing = rows.filter((r) => !r.available).length;\n const failed = rows.filter((r) => r.failed).length;\n\n if (!ran) {\n return {\n tone: 'none',\n text: missing === rows.length && rows.length\n ? 'No engine is installed on this machine. Install any of the ones below and run again — the built-in scan still stands.'\n : 'No engine managed to run. The reasons are listed above.',\n };\n }\n\n const findings = (report.findings || []).length;\n const parts = [`${ran} of ${rows.length} engines ran in ${report.ms}ms`];\n parts.push(findings ? `${findings} finding${findings === 1 ? '' : 's'} came back` : 'none of them found anything');\n if (failed) parts.push(`${failed} failed`);\n if (missing) parts.push(`${missing} not installed`);\n return { tone: findings ? 'found' : 'clean', text: parts.join(' · ') + '.' };\n}\n\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ScanRequest } from '../../shared/contracts.js';
|
|
2
|
+
export declare function scanOnServer(payload: ScanRequest, options?: {
|
|
3
|
+
signal?: AbortSignal;
|
|
4
|
+
}): Promise<any>;
|
|
5
|
+
export declare function cleanupClone(cloneId: any): Promise<void>;
|
|
6
|
+
export declare function fetchFileText(scanId: any, path: any): Promise<string>;
|
|
7
|
+
export declare function fetchToolsStatus(): Promise<any>;
|
|
8
|
+
export declare function runAnalysisTools(scanId: any, options?: Record<string, any>): Promise<any>;
|
|
9
|
+
export declare function streamToolInstall(tool: any, onEvent: any): Promise<any>;
|
|
10
|
+
export declare function fetchMcpStatus(): Promise<any>;
|
|
11
|
+
export declare function startMcpServer(): Promise<any>;
|
|
12
|
+
export declare function stopMcpServer(): Promise<any>;
|
|
13
|
+
export declare function fetchMcpCommand(): Promise<any>;
|
|
14
|
+
export declare function streamExplain({ connection, baseUrl, apiKey, model, messages, maxTokens, providerOptions, purpose, signal }: {
|
|
15
|
+
apiKey?: string;
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
connection?: string;
|
|
18
|
+
maxTokens?: number;
|
|
19
|
+
messages: any;
|
|
20
|
+
model?: string;
|
|
21
|
+
providerOptions?: {};
|
|
22
|
+
purpose?: string;
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
}): AsyncGenerator<string, void, unknown>;
|
|
25
|
+
export declare function fetchHermesStatus(signal?: AbortSignal): Promise<any>;
|
|
26
|
+
export declare function fetchServerSettings(): Promise<any>;
|
|
27
|
+
export declare function updateServerSettings(patch: any): Promise<any>;
|
|
28
|
+
export declare function rotateServerAccessKey(): Promise<any>;
|
|
29
|
+
export declare function logoutRemoteSession(): Promise<any>;
|