codebase-onboarder 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +196 -47
- package/bin/build-if-source.js +23 -0
- package/cli/commands.d.ts +26 -0
- package/cli/commands.js +836 -811
- package/cli/commands.js.map +1 -0
- package/cli/explorer/advanced.d.ts +14 -0
- package/cli/explorer/advanced.js +449 -0
- package/cli/explorer/advanced.js.map +1 -0
- package/cli/explorer/app.d.ts +1 -0
- package/cli/explorer/app.js +396 -229
- 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 +400 -162
- 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 +73 -0
- package/cli/explorer/github.js.map +1 -0
- package/cli/explorer/graphs.d.ts +7 -0
- package/cli/explorer/graphs.js +173 -0
- 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 +184 -95
- package/cli/explorer/session.js.map +1 -0
- package/cli/explorer/views.d.ts +19 -0
- package/cli/explorer/views.js +496 -412
- package/cli/explorer/views.js.map +1 -0
- package/cli/explorer/wrap.d.ts +1 -0
- package/cli/explorer/wrap.js +33 -0
- package/cli/explorer/wrap.js.map +1 -0
- package/cli/main.d.ts +1 -0
- package/cli/main.js +235 -138
- 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 +55 -35
- package/cli/ui.js.map +1 -0
- package/cli/wizard.d.ts +187 -0
- package/cli/wizard.js +304 -284
- package/cli/wizard.js.map +1 -0
- package/package.json +15 -4
- package/public/app.d.ts +1 -0
- package/public/app.js +1057 -1009
- package/public/app.js.map +1 -0
- package/public/browser.d.ts +68 -0
- package/public/browser.js +2 -0
- package/public/browser.js.map +1 -0
- package/public/index.html +30 -13
- package/public/js/about.d.ts +6 -0
- package/public/js/about.js +165 -172
- package/public/js/about.js.map +1 -0
- package/public/js/aiDraft.d.ts +3 -0
- package/public/js/aiDraft.js +116 -124
- package/public/js/aiDraft.js.map +1 -0
- package/public/js/analysisPanel.d.ts +7 -0
- package/public/js/analysisPanel.js +166 -166
- package/public/js/analysisPanel.js.map +1 -0
- package/public/js/analysisReport.d.ts +38 -0
- package/public/js/analysisReport.js +105 -110
- package/public/js/analysisReport.js.map +1 -0
- package/public/js/api.d.ts +26 -0
- package/public/js/api.js +176 -167
- package/public/js/api.js.map +1 -0
- package/public/js/atlas.d.ts +6 -0
- package/public/js/atlas.js +50 -58
- package/public/js/atlas.js.map +1 -0
- package/public/js/blameView.d.ts +2 -0
- package/public/js/blameView.js +36 -37
- package/public/js/blameView.js.map +1 -0
- package/public/js/codeTab.d.ts +3 -0
- package/public/js/codeTab.js +175 -180
- package/public/js/codeTab.js.map +1 -0
- package/public/js/codeViewer.d.ts +5 -0
- package/public/js/codeViewer.js +162 -150
- package/public/js/codeViewer.js.map +1 -0
- package/public/js/components/FileChip.d.ts +9 -0
- package/public/js/components/FileChip.js +45 -49
- package/public/js/components/FileChip.js.map +1 -0
- package/public/js/components/MetricSparkline.d.ts +7 -0
- package/public/js/components/MetricSparkline.js +35 -44
- package/public/js/components/MetricSparkline.js.map +1 -0
- package/public/js/components/RiskBadge.d.ts +9 -0
- package/public/js/components/RiskBadge.js +55 -63
- package/public/js/components/RiskBadge.js.map +1 -0
- package/public/js/deepAnalysisView.d.ts +99 -0
- package/public/js/deepAnalysisView.js +282 -302
- package/public/js/deepAnalysisView.js.map +1 -0
- package/public/js/diagramPane.d.ts +8 -0
- package/public/js/diagramPane.js +133 -135
- package/public/js/diagramPane.js.map +1 -0
- package/public/js/diffView.d.ts +6 -0
- package/public/js/diffView.js +222 -209
- package/public/js/diffView.js.map +1 -0
- package/public/js/docsView.d.ts +2 -0
- package/public/js/docsView.js +441 -442
- package/public/js/docsView.js.map +1 -0
- package/public/js/dom.d.ts +189 -0
- package/public/js/dom.js +5 -0
- package/public/js/dom.js.map +1 -0
- package/public/js/fileSourceBrowser.d.ts +5 -0
- package/public/js/fileSourceBrowser.js +33 -41
- package/public/js/fileSourceBrowser.js.map +1 -0
- package/public/js/flameGraph.d.ts +5 -0
- package/public/js/flameGraph.js +62 -72
- package/public/js/flameGraph.js.map +1 -0
- package/public/js/forceGraph.d.ts +10 -0
- package/public/js/forceGraph.js +581 -556
- package/public/js/forceGraph.js.map +1 -0
- package/public/js/heatmap.d.ts +4 -0
- package/public/js/heatmap.js +142 -164
- package/public/js/heatmap.js.map +1 -0
- package/public/js/highlight.d.ts +2 -0
- package/public/js/highlight.js +116 -107
- package/public/js/highlight.js.map +1 -0
- package/public/js/html.d.ts +2 -0
- package/public/js/html.js +14 -44
- package/public/js/html.js.map +1 -0
- package/public/js/insightsView.d.ts +5 -0
- package/public/js/insightsView.js +93 -111
- package/public/js/insightsView.js.map +1 -0
- package/public/js/inspector.d.ts +37 -0
- package/public/js/inspector.js +416 -445
- package/public/js/inspector.js.map +1 -0
- package/public/js/llm.d.ts +113 -0
- package/public/js/llm.js +233 -272
- package/public/js/llm.js.map +1 -0
- package/public/js/mapView.d.ts +3 -0
- package/public/js/mapView.js +121 -120
- package/public/js/mapView.js.map +1 -0
- package/public/js/markdown.d.ts +3 -0
- package/public/js/markdown.js +84 -91
- package/public/js/markdown.js.map +1 -0
- package/public/js/mindmap.d.ts +32 -0
- package/public/js/mindmap.js +244 -259
- package/public/js/mindmap.js.map +1 -0
- package/public/js/mobilePanels.d.ts +5 -0
- package/public/js/mobilePanels.js +50 -0
- package/public/js/mobilePanels.js.map +1 -0
- package/public/js/repoFiles.d.ts +12 -0
- package/public/js/repoFiles.js +28 -27
- package/public/js/repoFiles.js.map +1 -0
- package/public/js/reviewView.d.ts +28 -0
- package/public/js/reviewView.js +256 -0
- package/public/js/reviewView.js.map +1 -0
- package/public/js/sbomView.d.ts +3 -0
- package/public/js/sbomView.js +59 -67
- package/public/js/sbomView.js.map +1 -0
- package/public/js/scanCache.d.ts +16 -0
- package/public/js/scanCache.js +67 -65
- package/public/js/scanCache.js.map +1 -0
- package/public/js/search.d.ts +7 -0
- package/public/js/search.js +868 -800
- package/public/js/search.js.map +1 -0
- package/public/js/searchLocal.d.ts +42 -0
- package/public/js/searchLocal.js +87 -0
- package/public/js/searchLocal.js.map +1 -0
- package/public/js/serverSettings.d.ts +5 -0
- package/public/js/serverSettings.js +153 -164
- package/public/js/serverSettings.js.map +1 -0
- package/public/js/state.d.ts +798 -0
- package/public/js/state.js +114 -122
- package/public/js/state.js.map +1 -0
- package/public/js/tour.d.ts +6 -0
- package/public/js/tour.js +5 -7
- package/public/js/tour.js.map +1 -0
- package/public/js/transitions.d.ts +2 -0
- package/public/js/transitions.js +9 -10
- package/public/js/transitions.js.map +1 -0
- package/public/js/tree.d.ts +12 -0
- package/public/js/tree.js +157 -154
- package/public/js/tree.js.map +1 -0
- package/public/js/workflowsView.d.ts +3 -0
- package/public/js/workflowsView.js +15 -22
- package/public/js/workflowsView.js.map +1 -0
- package/public/search.css +495 -0
- package/public/styles.css +163 -346
- package/public/workbench.css +166 -0
- package/server/apiAuth.d.ts +3 -0
- package/server/apiAuth.js +18 -20
- package/server/apiAuth.js.map +1 -0
- package/server/apiDiff.d.ts +2 -0
- package/server/apiDiff.js +20 -18
- package/server/apiDiff.js.map +1 -0
- package/server/apiDocs.d.ts +2 -0
- package/server/apiDocs.js +38 -40
- package/server/apiDocs.js.map +1 -0
- package/server/apiFile.d.ts +1 -0
- package/server/apiFile.js +14 -17
- package/server/apiFile.js.map +1 -0
- package/server/apiGitBlame.d.ts +2 -0
- package/server/apiGitBlame.js +50 -51
- package/server/apiGitBlame.js.map +1 -0
- package/server/apiMcp.d.ts +4 -0
- package/server/apiMcp.js +64 -66
- package/server/apiMcp.js.map +1 -0
- package/server/apiReview.d.ts +2 -0
- package/server/apiReview.js +45 -0
- package/server/apiReview.js.map +1 -0
- package/server/apiScan.d.ts +5 -0
- package/server/apiScan.js +90 -71
- package/server/apiScan.js.map +1 -0
- package/server/apiSearch.d.ts +33 -0
- package/server/apiSearch.js +184 -200
- package/server/apiSearch.js.map +1 -0
- package/server/apiSettings.d.ts +4 -0
- package/server/apiSettings.js +84 -85
- package/server/apiSettings.js.map +1 -0
- package/server/apiTools.d.ts +3 -0
- package/server/apiTools.js +55 -56
- package/server/apiTools.js.map +1 -0
- package/server/auth.d.ts +5 -0
- package/server/auth.js +54 -51
- package/server/auth.js.map +1 -0
- package/server/config.d.ts +42 -0
- package/server/config.js +189 -194
- package/server/config.js.map +1 -0
- package/server/daemon.d.ts +12 -0
- package/server/daemon.js +124 -114
- package/server/daemon.js.map +1 -0
- package/server/fileSourceNode.d.ts +2 -0
- package/server/fileSourceNode.js +34 -36
- package/server/fileSourceNode.js.map +1 -0
- package/server/gitClone.d.ts +9 -0
- package/server/gitClone.js +59 -61
- package/server/gitClone.js.map +1 -0
- package/server/gitDiff.d.ts +36 -0
- package/server/gitDiff.js +271 -169
- package/server/gitDiff.js.map +1 -0
- package/server/gitHistory.d.ts +12 -0
- package/server/gitHistory.js +80 -80
- package/server/gitHistory.js.map +1 -0
- package/server/gitRemote.d.ts +12 -0
- package/server/gitRemote.js +60 -0
- package/server/gitRemote.js.map +1 -0
- package/server/htmlText.d.ts +4 -0
- package/server/htmlText.js +16 -23
- package/server/htmlText.js.map +1 -0
- package/server/http.d.ts +5 -0
- package/server/http.js +27 -30
- package/server/http.js.map +1 -0
- package/server/httpGuards.d.ts +2 -0
- package/server/httpGuards.js +47 -43
- package/server/httpGuards.js.map +1 -0
- package/server/https.d.ts +34 -0
- package/server/https.js +121 -111
- package/server/https.js.map +1 -0
- package/server/index.d.ts +40 -0
- package/server/index.js +139 -147
- package/server/index.js.map +1 -0
- package/server/layout.d.ts +26 -0
- package/server/layout.js +59 -37
- package/server/layout.js.map +1 -0
- package/server/llmProxy.d.ts +3 -0
- package/server/llmProxy.js +137 -135
- package/server/llmProxy.js.map +1 -0
- package/server/logger.d.ts +38 -0
- package/server/logger.js +198 -211
- package/server/logger.js.map +1 -0
- package/server/mcp/analysis.d.ts +29 -0
- package/server/mcp/analysis.js +99 -120
- package/server/mcp/analysis.js.map +1 -0
- package/server/mcp/http.d.ts +9 -0
- package/server/mcp/http.js +128 -137
- package/server/mcp/http.js.map +1 -0
- package/server/mcp/runner.d.ts +68 -0
- package/server/mcp/runner.js +208 -218
- package/server/mcp/runner.js.map +1 -0
- package/server/mcp/server.d.ts +29 -0
- package/server/mcp/server.js +166 -179
- package/server/mcp/server.js.map +1 -0
- package/server/mcp/standalone.d.ts +1 -0
- package/server/mcp/standalone.js +8 -10
- package/server/mcp/standalone.js.map +1 -0
- package/server/mcp/tools.d.ts +2020 -0
- package/server/mcp/tools.js +523 -574
- package/server/mcp/tools.js.map +1 -0
- package/server/paths.d.ts +3 -0
- package/server/paths.js +17 -15
- package/server/paths.js.map +1 -0
- package/server/pidfile.d.ts +9 -0
- package/server/pidfile.js +43 -45
- package/server/pidfile.js.map +1 -0
- package/server/review.d.ts +5 -0
- package/server/review.js +35 -0
- package/server/review.js.map +1 -0
- package/server/router.d.ts +33 -0
- package/server/router.js +191 -197
- package/server/router.js.map +1 -0
- package/server/scanRequest.d.ts +3 -0
- package/server/scanRequest.js +36 -0
- package/server/scanRequest.js.map +1 -0
- package/server/searchIndex.d.ts +17 -0
- package/server/searchIndex.js +83 -80
- package/server/searchIndex.js.map +1 -0
- package/server/sessions.d.ts +14 -0
- package/server/sessions.js +62 -70
- package/server/sessions.js.map +1 -0
- package/server/startup.d.ts +118 -0
- package/server/startup.js +143 -148
- package/server/startup.js.map +1 -0
- package/server/static.d.ts +6 -0
- package/server/static.js +28 -31
- package/server/static.js.map +1 -0
- package/server/tools/install.d.ts +4 -0
- package/server/tools/install.js +176 -185
- package/server/tools/install.js.map +1 -0
- package/server/tools/parse.d.ts +8 -0
- package/server/tools/parse.js +112 -114
- package/server/tools/parse.js.map +1 -0
- package/server/tools/platform.d.ts +9 -0
- package/server/tools/platform.js +49 -47
- package/server/tools/platform.js.map +1 -0
- package/server/tools/registry.d.ts +137 -0
- package/server/tools/registry.js +173 -172
- package/server/tools/registry.js.map +1 -0
- package/server/tools/scan.d.ts +34 -0
- package/server/tools/scan.js +89 -98
- package/server/tools/scan.js.map +1 -0
- package/server/tools.d.ts +34 -0
- package/server/tools.js +94 -107
- package/server/tools.js.map +1 -0
- package/server/tunnel.d.ts +29 -0
- package/server/tunnel.js +61 -66
- package/server/tunnel.js.map +1 -0
- package/shared/analyzer/docs.d.ts +16 -0
- package/shared/analyzer/docs.js +99 -93
- package/shared/analyzer/docs.js.map +1 -0
- package/shared/analyzer/explainLocal.d.ts +4 -0
- package/shared/analyzer/explainLocal.js +122 -142
- package/shared/analyzer/explainLocal.js.map +1 -0
- package/shared/analyzer/github.d.ts +37 -0
- package/shared/analyzer/github.js +79 -0
- package/shared/analyzer/github.js.map +1 -0
- package/shared/analyzer/graph.d.ts +41 -0
- package/shared/analyzer/graph.js +393 -400
- package/shared/analyzer/graph.js.map +1 -0
- package/shared/analyzer/health.d.ts +33 -0
- package/shared/analyzer/health.js +197 -193
- package/shared/analyzer/health.js.map +1 -0
- package/shared/analyzer/history.d.ts +29 -0
- package/shared/analyzer/history.js +110 -111
- package/shared/analyzer/history.js.map +1 -0
- package/shared/analyzer/jsonConfig.d.ts +2 -0
- package/shared/analyzer/jsonConfig.js +61 -0
- package/shared/analyzer/jsonConfig.js.map +1 -0
- package/shared/analyzer/languages/csharp.d.ts +26 -0
- package/shared/analyzer/languages/csharp.js +83 -88
- package/shared/analyzer/languages/csharp.js.map +1 -0
- package/shared/analyzer/languages/generic.d.ts +23 -0
- package/shared/analyzer/languages/generic.js +94 -105
- package/shared/analyzer/languages/generic.js.map +1 -0
- package/shared/analyzer/languages/go.d.ts +24 -0
- package/shared/analyzer/languages/go.js +45 -54
- package/shared/analyzer/languages/go.js.map +1 -0
- package/shared/analyzer/languages/index.d.ts +6 -0
- package/shared/analyzer/languages/index.js +19 -20
- package/shared/analyzer/languages/index.js.map +1 -0
- package/shared/analyzer/languages/java.d.ts +20 -0
- package/shared/analyzer/languages/java.js +73 -78
- package/shared/analyzer/languages/java.js.map +1 -0
- package/shared/analyzer/languages/javascript.d.ts +12 -0
- package/shared/analyzer/languages/javascript.js +258 -209
- package/shared/analyzer/languages/javascript.js.map +1 -0
- package/shared/analyzer/languages/python.d.ts +23 -0
- package/shared/analyzer/languages/python.js +92 -100
- package/shared/analyzer/languages/python.js.map +1 -0
- package/shared/analyzer/languages/rust.d.ts +17 -0
- package/shared/analyzer/languages/rust.js +96 -98
- package/shared/analyzer/languages/rust.js.map +1 -0
- package/shared/analyzer/languages/typescript.d.ts +11 -0
- package/shared/analyzer/languages/typescript.js +117 -116
- package/shared/analyzer/languages/typescript.js.map +1 -0
- package/shared/analyzer/licenses.d.ts +18 -0
- package/shared/analyzer/licenses.js +130 -133
- package/shared/analyzer/licenses.js.map +1 -0
- package/shared/analyzer/metrics.d.ts +20 -0
- package/shared/analyzer/metrics.js +112 -104
- package/shared/analyzer/metrics.js.map +1 -0
- package/shared/analyzer/pathUtil.d.ts +10 -0
- package/shared/analyzer/pathUtil.js +29 -35
- package/shared/analyzer/pathUtil.js.map +1 -0
- package/shared/analyzer/patterns.d.ts +11 -0
- package/shared/analyzer/patterns.js +231 -253
- package/shared/analyzer/patterns.js.map +1 -0
- package/shared/analyzer/scan.d.ts +62 -0
- package/shared/analyzer/scan.js +451 -442
- package/shared/analyzer/scan.js.map +1 -0
- package/shared/analyzer/scanControl.d.ts +11 -0
- package/shared/analyzer/scanControl.js +62 -0
- package/shared/analyzer/scanControl.js.map +1 -0
- package/shared/analyzer/security.d.ts +18 -0
- package/shared/analyzer/security.js +159 -159
- package/shared/analyzer/security.js.map +1 -0
- package/shared/analyzer/services.d.ts +5 -0
- package/shared/analyzer/services.js +141 -138
- package/shared/analyzer/services.js.map +1 -0
- package/shared/analyzer/stack.d.ts +6 -0
- package/shared/analyzer/stack.js +134 -141
- package/shared/analyzer/stack.js.map +1 -0
- package/shared/analyzer/tour.d.ts +2 -0
- package/shared/analyzer/tour.js +45 -53
- package/shared/analyzer/tour.js.map +1 -0
- package/shared/analyzer/util.d.ts +8 -0
- package/shared/analyzer/util.js +130 -76
- package/shared/analyzer/util.js.map +1 -0
- package/shared/analyzer/workflows.d.ts +8 -0
- package/shared/analyzer/workflows.js +139 -134
- package/shared/analyzer/workflows.js.map +1 -0
- package/shared/contracts.d.ts +250 -0
- package/shared/contracts.js +2 -0
- package/shared/contracts.js.map +1 -0
- package/shared/diagram/aiFacts.d.ts +35 -0
- package/shared/diagram/aiFacts.js +102 -105
- package/shared/diagram/aiFacts.js.map +1 -0
- package/shared/diagram/aiMermaid.d.ts +5 -0
- package/shared/diagram/aiMermaid.js +46 -45
- package/shared/diagram/aiMermaid.js.map +1 -0
- package/shared/diagram/atlas.d.ts +16 -0
- package/shared/diagram/atlas.js +51 -60
- package/shared/diagram/atlas.js.map +1 -0
- package/shared/diagram/mermaid.d.ts +43 -0
- package/shared/diagram/mermaid.js +348 -370
- package/shared/diagram/mermaid.js.map +1 -0
- package/shared/review/contracts.d.ts +95 -0
- package/shared/review/contracts.js +2 -0
- package/shared/review/contracts.js.map +1 -0
- package/shared/review/review.d.ts +10 -0
- package/shared/review/review.js +184 -0
- package/shared/review/review.js.map +1 -0
- package/shared/search/query.d.ts +32 -0
- package/shared/search/query.js +395 -388
- package/shared/search/query.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/cli/wizard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Settings } from '../shared/contracts.js';\n// The setup wizard's brain, with no I/O in it.\n//\n// `buildSteps` turns the current settings (and any --flags) into the ordered\n// list of questions, each with its default, its choices, its validator, and a\n// `when` that decides from earlier answers whether the question exists at all\n// (local mode never asks for a domain). `answersToSettings` folds the answers\n// back into a settings object that `server/config.js` then validates — the\n// same schema the HTTP settings API enforces, so the wizard can never write a\n// config the server would refuse. `applyFlags` is the non-interactive twin of\n// the same fold. All three are pure: the tests drive them directly, and the\n// readline renderer in `prompt.js` is a thin shell over them.\n\nimport os from 'node:os';\n\nimport { DEFAULT_SETTINGS, generateAccessKey, isLoopbackHost, normalizeSettings } from '../server/config.js';\n\n// Provider presets for the AI account step. `none` is the honest default: the\n// app works fully offline, and the browser can still hold its own key.\nexport const PROVIDER_PRESETS = {\n none: { label: 'Skip — set it later (the app works offline)', baseUrl: '' },\n 'openai-compatible': { label: 'OpenAI or any compatible endpoint', baseUrl: 'https://api.openai.com/v1' },\n ollama: { label: 'Ollama (local models)', baseUrl: 'http://localhost:11434/v1' },\n openrouter: { label: 'OpenRouter', baseUrl: 'https://openrouter.ai/api/v1' },\n custom: { label: 'Custom base URL', baseUrl: '' },\n};\n\nexport const TUNNEL_CHOICES = [\n { value: 'none', label: 'No tunnel', hint: 'reach the server directly' },\n { value: 'cloudflare', label: 'Cloudflare quick tunnel', hint: 'cloudflared — a public https://*.trycloudflare.com name' },\n { value: 'tailscale', label: 'Tailscale serve', hint: 'your devices only, https://machine.tailnet.ts.net' },\n { value: 'both', label: 'Both', hint: 'public via Cloudflare, private via tailnet' },\n];\n\nexport function validPort(value) {\n const n = Number(String(value).trim());\n if (!Number.isInteger(n) || n < 1 || n > 65535) return 'A whole number from 1 to 65535.';\n return null;\n}\n\nexport function validDomain(value) {\n const domain = String(value || '').trim();\n if (!domain) return null; // optional in some flows; required ones check separately\n if (domain.length > 253 || /[\\s/@\\\\]/.test(domain) || domain.startsWith('.') || !domain.includes('.')) {\n return 'A hostname such as map.example.com.';\n }\n return null;\n}\n\nexport function validEmail(value) {\n const email = String(value || '').trim();\n if (!email) return null; // optional\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email) ? null : 'That does not look like an email address.';\n}\n\nfunction providerOf(account) {\n if (!account?.baseUrl) return 'none';\n for (const [id, preset] of Object.entries(PROVIDER_PRESETS)) {\n if (id !== 'none' && id !== 'custom' && preset.baseUrl === account.baseUrl) return id;\n }\n return 'custom';\n}\n\nfunction tunnelChoiceOf(tunnel) {\n if (tunnel?.cloudflare && tunnel?.tailscale) return 'both';\n if (tunnel?.cloudflare) return 'cloudflare';\n if (tunnel?.tailscale) return 'tailscale';\n return 'none';\n}\n\n// The ordered question list. Every step's `when` reads the answers collected\n// so far, which is what makes the wizard a tree rather than a script: answer\n// \"local\" and the whole network/security branch never appears.\nexport function buildSteps(current: Settings = DEFAULT_SETTINGS) {\n const account = current.account || DEFAULT_SETTINGS.account;\n return [\n {\n id: 'name', section: 'Profile', type: 'text',\n question: 'Your name',\n hint: 'shown in the settings drawer; never leaves this machine',\n default: account.name || safeUsername(),\n },\n {\n id: 'email', section: 'Profile', type: 'text',\n question: 'Your email (optional)',\n hint: 'for your own reference only',\n default: account.email || '',\n validate: validEmail,\n },\n {\n id: 'mode', section: 'Server', type: 'choice',\n question: 'How will you run Onboarder?',\n choices: [\n { value: 'local', label: 'Local — localhost only', hint: 'private by construction; nothing on the network can reach it' },\n { value: 'self-hosted', label: 'Self-hosted — domain, LAN, or tunnel', hint: 'reach it from other devices; every API call needs an access key' },\n ],\n default: current.mode,\n },\n {\n id: 'host', section: 'Server', type: 'choice',\n question: 'What should the server bind to?',\n choices: [\n { value: '127.0.0.1', label: 'Loopback only — behind Cloudflare or Tailscale', hint: 'safest remote layout; the tunnel/proxy connects to 127.0.0.1' },\n { value: '0.0.0.0', label: 'Every interface — direct public/LAN access', hint: 'accessible by server IP; recommended for a cloud VPS' },\n ],\n default: (answers) => {\n const currentHost = current.host;\n if (answers.host) return answers.host;\n if (current.mode === 'self-hosted' && ['127.0.0.1', 'localhost', '::1', '[::1]'].includes(currentHost)) return currentHost;\n return '0.0.0.0';\n },\n when: (a) => a.mode === 'self-hosted',\n },\n {\n id: 'port', section: 'Server', type: 'text',\n question: 'Port',\n default: String(current.port),\n validate: validPort,\n },\n {\n id: 'domain', section: 'Server', type: 'text',\n question: 'Domain (optional for direct IP or a tunnel)',\n hint: 'e.g. map.example.com — point an A/AAAA record to this VPS to enable trusted HTTPS',\n default: current.domain || '',\n validate: validDomain,\n when: (a) => a.mode === 'self-hosted',\n },\n {\n id: 'https', section: 'HTTPS', type: 'confirm',\n question: 'Set up automatic HTTPS with Caddy?',\n hint: 'Caddy obtains and renews the certificate, proxies 80/443, and sends traffic to this app',\n default: Boolean(current.domain && current.https),\n when: (a) => a.mode === 'self-hosted' && Boolean(a.domain),\n },\n {\n id: 'keyChoice', section: 'Security', type: 'choice',\n question: 'Access key — the one credential remote devices must hold',\n choices: [\n { value: 'generate', label: 'Generate a strong key (recommended)', hint: 'shown once at the end, stored in the config file' },\n ...(current.accessKey ? [{ value: 'keep', label: `Keep the existing key (${current.accessKey.slice(0, 6)}…)`, hint: '' }] : []),\n { value: 'enter', label: 'Enter my own', hint: '' },\n ],\n default: current.accessKey ? 'keep' : 'generate',\n when: (a) => a.mode === 'self-hosted',\n },\n {\n id: 'keyValue', section: 'Security', type: 'text',\n question: 'Your access key',\n hint: 'at least 16 characters; anyone holding it can drive the API',\n validate: (v) => (String(v || '').trim().length >= 16 ? null : 'At least 16 characters.'),\n when: (a) => a.mode === 'self-hosted' && a.keyChoice === 'enter',\n },\n {\n id: 'provider', section: 'AI provider (optional)', type: 'choice',\n question: 'Default AI provider for explain/chat features',\n choices: Object.entries(PROVIDER_PRESETS).map(([value, p]) => ({ value, label: p.label, hint: p.baseUrl })),\n default: providerOf(account),\n },\n {\n id: 'baseUrl', section: 'AI provider (optional)', type: 'text',\n question: 'Base URL',\n default: (a) => PROVIDER_PRESETS[a.provider]?.baseUrl || account.baseUrl || '',\n validate: (v) => (v && !/^https?:\\/\\//.test(v) ? 'An http(s) URL, e.g. https://api.openai.com/v1.' : null),\n when: (a) => a.provider && a.provider !== 'none',\n },\n {\n id: 'model', section: 'AI provider (optional)', type: 'text',\n question: 'Model (optional)',\n hint: 'e.g. gpt-4o-mini, llama3.1',\n default: account.model || '',\n when: (a) => a.provider && a.provider !== 'none',\n },\n {\n id: 'tunnelChoice', section: 'Remote access', type: 'choice',\n question: 'Expose it through a tunnel?',\n hint: 'the wizard prints the exact command afterwards; missing CLIs get an install hint',\n choices: TUNNEL_CHOICES,\n default: tunnelChoiceOf(current.tunnel),\n when: (a) => a.mode === 'self-hosted',\n },\n {\n id: 'autoOpen', section: 'Finish', type: 'confirm',\n question: 'Open the app in a browser when the server starts?',\n default: current.autoOpen !== false,\n },\n ];\n}\n\n\nfunction safeUsername() {\n try {\n return os.userInfo().username || '';\n } catch {\n return '';\n }\n}\n\n// Steps for one run, given what is already answered: flags pre-answer questions\n// (a flagged question is never asked), and `when` prunes dead branches. The\n// answers object grows as the run proceeds, so a later step's `when` sees both\n// flag answers and typed answers through the same lens.\nexport function pendingSteps(steps, answers: Record<string, any> = {}) {\n return steps.filter((s) => !(s.id in answers) && (!s.when || s.when(answers)));\n}\n\n// Steps the flags did not answer, in order — and nothing more. Unlike\n// `pendingSteps` this never looks at `when`: conditions read answers that\n// only exist mid-run (\"ask about the bind once mode is self-hosted\"), so\n// evaluating them before the first question prunes branches the typed answers\n// would reopen. The renderer (`prompt.js#runSteps`) evaluates `when` live,\n// one question at a time, which is the only moment it can be answered truly.\nexport function unansweredSteps(steps, answers: Record<string, any> = {}) {\n return steps.filter((s) => !(s.id in answers));\n}\n\n// Defaults may depend on earlier answers (`default` as a function).\nexport function defaultOf(step, answers) {\n return typeof step.default === 'function' ? step.default(answers) : step.default;\n}\n\n// Answers → settings. The key rule: this builds a plain object and hands it to\n// normalizeSettings, so an impossible combination (local mode on 0.0.0.0, a\n// LAN bind with no domain) fails with the schema's own sentence here, in the\n// API, and in `config set` — one law, three courts.\nexport function answersToSettings(current, answers) {\n const selfHosted = answers.mode === 'self-hosted';\n const provider = answers.provider || 'none';\n const account = {\n name: answers.name ?? current.account?.name ?? '',\n email: answers.email ?? current.account?.email ?? '',\n provider: provider === 'none' ? 'openai-compatible' : provider,\n baseUrl: provider === 'none' ? '' : String(answers.baseUrl ?? '').trim().replace(/\\/+$/, ''),\n model: provider === 'none' ? '' : String(answers.model ?? '').trim(),\n };\n let accessKey = current.accessKey || '';\n if (selfHosted) {\n if (answers.keyChoice === 'generate' || (!answers.keyChoice && !accessKey)) accessKey = generateAccessKey();\n else if (answers.keyChoice === 'enter') accessKey = String(answers.keyValue || '').trim();\n }\n const choice = answers.tunnelChoice || tunnelChoiceOf(current.tunnel);\n const tunnel = selfHosted\n ? { cloudflare: choice === 'cloudflare' || choice === 'both', tailscale: choice === 'tailscale' || choice === 'both' }\n : { ...(current.tunnel || DEFAULT_SETTINGS.tunnel) };\n return normalizeSettings({\n version: current.version,\n mode: selfHosted ? 'self-hosted' : 'local',\n host: selfHosted ? (answers.host || '0.0.0.0') : '127.0.0.1',\n port: Number(answers.port ?? current.port ?? DEFAULT_SETTINGS.port),\n domain: selfHosted ? String(answers.domain ?? current.domain ?? '').trim().toLowerCase() : '',\n https: selfHosted && Boolean(answers.domain) && Boolean(answers.https),\n accessKey,\n autoOpen: answers.autoOpen ?? current.autoOpen ?? false,\n account,\n tunnel,\n });\n}\n\n\n// The non-interactive twin: --flags become the same patch the wizard would\n// have collected. Anything unflagged falls back to the current settings, and\n// the whole result goes through the same normalizeSettings validation, so\n// `onboarder setup --non-interactive --mode self-hosted --port 8080` can never\n// produce a config the interactive wizard would refuse.\nexport function applyFlags(current, flags: Record<string, any> = {}) {\n const patch: Record<string, any> = {};\n if (flags.mode !== undefined) {\n if (!['local', 'self-hosted'].includes(flags.mode)) throw new Error('--mode must be \"local\" or \"self-hosted\".');\n patch.mode = flags.mode;\n }\n const mode = patch.mode || current.mode;\n if (flags.host !== undefined) patch.host = flags.host;\n if (flags.port !== undefined) {\n const err = validPort(flags.port);\n if (err) throw new Error('--port: ' + err);\n patch.port = Number(flags.port);\n }\n if (flags.domain !== undefined) {\n const err = validDomain(flags.domain);\n if (err) throw new Error('--domain: ' + err);\n patch.domain = String(flags.domain).trim().toLowerCase();\n }\n if (flags.https !== undefined) patch.https = Boolean(flags.https);\n if (flags.accessKey === 'generate') patch.accessKey = generateAccessKey();\n else if (flags.accessKey !== undefined) {\n if (String(flags.accessKey).trim().length < 16) throw new Error('--access-key must be at least 16 characters, or \"generate\".');\n patch.accessKey = String(flags.accessKey).trim();\n } else if (mode === 'self-hosted' && !current.accessKey) {\n // Self-hosted without a key is a locked door with no handle — generate one\n // rather than write a config that refuses every call.\n patch.accessKey = generateAccessKey();\n }\n if (flags.autoOpen !== undefined) patch.autoOpen = Boolean(flags.autoOpen);\n const account: Record<string, any> = {};\n if (flags.name !== undefined) account.name = String(flags.name);\n if (flags.email !== undefined) {\n const err = validEmail(flags.email);\n if (err) throw new Error('--email: ' + err);\n account.email = String(flags.email);\n }\n if (flags.provider !== undefined) {\n if (!(flags.provider in PROVIDER_PRESETS)) throw new Error('--provider must be one of: ' + Object.keys(PROVIDER_PRESETS).join(', '));\n account.provider = flags.provider === 'none' ? 'openai-compatible' : flags.provider;\n account.baseUrl = PROVIDER_PRESETS[flags.provider]?.baseUrl || '';\n if (flags.provider === 'none') account.model = '';\n }\n if (flags.baseUrl !== undefined) account.baseUrl = String(flags.baseUrl).trim().replace(/\\/+$/, '');\n if (flags.model !== undefined) account.model = String(flags.model).trim();\n if (Object.keys(account).length) patch.account = account;\n const tunnel: Record<string, any> = {};\n if (flags.cloudflare !== undefined) tunnel.cloudflare = Boolean(flags.cloudflare);\n if (flags.tailscale !== undefined) tunnel.tailscale = Boolean(flags.tailscale);\n if (Object.keys(tunnel).length) patch.tunnel = tunnel;\n const merged = {\n ...current, ...patch,\n account: { ...(current.account || DEFAULT_SETTINGS.account), ...account },\n tunnel: { ...(current.tunnel || DEFAULT_SETTINGS.tunnel), ...tunnel },\n };\n // A fresh self-hosted setup is direct-first for cloud/VPS use. Re-running setup\n // preserves an existing deliberate loopback choice for tunnels and Caddy.\n if (flags.mode === 'self-hosted' && flags.host === undefined && current.mode !== 'self-hosted') {\n merged.host = '0.0.0.0';\n }\n if (merged.mode === 'local') {\n if (!['127.0.0.1', 'localhost', '::1', '[::1]'].includes(merged.host)) merged.host = '127.0.0.1';\n if (flags.domain === undefined) merged.domain = '';\n if (flags.https === undefined) merged.https = false;\n }\n return { patch, settings: normalizeSettings(merged) };\n}\n\n// What the wizard's last screen shows before writing. `reveal` is the one\n// moment the key is printed — rotation through the API has the same rule.\nexport function summaryLines(settings, { revealKey = false }: Record<string, any> = {}) {\n const lines = [\n ['Mode', settings.mode],\n ['Bind', `${settings.host}:${settings.port}`],\n ];\n if (settings.domain) lines.push(['Domain', (settings.https ? 'https://' : 'http://') + settings.domain + (settings.https ? '' : ':' + settings.port)]);\n if (settings.mode === 'self-hosted') {\n lines.push(['Access key', revealKey\n ? settings.accessKey\n : (settings.accessKey ? settings.accessKey.slice(0, 6) + '… (hidden)' : '(none — the API will refuse every call)')]);\n if (isLoopbackHost(settings.host)) {\n lines.push(['Network', 'loopback only — use a tunnel or bind 0.0.0.0 for direct access']);\n }\n }\n const who = [settings.account.name, settings.account.email].filter(Boolean).join(' · ');\n if (who) lines.push(['Profile', who]);\n if (settings.account.baseUrl) {\n lines.push(['AI', `${settings.account.provider} — ${settings.account.baseUrl}${settings.account.model ? ' — ' + settings.account.model : ''}`]);\n }\n const tunnels = [settings.tunnel.cloudflare && 'cloudflare', settings.tunnel.tailscale && 'tailscale'].filter(Boolean);\n if (tunnels.length) lines.push(['Tunnels', tunnels.join(' + ')]);\n lines.push(['Auto-open', settings.autoOpen ? 'yes' : 'no']);\n return lines;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codebase-onboarder",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Drop a path. Get a map. A zero-dependency codebase visualizer with a CLI onboarding wizard, a web UI, and an optional key-gated self-hosted mode.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -17,11 +17,18 @@
|
|
|
17
17
|
"LICENSE"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
+
"build": "npm run typecheck && tsc -p tsconfig.json",
|
|
21
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.strict.json",
|
|
20
22
|
"start": "node server/index.js",
|
|
21
23
|
"mcp": "node server/mcp/standalone.js",
|
|
22
|
-
"test": "node --test",
|
|
24
|
+
"test": "npm run build && node --test",
|
|
23
25
|
"postinstall": "node bin/postinstall.js",
|
|
24
|
-
"prepublishOnly": "npm test"
|
|
26
|
+
"prepublishOnly": "npm test",
|
|
27
|
+
"prestart": "node bin/build-if-source.js",
|
|
28
|
+
"dev": "node scripts/dev.mjs",
|
|
29
|
+
"build:check": "node scripts/check-build.mjs",
|
|
30
|
+
"check": "npm run typecheck && npm test && npm run build:check",
|
|
31
|
+
"prepare": "node bin/build-if-source.js"
|
|
25
32
|
},
|
|
26
33
|
"engines": {
|
|
27
34
|
"node": ">=20"
|
|
@@ -44,5 +51,9 @@
|
|
|
44
51
|
"homepage": "https://github.com/Amitpandey88/onboarder#readme",
|
|
45
52
|
"bugs": "https://github.com/Amitpandey88/onboarder/issues",
|
|
46
53
|
"author": "Amit Pandey",
|
|
47
|
-
"license": "MIT"
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^26.6.3",
|
|
57
|
+
"typescript": "^7.0.2"
|
|
58
|
+
}
|
|
48
59
|
}
|
package/public/app.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|