@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,147 @@
|
|
|
1
|
+
use std::collections::HashSet;
|
|
2
|
+
use std::time::Instant;
|
|
3
|
+
|
|
4
|
+
/// This test demonstrates the performance benefits of caching ancestor lookups
|
|
5
|
+
/// in the AST traversal. The test creates a complex Go file with many nested
|
|
6
|
+
/// structures that will trigger many ancestor lookups during parsing.
|
|
7
|
+
#[test]
|
|
8
|
+
fn test_ancestor_cache_performance() {
|
|
9
|
+
// Create a sample Go file with nested structures that will trigger many ancestor lookups
|
|
10
|
+
let content = generate_complex_go_file(10, 5); // 10 structs with 5 levels of nesting each
|
|
11
|
+
|
|
12
|
+
// Create a set of line numbers to extract (all lines in the file)
|
|
13
|
+
let line_count = content.lines().count();
|
|
14
|
+
let line_numbers: HashSet<usize> = (1..=line_count).collect();
|
|
15
|
+
|
|
16
|
+
println!("Generated a Go file with {line_count} lines");
|
|
17
|
+
println!("File contains multiple nested structures to stress-test ancestor lookups");
|
|
18
|
+
|
|
19
|
+
// Run the extraction multiple times to get a reliable measurement
|
|
20
|
+
let iterations = 10;
|
|
21
|
+
let mut times = Vec::with_capacity(iterations);
|
|
22
|
+
|
|
23
|
+
println!("\nRunning {iterations} iterations of parsing with ancestor cache:");
|
|
24
|
+
|
|
25
|
+
for i in 1..=iterations {
|
|
26
|
+
let start = Instant::now();
|
|
27
|
+
let result = probe_code::language::parser::parse_file_for_code_blocks(
|
|
28
|
+
&content,
|
|
29
|
+
"go",
|
|
30
|
+
&line_numbers,
|
|
31
|
+
true,
|
|
32
|
+
None,
|
|
33
|
+
);
|
|
34
|
+
assert!(result.is_ok(), "Failed to parse file: {:?}", result.err());
|
|
35
|
+
let blocks = result.unwrap();
|
|
36
|
+
let duration = start.elapsed();
|
|
37
|
+
times.push(duration.as_secs_f64());
|
|
38
|
+
|
|
39
|
+
println!(
|
|
40
|
+
" Iteration {}: {:.6} seconds, extracted {} code blocks",
|
|
41
|
+
i,
|
|
42
|
+
duration.as_secs_f64(),
|
|
43
|
+
blocks.len()
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Calculate statistics
|
|
48
|
+
times.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
|
49
|
+
let min_time = times.first().unwrap();
|
|
50
|
+
let max_time = times.last().unwrap();
|
|
51
|
+
let median_time = if iterations % 2 == 0 {
|
|
52
|
+
(times[iterations / 2 - 1] + times[iterations / 2]) / 2.0
|
|
53
|
+
} else {
|
|
54
|
+
times[iterations / 2]
|
|
55
|
+
};
|
|
56
|
+
let avg_time = times.iter().sum::<f64>() / iterations as f64;
|
|
57
|
+
|
|
58
|
+
println!("\nPerformance statistics with ancestor cache:");
|
|
59
|
+
println!(" Minimum time: {min_time:.6} seconds");
|
|
60
|
+
println!(" Maximum time: {max_time:.6} seconds");
|
|
61
|
+
println!(" Median time: {median_time:.6} seconds");
|
|
62
|
+
println!(" Average time: {avg_time:.6} seconds");
|
|
63
|
+
|
|
64
|
+
println!(
|
|
65
|
+
"\nNote: Without caching, this would be significantly slower due to redundant traversals."
|
|
66
|
+
);
|
|
67
|
+
println!("The cache prevents repeated upward traversals for nodes within the same acceptable parent block.");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/// Generates a complex Go file with multiple nested structures to stress-test ancestor lookups
|
|
71
|
+
fn generate_complex_go_file(struct_count: usize, nesting_levels: usize) -> String {
|
|
72
|
+
let mut content = String::from("package main\n\nimport \"fmt\"\n\n");
|
|
73
|
+
|
|
74
|
+
// Generate multiple struct definitions with deep nesting
|
|
75
|
+
for i in 1..=struct_count {
|
|
76
|
+
content.push_str(&format!("// Struct {i} with deep nesting\n"));
|
|
77
|
+
content.push_str(&format!("type Struct{i} struct {{\n"));
|
|
78
|
+
|
|
79
|
+
// Add some fields at the top level
|
|
80
|
+
for j in 1..=3 {
|
|
81
|
+
content.push_str(&format!(" Field{j} string\n"));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Add nested structures
|
|
85
|
+
let mut indent = 4;
|
|
86
|
+
let mut current_struct = format!("Inner{i}");
|
|
87
|
+
|
|
88
|
+
for level in 1..=nesting_levels {
|
|
89
|
+
let spaces = " ".repeat(indent);
|
|
90
|
+
content.push_str(&format!("{spaces}// Level {level} nested structure\n"));
|
|
91
|
+
content.push_str(&format!("{spaces}{current_struct} struct {{\n"));
|
|
92
|
+
|
|
93
|
+
// Add fields to this level
|
|
94
|
+
indent += 4;
|
|
95
|
+
let inner_spaces = " ".repeat(indent);
|
|
96
|
+
for j in 1..=3 {
|
|
97
|
+
content.push_str(&format!("{inner_spaces}Field{j}_L{level} string\n"));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Prepare for next level
|
|
101
|
+
current_struct = format!("Nested{i}_L{level}");
|
|
102
|
+
|
|
103
|
+
// Add the nested struct field at this level (except for the last level)
|
|
104
|
+
if level < nesting_levels {
|
|
105
|
+
content.push_str(&format!(
|
|
106
|
+
"{inner_spaces}{current_struct} {current_struct}\n"
|
|
107
|
+
));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Close all the nested structures
|
|
112
|
+
for level in (0..=nesting_levels).rev() {
|
|
113
|
+
let spaces = " ".repeat(4 * level);
|
|
114
|
+
content.push_str(&format!("{spaces}}}\n"));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
content.push('\n');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Add a main function that uses these structures
|
|
121
|
+
content.push_str("func main() {\n");
|
|
122
|
+
for i in 1..=struct_count {
|
|
123
|
+
content.push_str(&format!(" // Initialize Struct{i}\n"));
|
|
124
|
+
content.push_str(&format!(" var s{i} Struct{i}\n"));
|
|
125
|
+
content.push_str(&format!(" s{i}.Field1 = \"value\"\n"));
|
|
126
|
+
|
|
127
|
+
// Access some nested fields
|
|
128
|
+
let mut var_path = format!("s{i}");
|
|
129
|
+
for level in 1..=nesting_levels {
|
|
130
|
+
if level == 1 {
|
|
131
|
+
var_path = format!("{var_path}.Inner{i}");
|
|
132
|
+
} else {
|
|
133
|
+
var_path = format!("{}.Nested{}_L{}", var_path, i, level - 1);
|
|
134
|
+
}
|
|
135
|
+
content.push_str(&format!(
|
|
136
|
+
" {var_path}.Field1_L{level} = \"nested value at level {level}\"\n"
|
|
137
|
+
));
|
|
138
|
+
}
|
|
139
|
+
content.push('\n');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Print something to avoid unused variable warnings
|
|
143
|
+
content.push_str(" fmt.Println(\"Complex nested structures initialized\")\n");
|
|
144
|
+
content.push_str("}\n");
|
|
145
|
+
|
|
146
|
+
content
|
|
147
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
use std::collections::HashSet;
|
|
2
|
+
use std::time::Instant;
|
|
3
|
+
|
|
4
|
+
/// This test verifies that the ancestor cache correctly handles different query scopes
|
|
5
|
+
/// by running multiple queries with different line number sets on the same file.
|
|
6
|
+
#[test]
|
|
7
|
+
fn test_ancestor_cache_with_different_query_scopes() {
|
|
8
|
+
// Create a sample Go file with multiple functions and nested structures
|
|
9
|
+
let content = r#"
|
|
10
|
+
package main
|
|
11
|
+
|
|
12
|
+
import "fmt"
|
|
13
|
+
|
|
14
|
+
// Function 1 - Top level function
|
|
15
|
+
func Function1() {
|
|
16
|
+
fmt.Println("Function 1")
|
|
17
|
+
|
|
18
|
+
// Local variable
|
|
19
|
+
var x int = 10
|
|
20
|
+
|
|
21
|
+
// Nested block
|
|
22
|
+
{
|
|
23
|
+
var y int = 20
|
|
24
|
+
fmt.Println(x + y)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Struct definition with nested types
|
|
29
|
+
type ComplexStruct struct {
|
|
30
|
+
Field1 string
|
|
31
|
+
Field2 int
|
|
32
|
+
Inner struct {
|
|
33
|
+
SubField1 string
|
|
34
|
+
SubField2 int
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Function 2 - Uses the complex struct
|
|
39
|
+
func Function2() {
|
|
40
|
+
var data ComplexStruct
|
|
41
|
+
data.Field1 = "test"
|
|
42
|
+
data.Field2 = 42
|
|
43
|
+
data.Inner.SubField1 = "nested"
|
|
44
|
+
data.Inner.SubField2 = 100
|
|
45
|
+
|
|
46
|
+
fmt.Println(data)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Function 3 - Another function with different structure
|
|
50
|
+
func Function3() {
|
|
51
|
+
// Different local variables
|
|
52
|
+
var a, b, c int = 1, 2, 3
|
|
53
|
+
|
|
54
|
+
// Different nested block
|
|
55
|
+
if a < b {
|
|
56
|
+
var d int = a + b + c
|
|
57
|
+
fmt.Println(d)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func main() {
|
|
62
|
+
Function1()
|
|
63
|
+
Function2()
|
|
64
|
+
Function3()
|
|
65
|
+
}
|
|
66
|
+
"#;
|
|
67
|
+
|
|
68
|
+
println!("Testing ancestor cache with different query scopes");
|
|
69
|
+
|
|
70
|
+
// Define different query scopes (line number sets)
|
|
71
|
+
let all_lines: HashSet<usize> = (1..=content.lines().count()).collect();
|
|
72
|
+
|
|
73
|
+
// Query 1: First function only (lines 6-16)
|
|
74
|
+
let mut query1_lines = HashSet::new();
|
|
75
|
+
for i in 6..=16 {
|
|
76
|
+
query1_lines.insert(i);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Query 2: Struct definition only (lines 19-26)
|
|
80
|
+
let mut query2_lines = HashSet::new();
|
|
81
|
+
for i in 19..=26 {
|
|
82
|
+
query2_lines.insert(i);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Query 3: Second function only (lines 29-38)
|
|
86
|
+
let mut query3_lines = HashSet::new();
|
|
87
|
+
for i in 29..=38 {
|
|
88
|
+
query3_lines.insert(i);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Query 4: Third function only (lines 41-50)
|
|
92
|
+
let mut query4_lines = HashSet::new();
|
|
93
|
+
for i in 41..=50 {
|
|
94
|
+
query4_lines.insert(i);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Run queries in sequence and measure performance
|
|
98
|
+
println!("\nRunning queries with different line number sets:");
|
|
99
|
+
|
|
100
|
+
// Query 1
|
|
101
|
+
let start = Instant::now();
|
|
102
|
+
let result1 = probe_code::language::parser::parse_file_for_code_blocks(
|
|
103
|
+
content,
|
|
104
|
+
"go",
|
|
105
|
+
&query1_lines,
|
|
106
|
+
true,
|
|
107
|
+
None,
|
|
108
|
+
);
|
|
109
|
+
assert!(
|
|
110
|
+
result1.is_ok(),
|
|
111
|
+
"Failed to parse file for query 1: {:?}",
|
|
112
|
+
result1.err()
|
|
113
|
+
);
|
|
114
|
+
let blocks1 = result1.unwrap();
|
|
115
|
+
let duration1 = start.elapsed();
|
|
116
|
+
println!(
|
|
117
|
+
" Query 1 (Function1): {:.6} seconds, extracted {} code blocks",
|
|
118
|
+
duration1.as_secs_f64(),
|
|
119
|
+
blocks1.len()
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
// Query 2
|
|
123
|
+
let start = Instant::now();
|
|
124
|
+
let result2 = probe_code::language::parser::parse_file_for_code_blocks(
|
|
125
|
+
content,
|
|
126
|
+
"go",
|
|
127
|
+
&query2_lines,
|
|
128
|
+
true,
|
|
129
|
+
None,
|
|
130
|
+
);
|
|
131
|
+
assert!(
|
|
132
|
+
result2.is_ok(),
|
|
133
|
+
"Failed to parse file for query 2: {:?}",
|
|
134
|
+
result2.err()
|
|
135
|
+
);
|
|
136
|
+
let blocks2 = result2.unwrap();
|
|
137
|
+
let duration2 = start.elapsed();
|
|
138
|
+
println!(
|
|
139
|
+
" Query 2 (ComplexStruct): {:.6} seconds, extracted {} code blocks",
|
|
140
|
+
duration2.as_secs_f64(),
|
|
141
|
+
blocks2.len()
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
// Query 3
|
|
145
|
+
let start = Instant::now();
|
|
146
|
+
let result3 = probe_code::language::parser::parse_file_for_code_blocks(
|
|
147
|
+
content,
|
|
148
|
+
"go",
|
|
149
|
+
&query3_lines,
|
|
150
|
+
true,
|
|
151
|
+
None,
|
|
152
|
+
);
|
|
153
|
+
assert!(
|
|
154
|
+
result3.is_ok(),
|
|
155
|
+
"Failed to parse file for query 3: {:?}",
|
|
156
|
+
result3.err()
|
|
157
|
+
);
|
|
158
|
+
let blocks3 = result3.unwrap();
|
|
159
|
+
let duration3 = start.elapsed();
|
|
160
|
+
println!(
|
|
161
|
+
" Query 3 (Function2): {:.6} seconds, extracted {} code blocks",
|
|
162
|
+
duration3.as_secs_f64(),
|
|
163
|
+
blocks3.len()
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
// Query 4
|
|
167
|
+
let start = Instant::now();
|
|
168
|
+
let result4 = probe_code::language::parser::parse_file_for_code_blocks(
|
|
169
|
+
content,
|
|
170
|
+
"go",
|
|
171
|
+
&query4_lines,
|
|
172
|
+
true,
|
|
173
|
+
None,
|
|
174
|
+
);
|
|
175
|
+
assert!(
|
|
176
|
+
result4.is_ok(),
|
|
177
|
+
"Failed to parse file for query 4: {:?}",
|
|
178
|
+
result4.err()
|
|
179
|
+
);
|
|
180
|
+
let blocks4 = result4.unwrap();
|
|
181
|
+
let duration4 = start.elapsed();
|
|
182
|
+
println!(
|
|
183
|
+
" Query 4 (Function3): {:.6} seconds, extracted {} code blocks",
|
|
184
|
+
duration4.as_secs_f64(),
|
|
185
|
+
blocks4.len()
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
// Full file query
|
|
189
|
+
let start = Instant::now();
|
|
190
|
+
let result_all = probe_code::language::parser::parse_file_for_code_blocks(
|
|
191
|
+
content, "go", &all_lines, true, None,
|
|
192
|
+
);
|
|
193
|
+
assert!(
|
|
194
|
+
result_all.is_ok(),
|
|
195
|
+
"Failed to parse file for full query: {:?}",
|
|
196
|
+
result_all.err()
|
|
197
|
+
);
|
|
198
|
+
let blocks_all = result_all.unwrap();
|
|
199
|
+
let duration_all = start.elapsed();
|
|
200
|
+
println!(
|
|
201
|
+
" Full file query: {:.6} seconds, extracted {} code blocks",
|
|
202
|
+
duration_all.as_secs_f64(),
|
|
203
|
+
blocks_all.len()
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
// Verify that the cache is working correctly by checking that the blocks extracted
|
|
207
|
+
// in the individual queries are consistent with those in the full file query
|
|
208
|
+
let total_blocks = blocks1.len() + blocks2.len() + blocks3.len() + blocks4.len();
|
|
209
|
+
|
|
210
|
+
// Account for potential overlaps in the extracted blocks
|
|
211
|
+
// In a perfect world, total_blocks would equal blocks_all.len(), but there might be
|
|
212
|
+
// some blocks that span multiple query regions or shared blocks
|
|
213
|
+
|
|
214
|
+
println!("\nVerification:");
|
|
215
|
+
println!(" Total blocks from individual queries: {total_blocks}");
|
|
216
|
+
println!(" Blocks from full file query: {}", blocks_all.len());
|
|
217
|
+
println!(" Note: Difference may be due to overlapping blocks or shared context");
|
|
218
|
+
|
|
219
|
+
// The test passes as long as we get results for all queries
|
|
220
|
+
// The actual verification is informational
|
|
221
|
+
}
|