@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.
- package/README.md +138 -0
- package/data/.env.example +22 -0
- package/data/.gitattributes +47 -0
- package/data/.glfrc.json +7 -0
- package/data/.husky/pre-commit +5 -0
- package/data/.nvmrc +1 -0
- package/data/CHANGELOG.md +75 -0
- package/data/CODE_OF_CONDUCT.md +129 -0
- package/data/CONTRIBUTING.md +203 -0
- package/data/DOCS-STRUCTURE.md +307 -0
- package/data/I18N.md +292 -0
- package/data/LICENSE +22 -0
- package/data/README.md +315 -0
- package/data/SECURITY.md +125 -0
- package/data/WIKI-DEPLOYMENT.md +348 -0
- package/data/docs/AI-FEATURES.md +610 -0
- package/data/docs/API-REFERENCE.md +1022 -0
- package/data/docs/AUTHENTICATION.md +301 -0
- package/data/docs/BACKEND-API.md +468 -0
- package/data/docs/DEVELOPMENT.md +375 -0
- package/data/docs/EXAMPLES.md +622 -0
- package/data/docs/MCP-SERVER.md +307 -0
- package/data/docs/MIGRATION-GUIDE.md +367 -0
- package/data/docs/NPM-PUBLISH.md +193 -0
- package/data/docs/QUICKSTART.md +206 -0
- package/data/docs/REDIS-SETUP.md +162 -0
- package/data/docs/SERVER.md +228 -0
- package/data/docs/TROUBLESHOOTING.md +657 -0
- package/data/docs/WIDGET-GUIDE.md +638 -0
- package/data/docs/WIKI-HOME.md +58 -0
- package/data/docs/WIKI-SIDEBAR.md +39 -0
- package/data/package.json +171 -0
- package/data/playwright.config.ts +64 -0
- package/data/probe/.cargo/config.toml +10 -0
- package/data/probe/.claude/commands/performance-review.md +15 -0
- package/data/probe/.clinerules +288 -0
- package/data/probe/.dockerignore +57 -0
- package/data/probe/.githooks/post-commit +11 -0
- package/data/probe/.githooks/pre-commit +99 -0
- package/data/probe/.githooks/pre-commit-vow +9 -0
- package/data/probe/.prompts/engineer.md +41 -0
- package/data/probe/.roomodes +28 -0
- package/data/probe/.windsurfrules +0 -0
- package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
- package/data/probe/BENCHMARKING.md +256 -0
- package/data/probe/CLAUDE.md +226 -0
- package/data/probe/CODE_OF_CONDUCT.md +128 -0
- package/data/probe/CONTRIBUTING.md +193 -0
- package/data/probe/Cargo.toml +120 -0
- package/data/probe/Cross.toml +10 -0
- package/data/probe/DOCKER-README.md +224 -0
- package/data/probe/Dockerfile +32 -0
- package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
- package/data/probe/LICENSE +201 -0
- package/data/probe/Makefile +210 -0
- package/data/probe/README.md +824 -0
- package/data/probe/SECURITY.md +67 -0
- package/data/probe/WINDOWS-GUIDE.md +294 -0
- package/data/probe/benches/parsing_benchmarks.rs +370 -0
- package/data/probe/benches/search_benchmarks.rs +599 -0
- package/data/probe/benches/simd_benchmarks.rs +372 -0
- package/data/probe/benches/timing_benchmarks.rs +287 -0
- package/data/probe/build-windows.bat +229 -0
- package/data/probe/codex-config/config.toml +6 -0
- package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
- package/data/probe/examples/cache_demo.rs +46 -0
- package/data/probe/examples/chat/.dockerignore +37 -0
- package/data/probe/examples/chat/ChatSessionManager.js +295 -0
- package/data/probe/examples/chat/Dockerfile +98 -0
- package/data/probe/examples/chat/LICENSE +201 -0
- package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
- package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
- package/data/probe/examples/chat/README.md +338 -0
- package/data/probe/examples/chat/TRACING.md +226 -0
- package/data/probe/examples/chat/appTracer.js +968 -0
- package/data/probe/examples/chat/auth.js +76 -0
- package/data/probe/examples/chat/bin/probe-chat.js +13 -0
- package/data/probe/examples/chat/build.js +104 -0
- package/data/probe/examples/chat/cancelRequest.js +84 -0
- package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
- package/data/probe/examples/chat/demo-local-images.js +128 -0
- package/data/probe/examples/chat/fileSpanExporter.js +181 -0
- package/data/probe/examples/chat/implement/README.md +228 -0
- package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
- package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
- package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
- package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
- package/data/probe/examples/chat/implement/backends/registry.js +85 -0
- package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
- package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
- package/data/probe/examples/chat/implement/core/config.js +428 -0
- package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
- package/data/probe/examples/chat/implement/core/utils.js +496 -0
- package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
- package/data/probe/examples/chat/index.js +669 -0
- package/data/probe/examples/chat/mcpServer.js +341 -0
- package/data/probe/examples/chat/npm/LICENSE +15 -0
- package/data/probe/examples/chat/npm/README.md +168 -0
- package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
- package/data/probe/examples/chat/npm/index.js +259 -0
- package/data/probe/examples/chat/npm/package.json +54 -0
- package/data/probe/examples/chat/package.json +102 -0
- package/data/probe/examples/chat/probeChat.js +456 -0
- package/data/probe/examples/chat/probeTool.js +491 -0
- package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
- package/data/probe/examples/chat/telemetry.js +281 -0
- package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
- package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
- package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
- package/data/probe/examples/chat/test/test-backends.js +90 -0
- package/data/probe/examples/chat/test/testUtils.js +530 -0
- package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
- package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
- package/data/probe/examples/chat/test/verify-tests.js +118 -0
- package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
- package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
- package/data/probe/examples/chat/test-chat-tracing.js +38 -0
- package/data/probe/examples/chat/test-direct-function.js +49 -0
- package/data/probe/examples/chat/test-file-size-validation.js +103 -0
- package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
- package/data/probe/examples/chat/test-github-context.txt +12 -0
- package/data/probe/examples/chat/test-hierarchy.js +203 -0
- package/data/probe/examples/chat/test-image-spans.js +37 -0
- package/data/probe/examples/chat/test-local-image-reading.js +176 -0
- package/data/probe/examples/chat/test-mcp-integration.js +136 -0
- package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
- package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
- package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
- package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
- package/data/probe/examples/chat/test-security-validation.js +145 -0
- package/data/probe/examples/chat/test-simple-tracing.js +32 -0
- package/data/probe/examples/chat/test-trace-verification.js +235 -0
- package/data/probe/examples/chat/test-tracing.js +114 -0
- package/data/probe/examples/chat/tokenCounter.js +419 -0
- package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
- package/data/probe/examples/chat/webServer.js +1103 -0
- package/data/probe/examples/reranker/Cargo.toml +33 -0
- package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
- package/data/probe/examples/reranker/MODELS.md +66 -0
- package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
- package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
- package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
- package/data/probe/examples/reranker/README.md +347 -0
- package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
- package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
- package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
- package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
- package/data/probe/examples/reranker/debug_scoring.py +189 -0
- package/data/probe/examples/reranker/debug_tokenization.py +154 -0
- package/data/probe/examples/reranker/download_models.sh +73 -0
- package/data/probe/examples/reranker/requirements.txt +13 -0
- package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
- package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
- package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
- package/data/probe/examples/reranker/simple_test.py +50 -0
- package/data/probe/examples/reranker/test_all_models.sh +63 -0
- package/data/probe/examples/reranker/test_bert_results.sh +44 -0
- package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
- package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
- package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
- package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
- package/data/probe/examples/reranker/test_scores.py +132 -0
- package/data/probe/install.ps1 +508 -0
- package/data/probe/install.sh +460 -0
- package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
- package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
- package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
- package/data/probe/npm/MAID_INTEGRATION.md +313 -0
- package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
- package/data/probe/npm/README.md +824 -0
- package/data/probe/npm/bin/.gitignore +7 -0
- package/data/probe/npm/bin/.gitkeep +0 -0
- package/data/probe/npm/bin/README.md +12 -0
- package/data/probe/npm/bin/probe +167 -0
- package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
- package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
- package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
- package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
- package/data/probe/npm/example-usage.js +335 -0
- package/data/probe/npm/examples/multi-engine-demo.js +117 -0
- package/data/probe/npm/examples/probe-agent-cli.js +113 -0
- package/data/probe/npm/examples/test-agent-edit.js +114 -0
- package/data/probe/npm/examples/test-edit-create.js +120 -0
- package/data/probe/npm/examples/test-edit-direct.js +114 -0
- package/data/probe/npm/index.d.ts +744 -0
- package/data/probe/npm/jest.config.js +52 -0
- package/data/probe/npm/package.json +117 -0
- package/data/probe/npm/scripts/build-agent.cjs +75 -0
- package/data/probe/npm/scripts/build-cjs.js +124 -0
- package/data/probe/npm/scripts/build-mcp.cjs +36 -0
- package/data/probe/npm/scripts/postinstall.js +216 -0
- package/data/probe/npm/test-codex-e2e.js +78 -0
- package/data/probe/npm/test-download-lock.js +109 -0
- package/data/probe/npm/test-grep-security.js +94 -0
- package/data/probe/npm/test-grep-simplified.js +63 -0
- package/data/probe/npm/test-grep.js +51 -0
- package/data/probe/npm/tests/README.md +96 -0
- package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
- package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
- package/data/probe/npm/tests/contextCompactor.test.js +498 -0
- package/data/probe/npm/tests/delegate-config.test.js +353 -0
- package/data/probe/npm/tests/delegate-integration.test.js +348 -0
- package/data/probe/npm/tests/extractor-integration.test.js +162 -0
- package/data/probe/npm/tests/extractor.test.js +317 -0
- package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
- package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
- package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
- package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
- package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
- package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
- package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
- package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
- package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
- package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
- package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
- package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
- package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
- package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
- package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
- package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
- package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
- package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
- package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
- package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
- package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
- package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
- package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
- package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
- package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
- package/data/probe/npm/tests/setup.js +46 -0
- package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
- package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
- package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
- package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
- package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
- package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
- package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
- package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
- package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
- package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
- package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
- package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
- package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
- package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
- package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
- package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
- package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
- package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
- package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
- package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
- package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
- package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
- package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
- package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
- package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
- package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
- package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
- package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
- package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
- package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
- package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
- package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
- package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
- package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
- package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
- package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
- package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
- package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
- package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
- package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
- package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
- package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
- package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
- package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
- package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
- package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
- package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
- package/data/probe/npm/tsconfig.json +21 -0
- package/data/probe/result1.txt +19 -0
- package/data/probe/result2.txt +26 -0
- package/data/probe/scripts/benchmark.sh +270 -0
- package/data/probe/scripts/cache_memory_analysis.rs +844 -0
- package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
- package/data/probe/site/.env.example +10 -0
- package/data/probe/site/DEPLOYMENT.md +86 -0
- package/data/probe/site/README.md +183 -0
- package/data/probe/site/adding-languages.md +135 -0
- package/data/probe/site/ai-chat.md +427 -0
- package/data/probe/site/ai-integration.md +1488 -0
- package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
- package/data/probe/site/blog/index.md +118 -0
- package/data/probe/site/blog/v0.6.0-release.md +426 -0
- package/data/probe/site/blog.md +8 -0
- package/data/probe/site/changelog.md +200 -0
- package/data/probe/site/cli-mode.md +437 -0
- package/data/probe/site/code-extraction.md +436 -0
- package/data/probe/site/contributing/README.md +9 -0
- package/data/probe/site/contributing/documentation-cross-references.md +215 -0
- package/data/probe/site/contributing/documentation-maintenance.md +275 -0
- package/data/probe/site/contributing/documentation-structure.md +75 -0
- package/data/probe/site/documentation-cross-references.md +215 -0
- package/data/probe/site/documentation-guide.md +132 -0
- package/data/probe/site/documentation-maintenance.md +275 -0
- package/data/probe/site/features.md +147 -0
- package/data/probe/site/how-it-works.md +118 -0
- package/data/probe/site/index.md +175 -0
- package/data/probe/site/index.md.bak +133 -0
- package/data/probe/site/installation.md +235 -0
- package/data/probe/site/integrations/docker.md +248 -0
- package/data/probe/site/integrations/github-actions.md +413 -0
- package/data/probe/site/language-support-overview.md +168 -0
- package/data/probe/site/mcp-integration.md +587 -0
- package/data/probe/site/mcp-server.md +304 -0
- package/data/probe/site/navigation-structure.md +76 -0
- package/data/probe/site/nodejs-sdk.md +798 -0
- package/data/probe/site/output-formats.md +625 -0
- package/data/probe/site/package.json +21 -0
- package/data/probe/site/public/_headers +28 -0
- package/data/probe/site/public/_redirects +11 -0
- package/data/probe/site/quick-start.md +289 -0
- package/data/probe/site/search-functionality.md +291 -0
- package/data/probe/site/search-reference.md +291 -0
- package/data/probe/site/supported-languages.md +215 -0
- package/data/probe/site/use-cases/README.md +8 -0
- package/data/probe/site/use-cases/advanced-cli.md +253 -0
- package/data/probe/site/use-cases/ai-code-editors.md +239 -0
- package/data/probe/site/use-cases/building-ai-tools.md +529 -0
- package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
- package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
- package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
- package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
- package/data/probe/site/use-cases/team-chat.md +350 -0
- package/data/probe/site/web-interface.md +434 -0
- package/data/probe/site/wrangler.toml +9 -0
- package/data/probe/test-api-key.sh +1 -0
- package/data/probe/test-probe-implementation/hello.js +7 -0
- package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
- package/data/probe/test_cases/early_termination_issues.rs +533 -0
- package/data/probe/test_data/test_nested_struct.go +26 -0
- package/data/probe/tests/README.md +286 -0
- package/data/probe/tests/README_search_determinism_tests.md +116 -0
- package/data/probe/tests/adjacent_comment_test.rs +152 -0
- package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
- package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
- package/data/probe/tests/block_merging_tests.rs +396 -0
- package/data/probe/tests/c_outline_format_tests.rs +2179 -0
- package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
- package/data/probe/tests/cache_order_tests.rs +147 -0
- package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
- package/data/probe/tests/cli_tests.rs +680 -0
- package/data/probe/tests/comment_context_integration_test.rs +240 -0
- package/data/probe/tests/common.rs +33 -0
- package/data/probe/tests/complex_block_merging_tests.rs +599 -0
- package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
- package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
- package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
- package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
- package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
- package/data/probe/tests/extract_command_tests.rs +1848 -0
- package/data/probe/tests/extract_deduplication_tests.rs +146 -0
- package/data/probe/tests/extract_input_file_tests.rs +84 -0
- package/data/probe/tests/extract_prompt_tests.rs +102 -0
- package/data/probe/tests/filename_search_tests.rs +96 -0
- package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
- package/data/probe/tests/github_extract_tests.rs +234 -0
- package/data/probe/tests/go_comment_test.rs +253 -0
- package/data/probe/tests/go_outline_format_tests.rs +2587 -0
- package/data/probe/tests/go_path_resolver_tests.rs +96 -0
- package/data/probe/tests/html_outline_format_tests.rs +637 -0
- package/data/probe/tests/integration_tests.rs +837 -0
- package/data/probe/tests/ip_whitelist_test.rs +148 -0
- package/data/probe/tests/java_outline_format_tests.rs +1611 -0
- package/data/probe/tests/javascript_extract_tests.rs +315 -0
- package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
- package/data/probe/tests/json_format_tests.rs +436 -0
- package/data/probe/tests/json_schema_validation_tests.rs +450 -0
- package/data/probe/tests/lib_usage.rs +60 -0
- package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
- package/data/probe/tests/line_map_cache_tests.rs +114 -0
- package/data/probe/tests/markdown_integration_tests.rs +190 -0
- package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
- package/data/probe/tests/mocks/test_object.js +27 -0
- package/data/probe/tests/mocks/test_struct.go +50 -0
- package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
- package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
- package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
- package/data/probe/tests/negative_compound_word_tests.rs +246 -0
- package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
- package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
- package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
- package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
- package/data/probe/tests/parallel_extraction_tests.rs +178 -0
- package/data/probe/tests/parallel_search_tests.rs +355 -0
- package/data/probe/tests/path_resolver_tests.rs +698 -0
- package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
- package/data/probe/tests/php_outline_format_tests.rs +768 -0
- package/data/probe/tests/property_tests.proptest-regressions +9 -0
- package/data/probe/tests/property_tests.rs +118 -0
- package/data/probe/tests/python_outline_format_tests.rs +1538 -0
- package/data/probe/tests/query_command_json_tests.rs +438 -0
- package/data/probe/tests/query_command_tests.rs +232 -0
- package/data/probe/tests/query_command_xml_tests.rs +569 -0
- package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
- package/data/probe/tests/required_terms_filename_tests.rs +116 -0
- package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
- package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
- package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
- package/data/probe/tests/rust_outline_format_tests.rs +843 -0
- package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
- package/data/probe/tests/search_determinism_tests.rs +451 -0
- package/data/probe/tests/search_hints_tests.rs +253 -0
- package/data/probe/tests/special_character_escaping_tests.rs +417 -0
- package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
- package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
- package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
- package/data/probe/tests/symbols_tests.rs +166 -0
- package/data/probe/tests/test_file.rs +45 -0
- package/data/probe/tests/test_tokenize.rs +28 -0
- package/data/probe/tests/timeout_tests.rs +82 -0
- package/data/probe/tests/tokenization_tests.rs +195 -0
- package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
- package/data/probe/tests/typescript_extract_tests.rs +214 -0
- package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
- package/data/probe/tests/xml_format_tests.rs +568 -0
- package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
- package/data/scripts/postinstall.mjs +9 -0
- package/data/scripts/set-version.js +0 -0
- package/data/scripts/wiki-build.sh +111 -0
- package/data/scripts/wiki-deploy.sh +73 -0
- package/data/serve.json +12 -0
- package/data/test/demo-dynamic.html +134 -0
- package/data/test/demo-esm.html +105 -0
- package/data/test/demo-iife.html +78 -0
- package/data/tsconfig.json +7 -0
- package/data/vite.server.ts +483 -0
- package/data/vitest.config.ts +40 -0
- package/data/wiki/Home.md +58 -0
- package/data/wiki/_Sidebar.md +39 -0
- package/docs-mcp.config.json +20 -0
- package/package.json +56 -0
- package/src/config.js +111 -0
- package/src/index.js +395 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
use probe_code::extract::{handle_extract, ExtractOptions};
|
|
2
|
+
use std::fs;
|
|
3
|
+
use tempfile::tempdir;
|
|
4
|
+
|
|
5
|
+
#[test]
|
|
6
|
+
fn test_parallel_file_extraction() {
|
|
7
|
+
// Create a temporary directory for test files
|
|
8
|
+
let temp_dir = tempdir().unwrap();
|
|
9
|
+
let base_path = temp_dir.path();
|
|
10
|
+
|
|
11
|
+
// Create multiple test files
|
|
12
|
+
let file_count = 10;
|
|
13
|
+
let mut file_paths = Vec::new();
|
|
14
|
+
|
|
15
|
+
for i in 0..file_count {
|
|
16
|
+
let file_path = base_path.join(format!("test_file_{i}.rs"));
|
|
17
|
+
let content = format!(
|
|
18
|
+
"// Test file {i}\n\nfn function_a() {{\n println!(\"Hello from function A\");\n}}\n\nfn function_b() {{\n println!(\"Hello from function B\");\n}}\n"
|
|
19
|
+
);
|
|
20
|
+
fs::write(&file_path, content).unwrap();
|
|
21
|
+
file_paths.push(file_path.to_string_lossy().to_string());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Create options for extraction
|
|
25
|
+
let options = ExtractOptions {
|
|
26
|
+
files: file_paths,
|
|
27
|
+
custom_ignores: Vec::new(),
|
|
28
|
+
context_lines: 0,
|
|
29
|
+
format: "plain".to_string(),
|
|
30
|
+
from_clipboard: false,
|
|
31
|
+
input_file: None,
|
|
32
|
+
to_clipboard: false,
|
|
33
|
+
dry_run: false,
|
|
34
|
+
diff: false,
|
|
35
|
+
allow_tests: true,
|
|
36
|
+
instructions: None,
|
|
37
|
+
keep_input: false,
|
|
38
|
+
prompt: None,
|
|
39
|
+
no_gitignore: false,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// Run the extraction
|
|
43
|
+
let result = handle_extract(options);
|
|
44
|
+
assert!(result.is_ok(), "Extraction should succeed");
|
|
45
|
+
|
|
46
|
+
// Verify that all files were processed by checking the output
|
|
47
|
+
// This is a basic test - in a real scenario, you might want to capture
|
|
48
|
+
// and parse the output to verify each file was processed correctly
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
#[test]
|
|
52
|
+
fn test_parallel_extraction_with_specific_lines() {
|
|
53
|
+
// Create a temporary directory for test files
|
|
54
|
+
let temp_dir = tempdir().unwrap();
|
|
55
|
+
let base_path = temp_dir.path();
|
|
56
|
+
|
|
57
|
+
// Create a test file with multiple functions
|
|
58
|
+
let file_path = base_path.join("multi_function.rs");
|
|
59
|
+
let content = r#"
|
|
60
|
+
fn function_one() {
|
|
61
|
+
println!("This is function one");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
fn function_two() {
|
|
65
|
+
println!("This is function two");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
fn function_three() {
|
|
69
|
+
println!("This is function three");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
fn function_four() {
|
|
73
|
+
println!("This is function four");
|
|
74
|
+
}
|
|
75
|
+
"#;
|
|
76
|
+
fs::write(&file_path, content).unwrap();
|
|
77
|
+
|
|
78
|
+
// Create multiple files with the same content to test parallelism
|
|
79
|
+
let file_count = 5;
|
|
80
|
+
let mut file_paths = Vec::new();
|
|
81
|
+
|
|
82
|
+
for i in 0..file_count {
|
|
83
|
+
let path = base_path.join(format!("multi_function_{i}.rs"));
|
|
84
|
+
fs::write(&path, content).unwrap();
|
|
85
|
+
file_paths.push(path.to_string_lossy().to_string());
|
|
86
|
+
}
|
|
87
|
+
// Create options for extraction with specific lines
|
|
88
|
+
let options = ExtractOptions {
|
|
89
|
+
files: file_paths,
|
|
90
|
+
custom_ignores: Vec::new(),
|
|
91
|
+
context_lines: 0,
|
|
92
|
+
format: "plain".to_string(),
|
|
93
|
+
from_clipboard: false,
|
|
94
|
+
input_file: None,
|
|
95
|
+
to_clipboard: false,
|
|
96
|
+
dry_run: false,
|
|
97
|
+
diff: false,
|
|
98
|
+
allow_tests: true,
|
|
99
|
+
instructions: None,
|
|
100
|
+
keep_input: false,
|
|
101
|
+
prompt: None,
|
|
102
|
+
no_gitignore: false,
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// Run the extraction
|
|
106
|
+
let result = handle_extract(options);
|
|
107
|
+
assert!(result.is_ok(), "Extraction should succeed");
|
|
108
|
+
|
|
109
|
+
// In a real test, you might want to capture the output and verify
|
|
110
|
+
// that all functions were extracted correctly from all files
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
#[test]
|
|
114
|
+
fn test_parallel_extraction_performance() {
|
|
115
|
+
// This test is designed to verify that parallel extraction is faster
|
|
116
|
+
// than sequential extraction for a large number of files
|
|
117
|
+
|
|
118
|
+
// Skip this test in CI environments where performance might vary
|
|
119
|
+
if std::env::var("CI").is_ok() {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Create a temporary directory for test files
|
|
124
|
+
let temp_dir = tempdir().unwrap();
|
|
125
|
+
let base_path = temp_dir.path();
|
|
126
|
+
|
|
127
|
+
// Create a large number of test files
|
|
128
|
+
let file_count = 50; // Adjust based on your system capabilities
|
|
129
|
+
let mut file_paths = Vec::new();
|
|
130
|
+
|
|
131
|
+
for i in 0..file_count {
|
|
132
|
+
let file_path = base_path.join(format!("perf_test_{i}.rs"));
|
|
133
|
+
|
|
134
|
+
// Create a file with multiple functions to make parsing non-trivial
|
|
135
|
+
let content = format!(
|
|
136
|
+
"// Performance test file {}\n\n{}\n",
|
|
137
|
+
i,
|
|
138
|
+
(0..20)
|
|
139
|
+
.map(|j| format!(
|
|
140
|
+
"fn function_{i}_{j}() {{\n let x = {j};\n println!(\"Value: {{}}\", x);\n}}\n"
|
|
141
|
+
))
|
|
142
|
+
.collect::<Vec<_>>()
|
|
143
|
+
.join("\n")
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
fs::write(&file_path, content).unwrap();
|
|
147
|
+
file_paths.push(file_path.to_string_lossy().to_string());
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Note: In a real performance test, you would measure the time taken
|
|
151
|
+
// and compare it with a sequential implementation. For this example,
|
|
152
|
+
// we're just verifying that the parallel implementation works correctly
|
|
153
|
+
// with a large number of files.
|
|
154
|
+
|
|
155
|
+
let options = ExtractOptions {
|
|
156
|
+
files: file_paths,
|
|
157
|
+
custom_ignores: Vec::new(),
|
|
158
|
+
context_lines: 0,
|
|
159
|
+
format: "plain".to_string(),
|
|
160
|
+
from_clipboard: false,
|
|
161
|
+
input_file: None,
|
|
162
|
+
to_clipboard: false,
|
|
163
|
+
dry_run: true, // Use dry run to avoid large output
|
|
164
|
+
diff: false,
|
|
165
|
+
allow_tests: true,
|
|
166
|
+
instructions: None,
|
|
167
|
+
keep_input: false,
|
|
168
|
+
prompt: None,
|
|
169
|
+
no_gitignore: false,
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
// Run the extraction
|
|
173
|
+
let result = handle_extract(options);
|
|
174
|
+
assert!(
|
|
175
|
+
result.is_ok(),
|
|
176
|
+
"Parallel extraction should succeed with many files"
|
|
177
|
+
);
|
|
178
|
+
}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
use probe_code::search::search_runner::{
|
|
2
|
+
perform_probe, search_with_structured_patterns, SearchConfig,
|
|
3
|
+
};
|
|
4
|
+
use probe_code::search::SearchOptions;
|
|
5
|
+
use std::fs;
|
|
6
|
+
use std::path::{Path, PathBuf};
|
|
7
|
+
use std::time::Instant;
|
|
8
|
+
use tempfile::tempdir;
|
|
9
|
+
|
|
10
|
+
// Helper function to create test files
|
|
11
|
+
fn create_test_files(dir: &Path, count: usize, lines_per_file: usize) -> Vec<PathBuf> {
|
|
12
|
+
let mut paths = Vec::new();
|
|
13
|
+
|
|
14
|
+
for i in 0..count {
|
|
15
|
+
let file_path = dir.join(format!("test_file_{i}.rs"));
|
|
16
|
+
|
|
17
|
+
// Create file content with multiple functions and searchable terms
|
|
18
|
+
let mut content = format!("// Test file {i}\n\n");
|
|
19
|
+
|
|
20
|
+
for j in 0..lines_per_file / 10 {
|
|
21
|
+
content.push_str(&format!(
|
|
22
|
+
"/// Function documentation for function_{}_{}
|
|
23
|
+
fn function_{}_{}() {{
|
|
24
|
+
// Initialize variables
|
|
25
|
+
let search_term_alpha = {};
|
|
26
|
+
let search_term_beta = {};
|
|
27
|
+
|
|
28
|
+
// Process data
|
|
29
|
+
println!(\"Processing data with search_term_gamma\");
|
|
30
|
+
|
|
31
|
+
// Return result
|
|
32
|
+
search_term_alpha + search_term_beta
|
|
33
|
+
}}
|
|
34
|
+
|
|
35
|
+
",
|
|
36
|
+
i,
|
|
37
|
+
j,
|
|
38
|
+
i,
|
|
39
|
+
j,
|
|
40
|
+
j * 2,
|
|
41
|
+
j * 3
|
|
42
|
+
));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
fs::write(&file_path, content).unwrap();
|
|
46
|
+
paths.push(file_path);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
paths
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#[test]
|
|
53
|
+
fn test_parallel_file_search() {
|
|
54
|
+
// Create a temporary directory for test files
|
|
55
|
+
let temp_dir = tempdir().unwrap();
|
|
56
|
+
let base_path = temp_dir.path();
|
|
57
|
+
|
|
58
|
+
// Create multiple test files (50 files with 100 lines each)
|
|
59
|
+
let file_count = 50;
|
|
60
|
+
let lines_per_file = 100;
|
|
61
|
+
let _file_paths = create_test_files(base_path, file_count, lines_per_file);
|
|
62
|
+
|
|
63
|
+
// Create search options
|
|
64
|
+
let queries = vec![
|
|
65
|
+
"search_term_alpha".to_string(),
|
|
66
|
+
"search_term_beta".to_string(),
|
|
67
|
+
];
|
|
68
|
+
let custom_ignores = Vec::new();
|
|
69
|
+
|
|
70
|
+
let options = SearchOptions {
|
|
71
|
+
path: base_path,
|
|
72
|
+
queries: &queries,
|
|
73
|
+
files_only: false,
|
|
74
|
+
custom_ignores: &custom_ignores,
|
|
75
|
+
exclude_filenames: false,
|
|
76
|
+
language: None,
|
|
77
|
+
reranker: "hybrid",
|
|
78
|
+
frequency_search: false,
|
|
79
|
+
max_results: Some(100),
|
|
80
|
+
max_bytes: Some(1_000_000),
|
|
81
|
+
max_tokens: Some(100_000),
|
|
82
|
+
allow_tests: true,
|
|
83
|
+
no_merge: false,
|
|
84
|
+
merge_threshold: Some(5),
|
|
85
|
+
dry_run: false,
|
|
86
|
+
session: None,
|
|
87
|
+
timeout: 30,
|
|
88
|
+
question: None,
|
|
89
|
+
exact: false,
|
|
90
|
+
no_gitignore: false,
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// Measure search time
|
|
94
|
+
let start_time = Instant::now();
|
|
95
|
+
let result = perform_probe(&options);
|
|
96
|
+
let duration = start_time.elapsed();
|
|
97
|
+
|
|
98
|
+
// Verify search results
|
|
99
|
+
assert!(result.is_ok(), "Search should succeed");
|
|
100
|
+
let search_results = result.unwrap();
|
|
101
|
+
|
|
102
|
+
// Ensure we found matches
|
|
103
|
+
assert!(
|
|
104
|
+
!search_results.results.is_empty(),
|
|
105
|
+
"Search should find matches"
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// Print performance information
|
|
109
|
+
println!("Parallel search completed in {duration:?} for {file_count} files");
|
|
110
|
+
println!("Found {} results", search_results.results.len());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
#[test]
|
|
114
|
+
fn test_structured_patterns_search() {
|
|
115
|
+
// Create a temporary directory for test files
|
|
116
|
+
let temp_dir = tempdir().unwrap();
|
|
117
|
+
let base_path = temp_dir.path();
|
|
118
|
+
|
|
119
|
+
// Create test files
|
|
120
|
+
let file_count = 20;
|
|
121
|
+
let lines_per_file = 50;
|
|
122
|
+
let _file_paths = create_test_files(base_path, file_count, lines_per_file);
|
|
123
|
+
|
|
124
|
+
// Create a simple query plan and patterns for testing
|
|
125
|
+
let query_plan = probe_code::search::query::create_query_plan(
|
|
126
|
+
"search_term_alpha OR search_term_beta",
|
|
127
|
+
false,
|
|
128
|
+
)
|
|
129
|
+
.unwrap();
|
|
130
|
+
|
|
131
|
+
// Create patterns from the query plan
|
|
132
|
+
let patterns = probe_code::search::query::create_structured_patterns(&query_plan);
|
|
133
|
+
|
|
134
|
+
// Create empty custom ignores
|
|
135
|
+
let custom_ignores: Vec<String> = Vec::new();
|
|
136
|
+
|
|
137
|
+
// Measure search time
|
|
138
|
+
let start_time = Instant::now();
|
|
139
|
+
let search_filters = probe_code::search::filters::SearchFilters::new();
|
|
140
|
+
let search_config = SearchConfig {
|
|
141
|
+
custom_ignores: &custom_ignores,
|
|
142
|
+
allow_tests: true,
|
|
143
|
+
language: None,
|
|
144
|
+
no_gitignore: false,
|
|
145
|
+
};
|
|
146
|
+
let result = search_with_structured_patterns(
|
|
147
|
+
base_path,
|
|
148
|
+
&query_plan,
|
|
149
|
+
&patterns,
|
|
150
|
+
&search_config,
|
|
151
|
+
&search_filters,
|
|
152
|
+
);
|
|
153
|
+
let duration = start_time.elapsed();
|
|
154
|
+
|
|
155
|
+
// Verify search results
|
|
156
|
+
assert!(result.is_ok(), "Structured pattern search should succeed");
|
|
157
|
+
let file_term_maps = result.unwrap();
|
|
158
|
+
|
|
159
|
+
// Ensure we found matches
|
|
160
|
+
assert!(!file_term_maps.is_empty(), "Search should find matches");
|
|
161
|
+
|
|
162
|
+
// Print performance information
|
|
163
|
+
println!("Parallel structured pattern search completed in {duration:?} for {file_count} files");
|
|
164
|
+
println!("Found matches in {} files", file_term_maps.len());
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#[test]
|
|
168
|
+
fn test_ast_parallel_processing() {
|
|
169
|
+
// Create a temporary directory for test files
|
|
170
|
+
let temp_dir = tempdir().unwrap();
|
|
171
|
+
let base_path = temp_dir.path();
|
|
172
|
+
|
|
173
|
+
// Create a single large file with many top-level nodes to test AST parallelization
|
|
174
|
+
let file_path = base_path.join("large_file.rs");
|
|
175
|
+
|
|
176
|
+
// Create file content with many top-level functions
|
|
177
|
+
let mut content = "// Large test file with many top-level nodes\n\n".to_string();
|
|
178
|
+
|
|
179
|
+
for i in 0..100 {
|
|
180
|
+
content.push_str(&format!(
|
|
181
|
+
"/// Function documentation for function_{}
|
|
182
|
+
fn function_{}() {{
|
|
183
|
+
// Function body with search terms
|
|
184
|
+
let search_term_alpha = {};
|
|
185
|
+
let search_term_beta = {};
|
|
186
|
+
println!(\"Processing with search_term_gamma\");
|
|
187
|
+
}}
|
|
188
|
+
|
|
189
|
+
",
|
|
190
|
+
i,
|
|
191
|
+
i,
|
|
192
|
+
i * 2,
|
|
193
|
+
i * 3
|
|
194
|
+
));
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
fs::write(&file_path, content).unwrap();
|
|
198
|
+
|
|
199
|
+
// Create search options targeting the large file
|
|
200
|
+
let queries = vec![
|
|
201
|
+
"search_term_alpha".to_string(),
|
|
202
|
+
"search_term_beta".to_string(),
|
|
203
|
+
];
|
|
204
|
+
let custom_ignores = Vec::new();
|
|
205
|
+
|
|
206
|
+
let options = SearchOptions {
|
|
207
|
+
path: base_path,
|
|
208
|
+
queries: &queries,
|
|
209
|
+
files_only: false,
|
|
210
|
+
custom_ignores: &custom_ignores,
|
|
211
|
+
exclude_filenames: false,
|
|
212
|
+
language: None,
|
|
213
|
+
reranker: "hybrid",
|
|
214
|
+
frequency_search: false,
|
|
215
|
+
max_results: Some(100),
|
|
216
|
+
max_bytes: Some(1_000_000),
|
|
217
|
+
max_tokens: Some(100_000),
|
|
218
|
+
allow_tests: true,
|
|
219
|
+
no_merge: false,
|
|
220
|
+
merge_threshold: Some(5),
|
|
221
|
+
dry_run: false,
|
|
222
|
+
session: None,
|
|
223
|
+
timeout: 30,
|
|
224
|
+
question: None,
|
|
225
|
+
exact: false,
|
|
226
|
+
no_gitignore: false,
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
// Measure search time
|
|
230
|
+
let start_time = Instant::now();
|
|
231
|
+
let result = perform_probe(&options);
|
|
232
|
+
let duration = start_time.elapsed();
|
|
233
|
+
|
|
234
|
+
// Verify search results
|
|
235
|
+
assert!(
|
|
236
|
+
result.is_ok(),
|
|
237
|
+
"AST parallel processing search should succeed"
|
|
238
|
+
);
|
|
239
|
+
let search_results = result.unwrap();
|
|
240
|
+
|
|
241
|
+
// Ensure we found matches
|
|
242
|
+
assert!(
|
|
243
|
+
!search_results.results.is_empty(),
|
|
244
|
+
"Search should find matches"
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
// Print performance information
|
|
248
|
+
println!("AST parallel processing completed in {duration:?}");
|
|
249
|
+
println!("Found {} results", search_results.results.len());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
#[test]
|
|
253
|
+
fn test_block_parallel_processing() {
|
|
254
|
+
// Create a temporary directory for test files
|
|
255
|
+
let temp_dir = tempdir().unwrap();
|
|
256
|
+
let base_path = temp_dir.path();
|
|
257
|
+
|
|
258
|
+
// Create a file with many code blocks to test block parallelization
|
|
259
|
+
let file_path = base_path.join("multi_block.rs");
|
|
260
|
+
|
|
261
|
+
// Create file content with a large number of functions and nested blocks
|
|
262
|
+
let mut content = "// Test file with many code blocks\n\n".to_string();
|
|
263
|
+
|
|
264
|
+
for i in 0..50 {
|
|
265
|
+
content.push_str(&format!(
|
|
266
|
+
"/// Function with multiple blocks
|
|
267
|
+
fn function_with_blocks_{}() {{
|
|
268
|
+
// Block 1
|
|
269
|
+
{{
|
|
270
|
+
let search_term_alpha = {};
|
|
271
|
+
println!(\"Block 1\");
|
|
272
|
+
}}
|
|
273
|
+
|
|
274
|
+
// Block 2
|
|
275
|
+
{{
|
|
276
|
+
let search_term_beta = {};
|
|
277
|
+
println!(\"Block 2\");
|
|
278
|
+
}}
|
|
279
|
+
|
|
280
|
+
// Block 3
|
|
281
|
+
{{
|
|
282
|
+
let search_term_gamma = {};
|
|
283
|
+
println!(\"Block 3\");
|
|
284
|
+
}}
|
|
285
|
+
|
|
286
|
+
// Block 4
|
|
287
|
+
if true {{
|
|
288
|
+
let search_term_delta = {};
|
|
289
|
+
println!(\"Block 4\");
|
|
290
|
+
}}
|
|
291
|
+
}}
|
|
292
|
+
|
|
293
|
+
",
|
|
294
|
+
i,
|
|
295
|
+
i,
|
|
296
|
+
i * 2,
|
|
297
|
+
i * 3,
|
|
298
|
+
i * 4
|
|
299
|
+
));
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
fs::write(&file_path, content).unwrap();
|
|
303
|
+
|
|
304
|
+
// Create search options targeting the multi-block file
|
|
305
|
+
let queries = vec![
|
|
306
|
+
"search_term_alpha".to_string(),
|
|
307
|
+
"search_term_beta".to_string(),
|
|
308
|
+
];
|
|
309
|
+
let custom_ignores = Vec::new();
|
|
310
|
+
|
|
311
|
+
let options = SearchOptions {
|
|
312
|
+
path: base_path,
|
|
313
|
+
queries: &queries,
|
|
314
|
+
files_only: false,
|
|
315
|
+
custom_ignores: &custom_ignores,
|
|
316
|
+
exclude_filenames: false,
|
|
317
|
+
language: None,
|
|
318
|
+
reranker: "hybrid",
|
|
319
|
+
frequency_search: false,
|
|
320
|
+
max_results: Some(100),
|
|
321
|
+
max_bytes: Some(1_000_000),
|
|
322
|
+
max_tokens: Some(100_000),
|
|
323
|
+
allow_tests: true,
|
|
324
|
+
no_merge: false,
|
|
325
|
+
merge_threshold: Some(5),
|
|
326
|
+
dry_run: false,
|
|
327
|
+
session: None,
|
|
328
|
+
timeout: 30,
|
|
329
|
+
question: None,
|
|
330
|
+
exact: false,
|
|
331
|
+
no_gitignore: false,
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
// Measure search time
|
|
335
|
+
let start_time = Instant::now();
|
|
336
|
+
let result = perform_probe(&options);
|
|
337
|
+
let duration = start_time.elapsed();
|
|
338
|
+
|
|
339
|
+
// Verify search results
|
|
340
|
+
assert!(
|
|
341
|
+
result.is_ok(),
|
|
342
|
+
"Block parallel processing search should succeed"
|
|
343
|
+
);
|
|
344
|
+
let search_results = result.unwrap();
|
|
345
|
+
|
|
346
|
+
// Ensure we found matches
|
|
347
|
+
assert!(
|
|
348
|
+
!search_results.results.is_empty(),
|
|
349
|
+
"Search should find matches"
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
// Print performance information
|
|
353
|
+
println!("Block parallel processing completed in {duration:?}");
|
|
354
|
+
println!("Found {} results", search_results.results.len());
|
|
355
|
+
}
|