@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,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>, &ersands
|
|
61
|
+
function escapeTest(input) {
|
|
62
|
+
return input.replace(/[<>&"']/g, function(c) {
|
|
63
|
+
return {
|
|
64
|
+
'<': '<',
|
|
65
|
+
'>': '>',
|
|
66
|
+
'&': '&',
|
|
67
|
+
'"': '"',
|
|
68
|
+
"'": '''
|
|
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
|
+
}
|