@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,450 @@
1
+ use jsonschema::JSONSchema;
2
+ use serde_json::{json, Value};
3
+ use std::fs::{self, File};
4
+ use std::io::Write;
5
+ use std::path::PathBuf;
6
+ use std::process::Command;
7
+ use tempfile::TempDir;
8
+
9
+ // Helper function to extract JSON from command output
10
+ fn extract_json_from_output(output: &str) -> &str {
11
+ // Find the first occurrence of '{'
12
+ if let Some(start_index) = output.find('{') {
13
+ // Return the substring from the first '{' to the end
14
+ &output[start_index..]
15
+ } else {
16
+ // If no '{' is found, return the original string
17
+ output
18
+ }
19
+ }
20
+
21
+ // Helper function to create test files
22
+ fn create_test_file(dir: &TempDir, filename: &str, content: &str) -> PathBuf {
23
+ let file_path = dir.path().join(filename);
24
+ let parent_dir = file_path.parent().unwrap();
25
+ fs::create_dir_all(parent_dir).expect("Failed to create parent directories");
26
+ let mut file = File::create(&file_path).expect("Failed to create test file");
27
+ file.write_all(content.as_bytes())
28
+ .expect("Failed to write test content");
29
+ file_path
30
+ }
31
+
32
+ // Helper function to create a test directory structure with various test files
33
+ fn create_test_directory_structure(root_dir: &TempDir) {
34
+ // Create a source directory
35
+ let src_dir = root_dir.path().join("src");
36
+ fs::create_dir(&src_dir).expect("Failed to create src directory");
37
+
38
+ // Create Rust files with search terms
39
+ let rust_content = r#"
40
+ // This is a Rust file with a search term
41
+ fn search_function(query: &str) -> bool {
42
+ println!("Searching for: {}", query);
43
+ query.contains("search")
44
+ }
45
+ "#;
46
+ create_test_file(root_dir, "src/search.rs", rust_content);
47
+
48
+ // Create a JavaScript file with search terms
49
+ let js_content = r#"
50
+ // This is a JavaScript file with a search term
51
+ function searchFunction(query) {
52
+ console.log(`Searching for: ${query}`);
53
+ return query.includes('search');
54
+ }
55
+ "#;
56
+ create_test_file(root_dir, "src/search.js", js_content);
57
+
58
+ // Create a file with special characters
59
+ let special_chars_content = r#"
60
+ // This file contains special characters: "quotes", 'apostrophes', <tags>, &ampersands
61
+ function escapeTest(input) {
62
+ return input.replace(/[<>&"']/g, function(c) {
63
+ return {
64
+ '<': '&lt;',
65
+ '>': '&gt;',
66
+ '&': '&amp;',
67
+ '"': '&quot;',
68
+ "'": '&#39;'
69
+ }[c];
70
+ });
71
+ }
72
+ "#;
73
+ create_test_file(root_dir, "src/special_chars.js", special_chars_content);
74
+
75
+ // Create a file with multiple search terms
76
+ let multi_term_content = r#"
77
+ // This file contains multiple search terms
78
+ function processQuery(query) {
79
+ // Check if the query contains multiple terms
80
+ const terms = query.split(' ');
81
+
82
+ // Process each term
83
+ return terms.map(term => {
84
+ return {
85
+ term: term,
86
+ isValid: validateTerm(term)
87
+ };
88
+ });
89
+ }
90
+
91
+ function validateTerm(term) {
92
+ // Validate that the term is not empty and contains only allowed characters
93
+ return term.length > 0 && /^[a-zA-Z0-9_-]+$/.test(term);
94
+ }
95
+ "#;
96
+ create_test_file(root_dir, "src/multi_term.js", multi_term_content);
97
+ }
98
+
99
+ #[test]
100
+ fn test_json_schema_validation_basic() {
101
+ // Load the JSON schema
102
+ let schema_path = "tests/schemas/json_output_schema.json";
103
+ let schema_str = fs::read_to_string(schema_path).expect("Failed to read JSON schema file");
104
+
105
+ let schema_value: Value =
106
+ serde_json::from_str(&schema_str).expect("Failed to parse JSON schema");
107
+
108
+ let _schema = JSONSchema::compile(&schema_value).expect("Failed to compile JSON schema");
109
+
110
+ let temp_dir = TempDir::new().expect("Failed to create temp dir");
111
+ create_test_directory_structure(&temp_dir);
112
+
113
+ // Run the CLI with JSON output format
114
+ let output = Command::new("cargo")
115
+ .args([
116
+ "run",
117
+ "--",
118
+ "search",
119
+ "search", // Pattern to search for
120
+ temp_dir.path().to_str().unwrap(),
121
+ "--format",
122
+ "json",
123
+ "--reranker",
124
+ "bm25",
125
+ ])
126
+ .output()
127
+ .expect("Failed to execute command");
128
+
129
+ // Check that the command succeeded
130
+ assert!(output.status.success());
131
+
132
+ // Convert stdout to string
133
+ let stdout = String::from_utf8_lossy(&output.stdout);
134
+
135
+ // Extract the JSON part from the output
136
+ let json_str = extract_json_from_output(&stdout);
137
+
138
+ // Parse the JSON output
139
+ let json_result: Value = serde_json::from_str(json_str).expect("Failed to parse JSON output");
140
+
141
+ // Verify basic structure instead of full schema validation
142
+ assert!(json_result.is_object(), "JSON result should be an object");
143
+ assert!(
144
+ json_result.get("results").is_some(),
145
+ "JSON should have 'results' field"
146
+ );
147
+ assert!(
148
+ json_result.get("summary").is_some(),
149
+ "JSON should have 'summary' field"
150
+ );
151
+
152
+ let results = json_result.get("results").unwrap().as_array().unwrap();
153
+ assert!(!results.is_empty(), "Results array should not be empty");
154
+
155
+ // Check first result has required fields
156
+ let first_result = &results[0];
157
+ assert!(
158
+ first_result.get("file").is_some(),
159
+ "Result should have 'file' field"
160
+ );
161
+ assert!(
162
+ first_result.get("lines").is_some(),
163
+ "Result should have 'lines' field"
164
+ );
165
+ assert!(
166
+ first_result.get("node_type").is_some(),
167
+ "Result should have 'node_type' field"
168
+ );
169
+ assert!(
170
+ first_result.get("code").is_some(),
171
+ "Result should have 'code' field"
172
+ );
173
+ }
174
+
175
+ #[test]
176
+ fn test_json_schema_validation_special_characters() {
177
+ // Load the JSON schema
178
+ let schema_path = "tests/schemas/json_output_schema.json";
179
+ let schema_str = fs::read_to_string(schema_path).expect("Failed to read JSON schema file");
180
+
181
+ let schema_value: Value =
182
+ serde_json::from_str(&schema_str).expect("Failed to parse JSON schema");
183
+
184
+ let _schema = JSONSchema::compile(&schema_value).expect("Failed to compile JSON schema");
185
+
186
+ let temp_dir = TempDir::new().expect("Failed to create temp dir");
187
+ create_test_directory_structure(&temp_dir);
188
+
189
+ // Run the CLI with JSON output format, searching for special characters
190
+ let output = Command::new("cargo")
191
+ .args([
192
+ "run",
193
+ "--",
194
+ "search",
195
+ "special", // Pattern to search for
196
+ temp_dir.path().to_str().unwrap(),
197
+ "--format",
198
+ "json",
199
+ "--reranker",
200
+ "bm25",
201
+ ])
202
+ .output()
203
+ .expect("Failed to execute command");
204
+
205
+ // Check that the command succeeded
206
+ assert!(output.status.success());
207
+
208
+ // Convert stdout to string
209
+ let stdout = String::from_utf8_lossy(&output.stdout);
210
+
211
+ // Extract the JSON part from the output
212
+ let json_str = extract_json_from_output(&stdout);
213
+
214
+ // Parse the JSON output
215
+ let json_result: Value = serde_json::from_str(json_str).expect("Failed to parse JSON output");
216
+
217
+ // Verify basic structure instead of full schema validation
218
+ assert!(json_result.is_object(), "JSON result should be an object");
219
+ assert!(
220
+ json_result.get("results").is_some(),
221
+ "JSON should have 'results' field"
222
+ );
223
+ assert!(
224
+ json_result.get("summary").is_some(),
225
+ "JSON should have 'summary' field"
226
+ );
227
+
228
+ // Find the result with special characters
229
+ let results = json_result.get("results").unwrap().as_array().unwrap();
230
+ assert!(!results.is_empty(), "Results array should not be empty");
231
+
232
+ let special_chars_result = results.iter().find(|r| {
233
+ r.get("file")
234
+ .unwrap()
235
+ .as_str()
236
+ .unwrap()
237
+ .contains("special_chars.js")
238
+ });
239
+
240
+ assert!(
241
+ special_chars_result.is_some(),
242
+ "Should find the special_chars.js file"
243
+ );
244
+
245
+ // Verify that special characters are properly escaped in the JSON
246
+ let code = special_chars_result
247
+ .unwrap()
248
+ .get("code")
249
+ .unwrap()
250
+ .as_str()
251
+ .unwrap();
252
+
253
+ // Check that the JSON is valid with these special characters
254
+ let code_json = json!({ "code": code });
255
+ let code_str = serde_json::to_string(&code_json).expect("Failed to serialize code to JSON");
256
+
257
+ // Deserialize to verify it's valid JSON
258
+ let _: Value = serde_json::from_str(&code_str).expect("Failed to parse serialized code JSON");
259
+ }
260
+
261
+ #[test]
262
+ fn test_json_schema_validation_edge_cases() {
263
+ // Load the JSON schema
264
+ let schema_path = "tests/schemas/json_output_schema.json";
265
+ let schema_str = fs::read_to_string(schema_path).expect("Failed to read JSON schema file");
266
+
267
+ let schema_value: Value =
268
+ serde_json::from_str(&schema_str).expect("Failed to parse JSON schema");
269
+
270
+ let schema = JSONSchema::compile(&schema_value).expect("Failed to compile JSON schema");
271
+
272
+ // Test case 1: Empty results array
273
+ let empty_results = json!({
274
+ "results": [],
275
+ "summary": {
276
+ "count": 0,
277
+ "total_bytes": 0,
278
+ "total_tokens": 0
279
+ }
280
+ });
281
+
282
+ let validation_result = schema.validate(&empty_results);
283
+ assert!(
284
+ validation_result.is_ok(),
285
+ "Empty results JSON does not conform to schema"
286
+ );
287
+
288
+ // Test case 2: Missing optional fields
289
+ let minimal_result = json!({
290
+ "results": [
291
+ {
292
+ "file": "test.rs",
293
+ "lines": [1, 10],
294
+ "node_type": "function",
295
+ "code": "fn test() {}",
296
+ "score": 0.5,
297
+ "tfidf_score": 0.3,
298
+ "bm25_score": 0.7,
299
+ "block_total_matches": null,
300
+ "block_unique_terms": null,
301
+ "file_total_matches": null,
302
+ "file_unique_terms": null
303
+ }
304
+ ],
305
+ "summary": {
306
+ "count": 1,
307
+ "total_bytes": 12,
308
+ "total_tokens": 5
309
+ }
310
+ });
311
+
312
+ let validation_result = schema.validate(&minimal_result);
313
+ assert!(
314
+ validation_result.is_ok(),
315
+ "Minimal result JSON does not conform to schema"
316
+ );
317
+
318
+ // Test case 3: With all optional fields
319
+ let full_result = json!({
320
+ "results": [
321
+ {
322
+ "file": "test.rs",
323
+ "lines": [1, 10],
324
+ "node_type": "function",
325
+ "code": "fn test() {}",
326
+ "matched_keywords": ["test", "function"],
327
+ "score": 0.95,
328
+ "tfidf_score": 0.5,
329
+ "bm25_score": 0.8,
330
+ "block_total_matches": null,
331
+ "block_unique_terms": null,
332
+ "file_total_matches": null,
333
+ "file_unique_terms": null
334
+ }
335
+ ],
336
+ "summary": {
337
+ "count": 1,
338
+ "total_bytes": 12,
339
+ "total_tokens": 5
340
+ }
341
+ });
342
+
343
+ let validation_result = schema.validate(&full_result);
344
+ assert!(
345
+ validation_result.is_ok(),
346
+ "Full result JSON does not conform to schema"
347
+ );
348
+ }
349
+
350
+ #[test]
351
+ fn test_json_schema_validation_invalid_cases() {
352
+ // Load the JSON schema
353
+ let schema_path = "tests/schemas/json_output_schema.json";
354
+ let schema_str = fs::read_to_string(schema_path).expect("Failed to read JSON schema file");
355
+
356
+ let schema_value: Value =
357
+ serde_json::from_str(&schema_str).expect("Failed to parse JSON schema");
358
+
359
+ let schema = JSONSchema::compile(&schema_value).expect("Failed to compile JSON schema");
360
+
361
+ // Test case 1: Missing required field in results
362
+ let missing_required = json!({
363
+ "results": [
364
+ {
365
+ "file": "test.rs",
366
+ "lines": [1, 10],
367
+ // Missing "node_type"
368
+ "code": "fn test() {}",
369
+ "score": 0.5,
370
+ "tfidf_score": 0.3,
371
+ "bm25_score": 0.7,
372
+ "block_total_matches": null,
373
+ "block_unique_terms": null,
374
+ "file_total_matches": null,
375
+ "file_unique_terms": null
376
+ }
377
+ ],
378
+ "summary": {
379
+ "count": 1,
380
+ "total_bytes": 12,
381
+ "total_tokens": 5
382
+ }
383
+ });
384
+
385
+ let validation_result = schema.validate(&missing_required);
386
+ assert!(
387
+ validation_result.is_err(),
388
+ "JSON with missing required field should not validate"
389
+ );
390
+
391
+ // Test case 2: Missing required field in summary
392
+ let missing_summary_field = json!({
393
+ "results": [
394
+ {
395
+ "file": "test.rs",
396
+ "lines": [1, 10],
397
+ "node_type": "function",
398
+ "code": "fn test() {}",
399
+ "score": 0.5,
400
+ "tfidf_score": 0.3,
401
+ "bm25_score": 0.7,
402
+ "block_total_matches": null,
403
+ "block_unique_terms": null,
404
+ "file_total_matches": null,
405
+ "file_unique_terms": null
406
+ }
407
+ ],
408
+ "summary": {
409
+ "count": 1,
410
+ // Missing "total_bytes"
411
+ "total_tokens": 5
412
+ }
413
+ });
414
+
415
+ let validation_result = schema.validate(&missing_summary_field);
416
+ assert!(
417
+ validation_result.is_err(),
418
+ "JSON with missing summary field should not validate"
419
+ );
420
+
421
+ // Test case 3: Wrong type for a field
422
+ let wrong_type = json!({
423
+ "results": [
424
+ {
425
+ "file": "test.rs",
426
+ "lines": [1, 10],
427
+ "node_type": "function",
428
+ "code": "fn test() {}",
429
+ "score": "not a number", // Should be a number
430
+ "tfidf_score": 0.3,
431
+ "bm25_score": 0.7,
432
+ "block_total_matches": null,
433
+ "block_unique_terms": null,
434
+ "file_total_matches": null,
435
+ "file_unique_terms": null
436
+ }
437
+ ],
438
+ "summary": {
439
+ "count": 1,
440
+ "total_bytes": 12,
441
+ "total_tokens": 5
442
+ }
443
+ });
444
+
445
+ let validation_result = schema.validate(&wrong_type);
446
+ assert!(
447
+ validation_result.is_err(),
448
+ "JSON with wrong type should not validate"
449
+ );
450
+ }
@@ -0,0 +1,60 @@
1
+ #[cfg(test)]
2
+ mod tests {
3
+ use probe_code::search::{perform_probe, SearchOptions};
4
+ use std::path::Path;
5
+
6
+ #[test]
7
+ fn test_search_functionality() {
8
+ // Create search options
9
+ let options = SearchOptions {
10
+ path: Path::new("."),
11
+ queries: &["function".to_string()],
12
+ files_only: false,
13
+ custom_ignores: &[],
14
+ exclude_filenames: false,
15
+ reranker: "bm25",
16
+ frequency_search: true,
17
+ exact: false,
18
+ language: None,
19
+ max_results: Some(5),
20
+ max_bytes: None,
21
+ max_tokens: None,
22
+ allow_tests: true,
23
+ no_merge: false,
24
+ merge_threshold: None,
25
+ dry_run: false,
26
+ session: None,
27
+ timeout: 30,
28
+ question: None,
29
+ no_gitignore: false,
30
+ };
31
+
32
+ let results = perform_probe(&options).unwrap();
33
+
34
+ // Just check that we get some results
35
+ assert!(!results.results.is_empty());
36
+ println!("Found {} results", results.results.len());
37
+ }
38
+
39
+ #[test]
40
+ fn test_query_functionality() {
41
+ use probe_code::query::{perform_query, QueryOptions};
42
+
43
+ let options = QueryOptions {
44
+ path: Path::new("."),
45
+ pattern: "fn",
46
+ language: Some("rust"),
47
+ ignore: &[],
48
+ allow_tests: true,
49
+ max_results: Some(5),
50
+ format: "text",
51
+ no_gitignore: false,
52
+ };
53
+
54
+ let matches = perform_query(&options).unwrap();
55
+
56
+ // Just check that we get some results
57
+ assert!(!matches.is_empty());
58
+ println!("Found {} matches", matches.len());
59
+ }
60
+ }