@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,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
#––– Claude Hook Wrapper –––––––––––––––––––––––––––––––––––––––––––––––––
|
|
5
|
+
# Generic wrapper that runs any command and formats output for Claude Code
|
|
6
|
+
# Usage: ./scripts/claude-hook-wrapper.sh <command> [args...]
|
|
7
|
+
#
|
|
8
|
+
# Returns JSON with:
|
|
9
|
+
# - decision: "approve" if command exits with 0, "block" otherwise
|
|
10
|
+
# - reason: Success message or command output on failure
|
|
11
|
+
|
|
12
|
+
#––– CONSTANTS ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
|
|
13
|
+
readonly PASS='approve'
|
|
14
|
+
readonly FAIL='block'
|
|
15
|
+
|
|
16
|
+
#––– SHORT-CIRCUIT WHEN NESTED ––––––––––––––––––––––––––––––––––––––––––
|
|
17
|
+
if [[ ${CLAUDE_STOP_HOOK_ACTIVE:-false} == "true" ]]; then
|
|
18
|
+
printf '{"decision":"%s"}\n' "$PASS"
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
#––– CHANGE TO REPOSITORY ROOT –––––––––––––––––––––––––––––––––––––––––
|
|
23
|
+
# This ensures relative paths work correctly regardless of where Claude runs the hook
|
|
24
|
+
cd "$(dirname "$0")/.."
|
|
25
|
+
|
|
26
|
+
#––– VALIDATE ARGUMENTS –––––––––––––––––––––––––––––––––––––––––––––––––
|
|
27
|
+
if [[ $# -eq 0 ]]; then
|
|
28
|
+
printf '{"decision":"%s","reason":"Error: No command provided to claude-hook-wrapper.sh"}\n' "$FAIL"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
#––– JSON ESCAPE FUNCTION ––––––––––––––––––––––––––––––––––––––––––––––
|
|
33
|
+
json_escape() {
|
|
34
|
+
if command -v jq >/dev/null 2>&1; then
|
|
35
|
+
jq -Rs '.' <<<"$1"
|
|
36
|
+
else
|
|
37
|
+
# Fallback if jq is not available
|
|
38
|
+
printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g; s/ /\\t/g' | awk '{gsub(/\r/,"\\r"); gsub(/\n/,"\\n"); printf "%s\\n", $0}' | sed '$ s/\\n$//'
|
|
39
|
+
fi
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#––– RUN COMMAND ––––––––––––––––––––––––––––––––––––––––––––––––––––––––
|
|
43
|
+
# Capture both stdout and stderr
|
|
44
|
+
output=$(mktemp)
|
|
45
|
+
trap 'rm -f "$output"' EXIT
|
|
46
|
+
|
|
47
|
+
# Run the command, capturing all output
|
|
48
|
+
if "$@" >"$output" 2>&1; then
|
|
49
|
+
# Command succeeded
|
|
50
|
+
printf '{"decision":"%s","reason":"✅ %s completed successfully!"}\n' "$PASS" "$1"
|
|
51
|
+
else
|
|
52
|
+
# Command failed - include the output in the reason
|
|
53
|
+
exit_code=$?
|
|
54
|
+
reason=$(printf "❌ %s failed with exit code %d!\n\nOutput:\n%s\n\n💡 Please fix the issues above and try again." "$1" "$exit_code" "$(<"$output")")
|
|
55
|
+
printf '{"decision":"%s","reason":%s}\n' "$FAIL" "$(json_escape "$reason")"
|
|
56
|
+
fi
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Environment variables for Cloudflare Pages deployment
|
|
2
|
+
# Copy this to .env and configure as needed
|
|
3
|
+
|
|
4
|
+
# Cloudflare configuration (optional)
|
|
5
|
+
# CLOUDFLARE_ACCOUNT_ID=your-account-id
|
|
6
|
+
# CLOUDFLARE_API_TOKEN=your-api-token
|
|
7
|
+
|
|
8
|
+
# Build configuration
|
|
9
|
+
NODE_VERSION=20
|
|
10
|
+
NPM_VERSION=latest
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Cloudflare Pages Deployment
|
|
2
|
+
|
|
3
|
+
This documentation site is deployed using Cloudflare Pages with automatic deployments from the main branch to **probelabs.com**.
|
|
4
|
+
|
|
5
|
+
## Deployment Configuration
|
|
6
|
+
|
|
7
|
+
### Files
|
|
8
|
+
- `wrangler.toml` - Cloudflare Pages configuration
|
|
9
|
+
- `public/_headers` - HTTP headers for security and caching
|
|
10
|
+
- `public/_redirects` - URL redirect rules
|
|
11
|
+
- `.env.example` - Environment variable template
|
|
12
|
+
|
|
13
|
+
### Build Settings
|
|
14
|
+
- **Build command**: `npm run build`
|
|
15
|
+
- **Build output directory**: `.vitepress/dist`
|
|
16
|
+
- **Root directory**: `site`
|
|
17
|
+
- **Node.js version**: 20
|
|
18
|
+
|
|
19
|
+
## Setup Instructions
|
|
20
|
+
|
|
21
|
+
### 1. Cloudflare Pages Setup
|
|
22
|
+
1. Go to [Cloudflare Pages](https://pages.cloudflare.com/)
|
|
23
|
+
2. Connect your GitHub repository
|
|
24
|
+
3. Configure the build settings:
|
|
25
|
+
- **Project name**: `probe-docs`
|
|
26
|
+
- **Production branch**: `main`
|
|
27
|
+
- **Build command**: `npm run build`
|
|
28
|
+
- **Build output directory**: `.vitepress/dist`
|
|
29
|
+
- **Root directory**: `site`
|
|
30
|
+
|
|
31
|
+
### 2. Environment Variables
|
|
32
|
+
Set these in Cloudflare Pages dashboard if needed:
|
|
33
|
+
- `NODE_VERSION`: `20`
|
|
34
|
+
- `NPM_VERSION`: `latest`
|
|
35
|
+
|
|
36
|
+
### 3. Custom Domain Setup
|
|
37
|
+
The site is configured to deploy to **probelabs.com**. To set this up:
|
|
38
|
+
|
|
39
|
+
1. In Cloudflare Pages dashboard, go to Custom domains
|
|
40
|
+
2. Add the domain `probelabs.com`
|
|
41
|
+
3. Add a redirect from `www.probelabs.com` to `probelabs.com` (already configured in `_redirects`)
|
|
42
|
+
4. Update your DNS records:
|
|
43
|
+
- **A Record**: `probelabs.com` → Your Cloudflare Pages IP
|
|
44
|
+
- **CNAME**: `www.probelabs.com` → `probelabs.com`
|
|
45
|
+
5. The domain configuration is already set in `wrangler.toml`
|
|
46
|
+
|
|
47
|
+
## Build Process
|
|
48
|
+
|
|
49
|
+
The site builds automatically when:
|
|
50
|
+
- Code is pushed to the `main` branch
|
|
51
|
+
- Pull requests are created (preview deployments)
|
|
52
|
+
|
|
53
|
+
### Local Development
|
|
54
|
+
```bash
|
|
55
|
+
cd site
|
|
56
|
+
npm install
|
|
57
|
+
npm run dev
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Local Build Test
|
|
61
|
+
```bash
|
|
62
|
+
cd site
|
|
63
|
+
npm run build
|
|
64
|
+
npm run preview
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Troubleshooting
|
|
68
|
+
|
|
69
|
+
### Common Issues
|
|
70
|
+
1. **Build fails**: Check Node.js version is 20
|
|
71
|
+
2. **Assets not loading**: Verify `public/` directory structure
|
|
72
|
+
3. **404 errors**: Check `_redirects` file configuration
|
|
73
|
+
|
|
74
|
+
### Logs
|
|
75
|
+
Build logs are available in the Cloudflare Pages dashboard under the deployment details.
|
|
76
|
+
|
|
77
|
+
## Migration Notes
|
|
78
|
+
|
|
79
|
+
This site was migrated from GitHub Pages. The old workflow file has been disabled and renamed to `vitepress-gh-pages.yml.disabled`.
|
|
80
|
+
|
|
81
|
+
## Performance Features
|
|
82
|
+
|
|
83
|
+
- **Edge deployment**: Served from Cloudflare's global edge network
|
|
84
|
+
- **Automatic HTTPS**: SSL certificates managed automatically
|
|
85
|
+
- **Caching**: Optimized caching headers for static assets
|
|
86
|
+
- **Security headers**: CSP and security headers configured
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Probe Documentation Site
|
|
2
|
+
|
|
3
|
+
This directory contains the VitePress-powered documentation site for the Probe project. This README provides information about the documentation structure, how to contribute, and how to maintain the documentation.
|
|
4
|
+
|
|
5
|
+
## Documentation Structure
|
|
6
|
+
|
|
7
|
+
The documentation is organized into several main sections:
|
|
8
|
+
|
|
9
|
+
- **Getting Started**: Quick Start, Installation, Core Features
|
|
10
|
+
- **Core Functionality**: How It Works, Search Functionality, Code Extraction, CLI Mode
|
|
11
|
+
- **AI Integration**: AI Integration Overview, AI Chat Mode, MCP Server, MCP Integration, Node.js SDK, Web Interface
|
|
12
|
+
- **Language Support**: Language Support Overview, Supported Languages, Adding Languages
|
|
13
|
+
|
|
14
|
+
For a complete overview of the documentation structure, see [documentation-maintenance.md](./documentation-maintenance.md).
|
|
15
|
+
|
|
16
|
+
## Key Documentation Files
|
|
17
|
+
|
|
18
|
+
- **index.md**: Main landing page with feature highlights
|
|
19
|
+
- **quick-start.md**: Getting started guide
|
|
20
|
+
- **installation.md**: Detailed installation instructions
|
|
21
|
+
- **features.md**: Overview of core features
|
|
22
|
+
- **how-it-works.md**: Technical explanation of Probe's architecture
|
|
23
|
+
- **ai-integration.md**: Overview of AI integration capabilities
|
|
24
|
+
- **language-support-overview.md**: Overview of language support features
|
|
25
|
+
- **documentation-guide.md**: Guide for users on how to use the documentation
|
|
26
|
+
- **documentation-maintenance.md**: Technical guide for documentation maintainers
|
|
27
|
+
|
|
28
|
+
## Cross-References
|
|
29
|
+
|
|
30
|
+
The documentation uses cross-references to help users navigate between related topics. For a complete guide on cross-references and documentation maintenance, see [documentation-maintenance.md](./documentation-maintenance.md).
|
|
31
|
+
|
|
32
|
+
When adding new documentation or updating existing documentation, please ensure that cross-references are maintained and updated as needed.
|
|
33
|
+
|
|
34
|
+
## Defining Features in index.md
|
|
35
|
+
|
|
36
|
+
The `index.md` file supports a custom features section that can be defined in the frontmatter. Each feature can have the following properties:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
features:
|
|
40
|
+
- icon: 🔎 # Emoji icon (optional if image is provided)
|
|
41
|
+
title: Feature Title # Required
|
|
42
|
+
details: Feature description # Required
|
|
43
|
+
link: /page-link # Optional link to another page
|
|
44
|
+
linkText: Learn more # Optional custom text for the link (defaults to "Learn more")
|
|
45
|
+
theme: alt # Optional theme (alt, brand, or default)
|
|
46
|
+
image: /icons/my-icon.svg # Optional image path (replaces the emoji icon)
|
|
47
|
+
highlight: true # Optional boolean to highlight the feature
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Example Feature Definition
|
|
51
|
+
|
|
52
|
+
Here's an example of how to define features in the index.md frontmatter:
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
---
|
|
56
|
+
layout: home
|
|
57
|
+
|
|
58
|
+
hero:
|
|
59
|
+
name: "Probe"
|
|
60
|
+
text: "Local, AI-ready\nCode Exploration"
|
|
61
|
+
tagline: "Open-source tooling that truly understands your codebase."
|
|
62
|
+
|
|
63
|
+
features:
|
|
64
|
+
- icon: 🔎
|
|
65
|
+
title: AST-Aware Code Search
|
|
66
|
+
details: Search your code with semantic understanding. Find functions, classes, and patterns across your entire codebase.
|
|
67
|
+
link: /how-it-works
|
|
68
|
+
linkText: Learn how it works
|
|
69
|
+
highlight: true
|
|
70
|
+
|
|
71
|
+
- icon: ⚡
|
|
72
|
+
title: Lightning Fast
|
|
73
|
+
details: Built on ripgrep and tree-sitter for blazing fast performance. No indexing needed.
|
|
74
|
+
theme: alt
|
|
75
|
+
|
|
76
|
+
- icon: 🔒
|
|
77
|
+
title: 100% Local & Private
|
|
78
|
+
details: Your code stays on your machine. Perfect for sensitive projects.
|
|
79
|
+
image: /icons/privacy-icon.svg
|
|
80
|
+
---
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Custom Components
|
|
84
|
+
|
|
85
|
+
The documentation uses several custom components:
|
|
86
|
+
|
|
87
|
+
### CodeEditor
|
|
88
|
+
|
|
89
|
+
The `CodeEditor` component displays code snippets with syntax highlighting:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
<CodeEditor filePath="example.js">
|
|
93
|
+
function handleError(error) {
|
|
94
|
+
console.error(`Error: ${error.message}`);
|
|
95
|
+
return { success: false, error: error.message };
|
|
96
|
+
}
|
|
97
|
+
</CodeEditor>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### CommandExample
|
|
101
|
+
|
|
102
|
+
The `CommandExample` component displays command-line examples:
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
<CommandExample>probe search "error handling" ./src</CommandExample>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
With output:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
<CommandExample output="Found 3 matches in 2 files">probe search "user authentication" ./src</CommandExample>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Documentation Conventions
|
|
115
|
+
|
|
116
|
+
Please follow these conventions when contributing to the documentation:
|
|
117
|
+
|
|
118
|
+
1. **File Names**: Use kebab-case for file names (e.g., `quick-start.md`, `how-it-works.md`)
|
|
119
|
+
2. **Headings**: Use Title Case for headings (e.g., "Getting Started", "Core Functionality")
|
|
120
|
+
3. **Code Examples**: Use appropriate syntax highlighting for code examples
|
|
121
|
+
4. **Cross-References**: Use relative links for cross-references (e.g., `[Quick Start](./quick-start.md)`)
|
|
122
|
+
5. **Images**: Store images in the `public` directory and reference them with absolute paths (e.g., `/images/example.png`)
|
|
123
|
+
|
|
124
|
+
## Running the Site Locally
|
|
125
|
+
|
|
126
|
+
To run the site locally:
|
|
127
|
+
|
|
128
|
+
1. Navigate to the site directory
|
|
129
|
+
2. Install dependencies: `npm install`
|
|
130
|
+
3. Start the development server: `npm run dev`
|
|
131
|
+
|
|
132
|
+
## Deployment
|
|
133
|
+
|
|
134
|
+
The site is deployed using **Cloudflare Pages** with automatic deployments from the main branch to **probelabs.com**.
|
|
135
|
+
|
|
136
|
+
### Deployment Configuration
|
|
137
|
+
- Platform: Cloudflare Pages
|
|
138
|
+
- Domain: probelabs.com
|
|
139
|
+
- Build command: `npm run build`
|
|
140
|
+
- Output directory: `.vitepress/dist`
|
|
141
|
+
- Node.js version: 20
|
|
142
|
+
|
|
143
|
+
For detailed deployment instructions, see [DEPLOYMENT.md](./DEPLOYMENT.md).
|
|
144
|
+
|
|
145
|
+
### Previous Deployment
|
|
146
|
+
The site was previously deployed via GitHub Pages. The old workflow has been disabled and renamed to `vitepress-gh-pages.yml.disabled`.
|
|
147
|
+
|
|
148
|
+
## Building for Production
|
|
149
|
+
|
|
150
|
+
To build the site for production:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npm run build
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The built site will be in the `.vitepress/dist` directory.
|
|
157
|
+
|
|
158
|
+
## Contributing to the Documentation
|
|
159
|
+
|
|
160
|
+
We welcome contributions to the Probe documentation. If you find errors, omissions, or have suggestions for improvements, please consider contributing:
|
|
161
|
+
|
|
162
|
+
1. Fork the [Probe repository](https://github.com/probelabs/probe) on GitHub
|
|
163
|
+
2. Make your changes to the documentation files in the `site` directory
|
|
164
|
+
3. Ensure that cross-references are maintained and updated as needed
|
|
165
|
+
4. Run the site locally to verify your changes
|
|
166
|
+
5. Submit a pull request with your changes
|
|
167
|
+
|
|
168
|
+
## Maintenance Guidelines
|
|
169
|
+
|
|
170
|
+
When maintaining the documentation:
|
|
171
|
+
|
|
172
|
+
1. **Keep Cross-References Updated**: When adding or removing documentation, update cross-references in related files
|
|
173
|
+
2. **Maintain Consistent Style**: Follow the established style and formatting conventions
|
|
174
|
+
3. **Update Navigation**: When adding new documentation, update the navigation structure as described in [documentation-maintenance.md](./documentation-maintenance.md)
|
|
175
|
+
4. **Check for Broken Links**: Regularly check for broken links and fix them
|
|
176
|
+
5. **Update Examples**: Keep code examples and command examples up to date with the latest version of Probe
|
|
177
|
+
6. **Review Regularly**: Regularly review the documentation for accuracy and completeness
|
|
178
|
+
|
|
179
|
+
## VitePress Configuration
|
|
180
|
+
|
|
181
|
+
The VitePress configuration is located in the `.vitepress/config.js` file. When updating the documentation structure, be sure to update the sidebar and navigation configuration in this file.
|
|
182
|
+
|
|
183
|
+
For more information on VitePress configuration, see the [VitePress documentation](https://vitepress.dev/reference/site-config).# Temporary test change
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Adding Support for New Languages
|
|
2
|
+
|
|
3
|
+
This guide lists the exact files you must modify to add a new language to Probe.
|
|
4
|
+
|
|
5
|
+
## Required File Modifications
|
|
6
|
+
|
|
7
|
+
Adding a new language requires modifying exactly **11 files**. Missing any of these will result in incomplete language support.
|
|
8
|
+
|
|
9
|
+
### Step 1: Core Language Implementation (4 files)
|
|
10
|
+
### Step 2: Search & Extract Integration (4 files)
|
|
11
|
+
### Step 3: CLI & User Interface (2 files)
|
|
12
|
+
### Step 4: Documentation (1 file)
|
|
13
|
+
|
|
14
|
+
## Step 1: Core Language Implementation
|
|
15
|
+
|
|
16
|
+
### File 1: `Cargo.toml`
|
|
17
|
+
Add tree-sitter dependency:
|
|
18
|
+
```toml
|
|
19
|
+
tree-sitter-yourlang = "X.Y.Z"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### File 2: `src/language/yourlang.rs`
|
|
23
|
+
Create language implementation (copy from existing language like `rust.rs`):
|
|
24
|
+
```rust
|
|
25
|
+
use super::language_trait::LanguageImpl;
|
|
26
|
+
use tree_sitter::{Language as TSLanguage, Node};
|
|
27
|
+
|
|
28
|
+
pub struct YourLangLanguage;
|
|
29
|
+
|
|
30
|
+
impl LanguageImpl for YourLangLanguage {
|
|
31
|
+
fn get_tree_sitter_language(&self) -> TSLanguage {
|
|
32
|
+
tree_sitter_yourlang::language().into()
|
|
33
|
+
}
|
|
34
|
+
// ... implement other required methods
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### File 3: `src/language/mod.rs`
|
|
39
|
+
Add module export:
|
|
40
|
+
```rust
|
|
41
|
+
pub mod yourlang;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### File 4: `src/language/factory.rs`
|
|
45
|
+
Add import:
|
|
46
|
+
```rust
|
|
47
|
+
use probe_code::language::yourlang::YourLangLanguage;
|
|
48
|
+
```
|
|
49
|
+
Add registration:
|
|
50
|
+
```rust
|
|
51
|
+
"yourext" => Some(Box::new(YourLangLanguage::new())),
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Step 2: Search & Extract Integration
|
|
55
|
+
|
|
56
|
+
### File 5: `src/search/file_list_cache.rs`
|
|
57
|
+
Add to `get_language_extensions()` function:
|
|
58
|
+
```rust
|
|
59
|
+
"yourlang" => vec![".yourext".to_string()],
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### File 6: `src/extract/formatter.rs`
|
|
63
|
+
Add to syntax highlighting mapping:
|
|
64
|
+
```rust
|
|
65
|
+
"yourext" => "yourlang",
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### File 7: `src/search/results_formatter.rs`
|
|
69
|
+
Add to language mapping:
|
|
70
|
+
```rust
|
|
71
|
+
"yourext" => "yourlang",
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### File 8: `src/search/search_output.rs`
|
|
75
|
+
Add to language mapping and comment prefix:
|
|
76
|
+
```rust
|
|
77
|
+
// In syntax highlighting mapping:
|
|
78
|
+
"yourext" => "yourlang",
|
|
79
|
+
|
|
80
|
+
// In comment prefix mapping (choose appropriate section):
|
|
81
|
+
// For # comments:
|
|
82
|
+
"py" | "rb" | "sh" | "bash" | "pl" | "r" | "yourext" => "#",
|
|
83
|
+
// For // comments:
|
|
84
|
+
"rs" | "c" | "h" | "cpp" | "yourext" => "//",
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Step 3: CLI & User Interface
|
|
88
|
+
|
|
89
|
+
### File 9: `src/cli.rs`
|
|
90
|
+
Add to language completion lists (2 locations):
|
|
91
|
+
```rust
|
|
92
|
+
"yourlang", "yourext",
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### File 10: `npm/src/mcp/index.ts`
|
|
96
|
+
Add to supported languages description:
|
|
97
|
+
```rust
|
|
98
|
+
'Supported languages: rust, javascript, typescript, python, go, c, cpp, java, ruby, php, swift, csharp, yourlang.',
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Step 4: Documentation
|
|
102
|
+
|
|
103
|
+
### File 11: `site/supported-languages.md`
|
|
104
|
+
Add table entry and language-specific features section.
|
|
105
|
+
|
|
106
|
+
## Testing
|
|
107
|
+
|
|
108
|
+
Create comprehensive tests in your language file:
|
|
109
|
+
```rust
|
|
110
|
+
#[cfg(test)]
|
|
111
|
+
mod tests {
|
|
112
|
+
use super::*;
|
|
113
|
+
// Add tests for all LanguageImpl methods
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## LanguageImpl Methods to Implement
|
|
118
|
+
|
|
119
|
+
Copy implementation patterns from similar languages:
|
|
120
|
+
|
|
121
|
+
- `get_tree_sitter_language()` - Return tree-sitter language
|
|
122
|
+
- `is_acceptable_parent()` - Define extractable code blocks
|
|
123
|
+
- `is_test_node()` - Detect test code
|
|
124
|
+
- `get_symbol_signature()` - Extract clean signatures
|
|
125
|
+
- `find_parent_function()` - Optional method
|
|
126
|
+
|
|
127
|
+
Use tree-sitter playground to understand AST structure: https://tree-sitter.github.io/tree-sitter/playground
|
|
128
|
+
|
|
129
|
+
## Verification
|
|
130
|
+
|
|
131
|
+
After modifying all 11 files:
|
|
132
|
+
1. `cargo test` - All tests pass
|
|
133
|
+
2. `cargo run -- search "term" file.yourext` - Search works
|
|
134
|
+
3. `cargo run -- extract file.yourext:N` - Extract works
|
|
135
|
+
4. `cargo run -- search "test" --allow-tests` - Test detection works
|