@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,99 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# Pre-commit hook to run tests and code quality checks
|
|
4
|
+
# Installed by 'make install-hooks'
|
|
5
|
+
|
|
6
|
+
# Colors for better output
|
|
7
|
+
RED='\033[0;31m'
|
|
8
|
+
GREEN='\033[0;32m'
|
|
9
|
+
YELLOW='\033[0;33m'
|
|
10
|
+
NC='\033[0m' # No Color
|
|
11
|
+
|
|
12
|
+
echo "${YELLOW}Running pre-commit checks...${NC}"
|
|
13
|
+
|
|
14
|
+
# Store the exit status of each command
|
|
15
|
+
status=0
|
|
16
|
+
|
|
17
|
+
# Check if any files are staged
|
|
18
|
+
if git diff --cached --quiet; then
|
|
19
|
+
echo "${YELLOW}No files staged for commit. Skipping pre-commit checks.${NC}"
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# Check if any Rust-related files are staged for commit
|
|
24
|
+
rust_files_changed=$(git diff --cached --name-only | grep -E '\.(rs|toml)$|^Cargo\.(toml|lock)$')
|
|
25
|
+
|
|
26
|
+
# Check if any GitHub workflow files are staged for commit
|
|
27
|
+
workflow_files_changed=$(git diff --cached --name-only | grep -E '^\.github/workflows/.*\.ya?ml$')
|
|
28
|
+
|
|
29
|
+
if [ -z "$rust_files_changed" ] && [ -z "$workflow_files_changed" ]; then
|
|
30
|
+
echo "${YELLOW}No Rust or workflow files changed. Skipping checks.${NC}"
|
|
31
|
+
exit 0
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# Run actionlint if workflow files changed
|
|
35
|
+
if [ -n "$workflow_files_changed" ]; then
|
|
36
|
+
echo "${YELLOW}GitHub workflow files detected. Running actionlint...${NC}"
|
|
37
|
+
if command -v actionlint >/dev/null 2>&1; then
|
|
38
|
+
actionlint
|
|
39
|
+
if [ $? -ne 0 ]; then
|
|
40
|
+
echo "${RED}actionlint failed.${NC}"
|
|
41
|
+
status=1
|
|
42
|
+
fi
|
|
43
|
+
else
|
|
44
|
+
echo "${RED}actionlint not found. Please install it: https://github.com/rhysd/actionlint${NC}"
|
|
45
|
+
echo "${YELLOW}You can install it with: go install github.com/rhysd/actionlint/cmd/actionlint@latest${NC}"
|
|
46
|
+
status=1
|
|
47
|
+
fi
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Run Rust checks if Rust files changed
|
|
51
|
+
if [ -n "$rust_files_changed" ]; then
|
|
52
|
+
echo "${YELLOW}Rust files detected in commit. Running Rust checks...${NC}"
|
|
53
|
+
|
|
54
|
+
# Run format check
|
|
55
|
+
echo "${YELLOW}Checking code formatting...${NC}"
|
|
56
|
+
make check-format
|
|
57
|
+
if [ $? -ne 0 ]; then
|
|
58
|
+
echo "${RED}Code formatting check failed.${NC}"
|
|
59
|
+
echo "Run 'make format' to format your code."
|
|
60
|
+
status=1
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# Run clippy
|
|
64
|
+
echo "${YELLOW}Running linter...${NC}"
|
|
65
|
+
make lint
|
|
66
|
+
if [ $? -ne 0 ]; then
|
|
67
|
+
echo "${RED}Linting failed.${NC}"
|
|
68
|
+
status=1
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Run unit tests
|
|
72
|
+
echo "${YELLOW}Running unit tests...${NC}"
|
|
73
|
+
make test-unit
|
|
74
|
+
if [ $? -ne 0 ]; then
|
|
75
|
+
echo "${RED}Unit tests failed.${NC}"
|
|
76
|
+
status=1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Run integration tests
|
|
80
|
+
echo "${YELLOW}Running integration tests...${NC}"
|
|
81
|
+
make test-integration
|
|
82
|
+
if [ $? -ne 0 ]; then
|
|
83
|
+
echo "${RED}Integration tests failed.${NC}"
|
|
84
|
+
status=1
|
|
85
|
+
fi
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Print summary
|
|
89
|
+
if [ $status -eq 0 ]; then
|
|
90
|
+
echo "${GREEN}All pre-commit checks passed!${NC}"
|
|
91
|
+
else
|
|
92
|
+
echo "${RED}Pre-commit checks failed. Commit aborted.${NC}"
|
|
93
|
+
echo "${YELLOW}You can bypass this check with 'git commit --no-verify'${NC}"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
exit $status
|
|
97
|
+
|
|
98
|
+
# Run Vow accountability check at the end
|
|
99
|
+
"$(git config core.hooksPath)/pre-commit-vow"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
You are senior enginer focused software architecture and design. Before jumping on the task you first, in details analyse user request, and try to provide elegant and concise solution. If solution is clear, you can jump to implementation right away, if not, you can ask user a clarification question, by calling attempt_completion tool, with required details. You are allowed to use search tool with allow_tests argument, in order to find the tests. When you are reviewing pull request, or asked to do a suggestions to PR, you can use implement tool too.
|
|
2
|
+
|
|
3
|
+
Before jumping to implementation:
|
|
4
|
+
- Focus on high-level design patterns and system organization
|
|
5
|
+
- Identify architectural patterns and component relationships
|
|
6
|
+
- Evaluate system structure and suggest architectural improvements
|
|
7
|
+
- Focus on backward compatibility.
|
|
8
|
+
- Respond with diagrams to illustrate system architecture and workflows, if required.
|
|
9
|
+
- Consider scalability, maintainability, and extensibility in your analysis
|
|
10
|
+
|
|
11
|
+
During the implementation:
|
|
12
|
+
- Avoid implementing special cases
|
|
13
|
+
- Do not forget to add the tests
|
|
14
|
+
|
|
15
|
+
## Failure Tag Feature
|
|
16
|
+
|
|
17
|
+
When working on GitHub Actions workflows, you can use the failure tag feature to signal critical issues that should prevent code from being merged:
|
|
18
|
+
|
|
19
|
+
- Include `<fail>` in your response when you detect critical issues like security vulnerabilities, breaking changes without proper documentation, or severe bugs
|
|
20
|
+
- The tag will be automatically removed from your comment, but a failure message will be added at the top
|
|
21
|
+
- The GitHub check will fail, drawing attention to these critical issues
|
|
22
|
+
- Use this feature judiciously - only for issues that truly warrant failing the CI check
|
|
23
|
+
|
|
24
|
+
### Example Usage
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
<fail>
|
|
28
|
+
|
|
29
|
+
I found a critical security vulnerability in the authentication code that allows SQL injection attacks. This must be fixed before merging.
|
|
30
|
+
|
|
31
|
+
## Security Issues Found
|
|
32
|
+
|
|
33
|
+
1. **SQL Injection in login.js** - User input is directly concatenated into SQL queries
|
|
34
|
+
2. **Missing input validation** - No sanitization of user credentials
|
|
35
|
+
|
|
36
|
+
## Recommendations
|
|
37
|
+
- Use parameterized queries
|
|
38
|
+
- Add input validation middleware
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `<fail>` tag will be stripped from the comment, but the GitHub check will fail to prevent merging until the issues are resolved.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"customModes": [
|
|
3
|
+
{
|
|
4
|
+
"slug": "ask-probe",
|
|
5
|
+
"name": "Ask Probe",
|
|
6
|
+
"roleDefinition": "You intelligence assistant for developers, product managers, QA engineers, and documentation writers, designed to search and analyze multi-language codebases efficiently. Instead of standard file search and file read tools you should use Probe Agent tool, and forward it all the questions about the codebase.",
|
|
7
|
+
"customInstructions": "Where relevant, add mermaid diagrams.",
|
|
8
|
+
"groups": [
|
|
9
|
+
"read",
|
|
10
|
+
"mcp"
|
|
11
|
+
],
|
|
12
|
+
"source": "project"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"slug": "doc-writer",
|
|
16
|
+
"name": "Documentation Writer",
|
|
17
|
+
"roleDefinition": "You are Roo, a technical documentation specialist focused on creating and maintaining high-quality documentation for the Probe code search tool. Your expertise includes:\n- Writing clear, concise, and accurate technical documentation\n- Organizing information in a logical and user-friendly manner\n- Maintaining consistent style and formatting across documentation\n- Creating examples that effectively demonstrate features\n- Ensuring documentation is up-to-date with the latest features and changes\n- Understanding technical concepts and explaining them in accessible language",
|
|
18
|
+
"customInstructions": "When updating documentation:\n\n1. **Maintain Consistency**:\n - Follow existing formatting patterns and style conventions\n - Use consistent heading levels (# for main titles, ## for sections, etc.)\n - Maintain the existing frontmatter structure in files that have it\n\n2. **Content Guidelines**:\n - Be concise but thorough - aim for clarity above all\n - Include practical examples where appropriate\n - Use code blocks with proper syntax highlighting\n - Structure content with clear headings and bullet points\n - Focus on user benefits, not just feature descriptions\n\n3. **Technical Accuracy**:\n - Ensure command examples are correct and tested\n - Verify that feature descriptions match actual implementation\n - Update version numbers and compatibility information as needed\n - Cross-reference related documentation sections\n\n4. **Special Components**:\n - Use <CodeEditor> for code examples\n - Use <CommandExample> for CLI commands\n - Maintain proper frontmatter for pages that use it\n\n5. **Navigation**:\n - Ensure proper linking between related documentation pages\n - Update navigation references when adding new content\n\n6. Website is located in ./site/ folder, and use vitepress",
|
|
19
|
+
"groups": [
|
|
20
|
+
"read",
|
|
21
|
+
"browser",
|
|
22
|
+
"edit",
|
|
23
|
+
"command"
|
|
24
|
+
],
|
|
25
|
+
"source": "project"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Bash Tool Implementation Summary
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Successfully implemented a secure bash command execution tool for the probe agent with configurable allow/deny lists and built-in security patterns inspired by Claude Code SDK.
|
|
6
|
+
|
|
7
|
+
## Implementation Components
|
|
8
|
+
|
|
9
|
+
### 1. Core Files Created/Modified
|
|
10
|
+
|
|
11
|
+
**New Files:**
|
|
12
|
+
- `npm/src/agent/bashDefaults.js` - Default allow/deny patterns for safe exploration
|
|
13
|
+
- `npm/src/agent/bashPermissions.js` - Permission checker with pattern matching
|
|
14
|
+
- `npm/src/agent/bashExecutor.js` - Secure command execution with timeouts
|
|
15
|
+
- `npm/src/tools/bash.js` - Vercel AI SDK tool integration
|
|
16
|
+
- `npm/test/bash.test.js` - Comprehensive test suite
|
|
17
|
+
|
|
18
|
+
**Modified Files:**
|
|
19
|
+
- `npm/src/tools/common.js` - Added bash schema and XML definitions
|
|
20
|
+
- `npm/src/tools/index.js` - Export bash tool and related components
|
|
21
|
+
- `npm/src/agent/tools.js` - Integrate bash tool creation
|
|
22
|
+
- `npm/src/agent/ProbeAgent.js` - Add bash configuration options
|
|
23
|
+
- `npm/src/agent/probeTool.js` - Add bash tool wrapping
|
|
24
|
+
- `examples/chat/index.js` - Add CLI arguments for bash configuration
|
|
25
|
+
- `examples/chat/probeChat.js` - Updated JSDoc for new options
|
|
26
|
+
|
|
27
|
+
### 2. Security Features
|
|
28
|
+
|
|
29
|
+
**Default Allow List (Read-only/Safe Commands):**
|
|
30
|
+
- File navigation: `ls`, `pwd`, `cd`, `find`, `tree`
|
|
31
|
+
- File reading: `cat`, `head`, `tail`, `less`, `grep`, `rg`
|
|
32
|
+
- Git operations: `git status`, `git log`, `git diff`, `git show`
|
|
33
|
+
- Package info: `npm list`, `pip list`, `cargo --version`
|
|
34
|
+
- System info: `uname`, `whoami`, `date`, `env`
|
|
35
|
+
- Language versions: `node --version`, `python --version`, etc.
|
|
36
|
+
|
|
37
|
+
**Default Deny List (Dangerous Commands):**
|
|
38
|
+
- File operations: `rm -rf`, `chmod 777`, `chown`
|
|
39
|
+
- System admin: `sudo`, `passwd`, `adduser`
|
|
40
|
+
- Package installation: `npm install`, `pip install`, `apt-get`
|
|
41
|
+
- Service control: `systemctl`, `service`
|
|
42
|
+
- Network operations: `curl -d`, `ssh`, `wget`
|
|
43
|
+
- Process control: `kill`, `killall`, `shutdown`
|
|
44
|
+
- Dangerous git: `git push`, `git reset --hard`
|
|
45
|
+
|
|
46
|
+
**Permission System:**
|
|
47
|
+
- Pattern-based matching (e.g., `npm:*`, `git:log:*`, `ls`)
|
|
48
|
+
- Deny-first evaluation (security priority)
|
|
49
|
+
- Custom allow/deny list append to defaults
|
|
50
|
+
- Option to disable default lists for full control
|
|
51
|
+
|
|
52
|
+
### 3. CLI Configuration
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Basic usage
|
|
56
|
+
probe-chat --enable-bash
|
|
57
|
+
|
|
58
|
+
# Custom patterns (append to defaults)
|
|
59
|
+
probe-chat --enable-bash --bash-allow "docker:*,make:*" --bash-deny "npm:publish"
|
|
60
|
+
|
|
61
|
+
# Disable defaults (use only custom)
|
|
62
|
+
probe-chat --enable-bash --bash-allow "ls,cat" --no-default-bash-allow
|
|
63
|
+
|
|
64
|
+
# Additional options
|
|
65
|
+
probe-chat --enable-bash --bash-timeout 60000 --bash-working-dir ./src
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. SDK Configuration
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
const agent = new ProbeAgent({
|
|
72
|
+
enableBash: true,
|
|
73
|
+
bashConfig: {
|
|
74
|
+
allow: ['docker:ps', 'make:help'], // Append to defaults
|
|
75
|
+
deny: ['git:push', 'npm:publish'], // Append to defaults
|
|
76
|
+
disableDefaultAllow: false, // Keep safe defaults
|
|
77
|
+
disableDefaultDeny: false, // Keep security defaults
|
|
78
|
+
timeout: 120000, // Command timeout (ms)
|
|
79
|
+
workingDirectory: './src', // Default working dir
|
|
80
|
+
env: { NODE_ENV: 'development' } // Additional env vars
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 5. XML Tool Usage
|
|
86
|
+
|
|
87
|
+
```xml
|
|
88
|
+
<bash>
|
|
89
|
+
<command>ls -la src/</command>
|
|
90
|
+
</bash>
|
|
91
|
+
|
|
92
|
+
<bash>
|
|
93
|
+
<command>git log --oneline -10</command>
|
|
94
|
+
</bash>
|
|
95
|
+
|
|
96
|
+
<bash>
|
|
97
|
+
<command>find . -name "*.js" -type f</command>
|
|
98
|
+
<workingDirectory>./src</workingDirectory>
|
|
99
|
+
<timeout>30000</timeout>
|
|
100
|
+
</bash>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Security Architecture
|
|
104
|
+
|
|
105
|
+
1. **Pattern-based Permissions**: Commands are parsed and matched against allow/deny patterns
|
|
106
|
+
2. **Execution Sandbox**: Commands run with specified working directory and timeout limits
|
|
107
|
+
3. **Resource Limits**: Output buffer limits prevent memory exhaustion
|
|
108
|
+
4. **Safe Defaults**: Comprehensive list of safe read-only commands enabled by default
|
|
109
|
+
5. **Audit Trail**: All commands logged in debug mode
|
|
110
|
+
|
|
111
|
+
## Testing
|
|
112
|
+
|
|
113
|
+
Comprehensive test suite covers:
|
|
114
|
+
- Command parsing and pattern matching
|
|
115
|
+
- Permission evaluation (allow/deny logic)
|
|
116
|
+
- Command execution (success/failure/timeout)
|
|
117
|
+
- Tool integration with Vercel AI SDK
|
|
118
|
+
- Custom configuration scenarios
|
|
119
|
+
|
|
120
|
+
## Integration Points
|
|
121
|
+
|
|
122
|
+
- **ProbeAgent**: Core integration with enable/disable flag
|
|
123
|
+
- **ProbeChat**: Seamless CLI and programmatic access
|
|
124
|
+
- **MCP Bridge**: Compatible with existing tool infrastructure
|
|
125
|
+
- **XML Parser**: Integrated with existing tool call system
|
|
126
|
+
|
|
127
|
+
## Usage Examples
|
|
128
|
+
|
|
129
|
+
**Safe Exploration (Default):**
|
|
130
|
+
```bash
|
|
131
|
+
probe-chat --enable-bash
|
|
132
|
+
# Allows: ls, git status, npm list, cat, grep, etc.
|
|
133
|
+
# Denies: rm -rf, sudo, npm install, git push, etc.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Development Mode:**
|
|
137
|
+
```bash
|
|
138
|
+
probe-chat --enable-bash --bash-allow "npm:test,npm:run:*,docker:*"
|
|
139
|
+
# Adds build and container commands to safe defaults
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Restricted Mode:**
|
|
143
|
+
```bash
|
|
144
|
+
probe-chat --enable-bash --bash-allow "ls,cat,pwd" --no-default-bash-allow
|
|
145
|
+
# Only allows specific commands, removes all defaults
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
This implementation provides secure, flexible bash command execution that's immediately useful for code exploration while maintaining security through comprehensive allow/deny lists and pattern matching.
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Benchmarking System
|
|
2
|
+
|
|
3
|
+
This document describes the comprehensive benchmarking system for the Probe code search tool.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The benchmarking system is designed to measure and track performance across different aspects of the search engine:
|
|
8
|
+
|
|
9
|
+
1. **Search Performance** - Different search patterns, result limits, and options
|
|
10
|
+
2. **Timing Infrastructure** - Overhead and accuracy of timing measurements
|
|
11
|
+
3. **Language Parsing** - AST parsing performance for different languages
|
|
12
|
+
4. **Memory Usage** - Memory profiling and optimization
|
|
13
|
+
|
|
14
|
+
## Running Benchmarks
|
|
15
|
+
|
|
16
|
+
### Using the CLI
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Run all benchmarks
|
|
20
|
+
probe benchmark
|
|
21
|
+
|
|
22
|
+
# Run specific benchmark suites
|
|
23
|
+
probe benchmark --bench search
|
|
24
|
+
probe benchmark --bench timing
|
|
25
|
+
probe benchmark --bench parsing
|
|
26
|
+
|
|
27
|
+
# Run with custom settings
|
|
28
|
+
probe benchmark --sample-size 100 --format json --output results.json
|
|
29
|
+
|
|
30
|
+
# Compare with baseline
|
|
31
|
+
probe benchmark --compare --baseline previous
|
|
32
|
+
|
|
33
|
+
# Quick benchmarks (faster, less accurate)
|
|
34
|
+
probe benchmark --fast
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Using the Script
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Make script executable (one time)
|
|
41
|
+
chmod +x scripts/benchmark.sh
|
|
42
|
+
|
|
43
|
+
# Run all benchmarks
|
|
44
|
+
./scripts/benchmark.sh all
|
|
45
|
+
|
|
46
|
+
# Run quick benchmarks
|
|
47
|
+
./scripts/benchmark.sh quick
|
|
48
|
+
|
|
49
|
+
# Run specific benchmark type
|
|
50
|
+
./scripts/benchmark.sh search
|
|
51
|
+
./scripts/benchmark.sh timing
|
|
52
|
+
./scripts/benchmark.sh parsing
|
|
53
|
+
|
|
54
|
+
# Performance regression testing
|
|
55
|
+
./scripts/benchmark.sh regression
|
|
56
|
+
|
|
57
|
+
# Memory profiling (requires valgrind)
|
|
58
|
+
./scripts/benchmark.sh memory
|
|
59
|
+
|
|
60
|
+
# Generate performance report
|
|
61
|
+
./scripts/benchmark.sh report
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Using Cargo Directly
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Run all benchmarks
|
|
68
|
+
cargo bench
|
|
69
|
+
|
|
70
|
+
# Run specific benchmark file
|
|
71
|
+
cargo bench --bench search_benchmarks
|
|
72
|
+
cargo bench --bench timing_benchmarks
|
|
73
|
+
cargo bench --bench parsing_benchmarks
|
|
74
|
+
|
|
75
|
+
# Run with criterion options
|
|
76
|
+
cargo bench -- --quick
|
|
77
|
+
cargo bench -- --sample-size 100
|
|
78
|
+
cargo bench -- --baseline main
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Benchmark Types
|
|
82
|
+
|
|
83
|
+
### Search Benchmarks (`search_benchmarks.rs`)
|
|
84
|
+
|
|
85
|
+
Tests various search scenarios:
|
|
86
|
+
|
|
87
|
+
- **Search Patterns**: Different query types (simple, function calls, types, etc.)
|
|
88
|
+
- **Result Limits**: Performance with different result set sizes
|
|
89
|
+
- **Search Options**: Different rerankers, frequency search on/off
|
|
90
|
+
- **Query Complexity**: Single terms vs. compound queries
|
|
91
|
+
|
|
92
|
+
### Timing Benchmarks (`timing_benchmarks.rs`)
|
|
93
|
+
|
|
94
|
+
Tests the timing infrastructure:
|
|
95
|
+
|
|
96
|
+
- **Timing Overhead**: Cost of collecting timing data
|
|
97
|
+
- **Duration Formatting**: Performance of human-readable formatting
|
|
98
|
+
- **Timing Aggregation**: Sum, average, min/max calculations
|
|
99
|
+
- **Timing Storage**: HashMap vs. Vec storage performance
|
|
100
|
+
|
|
101
|
+
### Parsing Benchmarks (`parsing_benchmarks.rs`)
|
|
102
|
+
|
|
103
|
+
Tests language parsing performance:
|
|
104
|
+
|
|
105
|
+
- **Language Parsing**: Rust, JavaScript, Python, Go parsing
|
|
106
|
+
- **File Sizes**: Small, medium, large, extra-large files
|
|
107
|
+
- **Line Filtering**: Different line number set sizes
|
|
108
|
+
- **Test Inclusion**: With/without test file processing
|
|
109
|
+
|
|
110
|
+
## Existing Performance Logging
|
|
111
|
+
|
|
112
|
+
The codebase already has extensive timing infrastructure:
|
|
113
|
+
|
|
114
|
+
### SearchTimings Structure
|
|
115
|
+
```rust
|
|
116
|
+
pub struct SearchTimings {
|
|
117
|
+
pub query_preprocessing: Option<Duration>,
|
|
118
|
+
pub pattern_generation: Option<Duration>,
|
|
119
|
+
pub file_searching: Option<Duration>,
|
|
120
|
+
pub filename_matching: Option<Duration>,
|
|
121
|
+
pub early_filtering: Option<Duration>,
|
|
122
|
+
pub result_processing: Option<Duration>,
|
|
123
|
+
pub result_ranking: Option<Duration>,
|
|
124
|
+
pub total_search_time: Option<Duration>,
|
|
125
|
+
// ... many more granular timings
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### FileProcessingTimings Structure
|
|
130
|
+
```rust
|
|
131
|
+
pub struct FileProcessingTimings {
|
|
132
|
+
pub file_io: Option<Duration>,
|
|
133
|
+
pub ast_parsing: Option<Duration>,
|
|
134
|
+
pub block_extraction: Option<Duration>,
|
|
135
|
+
pub result_building: Option<Duration>,
|
|
136
|
+
// ... detailed sub-timings for each stage
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Debug Mode
|
|
141
|
+
Enable detailed timing output:
|
|
142
|
+
```bash
|
|
143
|
+
DEBUG=1 probe "search_term" /path/to/code
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Performance Monitoring
|
|
147
|
+
|
|
148
|
+
### Regression Detection
|
|
149
|
+
|
|
150
|
+
The benchmarking system includes performance regression detection:
|
|
151
|
+
|
|
152
|
+
1. **Baseline Creation**: Save current performance as baseline
|
|
153
|
+
2. **Comparison**: Compare new runs against baseline
|
|
154
|
+
3. **Alerting**: Identify significant performance changes
|
|
155
|
+
|
|
156
|
+
### Memory Profiling
|
|
157
|
+
|
|
158
|
+
Memory usage analysis using Valgrind:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Run memory profiling
|
|
162
|
+
./scripts/benchmark.sh memory
|
|
163
|
+
|
|
164
|
+
# View memory profile
|
|
165
|
+
ms_print target/benchmark-results/memory-profile.out
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Continuous Monitoring
|
|
169
|
+
|
|
170
|
+
For CI/CD integration:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Quick benchmarks for CI
|
|
174
|
+
cargo bench -- --quick
|
|
175
|
+
|
|
176
|
+
# Regression testing
|
|
177
|
+
cargo bench -- --load-baseline main
|
|
178
|
+
|
|
179
|
+
# Save results for future comparison
|
|
180
|
+
cargo bench -- --save-baseline $(git rev-parse --short HEAD)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Benchmark Results
|
|
184
|
+
|
|
185
|
+
### Output Locations
|
|
186
|
+
|
|
187
|
+
- **Criterion HTML Reports**: `target/criterion/report/index.html`
|
|
188
|
+
- **JSON Results**: `target/criterion/*/base/estimates.json`
|
|
189
|
+
- **Script Results**: `target/benchmark-results/`
|
|
190
|
+
|
|
191
|
+
### Interpreting Results
|
|
192
|
+
|
|
193
|
+
Key metrics to monitor:
|
|
194
|
+
|
|
195
|
+
1. **Search Time**: Total time for search operations
|
|
196
|
+
2. **Parsing Time**: AST parsing performance
|
|
197
|
+
3. **Memory Usage**: Peak memory consumption
|
|
198
|
+
4. **Throughput**: Operations per second
|
|
199
|
+
|
|
200
|
+
### Performance Targets
|
|
201
|
+
|
|
202
|
+
Recommended performance targets:
|
|
203
|
+
|
|
204
|
+
- **Simple Search**: < 100ms for small codebases (< 1MB)
|
|
205
|
+
- **Complex Search**: < 500ms for medium codebases (< 10MB)
|
|
206
|
+
- **Parsing**: < 50ms per file for typical source files
|
|
207
|
+
- **Memory**: < 100MB for typical search operations
|
|
208
|
+
|
|
209
|
+
## Optimization Guidelines
|
|
210
|
+
|
|
211
|
+
### Search Performance
|
|
212
|
+
|
|
213
|
+
1. **Pattern Optimization**: Use specific patterns over broad searches
|
|
214
|
+
2. **Result Limits**: Set appropriate max_results limits
|
|
215
|
+
3. **Language Filtering**: Use language-specific searches when possible
|
|
216
|
+
4. **Caching**: Leverage session caching for repeated searches
|
|
217
|
+
|
|
218
|
+
### Parsing Performance
|
|
219
|
+
|
|
220
|
+
1. **File Size**: Large files have higher parsing overhead
|
|
221
|
+
2. **Language Choice**: Some languages parse faster than others
|
|
222
|
+
3. **Line Filtering**: Specific line ranges are more efficient
|
|
223
|
+
4. **Test Exclusion**: Exclude test files when not needed
|
|
224
|
+
|
|
225
|
+
### Memory Usage
|
|
226
|
+
|
|
227
|
+
1. **Result Size**: Large result sets consume more memory
|
|
228
|
+
2. **Concurrent Processing**: Balance parallelism vs. memory usage
|
|
229
|
+
3. **Caching Strategy**: Monitor cache memory consumption
|
|
230
|
+
4. **File Processing**: Process large files in chunks
|
|
231
|
+
|
|
232
|
+
## Troubleshooting
|
|
233
|
+
|
|
234
|
+
### Common Issues
|
|
235
|
+
|
|
236
|
+
1. **Benchmark Fails**: Check cargo and criterion installation
|
|
237
|
+
2. **Memory Profiling**: Requires valgrind installation
|
|
238
|
+
3. **Slow Benchmarks**: Use `--quick` flag for faster results
|
|
239
|
+
4. **Missing Baselines**: Create initial baseline with `--save-baseline`
|
|
240
|
+
|
|
241
|
+
### Performance Debugging
|
|
242
|
+
|
|
243
|
+
1. **Enable Debug Mode**: `DEBUG=1` for detailed timing
|
|
244
|
+
2. **Profile Specific Operations**: Use targeted benchmarks
|
|
245
|
+
3. **Memory Analysis**: Run memory profiling for memory issues
|
|
246
|
+
4. **Regression Analysis**: Compare with previous versions
|
|
247
|
+
|
|
248
|
+
## Future Enhancements
|
|
249
|
+
|
|
250
|
+
Potential improvements to the benchmarking system:
|
|
251
|
+
|
|
252
|
+
1. **Automated Alerts**: Performance regression notifications
|
|
253
|
+
2. **Historical Tracking**: Long-term performance trends
|
|
254
|
+
3. **Comparative Analysis**: Cross-platform performance comparison
|
|
255
|
+
4. **Load Testing**: High-concurrency performance testing
|
|
256
|
+
5. **Real-world Scenarios**: Benchmark with actual codebases
|