@crownpeak/dqm-react-component-dev-mcp 1.2.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 (444) hide show
  1. package/README.md +138 -0
  2. package/data/.env.example +22 -0
  3. package/data/.gitattributes +47 -0
  4. package/data/.glfrc.json +7 -0
  5. package/data/.husky/pre-commit +5 -0
  6. package/data/.nvmrc +1 -0
  7. package/data/CHANGELOG.md +75 -0
  8. package/data/CODE_OF_CONDUCT.md +129 -0
  9. package/data/CONTRIBUTING.md +203 -0
  10. package/data/DOCS-STRUCTURE.md +307 -0
  11. package/data/I18N.md +292 -0
  12. package/data/LICENSE +22 -0
  13. package/data/README.md +315 -0
  14. package/data/SECURITY.md +125 -0
  15. package/data/WIKI-DEPLOYMENT.md +348 -0
  16. package/data/docs/AI-FEATURES.md +610 -0
  17. package/data/docs/API-REFERENCE.md +1022 -0
  18. package/data/docs/AUTHENTICATION.md +301 -0
  19. package/data/docs/BACKEND-API.md +468 -0
  20. package/data/docs/DEVELOPMENT.md +375 -0
  21. package/data/docs/EXAMPLES.md +622 -0
  22. package/data/docs/MCP-SERVER.md +307 -0
  23. package/data/docs/MIGRATION-GUIDE.md +367 -0
  24. package/data/docs/NPM-PUBLISH.md +193 -0
  25. package/data/docs/QUICKSTART.md +206 -0
  26. package/data/docs/REDIS-SETUP.md +162 -0
  27. package/data/docs/SERVER.md +228 -0
  28. package/data/docs/TROUBLESHOOTING.md +657 -0
  29. package/data/docs/WIDGET-GUIDE.md +638 -0
  30. package/data/docs/WIKI-HOME.md +58 -0
  31. package/data/docs/WIKI-SIDEBAR.md +39 -0
  32. package/data/package.json +171 -0
  33. package/data/playwright.config.ts +64 -0
  34. package/data/probe/.cargo/config.toml +10 -0
  35. package/data/probe/.claude/commands/performance-review.md +15 -0
  36. package/data/probe/.clinerules +288 -0
  37. package/data/probe/.dockerignore +57 -0
  38. package/data/probe/.githooks/post-commit +11 -0
  39. package/data/probe/.githooks/pre-commit +99 -0
  40. package/data/probe/.githooks/pre-commit-vow +9 -0
  41. package/data/probe/.prompts/engineer.md +41 -0
  42. package/data/probe/.roomodes +28 -0
  43. package/data/probe/.windsurfrules +0 -0
  44. package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
  45. package/data/probe/BENCHMARKING.md +256 -0
  46. package/data/probe/CLAUDE.md +226 -0
  47. package/data/probe/CODE_OF_CONDUCT.md +128 -0
  48. package/data/probe/CONTRIBUTING.md +193 -0
  49. package/data/probe/Cargo.toml +120 -0
  50. package/data/probe/Cross.toml +10 -0
  51. package/data/probe/DOCKER-README.md +224 -0
  52. package/data/probe/Dockerfile +32 -0
  53. package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
  54. package/data/probe/LICENSE +201 -0
  55. package/data/probe/Makefile +210 -0
  56. package/data/probe/README.md +824 -0
  57. package/data/probe/SECURITY.md +67 -0
  58. package/data/probe/WINDOWS-GUIDE.md +294 -0
  59. package/data/probe/benches/parsing_benchmarks.rs +370 -0
  60. package/data/probe/benches/search_benchmarks.rs +599 -0
  61. package/data/probe/benches/simd_benchmarks.rs +372 -0
  62. package/data/probe/benches/timing_benchmarks.rs +287 -0
  63. package/data/probe/build-windows.bat +229 -0
  64. package/data/probe/codex-config/config.toml +6 -0
  65. package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
  66. package/data/probe/examples/cache_demo.rs +46 -0
  67. package/data/probe/examples/chat/.dockerignore +37 -0
  68. package/data/probe/examples/chat/ChatSessionManager.js +295 -0
  69. package/data/probe/examples/chat/Dockerfile +98 -0
  70. package/data/probe/examples/chat/LICENSE +201 -0
  71. package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
  72. package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
  73. package/data/probe/examples/chat/README.md +338 -0
  74. package/data/probe/examples/chat/TRACING.md +226 -0
  75. package/data/probe/examples/chat/appTracer.js +968 -0
  76. package/data/probe/examples/chat/auth.js +76 -0
  77. package/data/probe/examples/chat/bin/probe-chat.js +13 -0
  78. package/data/probe/examples/chat/build.js +104 -0
  79. package/data/probe/examples/chat/cancelRequest.js +84 -0
  80. package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
  81. package/data/probe/examples/chat/demo-local-images.js +128 -0
  82. package/data/probe/examples/chat/fileSpanExporter.js +181 -0
  83. package/data/probe/examples/chat/implement/README.md +228 -0
  84. package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
  85. package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
  86. package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
  87. package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
  88. package/data/probe/examples/chat/implement/backends/registry.js +85 -0
  89. package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
  90. package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
  91. package/data/probe/examples/chat/implement/core/config.js +428 -0
  92. package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
  93. package/data/probe/examples/chat/implement/core/utils.js +496 -0
  94. package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
  95. package/data/probe/examples/chat/index.js +669 -0
  96. package/data/probe/examples/chat/mcpServer.js +341 -0
  97. package/data/probe/examples/chat/npm/LICENSE +15 -0
  98. package/data/probe/examples/chat/npm/README.md +168 -0
  99. package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
  100. package/data/probe/examples/chat/npm/index.js +259 -0
  101. package/data/probe/examples/chat/npm/package.json +54 -0
  102. package/data/probe/examples/chat/package.json +102 -0
  103. package/data/probe/examples/chat/probeChat.js +456 -0
  104. package/data/probe/examples/chat/probeTool.js +491 -0
  105. package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
  106. package/data/probe/examples/chat/telemetry.js +281 -0
  107. package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
  108. package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
  109. package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
  110. package/data/probe/examples/chat/test/test-backends.js +90 -0
  111. package/data/probe/examples/chat/test/testUtils.js +530 -0
  112. package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
  113. package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
  114. package/data/probe/examples/chat/test/verify-tests.js +118 -0
  115. package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
  116. package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
  117. package/data/probe/examples/chat/test-chat-tracing.js +38 -0
  118. package/data/probe/examples/chat/test-direct-function.js +49 -0
  119. package/data/probe/examples/chat/test-file-size-validation.js +103 -0
  120. package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
  121. package/data/probe/examples/chat/test-github-context.txt +12 -0
  122. package/data/probe/examples/chat/test-hierarchy.js +203 -0
  123. package/data/probe/examples/chat/test-image-spans.js +37 -0
  124. package/data/probe/examples/chat/test-local-image-reading.js +176 -0
  125. package/data/probe/examples/chat/test-mcp-integration.js +136 -0
  126. package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
  127. package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
  128. package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
  129. package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
  130. package/data/probe/examples/chat/test-security-validation.js +145 -0
  131. package/data/probe/examples/chat/test-simple-tracing.js +32 -0
  132. package/data/probe/examples/chat/test-trace-verification.js +235 -0
  133. package/data/probe/examples/chat/test-tracing.js +114 -0
  134. package/data/probe/examples/chat/tokenCounter.js +419 -0
  135. package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
  136. package/data/probe/examples/chat/webServer.js +1103 -0
  137. package/data/probe/examples/reranker/Cargo.toml +33 -0
  138. package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
  139. package/data/probe/examples/reranker/MODELS.md +66 -0
  140. package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
  141. package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
  142. package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
  143. package/data/probe/examples/reranker/README.md +347 -0
  144. package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
  145. package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
  146. package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
  147. package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
  148. package/data/probe/examples/reranker/debug_scoring.py +189 -0
  149. package/data/probe/examples/reranker/debug_tokenization.py +154 -0
  150. package/data/probe/examples/reranker/download_models.sh +73 -0
  151. package/data/probe/examples/reranker/requirements.txt +13 -0
  152. package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
  153. package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
  154. package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
  155. package/data/probe/examples/reranker/simple_test.py +50 -0
  156. package/data/probe/examples/reranker/test_all_models.sh +63 -0
  157. package/data/probe/examples/reranker/test_bert_results.sh +44 -0
  158. package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
  159. package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
  160. package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
  161. package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
  162. package/data/probe/examples/reranker/test_scores.py +132 -0
  163. package/data/probe/install.ps1 +508 -0
  164. package/data/probe/install.sh +460 -0
  165. package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
  166. package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
  167. package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
  168. package/data/probe/npm/MAID_INTEGRATION.md +313 -0
  169. package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
  170. package/data/probe/npm/README.md +824 -0
  171. package/data/probe/npm/bin/.gitignore +7 -0
  172. package/data/probe/npm/bin/.gitkeep +0 -0
  173. package/data/probe/npm/bin/README.md +12 -0
  174. package/data/probe/npm/bin/probe +167 -0
  175. package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
  176. package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
  177. package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
  178. package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
  179. package/data/probe/npm/example-usage.js +335 -0
  180. package/data/probe/npm/examples/multi-engine-demo.js +117 -0
  181. package/data/probe/npm/examples/probe-agent-cli.js +113 -0
  182. package/data/probe/npm/examples/test-agent-edit.js +114 -0
  183. package/data/probe/npm/examples/test-edit-create.js +120 -0
  184. package/data/probe/npm/examples/test-edit-direct.js +114 -0
  185. package/data/probe/npm/index.d.ts +744 -0
  186. package/data/probe/npm/jest.config.js +52 -0
  187. package/data/probe/npm/package.json +117 -0
  188. package/data/probe/npm/scripts/build-agent.cjs +75 -0
  189. package/data/probe/npm/scripts/build-cjs.js +124 -0
  190. package/data/probe/npm/scripts/build-mcp.cjs +36 -0
  191. package/data/probe/npm/scripts/postinstall.js +216 -0
  192. package/data/probe/npm/test-codex-e2e.js +78 -0
  193. package/data/probe/npm/test-download-lock.js +109 -0
  194. package/data/probe/npm/test-grep-security.js +94 -0
  195. package/data/probe/npm/test-grep-simplified.js +63 -0
  196. package/data/probe/npm/test-grep.js +51 -0
  197. package/data/probe/npm/tests/README.md +96 -0
  198. package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
  199. package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
  200. package/data/probe/npm/tests/contextCompactor.test.js +498 -0
  201. package/data/probe/npm/tests/delegate-config.test.js +353 -0
  202. package/data/probe/npm/tests/delegate-integration.test.js +348 -0
  203. package/data/probe/npm/tests/extractor-integration.test.js +162 -0
  204. package/data/probe/npm/tests/extractor.test.js +317 -0
  205. package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
  206. package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
  207. package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
  208. package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
  209. package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
  210. package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
  211. package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
  212. package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
  213. package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
  214. package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
  215. package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
  216. package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
  217. package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
  218. package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
  219. package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
  220. package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
  221. package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
  222. package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
  223. package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
  224. package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
  225. package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
  226. package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
  227. package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
  228. package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
  229. package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
  230. package/data/probe/npm/tests/setup.js +46 -0
  231. package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
  232. package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
  233. package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
  234. package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
  235. package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
  236. package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
  237. package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
  238. package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
  239. package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
  240. package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
  241. package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
  242. package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
  243. package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
  244. package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
  245. package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
  246. package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
  247. package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
  248. package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
  249. package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
  250. package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
  251. package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
  252. package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
  253. package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
  254. package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
  255. package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
  256. package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
  257. package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
  258. package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
  259. package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
  260. package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
  261. package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
  262. package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
  263. package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
  264. package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
  265. package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
  266. package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
  267. package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
  268. package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
  269. package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
  270. package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
  271. package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
  272. package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
  273. package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
  274. package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
  275. package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
  276. package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
  277. package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
  278. package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
  279. package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
  280. package/data/probe/npm/tsconfig.json +21 -0
  281. package/data/probe/result1.txt +19 -0
  282. package/data/probe/result2.txt +26 -0
  283. package/data/probe/scripts/benchmark.sh +270 -0
  284. package/data/probe/scripts/cache_memory_analysis.rs +844 -0
  285. package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
  286. package/data/probe/site/.env.example +10 -0
  287. package/data/probe/site/DEPLOYMENT.md +86 -0
  288. package/data/probe/site/README.md +183 -0
  289. package/data/probe/site/adding-languages.md +135 -0
  290. package/data/probe/site/ai-chat.md +427 -0
  291. package/data/probe/site/ai-integration.md +1488 -0
  292. package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
  293. package/data/probe/site/blog/index.md +118 -0
  294. package/data/probe/site/blog/v0.6.0-release.md +426 -0
  295. package/data/probe/site/blog.md +8 -0
  296. package/data/probe/site/changelog.md +200 -0
  297. package/data/probe/site/cli-mode.md +437 -0
  298. package/data/probe/site/code-extraction.md +436 -0
  299. package/data/probe/site/contributing/README.md +9 -0
  300. package/data/probe/site/contributing/documentation-cross-references.md +215 -0
  301. package/data/probe/site/contributing/documentation-maintenance.md +275 -0
  302. package/data/probe/site/contributing/documentation-structure.md +75 -0
  303. package/data/probe/site/documentation-cross-references.md +215 -0
  304. package/data/probe/site/documentation-guide.md +132 -0
  305. package/data/probe/site/documentation-maintenance.md +275 -0
  306. package/data/probe/site/features.md +147 -0
  307. package/data/probe/site/how-it-works.md +118 -0
  308. package/data/probe/site/index.md +175 -0
  309. package/data/probe/site/index.md.bak +133 -0
  310. package/data/probe/site/installation.md +235 -0
  311. package/data/probe/site/integrations/docker.md +248 -0
  312. package/data/probe/site/integrations/github-actions.md +413 -0
  313. package/data/probe/site/language-support-overview.md +168 -0
  314. package/data/probe/site/mcp-integration.md +587 -0
  315. package/data/probe/site/mcp-server.md +304 -0
  316. package/data/probe/site/navigation-structure.md +76 -0
  317. package/data/probe/site/nodejs-sdk.md +798 -0
  318. package/data/probe/site/output-formats.md +625 -0
  319. package/data/probe/site/package.json +21 -0
  320. package/data/probe/site/public/_headers +28 -0
  321. package/data/probe/site/public/_redirects +11 -0
  322. package/data/probe/site/quick-start.md +289 -0
  323. package/data/probe/site/search-functionality.md +291 -0
  324. package/data/probe/site/search-reference.md +291 -0
  325. package/data/probe/site/supported-languages.md +215 -0
  326. package/data/probe/site/use-cases/README.md +8 -0
  327. package/data/probe/site/use-cases/advanced-cli.md +253 -0
  328. package/data/probe/site/use-cases/ai-code-editors.md +239 -0
  329. package/data/probe/site/use-cases/building-ai-tools.md +529 -0
  330. package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
  331. package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
  332. package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
  333. package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
  334. package/data/probe/site/use-cases/team-chat.md +350 -0
  335. package/data/probe/site/web-interface.md +434 -0
  336. package/data/probe/site/wrangler.toml +9 -0
  337. package/data/probe/test-api-key.sh +1 -0
  338. package/data/probe/test-probe-implementation/hello.js +7 -0
  339. package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
  340. package/data/probe/test_cases/early_termination_issues.rs +533 -0
  341. package/data/probe/test_data/test_nested_struct.go +26 -0
  342. package/data/probe/tests/README.md +286 -0
  343. package/data/probe/tests/README_search_determinism_tests.md +116 -0
  344. package/data/probe/tests/adjacent_comment_test.rs +152 -0
  345. package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
  346. package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
  347. package/data/probe/tests/block_merging_tests.rs +396 -0
  348. package/data/probe/tests/c_outline_format_tests.rs +2179 -0
  349. package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
  350. package/data/probe/tests/cache_order_tests.rs +147 -0
  351. package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
  352. package/data/probe/tests/cli_tests.rs +680 -0
  353. package/data/probe/tests/comment_context_integration_test.rs +240 -0
  354. package/data/probe/tests/common.rs +33 -0
  355. package/data/probe/tests/complex_block_merging_tests.rs +599 -0
  356. package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
  357. package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
  358. package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
  359. package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
  360. package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
  361. package/data/probe/tests/extract_command_tests.rs +1848 -0
  362. package/data/probe/tests/extract_deduplication_tests.rs +146 -0
  363. package/data/probe/tests/extract_input_file_tests.rs +84 -0
  364. package/data/probe/tests/extract_prompt_tests.rs +102 -0
  365. package/data/probe/tests/filename_search_tests.rs +96 -0
  366. package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
  367. package/data/probe/tests/github_extract_tests.rs +234 -0
  368. package/data/probe/tests/go_comment_test.rs +253 -0
  369. package/data/probe/tests/go_outline_format_tests.rs +2587 -0
  370. package/data/probe/tests/go_path_resolver_tests.rs +96 -0
  371. package/data/probe/tests/html_outline_format_tests.rs +637 -0
  372. package/data/probe/tests/integration_tests.rs +837 -0
  373. package/data/probe/tests/ip_whitelist_test.rs +148 -0
  374. package/data/probe/tests/java_outline_format_tests.rs +1611 -0
  375. package/data/probe/tests/javascript_extract_tests.rs +315 -0
  376. package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
  377. package/data/probe/tests/json_format_tests.rs +436 -0
  378. package/data/probe/tests/json_schema_validation_tests.rs +450 -0
  379. package/data/probe/tests/lib_usage.rs +60 -0
  380. package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
  381. package/data/probe/tests/line_map_cache_tests.rs +114 -0
  382. package/data/probe/tests/markdown_integration_tests.rs +190 -0
  383. package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
  384. package/data/probe/tests/mocks/test_object.js +27 -0
  385. package/data/probe/tests/mocks/test_struct.go +50 -0
  386. package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
  387. package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
  388. package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
  389. package/data/probe/tests/negative_compound_word_tests.rs +246 -0
  390. package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
  391. package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
  392. package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
  393. package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
  394. package/data/probe/tests/parallel_extraction_tests.rs +178 -0
  395. package/data/probe/tests/parallel_search_tests.rs +355 -0
  396. package/data/probe/tests/path_resolver_tests.rs +698 -0
  397. package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
  398. package/data/probe/tests/php_outline_format_tests.rs +768 -0
  399. package/data/probe/tests/property_tests.proptest-regressions +9 -0
  400. package/data/probe/tests/property_tests.rs +118 -0
  401. package/data/probe/tests/python_outline_format_tests.rs +1538 -0
  402. package/data/probe/tests/query_command_json_tests.rs +438 -0
  403. package/data/probe/tests/query_command_tests.rs +232 -0
  404. package/data/probe/tests/query_command_xml_tests.rs +569 -0
  405. package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
  406. package/data/probe/tests/required_terms_filename_tests.rs +116 -0
  407. package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
  408. package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
  409. package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
  410. package/data/probe/tests/rust_outline_format_tests.rs +843 -0
  411. package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
  412. package/data/probe/tests/search_determinism_tests.rs +451 -0
  413. package/data/probe/tests/search_hints_tests.rs +253 -0
  414. package/data/probe/tests/special_character_escaping_tests.rs +417 -0
  415. package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
  416. package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
  417. package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
  418. package/data/probe/tests/symbols_tests.rs +166 -0
  419. package/data/probe/tests/test_file.rs +45 -0
  420. package/data/probe/tests/test_tokenize.rs +28 -0
  421. package/data/probe/tests/timeout_tests.rs +82 -0
  422. package/data/probe/tests/tokenization_tests.rs +195 -0
  423. package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
  424. package/data/probe/tests/typescript_extract_tests.rs +214 -0
  425. package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
  426. package/data/probe/tests/xml_format_tests.rs +568 -0
  427. package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
  428. package/data/scripts/postinstall.mjs +9 -0
  429. package/data/scripts/set-version.js +0 -0
  430. package/data/scripts/wiki-build.sh +111 -0
  431. package/data/scripts/wiki-deploy.sh +73 -0
  432. package/data/serve.json +12 -0
  433. package/data/test/demo-dynamic.html +134 -0
  434. package/data/test/demo-esm.html +105 -0
  435. package/data/test/demo-iife.html +78 -0
  436. package/data/tsconfig.json +7 -0
  437. package/data/vite.server.ts +483 -0
  438. package/data/vitest.config.ts +40 -0
  439. package/data/wiki/Home.md +58 -0
  440. package/data/wiki/_Sidebar.md +39 -0
  441. package/docs-mcp.config.json +20 -0
  442. package/package.json +56 -0
  443. package/src/config.js +111 -0
  444. package/src/index.js +395 -0
