codebase-onboarder 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/README.md +174 -46
  2. package/bin/build-if-source.js +23 -0
  3. package/cli/commands.d.ts +26 -0
  4. package/cli/commands.js +836 -811
  5. package/cli/commands.js.map +1 -0
  6. package/cli/explorer/advanced.d.ts +14 -0
  7. package/cli/explorer/advanced.js +321 -329
  8. package/cli/explorer/advanced.js.map +1 -0
  9. package/cli/explorer/app.d.ts +1 -0
  10. package/cli/explorer/app.js +384 -313
  11. package/cli/explorer/app.js.map +1 -0
  12. package/cli/explorer/assistant.d.ts +9 -0
  13. package/cli/explorer/assistant.js +58 -0
  14. package/cli/explorer/assistant.js.map +1 -0
  15. package/cli/explorer/commands.d.ts +17 -0
  16. package/cli/explorer/commands.js +368 -302
  17. package/cli/explorer/commands.js.map +1 -0
  18. package/cli/explorer/featureViews.d.ts +124 -0
  19. package/cli/explorer/featureViews.js +179 -0
  20. package/cli/explorer/featureViews.js.map +1 -0
  21. package/cli/explorer/github.d.ts +21 -0
  22. package/cli/explorer/github.js +42 -44
  23. package/cli/explorer/github.js.map +1 -0
  24. package/cli/explorer/graphs.d.ts +7 -0
  25. package/cli/explorer/graphs.js +90 -95
  26. package/cli/explorer/graphs.js.map +1 -0
  27. package/cli/explorer/picker.d.ts +22 -0
  28. package/cli/explorer/picker.js +150 -0
  29. package/cli/explorer/picker.js.map +1 -0
  30. package/cli/explorer/report.d.ts +85 -0
  31. package/cli/explorer/report.js +60 -0
  32. package/cli/explorer/report.js.map +1 -0
  33. package/cli/explorer/session.d.ts +449 -0
  34. package/cli/explorer/session.js +143 -144
  35. package/cli/explorer/session.js.map +1 -0
  36. package/cli/explorer/views.d.ts +19 -0
  37. package/cli/explorer/views.js +465 -482
  38. package/cli/explorer/views.js.map +1 -0
  39. package/cli/explorer/wrap.d.ts +1 -0
  40. package/cli/explorer/wrap.js +28 -44
  41. package/cli/explorer/wrap.js.map +1 -0
  42. package/cli/main.d.ts +1 -0
  43. package/cli/main.js +214 -161
  44. package/cli/main.js.map +1 -0
  45. package/cli/prompt.d.ts +5 -0
  46. package/cli/prompt.js +84 -80
  47. package/cli/prompt.js.map +1 -0
  48. package/cli/scanOptions.d.ts +2 -0
  49. package/cli/scanOptions.js +11 -0
  50. package/cli/scanOptions.js.map +1 -0
  51. package/cli/ui.d.ts +33 -0
  52. package/cli/ui.js +35 -44
  53. package/cli/ui.js.map +1 -0
  54. package/cli/wizard.d.ts +187 -0
  55. package/cli/wizard.js +304 -284
  56. package/cli/wizard.js.map +1 -0
  57. package/package.json +15 -4
  58. package/public/app.d.ts +1 -0
  59. package/public/app.js +1057 -1009
  60. package/public/app.js.map +1 -0
  61. package/public/browser.d.ts +68 -0
  62. package/public/browser.js +2 -0
  63. package/public/browser.js.map +1 -0
  64. package/public/index.html +30 -13
  65. package/public/js/about.d.ts +6 -0
  66. package/public/js/about.js +152 -172
  67. package/public/js/about.js.map +1 -0
  68. package/public/js/aiDraft.d.ts +3 -0
  69. package/public/js/aiDraft.js +116 -124
  70. package/public/js/aiDraft.js.map +1 -0
  71. package/public/js/analysisPanel.d.ts +7 -0
  72. package/public/js/analysisPanel.js +166 -166
  73. package/public/js/analysisPanel.js.map +1 -0
  74. package/public/js/analysisReport.d.ts +38 -0
  75. package/public/js/analysisReport.js +105 -110
  76. package/public/js/analysisReport.js.map +1 -0
  77. package/public/js/api.d.ts +26 -0
  78. package/public/js/api.js +176 -167
  79. package/public/js/api.js.map +1 -0
  80. package/public/js/atlas.d.ts +6 -0
  81. package/public/js/atlas.js +50 -58
  82. package/public/js/atlas.js.map +1 -0
  83. package/public/js/blameView.d.ts +2 -0
  84. package/public/js/blameView.js +36 -37
  85. package/public/js/blameView.js.map +1 -0
  86. package/public/js/codeTab.d.ts +3 -0
  87. package/public/js/codeTab.js +175 -180
  88. package/public/js/codeTab.js.map +1 -0
  89. package/public/js/codeViewer.d.ts +5 -0
  90. package/public/js/codeViewer.js +162 -150
  91. package/public/js/codeViewer.js.map +1 -0
  92. package/public/js/components/FileChip.d.ts +9 -0
  93. package/public/js/components/FileChip.js +45 -49
  94. package/public/js/components/FileChip.js.map +1 -0
  95. package/public/js/components/MetricSparkline.d.ts +7 -0
  96. package/public/js/components/MetricSparkline.js +35 -44
  97. package/public/js/components/MetricSparkline.js.map +1 -0
  98. package/public/js/components/RiskBadge.d.ts +9 -0
  99. package/public/js/components/RiskBadge.js +55 -63
  100. package/public/js/components/RiskBadge.js.map +1 -0
  101. package/public/js/deepAnalysisView.d.ts +99 -0
  102. package/public/js/deepAnalysisView.js +282 -302
  103. package/public/js/deepAnalysisView.js.map +1 -0
  104. package/public/js/diagramPane.d.ts +8 -0
  105. package/public/js/diagramPane.js +133 -135
  106. package/public/js/diagramPane.js.map +1 -0
  107. package/public/js/diffView.d.ts +6 -0
  108. package/public/js/diffView.js +222 -209
  109. package/public/js/diffView.js.map +1 -0
  110. package/public/js/docsView.d.ts +2 -0
  111. package/public/js/docsView.js +441 -442
  112. package/public/js/docsView.js.map +1 -0
  113. package/public/js/dom.d.ts +189 -0
  114. package/public/js/dom.js +5 -0
  115. package/public/js/dom.js.map +1 -0
  116. package/public/js/fileSourceBrowser.d.ts +5 -0
  117. package/public/js/fileSourceBrowser.js +33 -41
  118. package/public/js/fileSourceBrowser.js.map +1 -0
  119. package/public/js/flameGraph.d.ts +5 -0
  120. package/public/js/flameGraph.js +62 -72
  121. package/public/js/flameGraph.js.map +1 -0
  122. package/public/js/forceGraph.d.ts +10 -0
  123. package/public/js/forceGraph.js +581 -556
  124. package/public/js/forceGraph.js.map +1 -0
  125. package/public/js/heatmap.d.ts +4 -0
  126. package/public/js/heatmap.js +142 -164
  127. package/public/js/heatmap.js.map +1 -0
  128. package/public/js/highlight.d.ts +2 -0
  129. package/public/js/highlight.js +116 -107
  130. package/public/js/highlight.js.map +1 -0
  131. package/public/js/html.d.ts +2 -0
  132. package/public/js/html.js +14 -44
  133. package/public/js/html.js.map +1 -0
  134. package/public/js/insightsView.d.ts +5 -0
  135. package/public/js/insightsView.js +93 -111
  136. package/public/js/insightsView.js.map +1 -0
  137. package/public/js/inspector.d.ts +37 -0
  138. package/public/js/inspector.js +416 -445
  139. package/public/js/inspector.js.map +1 -0
  140. package/public/js/llm.d.ts +113 -0
  141. package/public/js/llm.js +233 -272
  142. package/public/js/llm.js.map +1 -0
  143. package/public/js/mapView.d.ts +3 -0
  144. package/public/js/mapView.js +121 -120
  145. package/public/js/mapView.js.map +1 -0
  146. package/public/js/markdown.d.ts +3 -0
  147. package/public/js/markdown.js +84 -91
  148. package/public/js/markdown.js.map +1 -0
  149. package/public/js/mindmap.d.ts +32 -0
  150. package/public/js/mindmap.js +244 -259
  151. package/public/js/mindmap.js.map +1 -0
  152. package/public/js/mobilePanels.d.ts +5 -0
  153. package/public/js/mobilePanels.js +50 -0
  154. package/public/js/mobilePanels.js.map +1 -0
  155. package/public/js/repoFiles.d.ts +12 -0
  156. package/public/js/repoFiles.js +28 -27
  157. package/public/js/repoFiles.js.map +1 -0
  158. package/public/js/reviewView.d.ts +28 -0
  159. package/public/js/reviewView.js +256 -0
  160. package/public/js/reviewView.js.map +1 -0
  161. package/public/js/sbomView.d.ts +3 -0
  162. package/public/js/sbomView.js +59 -67
  163. package/public/js/sbomView.js.map +1 -0
  164. package/public/js/scanCache.d.ts +16 -0
  165. package/public/js/scanCache.js +67 -65
  166. package/public/js/scanCache.js.map +1 -0
  167. package/public/js/search.d.ts +7 -0
  168. package/public/js/search.js +868 -800
  169. package/public/js/search.js.map +1 -0
  170. package/public/js/searchLocal.d.ts +42 -0
  171. package/public/js/searchLocal.js +87 -0
  172. package/public/js/searchLocal.js.map +1 -0
  173. package/public/js/serverSettings.d.ts +5 -0
  174. package/public/js/serverSettings.js +153 -164
  175. package/public/js/serverSettings.js.map +1 -0
  176. package/public/js/state.d.ts +798 -0
  177. package/public/js/state.js +114 -122
  178. package/public/js/state.js.map +1 -0
  179. package/public/js/tour.d.ts +6 -0
  180. package/public/js/tour.js +5 -7
  181. package/public/js/tour.js.map +1 -0
  182. package/public/js/transitions.d.ts +2 -0
  183. package/public/js/transitions.js +9 -10
  184. package/public/js/transitions.js.map +1 -0
  185. package/public/js/tree.d.ts +12 -0
  186. package/public/js/tree.js +157 -154
  187. package/public/js/tree.js.map +1 -0
  188. package/public/js/workflowsView.d.ts +3 -0
  189. package/public/js/workflowsView.js +15 -22
  190. package/public/js/workflowsView.js.map +1 -0
  191. package/public/search.css +495 -0
  192. package/public/styles.css +163 -346
  193. package/public/workbench.css +166 -0
  194. package/server/apiAuth.d.ts +3 -0
  195. package/server/apiAuth.js +18 -20
  196. package/server/apiAuth.js.map +1 -0
  197. package/server/apiDiff.d.ts +2 -0
  198. package/server/apiDiff.js +20 -18
  199. package/server/apiDiff.js.map +1 -0
  200. package/server/apiDocs.d.ts +2 -0
  201. package/server/apiDocs.js +38 -40
  202. package/server/apiDocs.js.map +1 -0
  203. package/server/apiFile.d.ts +1 -0
  204. package/server/apiFile.js +14 -17
  205. package/server/apiFile.js.map +1 -0
  206. package/server/apiGitBlame.d.ts +2 -0
  207. package/server/apiGitBlame.js +50 -51
  208. package/server/apiGitBlame.js.map +1 -0
  209. package/server/apiMcp.d.ts +4 -0
  210. package/server/apiMcp.js +64 -66
  211. package/server/apiMcp.js.map +1 -0
  212. package/server/apiReview.d.ts +2 -0
  213. package/server/apiReview.js +45 -0
  214. package/server/apiReview.js.map +1 -0
  215. package/server/apiScan.d.ts +5 -0
  216. package/server/apiScan.js +90 -71
  217. package/server/apiScan.js.map +1 -0
  218. package/server/apiSearch.d.ts +33 -0
  219. package/server/apiSearch.js +184 -200
  220. package/server/apiSearch.js.map +1 -0
  221. package/server/apiSettings.d.ts +4 -0
  222. package/server/apiSettings.js +84 -85
  223. package/server/apiSettings.js.map +1 -0
  224. package/server/apiTools.d.ts +3 -0
  225. package/server/apiTools.js +55 -56
  226. package/server/apiTools.js.map +1 -0
  227. package/server/auth.d.ts +5 -0
  228. package/server/auth.js +54 -51
  229. package/server/auth.js.map +1 -0
  230. package/server/config.d.ts +42 -0
  231. package/server/config.js +189 -194
  232. package/server/config.js.map +1 -0
  233. package/server/daemon.d.ts +12 -0
  234. package/server/daemon.js +124 -114
  235. package/server/daemon.js.map +1 -0
  236. package/server/fileSourceNode.d.ts +2 -0
  237. package/server/fileSourceNode.js +34 -36
  238. package/server/fileSourceNode.js.map +1 -0
  239. package/server/gitClone.d.ts +9 -0
  240. package/server/gitClone.js +59 -61
  241. package/server/gitClone.js.map +1 -0
  242. package/server/gitDiff.d.ts +36 -0
  243. package/server/gitDiff.js +271 -169
  244. package/server/gitDiff.js.map +1 -0
  245. package/server/gitHistory.d.ts +12 -0
  246. package/server/gitHistory.js +80 -80
  247. package/server/gitHistory.js.map +1 -0
  248. package/server/gitRemote.d.ts +12 -0
  249. package/server/gitRemote.js +37 -38
  250. package/server/gitRemote.js.map +1 -0
  251. package/server/htmlText.d.ts +4 -0
  252. package/server/htmlText.js +16 -23
  253. package/server/htmlText.js.map +1 -0
  254. package/server/http.d.ts +5 -0
  255. package/server/http.js +27 -30
  256. package/server/http.js.map +1 -0
  257. package/server/httpGuards.d.ts +2 -0
  258. package/server/httpGuards.js +47 -43
  259. package/server/httpGuards.js.map +1 -0
  260. package/server/https.d.ts +34 -0
  261. package/server/https.js +121 -111
  262. package/server/https.js.map +1 -0
  263. package/server/index.d.ts +40 -0
  264. package/server/index.js +139 -147
  265. package/server/index.js.map +1 -0
  266. package/server/layout.d.ts +26 -0
  267. package/server/layout.js +59 -64
  268. package/server/layout.js.map +1 -0
  269. package/server/llmProxy.d.ts +3 -0
  270. package/server/llmProxy.js +137 -135
  271. package/server/llmProxy.js.map +1 -0
  272. package/server/logger.d.ts +38 -0
  273. package/server/logger.js +198 -211
  274. package/server/logger.js.map +1 -0
  275. package/server/mcp/analysis.d.ts +29 -0
  276. package/server/mcp/analysis.js +99 -120
  277. package/server/mcp/analysis.js.map +1 -0
  278. package/server/mcp/http.d.ts +9 -0
  279. package/server/mcp/http.js +128 -137
  280. package/server/mcp/http.js.map +1 -0
  281. package/server/mcp/runner.d.ts +68 -0
  282. package/server/mcp/runner.js +208 -218
  283. package/server/mcp/runner.js.map +1 -0
  284. package/server/mcp/server.d.ts +29 -0
  285. package/server/mcp/server.js +166 -179
  286. package/server/mcp/server.js.map +1 -0
  287. package/server/mcp/standalone.d.ts +1 -0
  288. package/server/mcp/standalone.js +8 -10
  289. package/server/mcp/standalone.js.map +1 -0
  290. package/server/mcp/tools.d.ts +2020 -0
  291. package/server/mcp/tools.js +523 -574
  292. package/server/mcp/tools.js.map +1 -0
  293. package/server/paths.d.ts +3 -0
  294. package/server/paths.js +17 -15
  295. package/server/paths.js.map +1 -0
  296. package/server/pidfile.d.ts +9 -0
  297. package/server/pidfile.js +43 -45
  298. package/server/pidfile.js.map +1 -0
  299. package/server/review.d.ts +5 -0
  300. package/server/review.js +35 -0
  301. package/server/review.js.map +1 -0
  302. package/server/router.d.ts +33 -0
  303. package/server/router.js +191 -197
  304. package/server/router.js.map +1 -0
  305. package/server/scanRequest.d.ts +3 -0
  306. package/server/scanRequest.js +36 -0
  307. package/server/scanRequest.js.map +1 -0
  308. package/server/searchIndex.d.ts +17 -0
  309. package/server/searchIndex.js +83 -80
  310. package/server/searchIndex.js.map +1 -0
  311. package/server/sessions.d.ts +14 -0
  312. package/server/sessions.js +62 -70
  313. package/server/sessions.js.map +1 -0
  314. package/server/startup.d.ts +118 -0
  315. package/server/startup.js +143 -148
  316. package/server/startup.js.map +1 -0
  317. package/server/static.d.ts +6 -0
  318. package/server/static.js +28 -31
  319. package/server/static.js.map +1 -0
  320. package/server/tools/install.d.ts +4 -0
  321. package/server/tools/install.js +176 -185
  322. package/server/tools/install.js.map +1 -0
  323. package/server/tools/parse.d.ts +8 -0
  324. package/server/tools/parse.js +112 -114
  325. package/server/tools/parse.js.map +1 -0
  326. package/server/tools/platform.d.ts +9 -0
  327. package/server/tools/platform.js +49 -47
  328. package/server/tools/platform.js.map +1 -0
  329. package/server/tools/registry.d.ts +137 -0
  330. package/server/tools/registry.js +173 -172
  331. package/server/tools/registry.js.map +1 -0
  332. package/server/tools/scan.d.ts +34 -0
  333. package/server/tools/scan.js +89 -98
  334. package/server/tools/scan.js.map +1 -0
  335. package/server/tools.d.ts +34 -0
  336. package/server/tools.js +94 -107
  337. package/server/tools.js.map +1 -0
  338. package/server/tunnel.d.ts +29 -0
  339. package/server/tunnel.js +61 -66
  340. package/server/tunnel.js.map +1 -0
  341. package/shared/analyzer/docs.d.ts +16 -0
  342. package/shared/analyzer/docs.js +99 -93
  343. package/shared/analyzer/docs.js.map +1 -0
  344. package/shared/analyzer/explainLocal.d.ts +4 -0
  345. package/shared/analyzer/explainLocal.js +122 -142
  346. package/shared/analyzer/explainLocal.js.map +1 -0
  347. package/shared/analyzer/github.d.ts +37 -0
  348. package/shared/analyzer/github.js +41 -43
  349. package/shared/analyzer/github.js.map +1 -0
  350. package/shared/analyzer/graph.d.ts +41 -0
  351. package/shared/analyzer/graph.js +393 -400
  352. package/shared/analyzer/graph.js.map +1 -0
  353. package/shared/analyzer/health.d.ts +33 -0
  354. package/shared/analyzer/health.js +197 -193
  355. package/shared/analyzer/health.js.map +1 -0
  356. package/shared/analyzer/history.d.ts +29 -0
  357. package/shared/analyzer/history.js +110 -111
  358. package/shared/analyzer/history.js.map +1 -0
  359. package/shared/analyzer/jsonConfig.d.ts +2 -0
  360. package/shared/analyzer/jsonConfig.js +61 -0
  361. package/shared/analyzer/jsonConfig.js.map +1 -0
  362. package/shared/analyzer/languages/csharp.d.ts +26 -0
  363. package/shared/analyzer/languages/csharp.js +83 -88
  364. package/shared/analyzer/languages/csharp.js.map +1 -0
  365. package/shared/analyzer/languages/generic.d.ts +23 -0
  366. package/shared/analyzer/languages/generic.js +94 -105
  367. package/shared/analyzer/languages/generic.js.map +1 -0
  368. package/shared/analyzer/languages/go.d.ts +24 -0
  369. package/shared/analyzer/languages/go.js +45 -54
  370. package/shared/analyzer/languages/go.js.map +1 -0
  371. package/shared/analyzer/languages/index.d.ts +6 -0
  372. package/shared/analyzer/languages/index.js +19 -20
  373. package/shared/analyzer/languages/index.js.map +1 -0
  374. package/shared/analyzer/languages/java.d.ts +20 -0
  375. package/shared/analyzer/languages/java.js +73 -78
  376. package/shared/analyzer/languages/java.js.map +1 -0
  377. package/shared/analyzer/languages/javascript.d.ts +12 -0
  378. package/shared/analyzer/languages/javascript.js +258 -209
  379. package/shared/analyzer/languages/javascript.js.map +1 -0
  380. package/shared/analyzer/languages/python.d.ts +23 -0
  381. package/shared/analyzer/languages/python.js +92 -100
  382. package/shared/analyzer/languages/python.js.map +1 -0
  383. package/shared/analyzer/languages/rust.d.ts +17 -0
  384. package/shared/analyzer/languages/rust.js +96 -98
  385. package/shared/analyzer/languages/rust.js.map +1 -0
  386. package/shared/analyzer/languages/typescript.d.ts +11 -0
  387. package/shared/analyzer/languages/typescript.js +117 -116
  388. package/shared/analyzer/languages/typescript.js.map +1 -0
  389. package/shared/analyzer/licenses.d.ts +18 -0
  390. package/shared/analyzer/licenses.js +130 -133
  391. package/shared/analyzer/licenses.js.map +1 -0
  392. package/shared/analyzer/metrics.d.ts +20 -0
  393. package/shared/analyzer/metrics.js +112 -104
  394. package/shared/analyzer/metrics.js.map +1 -0
  395. package/shared/analyzer/pathUtil.d.ts +10 -0
  396. package/shared/analyzer/pathUtil.js +29 -35
  397. package/shared/analyzer/pathUtil.js.map +1 -0
  398. package/shared/analyzer/patterns.d.ts +11 -0
  399. package/shared/analyzer/patterns.js +231 -253
  400. package/shared/analyzer/patterns.js.map +1 -0
  401. package/shared/analyzer/scan.d.ts +62 -0
  402. package/shared/analyzer/scan.js +451 -442
  403. package/shared/analyzer/scan.js.map +1 -0
  404. package/shared/analyzer/scanControl.d.ts +11 -0
  405. package/shared/analyzer/scanControl.js +62 -0
  406. package/shared/analyzer/scanControl.js.map +1 -0
  407. package/shared/analyzer/security.d.ts +18 -0
  408. package/shared/analyzer/security.js +159 -159
  409. package/shared/analyzer/security.js.map +1 -0
  410. package/shared/analyzer/services.d.ts +5 -0
  411. package/shared/analyzer/services.js +141 -138
  412. package/shared/analyzer/services.js.map +1 -0
  413. package/shared/analyzer/stack.d.ts +6 -0
  414. package/shared/analyzer/stack.js +134 -141
  415. package/shared/analyzer/stack.js.map +1 -0
  416. package/shared/analyzer/tour.d.ts +2 -0
  417. package/shared/analyzer/tour.js +45 -53
  418. package/shared/analyzer/tour.js.map +1 -0
  419. package/shared/analyzer/util.d.ts +8 -0
  420. package/shared/analyzer/util.js +130 -76
  421. package/shared/analyzer/util.js.map +1 -0
  422. package/shared/analyzer/workflows.d.ts +8 -0
  423. package/shared/analyzer/workflows.js +139 -134
  424. package/shared/analyzer/workflows.js.map +1 -0
  425. package/shared/contracts.d.ts +250 -0
  426. package/shared/contracts.js +2 -0
  427. package/shared/contracts.js.map +1 -0
  428. package/shared/diagram/aiFacts.d.ts +35 -0
  429. package/shared/diagram/aiFacts.js +102 -105
  430. package/shared/diagram/aiFacts.js.map +1 -0
  431. package/shared/diagram/aiMermaid.d.ts +5 -0
  432. package/shared/diagram/aiMermaid.js +46 -45
  433. package/shared/diagram/aiMermaid.js.map +1 -0
  434. package/shared/diagram/atlas.d.ts +16 -0
  435. package/shared/diagram/atlas.js +51 -60
  436. package/shared/diagram/atlas.js.map +1 -0
  437. package/shared/diagram/mermaid.d.ts +43 -0
  438. package/shared/diagram/mermaid.js +348 -370
  439. package/shared/diagram/mermaid.js.map +1 -0
  440. package/shared/review/contracts.d.ts +95 -0
  441. package/shared/review/contracts.js +2 -0
  442. package/shared/review/contracts.js.map +1 -0
  443. package/shared/review/review.d.ts +10 -0
  444. package/shared/review/review.js +184 -0
  445. package/shared/review/review.js.map +1 -0
  446. package/shared/search/query.d.ts +32 -0
  447. package/shared/search/query.js +395 -388
  448. package/shared/search/query.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/shared/search/query.ts"],"names":[],"mappings":"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","sourcesContent":["// One query language, two places it runs.\n//\n// The palette in the browser and `POST /api/search` on the server have to agree\n// about what a query means. If they didn't, `ext:js` would filter the file list\n// and be treated as literal text by the code search — the same keystrokes\n// answering two different questions. So the parser lives here, in the\n// isomorphic layer, and both sides import it: the tab for the file and symbol\n// pass it can do without a round trip, the server for the TF-IDF pass over file\n// contents. That is the same reasoning that put the analyzer in `shared/`, and\n// it is why this module may not touch the DOM or Node (see Agent.md).\n//\n// The grammar is small on purpose. Every clause is optional, order does not\n// matter, and a query made only of filters — `ext:js is:test` — is legal and\n// useful: it means \"the tests written in this language\".\n//\n// render a bare word. Fuzzy-matched against paths and\n// symbol names, substring-matched against code.\n// \"exact phrase\" a phrase that must appear verbatim.\n// /createS.*?/i a regular expression, flags optional.\n// ext:js,ts only these extensions (no dot needed).\n// path:server/api only paths containing this substring.\n// kind:class only symbols of this kind.\n// is:test, is:source the tests toggle the filter row already has.\n// -vendor must NOT appear in the path.\n//\n// Filter clauses are strict — they are a decision the person already made.\n// Bare words stay forgiving, because a half-remembered name should still find\n// the file. That split is the whole design: `matchesPathFilters` is a gate,\n// `scorePath`/`scoreContent` are a ranking.\n\nimport { baseName, extOf, isTestPath } from '../analyzer/pathUtil.js';\n\n// A regex longer than this is either a paste accident or an attempt to make the\n// tab hang. Real patterns people type at a search box are two orders of\n// magnitude shorter than the cap.\nconst MAX_REGEX_LENGTH = 200;\n\n// Quoted phrase | /regex/flags | bare token. Order matters: the quote and the\n// slash have to win before `\\S+` gets a chance to swallow them whole.\nconst TOKEN_RE = /\"([^\"]*)\"|\\/([^\\s/]+)\\/([gimsuy]*)|\\S+/g;\n\n// Ranges are capped as they are collected. A one-letter query against a\n// minified bundle can match tens of thousands of times, and the UI only ever\n// paints the first screenful.\nconst MAX_RANGES = 400;\n\nfunction fold(text, caseSensitive) {\n return caseSensitive ? text : text.toLowerCase();\n}\n\nfunction splitList(value) {\n return value\n .split(',')\n .map((part) => part.trim().toLowerCase().replace(/^\\./, ''))\n .filter(Boolean);\n}\n\n\nexport function parseQuery(raw, options: Record<string, any> = {}) {\n const caseSensitive = !!options.caseSensitive;\n const text = String(raw ?? '');\n const parsed = {\n raw: text,\n clauses: [], // { kind, raw, start, end } — what the input was made of\n terms: [], // bare words — fuzzy against paths, substring in content\n phrases: [], // \"quoted\" — verbatim substrings\n negatives: [], // -foo — must not appear in the path\n exts: [], // ext:js,ts — extensions without the dot\n paths: [], // path:src/api — path substrings\n kinds: [], // kind:function — symbol kinds\n isTest: false, // is:test\n isSource: false, // is:source\n regex: null, // the pattern as authored\n regexSource: '',\n regexFlags: '',\n regexGlobal: null, // a 'g' copy used for scanning, never for matching\n caseSensitive,\n error: null,\n };\n\n if (!text.trim()) return parsed;\n\n const lower = (s) => fold(s, caseSensitive);\n\n for (const m of text.matchAll(TOKEN_RE)) {\n // The span each clause came from, so the palette can turn a filter into a\n // chip and take it back out of the input when the chip is dismissed.\n const note = (kind) => parsed.clauses.push({\n kind, raw: m[0], start: m.index, end: m.index + m[0].length,\n });\n\n if (m[1] !== undefined) {\n const phrase = m[1].trim();\n if (phrase) { parsed.phrases.push(lower(phrase)); note('phrase'); }\n continue;\n }\n\n if (m[2] !== undefined) {\n const source = m[2];\n parsed.regexSource = source;\n // Flags the person typed are respected exactly; with no flags at all the\n // case toggle decides, which is what makes `/Foo/` and the `Aa` button\n // behave the way a reader expects.\n const flags = m[3] || (caseSensitive ? '' : 'i');\n parsed.regexFlags = flags;\n if (source.length > MAX_REGEX_LENGTH) {\n parsed.error = `Regex is too long (${source.length} > ${MAX_REGEX_LENGTH}).`;\n continue;\n }\n try {\n parsed.regex = new RegExp(source, flags.replace('g', ''));\n parsed.regexGlobal = new RegExp(source, flags.includes('g') ? flags : flags + 'g');\n note('regex');\n } catch (err) {\n parsed.error = 'Bad regex: ' + err.message;\n }\n continue;\n }\n\n const token = m[0];\n if (!token) continue;\n\n if (token.length > 1 && token.startsWith('-')) {\n parsed.negatives.push(lower(token.slice(1)));\n note('neg');\n continue;\n }\n\n const colon = token.indexOf(':');\n if (colon > 0) {\n const field = token.slice(0, colon).toLowerCase();\n const value = token.slice(colon + 1);\n if (!value) continue;\n if (field === 'ext' || field === 'exts' || field === 'type') {\n parsed.exts.push(...splitList(value));\n note('ext');\n continue;\n }\n if (field === 'path' || field === 'in') {\n parsed.paths.push(lower(value));\n note('path');\n continue;\n }\n if (field === 'kind') {\n parsed.kinds.push(value.toLowerCase());\n note('kind');\n continue;\n }\n if (field === 'is') {\n const v = value.toLowerCase();\n if (v === 'test' || v === 'tests') { parsed.isTest = true; note('is'); }\n else if (v === 'source' || v === 'src') { parsed.isSource = true; note('is'); }\n else { parsed.terms.push(lower(token)); note('term'); }\n continue;\n }\n // An unrecognized `foo:bar` is more likely a real word (a URL, a\n // protocol, `Read:`) than a typo'd clause. Search for it as text.\n }\n\n parsed.terms.push(lower(token));\n note('term');\n }\n\n return parsed;\n}\n\n// Take one clause back out of the raw query, leaving the rest of the text\n// exactly as it was typed. The palette uses this when a filter chip is\n// dismissed — hand-editing a query that contains a quoted phrase is otherwise\n// a counting exercise.\nexport function removeClause(raw, clause) {\n const text = String(raw ?? '');\n if (!clause) return text;\n const start = Math.max(0, Math.min(Number(clause.start) || 0, text.length));\n const end = Math.max(start, Math.min(Number(clause.end) || start, text.length));\n const head = text.slice(0, start).replace(/\\s+$/, '');\n const tail = text.slice(end).replace(/^\\s+/, '');\n if (head && tail) return `${head} ${tail}`;\n return head || tail;\n}\n\n// Is there anything to search *for*? A query of pure filters still filters —\n// see `hasFilters` — but it has no text to rank with, and that difference is\n// what tells the palette to stop asking the server for content matches.\nexport function queryIsEmpty(parsed) {\n return !parsed || (\n !parsed.terms.length && !parsed.phrases.length && !parsed.regex\n && !parsed.negatives.length && !parsed.exts.length && !parsed.paths.length\n && !parsed.kinds.length && !parsed.isTest && !parsed.isSource\n );\n}\n\nexport function hasFilters(parsed) {\n return !!(parsed && (\n parsed.negatives.length || parsed.exts.length || parsed.paths.length\n || parsed.kinds.length || parsed.isTest || parsed.isSource\n ));\n}\n\n// Advanced means \"the strict clauses are in play\": filters, a phrase, a regex,\n// or the case toggle. A query of bare words alone keeps the forgiving ranked\n// behaviour the palette always had — partial matches included — which is what a\n// half-remembered name deserves. Anything else is a decision, and decisions are\n// enforced rather than ranked.\nexport function isAdvanced(parsed) {\n if (!parsed) return false;\n return hasFilters(parsed)\n || parsed.phrases.length > 0\n || parsed.regex !== null\n || parsed.caseSensitive;\n}\n\n// ---- the gate -------------------------------------------------------------\n\n// Everything that can be decided from the path alone. Cheap, so it runs first\n// and lets the expensive content pass skip the file entirely.\nexport function matchesPathFilters(parsed, path) {\n if (!parsed) return true;\n\n if (parsed.exts.length) {\n // `extOf` hands back the dot (`'.js'`); the filter is stored without it,\n // because `ext:js` is what people type.\n const want = extOf(path).replace(/^\\./, '');\n if (!parsed.exts.includes(want)) return false;\n }\n\n if (parsed.paths.length) {\n const folded = fold(path, parsed.caseSensitive);\n for (const needle of parsed.paths) {\n if (!folded.includes(needle)) return false;\n }\n }\n\n if (parsed.isTest && !isTestPath(path)) return false;\n if (parsed.isSource && isTestPath(path)) return false;\n\n if (parsed.negatives.length) {\n const folded = fold(path, parsed.caseSensitive);\n for (const needle of parsed.negatives) {\n if (folded.includes(needle)) return false;\n }\n }\n\n if (parsed.kinds.length) {\n // A kind filter is a statement about symbols, not paths: the caller has to\n // know the symbol to answer it. Answer \"yes\" here and let the symbol pass\n // apply it, so a kind filter never silently hides every file.\n return true;\n }\n\n return true;\n}\n\n// Decimals matter only for ordering, and this keeps the ordering stable: exact\n// matches win, then a prefix, then a word boundary, then anywhere.\nfunction occurrenceScore(hay, needle, weight) {\n const at = hay.indexOf(needle);\n if (at === -1) return 0;\n let score = weight - at;\n if (at === 0) score += weight * 0.6;\n else if (/[^a-z0-9]/.test(hay[at - 1])) score += weight * 0.35;\n if (hay === needle) score += weight * 1.2;\n return score;\n}\n\n// ---- the ranking ----------------------------------------------------------\n\n// Subsequence match, the fzf idea: `rt` finds `router.js` because the letters\n// appear in order. Adjacent runs, word boundaries and camel humps are worth\n// more than letters sprinkled through a long path, which is what stops `rt`\n// from ranking `reduction-table.js` above `router.js`.\n//\n// `raw` is kept alongside the folded haystack so the camel hump can be seen —\n// folding throws away the case that carries the signal.\nfunction fuzzyScore(needle, hay, raw) {\n let score = 0;\n let at = 0;\n let streak = 0;\n let first = -1;\n\n for (let i = 0; i < needle.length; i++) {\n const found = hay.indexOf(needle[i], at);\n if (found === -1) return 0;\n if (first === -1) first = found;\n\n streak = found === at && i > 0 ? streak + 1 : 0;\n score += 10 + streak * 6;\n\n if (found === 0) score += 14;\n else if (/[^a-z0-9]/.test(hay[found - 1])) score += 12;\n else if (raw && /[a-z0-9]/.test(raw[found - 1] || '') && /[A-Z]/.test(raw[found] || '')) score += 10;\n\n at = found + 1;\n }\n\n score -= first; // earlier is better\n score -= Math.max(0, hay.length - needle.length) * 0.4; // shorter is better\n return Math.max(1, score);\n}\n\n// How well a path answers the free-text part of the query. Filters are not\n// consulted here — `matchesPathFilters` owns those.\nexport function scorePath(parsed, path) {\n if (!parsed || queryIsEmpty(parsed)) return 1;\n const hay = fold(path, parsed.caseSensitive);\n const raw = path;\n const base = baseName(path);\n const baseHay = fold(base, parsed.caseSensitive);\n let score = 0;\n\n for (const phrase of parsed.phrases) {\n if (!hay.includes(phrase)) return 0;\n score += occurrenceScore(hay, phrase, 90);\n }\n\n if (parsed.regex) {\n parsed.regex.lastIndex = 0;\n if (!parsed.regex.test(path)) return 0;\n score += 80;\n }\n\n for (const term of parsed.terms) {\n const exact = baseHay === term ? 320 : 0;\n if (exact) { score += exact; continue; }\n const inBase = occurrenceScore(baseHay, term, 150);\n if (inBase) { score += inBase; continue; }\n const inPath = occurrenceScore(hay, term, 70);\n if (inPath) { score += inPath; continue; }\n const fuzzy = fuzzyScore(term, baseHay, base) || fuzzyScore(term, hay, raw);\n if (!fuzzy) return 0;\n score += fuzzy;\n }\n\n // A path with no holder for a bare term is not a match at all. (Filter-only\n // queries have no terms and are already satisfied by the gate.)\n if (!score && parsed.terms.length) return 0;\n\n // Nothing to rank by: a query of pure filters is a set, not an ordering, so\n // it answers with a flat 1 and skips the tie-breaking below.\n if (!parsed.terms.length) return score || 1;\n\n // Shallower files win ties. When the same name appears at three depths — a\n // page, a feature folder and a barrel — the one nearest the top of the tree\n // is usually the one meant. The clamp matters: a match must stay strictly\n // positive, because zero is how the callers spell \"no match at all\".\n const adjusted = score - path.split('/').length * 0.5;\n return adjusted > 0 ? adjusted : 0.5;\n}\n\n// A symbol is a name plus the kind it was declared with. `kind:` and the bare\n// terms both apply here, and nothing about extensions or paths does.\nexport function scoreSymbol(parsed, name, kind) {\n if (!parsed) return 0;\n const foldedName = fold(name || '', parsed.caseSensitive);\n const foldedKind = (kind || '').toLowerCase();\n\n if (parsed.kinds.length) {\n const kindHit = parsed.kinds.some((k) => foldedKind.includes(k) || foldedName.endsWith(k));\n if (!kindHit) return 0;\n }\n if (parsed.regex) {\n parsed.regex.lastIndex = 0;\n if (!parsed.regex.test(name || '')) return 0;\n }\n for (const negative of parsed.negatives) {\n if (foldedName.includes(negative)) return 0;\n }\n for (const phrase of parsed.phrases) {\n if (!foldedName.includes(phrase)) return 0;\n }\n if (!parsed.terms.length) return parsed.regex || parsed.phrases.length || parsed.kinds.length ? 60 : 0;\n\n let score = 0;\n for (const term of parsed.terms) {\n if (foldedName === term) score += 240;\n else {\n const hit = occurrenceScore(foldedName, term, 130);\n if (hit) score += hit;\n else {\n const fuzzy = fuzzyScore(term, foldedName, name);\n if (!fuzzy) return 0;\n score += fuzzy;\n }\n }\n }\n return score;\n}\n\n// ---- content --------------------------------------------------------------\n\n// How well a file's text answers the query, plus the offset of the best hit so\n// the caller can turn it into a line number and a snippet without searching\n// again. Returns `{ score: 0, index: -1 }` when the file does not answer it.\n//\n// Strict here, unlike `scorePath`: text search is a deliberate act — you typed\n// the words because you expect them to be there, so every term must appear.\n// Negations are deliberately *not* checked here: `-vendor` is a statement about\n// paths (see `matchesPathFilters`), and reading it as \"this file must not\n// mention the word vendor\" would hide exactly the code you were looking for.\nexport function scoreContent(parsed, text) {\n if (!parsed || !text || queryIsEmpty(parsed)) return { score: 0, index: -1 };\n const hay = fold(text, parsed.caseSensitive);\n let score = 0;\n let best = -1;\n\n const note = (at) => {\n if (at !== -1 && (best === -1 || at < best)) best = at;\n };\n\n for (const phrase of parsed.phrases) {\n const at = hay.indexOf(phrase);\n if (at === -1) return { score: 0, index: -1 };\n score += occurrenceScore(hay, phrase, 120);\n note(at);\n }\n\n if (parsed.regex) {\n parsed.regex.lastIndex = 0;\n const at = hay.search(parsed.regex);\n if (at === -1) return { score: 0, index: -1 };\n score += 100;\n note(at);\n }\n\n for (const term of parsed.terms) {\n const at = hay.indexOf(term);\n if (at === -1) return { score: 0, index: -1 };\n score += occurrenceScore(hay, term, 60);\n note(at);\n }\n\n return { score, index: best };\n}\n\n// ---- highlighting ---------------------------------------------------------\n\nfunction mergeRanges(ranges) {\n if (!ranges.length) return [];\n const sorted = ranges.slice().sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n const out = [sorted[0]];\n for (let i = 1; i < sorted.length; i++) {\n const last = out[out.length - 1];\n if (sorted[i][0] <= last[1]) last[1] = Math.max(last[1], sorted[i][1]);\n else out.push(sorted[i]);\n }\n return out;\n}\n\n// Every span of `text` the query matches, as `[start, end)` offsets, merged so\n// overlapping hits paint once. This is what lets a snippet mark *all* the words\n// instead of only the first — the old highlighter stopped at one, which made a\n// multi-word query look like it had only matched half of itself.\nexport function highlightRanges(text, parsed) {\n if (!text || !parsed) return [];\n const ranges = [];\n const add = (start, length) => {\n if (length > 0 && start >= 0 && ranges.length < MAX_RANGES) ranges.push([start, start + length]);\n };\n\n if (parsed.regexGlobal) {\n parsed.regexGlobal.lastIndex = 0;\n let m;\n let guard = 0;\n while ((m = parsed.regexGlobal.exec(text)) !== null && guard++ < MAX_RANGES) {\n add(m.index, m[0].length);\n // A pattern that can match the empty string would spin forever here.\n if (m[0].length === 0) parsed.regexGlobal.lastIndex++;\n }\n }\n\n const needles = parsed.phrases.concat(parsed.terms);\n if (needles.length) {\n const hay = fold(text, parsed.caseSensitive);\n for (const needle of needles) {\n if (!needle) continue;\n let from = 0;\n let at;\n while ((at = hay.indexOf(needle, from)) !== -1) {\n add(at, needle.length);\n from = at + needle.length;\n if (ranges.length >= MAX_RANGES) break;\n }\n }\n }\n\n return mergeRanges(ranges);\n}\n\n// ---- turning an offset into a place to stand ------------------------------\n\n// 1-based line number for an offset. Used for the \"Line 42\" label on a result\n// and, more importantly, to put the cursor there when the result is opened.\nexport function lineOfIndex(text, index) {\n if (!text || index <= 0) return 1;\n let line = 1;\n for (let i = 0; i < index && i < text.length; i++) {\n if (text.charCodeAt(i) === 10) line++;\n }\n return line;\n}\n\n// The trimmed text of the line containing `index`, shortened around the match\n// so the interesting part is not the part that gets cut off.\nexport function snippetAt(text, index, maxLength = 120) {\n if (!text) return '';\n const start = index < 0 ? 0 : index;\n let lineStart = text.lastIndexOf('\\n', start - 1) + 1;\n let lineEnd = text.indexOf('\\n', start);\n if (lineEnd === -1) lineEnd = text.length;\n let line = text.slice(lineStart, lineEnd).replace(/\\r$/, '');\n\n if (line.length > maxLength) {\n const column = Math.max(0, start - lineStart);\n const from = Math.max(0, column - Math.floor(maxLength / 3));\n line = (from > 0 ? '…' : '') + line.slice(from, from + maxLength - 2);\n }\n return line.trim();\n}"]}