@@ -0,0 +1,99 @@
1
+ #!/bin/sh
2
+ #
3
+ # Pre-commit hook to run tests and code quality checks
4
+ # Installed by 'make install-hooks'
5
+
6
+ # Colors for better output
7
+ RED='\033[0;31m'
8
+ GREEN='\033[0;32m'
9
+ YELLOW='\033[0;33m'
10
+ NC='\033[0m' # No Color
11
+
12
+ echo "${YELLOW}Running pre-commit checks...${NC}"
13
+
14
+ # Store the exit status of each command
15
+ status=0
16
+
17
+ # Check if any files are staged
18
+ if git diff --cached --quiet; then
19
+ echo "${YELLOW}No files staged for commit. Skipping pre-commit checks.${NC}"
20
+ exit 0
21
+ fi
22
+
23
+ # Check if any Rust-related files are staged for commit
24
+ rust_files_changed=$(git diff --cached --name-only | grep -E '\.(rs|toml)$|^Cargo\.(toml|lock)$')
25
+
26
+ # Check if any GitHub workflow files are staged for commit
27
+ workflow_files_changed=$(git diff --cached --name-only | grep -E '^\.github/workflows/.*\.ya?ml$')
28
+
29
+ if [ -z "$rust_files_changed" ] && [ -z "$workflow_files_changed" ]; then
30
+ echo "${YELLOW}No Rust or workflow files changed. Skipping checks.${NC}"
31
+ exit 0
32
+ fi
33
+
34
+ # Run actionlint if workflow files changed
35
+ if [ -n "$workflow_files_changed" ]; then
36
+ echo "${YELLOW}GitHub workflow files detected. Running actionlint...${NC}"
37
+ if command -v actionlint >/dev/null 2>&1; then
38
+ actionlint
39
+ if [ $? -ne 0 ]; then
40
+ echo "${RED}actionlint failed.${NC}"
41
+ status=1
42
+ fi
43
+ else
44
+ echo "${RED}actionlint not found. Please install it: https://github.com/rhysd/actionlint${NC}"
45
+ echo "${YELLOW}You can install it with: go install github.com/rhysd/actionlint/cmd/actionlint@latest${NC}"
46
+ status=1
47
+ fi
48
+ fi
49
+
50
+ # Run Rust checks if Rust files changed
51
+ if [ -n "$rust_files_changed" ]; then
52
+ echo "${YELLOW}Rust files detected in commit. Running Rust checks...${NC}"
53
+
54
+ # Run format check
55
+ echo "${YELLOW}Checking code formatting...${NC}"
56
+ make check-format
57
+ if [ $? -ne 0 ]; then
58
+ echo "${RED}Code formatting check failed.${NC}"
59
+ echo "Run 'make format' to format your code."
60
+ status=1
61
+ fi
62
+
63
+ # Run clippy
64
+ echo "${YELLOW}Running linter...${NC}"
65
+ make lint
66
+ if [ $? -ne 0 ]; then
67
+ echo "${RED}Linting failed.${NC}"
68
+ status=1
69
+ fi
70
+
71
+ # Run unit tests
72
+ echo "${YELLOW}Running unit tests...${NC}"
73
+ make test-unit
74
+ if [ $? -ne 0 ]; then
75
+ echo "${RED}Unit tests failed.${NC}"
76
+ status=1
77
+ fi
78
+
79
+ # Run integration tests
80
+ echo "${YELLOW}Running integration tests...${NC}"
81
+ make test-integration
82
+ if [ $? -ne 0 ]; then
83
+ echo "${RED}Integration tests failed.${NC}"
84
+ status=1
85
+ fi
86
+ fi
87
+
88
+ # Print summary
89
+ if [ $status -eq 0 ]; then
90
+ echo "${GREEN}All pre-commit checks passed!${NC}"
91
+ else
92
+ echo "${RED}Pre-commit checks failed. Commit aborted.${NC}"
93
+ echo "${YELLOW}You can bypass this check with 'git commit --no-verify'${NC}"
94
+ fi
95
+
96
+ exit $status
97
+
98
+ # Run Vow accountability check at the end
99
+ "$(git config core.hooksPath)/pre-commit-vow"
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+ # Vow - AI accountability gate
3
+ # This hook runs at the end of the pre-commit pipeline
4
+
5
+ npx @probelabs/vow check
6
+ if [ $? -ne 0 ]; then
7
+ echo "Vow check failed. Commit aborted."
8
+ exit 1
9
+ fi
@@ -0,0 +1,41 @@
1
+ You are senior enginer focused software architecture and design. Before jumping on the task you first, in details analyse user request, and try to provide elegant and concise solution. If solution is clear, you can jump to implementation right away, if not, you can ask user a clarification question, by calling attempt_completion tool, with required details. You are allowed to use search tool with allow_tests argument, in order to find the tests. When you are reviewing pull request, or asked to do a suggestions to PR, you can use implement tool too.
2
+
3
+ Before jumping to implementation:
4
+ - Focus on high-level design patterns and system organization
5
+ - Identify architectural patterns and component relationships
6
+ - Evaluate system structure and suggest architectural improvements
7
+ - Focus on backward compatibility.
8
+ - Respond with diagrams to illustrate system architecture and workflows, if required.
9
+ - Consider scalability, maintainability, and extensibility in your analysis
10
+
11
+ During the implementation:
12
+ - Avoid implementing special cases
13
+ - Do not forget to add the tests
14
+
15
+ ## Failure Tag Feature
16
+
17
+ When working on GitHub Actions workflows, you can use the failure tag feature to signal critical issues that should prevent code from being merged:
18
+
19
+ - Include `<fail>` in your response when you detect critical issues like security vulnerabilities, breaking changes without proper documentation, or severe bugs
20
+ - The tag will be automatically removed from your comment, but a failure message will be added at the top
21
+ - The GitHub check will fail, drawing attention to these critical issues
22
+ - Use this feature judiciously - only for issues that truly warrant failing the CI check
23
+
24
+ ### Example Usage
25
+
26
+ ```
27
+ <fail>
28
+
29
+ I found a critical security vulnerability in the authentication code that allows SQL injection attacks. This must be fixed before merging.
30
+
31
+ ## Security Issues Found
32
+
33
+ 1. **SQL Injection in login.js** - User input is directly concatenated into SQL queries
34
+ 2. **Missing input validation** - No sanitization of user credentials
35
+
36
+ ## Recommendations
37
+ - Use parameterized queries
38
+ - Add input validation middleware
39
+ ```
40
+
41
+ The `<fail>` tag will be stripped from the comment, but the GitHub check will fail to prevent merging until the issues are resolved.
@@ -0,0 +1,28 @@
1
+ {
2
+ "customModes": [
3
+ {
4
+ "slug": "ask-probe",
5
+ "name": "Ask Probe",
6
+ "roleDefinition": "You intelligence assistant for developers, product managers, QA engineers, and documentation writers, designed to search and analyze multi-language codebases efficiently. Instead of standard file search and file read tools you should use Probe Agent tool, and forward it all the questions about the codebase.",
7
+ "customInstructions": "Where relevant, add mermaid diagrams.",
8
+ "groups": [
9
+ "read",
10
+ "mcp"
11
+ ],
12
+ "source": "project"
13
+ },
14
+ {
15
+ "slug": "doc-writer",
16
+ "name": "Documentation Writer",
17
+ "roleDefinition": "You are Roo, a technical documentation specialist focused on creating and maintaining high-quality documentation for the Probe code search tool. Your expertise includes:\n- Writing clear, concise, and accurate technical documentation\n- Organizing information in a logical and user-friendly manner\n- Maintaining consistent style and formatting across documentation\n- Creating examples that effectively demonstrate features\n- Ensuring documentation is up-to-date with the latest features and changes\n- Understanding technical concepts and explaining them in accessible language",
18
+ "customInstructions": "When updating documentation:\n\n1. **Maintain Consistency**:\n - Follow existing formatting patterns and style conventions\n - Use consistent heading levels (# for main titles, ## for sections, etc.)\n - Maintain the existing frontmatter structure in files that have it\n\n2. **Content Guidelines**:\n - Be concise but thorough - aim for clarity above all\n - Include practical examples where appropriate\n - Use code blocks with proper syntax highlighting\n - Structure content with clear headings and bullet points\n - Focus on user benefits, not just feature descriptions\n\n3. **Technical Accuracy**:\n - Ensure command examples are correct and tested\n - Verify that feature descriptions match actual implementation\n - Update version numbers and compatibility information as needed\n - Cross-reference related documentation sections\n\n4. **Special Components**:\n - Use <CodeEditor> for code examples\n - Use <CommandExample> for CLI commands\n - Maintain proper frontmatter for pages that use it\n\n5. **Navigation**:\n - Ensure proper linking between related documentation pages\n - Update navigation references when adding new content\n\n6. Website is located in ./site/ folder, and use vitepress",
19
+ "groups": [
20
+ "read",
21
+ "browser",
22
+ "edit",
23
+ "command"
24
+ ],
25
+ "source": "project"
26
+ }
27
+ ]
28
+ }
File without changes
@@ -0,0 +1,148 @@
1
+ # Bash Tool Implementation Summary
2
+
3
+ ## Overview
4
+
5
+ Successfully implemented a secure bash command execution tool for the probe agent with configurable allow/deny lists and built-in security patterns inspired by Claude Code SDK.
6
+
7
+ ## Implementation Components
8
+
9
+ ### 1. Core Files Created/Modified
10
+
11
+ **New Files:**
12
+ - `npm/src/agent/bashDefaults.js` - Default allow/deny patterns for safe exploration
13
+ - `npm/src/agent/bashPermissions.js` - Permission checker with pattern matching
14
+ - `npm/src/agent/bashExecutor.js` - Secure command execution with timeouts
15
+ - `npm/src/tools/bash.js` - Vercel AI SDK tool integration
16
+ - `npm/test/bash.test.js` - Comprehensive test suite
17
+
18
+ **Modified Files:**
19
+ - `npm/src/tools/common.js` - Added bash schema and XML definitions
20
+ - `npm/src/tools/index.js` - Export bash tool and related components
21
+ - `npm/src/agent/tools.js` - Integrate bash tool creation
22
+ - `npm/src/agent/ProbeAgent.js` - Add bash configuration options
23
+ - `npm/src/agent/probeTool.js` - Add bash tool wrapping
24
+ - `examples/chat/index.js` - Add CLI arguments for bash configuration
25
+ - `examples/chat/probeChat.js` - Updated JSDoc for new options
26
+
27
+ ### 2. Security Features
28
+
29
+ **Default Allow List (Read-only/Safe Commands):**
30
+ - File navigation: `ls`, `pwd`, `cd`, `find`, `tree`
31
+ - File reading: `cat`, `head`, `tail`, `less`, `grep`, `rg`
32
+ - Git operations: `git status`, `git log`, `git diff`, `git show`
33
+ - Package info: `npm list`, `pip list`, `cargo --version`
34
+ - System info: `uname`, `whoami`, `date`, `env`
35
+ - Language versions: `node --version`, `python --version`, etc.
36
+
37
+ **Default Deny List (Dangerous Commands):**
38
+ - File operations: `rm -rf`, `chmod 777`, `chown`
39
+ - System admin: `sudo`, `passwd`, `adduser`
40
+ - Package installation: `npm install`, `pip install`, `apt-get`
41
+ - Service control: `systemctl`, `service`
42
+ - Network operations: `curl -d`, `ssh`, `wget`
43
+ - Process control: `kill`, `killall`, `shutdown`
44
+ - Dangerous git: `git push`, `git reset --hard`
45
+
46
+ **Permission System:**
47
+ - Pattern-based matching (e.g., `npm:*`, `git:log:*`, `ls`)
48
+ - Deny-first evaluation (security priority)
49
+ - Custom allow/deny list append to defaults
50
+ - Option to disable default lists for full control
51
+
52
+ ### 3. CLI Configuration
53
+
54
+ ```bash
55
+ # Basic usage
56
+ probe-chat --enable-bash
57
+
58
+ # Custom patterns (append to defaults)
59
+ probe-chat --enable-bash --bash-allow "docker:*,make:*" --bash-deny "npm:publish"
60
+
61
+ # Disable defaults (use only custom)
62
+ probe-chat --enable-bash --bash-allow "ls,cat" --no-default-bash-allow
63
+
64
+ # Additional options
65
+ probe-chat --enable-bash --bash-timeout 60000 --bash-working-dir ./src
66
+ ```
67
+
68
+ ### 4. SDK Configuration
69
+
70
+ ```javascript
71
+ const agent = new ProbeAgent({
72
+ enableBash: true,
73
+ bashConfig: {
74
+ allow: ['docker:ps', 'make:help'], // Append to defaults
75
+ deny: ['git:push', 'npm:publish'], // Append to defaults
76
+ disableDefaultAllow: false, // Keep safe defaults
77
+ disableDefaultDeny: false, // Keep security defaults
78
+ timeout: 120000, // Command timeout (ms)
79
+ workingDirectory: './src', // Default working dir
80
+ env: { NODE_ENV: 'development' } // Additional env vars
81
+ }
82
+ });
83
+ ```
84
+
85
+ ### 5. XML Tool Usage
86
+
87
+ ```xml
88
+ <bash>
89
+ <command>ls -la src/</command>
90
+ </bash>
91
+
92
+ <bash>
93
+ <command>git log --oneline -10</command>
94
+ </bash>
95
+
96
+ <bash>
97
+ <command>find . -name "*.js" -type f</command>
98
+ <workingDirectory>./src</workingDirectory>
99
+ <timeout>30000</timeout>
100
+ </bash>
101
+ ```
102
+
103
+ ## Security Architecture
104
+
105
+ 1. **Pattern-based Permissions**: Commands are parsed and matched against allow/deny patterns
106
+ 2. **Execution Sandbox**: Commands run with specified working directory and timeout limits
107
+ 3. **Resource Limits**: Output buffer limits prevent memory exhaustion
108
+ 4. **Safe Defaults**: Comprehensive list of safe read-only commands enabled by default
109
+ 5. **Audit Trail**: All commands logged in debug mode
110
+
111
+ ## Testing
112
+
113
+ Comprehensive test suite covers:
114
+ - Command parsing and pattern matching
115
+ - Permission evaluation (allow/deny logic)
116
+ - Command execution (success/failure/timeout)
117
+ - Tool integration with Vercel AI SDK
118
+ - Custom configuration scenarios
119
+
120
+ ## Integration Points
121
+
122
+ - **ProbeAgent**: Core integration with enable/disable flag
123
+ - **ProbeChat**: Seamless CLI and programmatic access
124
+ - **MCP Bridge**: Compatible with existing tool infrastructure
125
+ - **XML Parser**: Integrated with existing tool call system
126
+
127
+ ## Usage Examples
128
+
129
+ **Safe Exploration (Default):**
130
+ ```bash
131
+ probe-chat --enable-bash
132
+ # Allows: ls, git status, npm list, cat, grep, etc.
133
+ # Denies: rm -rf, sudo, npm install, git push, etc.
134
+ ```
135
+
136
+ **Development Mode:**
137
+ ```bash
138
+ probe-chat --enable-bash --bash-allow "npm:test,npm:run:*,docker:*"
139
+ # Adds build and container commands to safe defaults
140
+ ```
141
+
142
+ **Restricted Mode:**
143
+ ```bash
144
+ probe-chat --enable-bash --bash-allow "ls,cat,pwd" --no-default-bash-allow
145
+ # Only allows specific commands, removes all defaults
146
+ ```
147
+
148
+ This implementation provides secure, flexible bash command execution that's immediately useful for code exploration while maintaining security through comprehensive allow/deny lists and pattern matching.
@@ -0,0 +1,256 @@
1
+ # Benchmarking System
2
+
3
+ This document describes the comprehensive benchmarking system for the Probe code search tool.
4
+
5
+ ## Overview
6
+
7
+ The benchmarking system is designed to measure and track performance across different aspects of the search engine:
8
+
9
+ 1. **Search Performance** - Different search patterns, result limits, and options
10
+ 2. **Timing Infrastructure** - Overhead and accuracy of timing measurements
11
+ 3. **Language Parsing** - AST parsing performance for different languages
12
+ 4. **Memory Usage** - Memory profiling and optimization
13
+
14
+ ## Running Benchmarks
15
+
16
+ ### Using the CLI
17
+
18
+ ```bash
19
+ # Run all benchmarks
20
+ probe benchmark
21
+
22
+ # Run specific benchmark suites
23
+ probe benchmark --bench search
24
+ probe benchmark --bench timing
25
+ probe benchmark --bench parsing
26
+
27
+ # Run with custom settings
28
+ probe benchmark --sample-size 100 --format json --output results.json
29
+
30
+ # Compare with baseline
31
+ probe benchmark --compare --baseline previous
32
+
33
+ # Quick benchmarks (faster, less accurate)
34
+ probe benchmark --fast
35
+ ```
36
+
37
+ ### Using the Script
38
+
39
+ ```bash
40
+ # Make script executable (one time)
41
+ chmod +x scripts/benchmark.sh
42
+
43
+ # Run all benchmarks
44
+ ./scripts/benchmark.sh all
45
+
46
+ # Run quick benchmarks
47
+ ./scripts/benchmark.sh quick
48
+
49
+ # Run specific benchmark type
50
+ ./scripts/benchmark.sh search
51
+ ./scripts/benchmark.sh timing
52
+ ./scripts/benchmark.sh parsing
53
+
54
+ # Performance regression testing
55
+ ./scripts/benchmark.sh regression
56
+
57
+ # Memory profiling (requires valgrind)
58
+ ./scripts/benchmark.sh memory
59
+
60
+ # Generate performance report
61
+ ./scripts/benchmark.sh report
62
+ ```
63
+
64
+ ### Using Cargo Directly
65
+
66
+ ```bash
67
+ # Run all benchmarks
68
+ cargo bench
69
+
70
+ # Run specific benchmark file
71
+ cargo bench --bench search_benchmarks
72
+ cargo bench --bench timing_benchmarks
73
+ cargo bench --bench parsing_benchmarks
74
+
75
+ # Run with criterion options
76
+ cargo bench -- --quick
77
+ cargo bench -- --sample-size 100
78
+ cargo bench -- --baseline main
79
+ ```
80
+
81
+ ## Benchmark Types
82
+
83
+ ### Search Benchmarks (`search_benchmarks.rs`)
84
+
85
+ Tests various search scenarios:
86
+
87
+ - **Search Patterns**: Different query types (simple, function calls, types, etc.)
88
+ - **Result Limits**: Performance with different result set sizes
89
+ - **Search Options**: Different rerankers, frequency search on/off
90
+ - **Query Complexity**: Single terms vs. compound queries
91
+
92
+ ### Timing Benchmarks (`timing_benchmarks.rs`)
93
+
94
+ Tests the timing infrastructure:
95
+
96
+ - **Timing Overhead**: Cost of collecting timing data
97
+ - **Duration Formatting**: Performance of human-readable formatting
98
+ - **Timing Aggregation**: Sum, average, min/max calculations
99
+ - **Timing Storage**: HashMap vs. Vec storage performance
100
+
101
+ ### Parsing Benchmarks (`parsing_benchmarks.rs`)
102
+
103
+ Tests language parsing performance:
104
+
105
+ - **Language Parsing**: Rust, JavaScript, Python, Go parsing
106
+ - **File Sizes**: Small, medium, large, extra-large files
107
+ - **Line Filtering**: Different line number set sizes
108
+ - **Test Inclusion**: With/without test file processing
109
+
110
+ ## Existing Performance Logging
111
+
112
+ The codebase already has extensive timing infrastructure:
113
+
114
+ ### SearchTimings Structure
115
+ ```rust
116
+ pub struct SearchTimings {
117
+ pub query_preprocessing: Option<Duration>,
118
+ pub pattern_generation: Option<Duration>,
119
+ pub file_searching: Option<Duration>,
120
+ pub filename_matching: Option<Duration>,
121
+ pub early_filtering: Option<Duration>,
122
+ pub result_processing: Option<Duration>,
123
+ pub result_ranking: Option<Duration>,
124
+ pub total_search_time: Option<Duration>,
125
+ // ... many more granular timings
126
+ }
127
+ ```
128
+
129
+ ### FileProcessingTimings Structure
130
+ ```rust
131
+ pub struct FileProcessingTimings {
132
+ pub file_io: Option<Duration>,
133
+ pub ast_parsing: Option<Duration>,
134
+ pub block_extraction: Option<Duration>,
135
+ pub result_building: Option<Duration>,
136
+ // ... detailed sub-timings for each stage
137
+ }
138
+ ```
139
+
140
+ ### Debug Mode
141
+ Enable detailed timing output:
142
+ ```bash
143
+ DEBUG=1 probe "search_term" /path/to/code
144
+ ```
145
+
146
+ ## Performance Monitoring
147
+
148
+ ### Regression Detection
149
+
150
+ The benchmarking system includes performance regression detection:
151
+
152
+ 1. **Baseline Creation**: Save current performance as baseline
153
+ 2. **Comparison**: Compare new runs against baseline
154
+ 3. **Alerting**: Identify significant performance changes
155
+
156
+ ### Memory Profiling
157
+
158
+ Memory usage analysis using Valgrind:
159
+
160
+ ```bash
161
+ # Run memory profiling
162
+ ./scripts/benchmark.sh memory
163
+
164
+ # View memory profile
165
+ ms_print target/benchmark-results/memory-profile.out
166
+ ```
167
+
168
+ ### Continuous Monitoring
169
+
170
+ For CI/CD integration:
171
+
172
+ ```bash
173
+ # Quick benchmarks for CI
174
+ cargo bench -- --quick
175
+
176
+ # Regression testing
177
+ cargo bench -- --load-baseline main
178
+
179
+ # Save results for future comparison
180
+ cargo bench -- --save-baseline $(git rev-parse --short HEAD)
181
+ ```
182
+
183
+ ## Benchmark Results
184
+
185
+ ### Output Locations
186
+
187
+ - **Criterion HTML Reports**: `target/criterion/report/index.html`
188
+ - **JSON Results**: `target/criterion/*/base/estimates.json`
189
+ - **Script Results**: `target/benchmark-results/`
190
+
191
+ ### Interpreting Results
192
+
193
+ Key metrics to monitor:
194
+
195
+ 1. **Search Time**: Total time for search operations
196
+ 2. **Parsing Time**: AST parsing performance
197
+ 3. **Memory Usage**: Peak memory consumption
198
+ 4. **Throughput**: Operations per second
199
+
200
+ ### Performance Targets
201
+
202
+ Recommended performance targets:
203
+
204
+ - **Simple Search**: < 100ms for small codebases (< 1MB)
205
+ - **Complex Search**: < 500ms for medium codebases (< 10MB)
206
+ - **Parsing**: < 50ms per file for typical source files
207
+ - **Memory**: < 100MB for typical search operations
208
+
209
+ ## Optimization Guidelines
210
+
211
+ ### Search Performance
212
+
213
+ 1. **Pattern Optimization**: Use specific patterns over broad searches
214
+ 2. **Result Limits**: Set appropriate max_results limits
215
+ 3. **Language Filtering**: Use language-specific searches when possible
216
+ 4. **Caching**: Leverage session caching for repeated searches
217
+
218
+ ### Parsing Performance
219
+
220
+ 1. **File Size**: Large files have higher parsing overhead
221
+ 2. **Language Choice**: Some languages parse faster than others
222
+ 3. **Line Filtering**: Specific line ranges are more efficient
223
+ 4. **Test Exclusion**: Exclude test files when not needed
224
+
225
+ ### Memory Usage
226
+
227
+ 1. **Result Size**: Large result sets consume more memory
228
+ 2. **Concurrent Processing**: Balance parallelism vs. memory usage
229
+ 3. **Caching Strategy**: Monitor cache memory consumption
230
+ 4. **File Processing**: Process large files in chunks
231
+
232
+ ## Troubleshooting
233
+
234
+ ### Common Issues
235
+
236
+ 1. **Benchmark Fails**: Check cargo and criterion installation
237
+ 2. **Memory Profiling**: Requires valgrind installation
238
+ 3. **Slow Benchmarks**: Use `--quick` flag for faster results
239
+ 4. **Missing Baselines**: Create initial baseline with `--save-baseline`
240
+
241
+ ### Performance Debugging
242
+
243
+ 1. **Enable Debug Mode**: `DEBUG=1` for detailed timing
244
+ 2. **Profile Specific Operations**: Use targeted benchmarks
245
+ 3. **Memory Analysis**: Run memory profiling for memory issues
246
+ 4. **Regression Analysis**: Compare with previous versions
247
+
248
+ ## Future Enhancements
249
+
250
+ Potential improvements to the benchmarking system:
251
+
252
+ 1. **Automated Alerts**: Performance regression notifications
253
+ 2. **Historical Tracking**: Long-term performance trends
254
+ 3. **Comparative Analysis**: Cross-platform performance comparison
255
+ 4. **Load Testing**: High-concurrency performance testing
256
+ 5. **Real-world Scenarios**: Benchmark with actual codebases