@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,338 @@
|
|
|
1
|
+
# Probe Chat
|
|
2
|
+
|
|
3
|
+
A command-line and web interface for interacting with Probe code search using AI models through the Vercel AI SDK.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Interactive CLI chat interface
|
|
8
|
+
- Web-based chat interface with Markdown and syntax highlighting
|
|
9
|
+
- Support for Anthropic Claude, OpenAI, and Google Gemini models
|
|
10
|
+
- Force provider option to specify which AI provider to use
|
|
11
|
+
- Semantic code search using Probe's search capabilities
|
|
12
|
+
- AST-based code querying for finding specific code structures
|
|
13
|
+
- Code extraction for viewing complete context
|
|
14
|
+
- Session-based search caching for improved performance
|
|
15
|
+
- Token usage tracking
|
|
16
|
+
- Colorized output for better readability (CLI mode)
|
|
17
|
+
- Diagram generation with Mermaid.js (Web mode)
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- Node.js 18 or higher
|
|
22
|
+
- Probe CLI installed and available in your PATH
|
|
23
|
+
- An API key for Anthropic Claude, OpenAI, or Google Gemini
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
1. Clone the repository
|
|
28
|
+
2. Navigate to the `examples/chat` directory
|
|
29
|
+
3. Install dependencies:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
4. Create a `.env` file with your API keys:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
# API Keys (uncomment and add your key)
|
|
39
|
+
ANTHROPIC_API_KEY=your_anthropic_api_key
|
|
40
|
+
# OPENAI_API_KEY=your_openai_api_key
|
|
41
|
+
# GOOGLE_API_KEY=your_google_api_key
|
|
42
|
+
|
|
43
|
+
# Force a specific provider (optional)
|
|
44
|
+
# FORCE_PROVIDER=anthropic # Options: anthropic, openai, google
|
|
45
|
+
|
|
46
|
+
# Debug mode (set to true for verbose logging)
|
|
47
|
+
DEBUG=false
|
|
48
|
+
|
|
49
|
+
# Default model (optional)
|
|
50
|
+
# For Anthropic: MODEL_NAME=claude-3-7-sonnet-latest
|
|
51
|
+
# For OpenAI: MODEL_NAME=gpt-4o-2024-05-13
|
|
52
|
+
# For Google: MODEL_NAME=gemini-2.0-flash
|
|
53
|
+
|
|
54
|
+
# API URL configuration (optional)
|
|
55
|
+
# Generic base URL for all providers (if provider-specific URL not set)
|
|
56
|
+
# LLM_BASE_URL=https://your-custom-endpoint.com
|
|
57
|
+
# Provider-specific URLs (override LLM_BASE_URL)
|
|
58
|
+
# ANTHROPIC_API_URL=https://your-anthropic-endpoint.com
|
|
59
|
+
# OPENAI_API_URL=https://your-openai-endpoint.com
|
|
60
|
+
# GOOGLE_API_URL=https://your-google-endpoint.com
|
|
61
|
+
|
|
62
|
+
# Folders to search (comma-separated list of paths)
|
|
63
|
+
# If not specified, the current directory will be used by default
|
|
64
|
+
# ALLOWED_FOLDERS=/path/to/folder1,/path/to/folder2
|
|
65
|
+
|
|
66
|
+
# Web interface settings (optional)
|
|
67
|
+
# PORT=8080
|
|
68
|
+
# AUTH_ENABLED=false
|
|
69
|
+
# AUTH_USERNAME=admin
|
|
70
|
+
# AUTH_PASSWORD=password
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Usage
|
|
74
|
+
|
|
75
|
+
### CLI Mode
|
|
76
|
+
|
|
77
|
+
Start the chat interface in CLI mode:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
node index.js
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Or with npm:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Web Mode
|
|
90
|
+
|
|
91
|
+
Start the chat interface in web mode:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
node index.js --web
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Or with npm:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm run web
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
You can specify a custom port:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
node index.js --web --port 3000
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
You can also specify a path to the codebase you want to search:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
node index.js /path/to/codebase
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
For example, to search in a repository located at ../../tyk:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
node index.js ../../tyk
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
This will override any ALLOWED_FOLDERS setting in your .env file.
|
|
122
|
+
|
|
123
|
+
### Command-line Options
|
|
124
|
+
|
|
125
|
+
- `-d, --debug`: Enable debug mode for verbose logging
|
|
126
|
+
- `-m, --model <model>`: Specify the model to use (e.g., `claude-3-7-sonnet-latest`, `gpt-4o-2024-05-13`, `gemini-2.0-flash`)
|
|
127
|
+
- `-f, --force-provider <provider>`: Force a specific provider (options: `anthropic`, `openai`, `google`)
|
|
128
|
+
- `-w, --web`: Run in web interface mode
|
|
129
|
+
- `-p, --port <port>`: Port to run web server on (default: 8080)
|
|
130
|
+
- `--prompt <value>`: Use a custom prompt (values: `architect`, `code-review`, `support`, or path to a file)
|
|
131
|
+
- `[path]`: Path to the codebase to search (overrides ALLOWED_FOLDERS)
|
|
132
|
+
|
|
133
|
+
### Special Commands
|
|
134
|
+
|
|
135
|
+
During the chat, you can use these special commands:
|
|
136
|
+
|
|
137
|
+
- `exit` or `quit`: End the chat session
|
|
138
|
+
- `usage`: Display token usage statistics
|
|
139
|
+
- `clear`: Clear the chat history and start a new session
|
|
140
|
+
|
|
141
|
+
## How It Works
|
|
142
|
+
|
|
143
|
+
This CLI tool uses the Vercel AI SDK to interact with AI models and provides them with tools to search and analyze your codebase:
|
|
144
|
+
|
|
145
|
+
1. **search**: Searches code using Elasticsearch-like query syntax
|
|
146
|
+
2. **query**: Searches code using AST-based pattern matching
|
|
147
|
+
3. **extract**: Extracts code blocks from files with context
|
|
148
|
+
|
|
149
|
+
The AI is instructed to use these tools to answer your questions about the codebase, providing relevant code snippets and explanations.
|
|
150
|
+
|
|
151
|
+
### Search Caching
|
|
152
|
+
|
|
153
|
+
The tool automatically generates a unique session ID for each chat session and passes it to the Probe CLI commands using the `--session` parameter. This enables caching of search results within a session, which can significantly improve performance when similar searches are performed multiple times.
|
|
154
|
+
|
|
155
|
+
The session ID is managed internally and doesn't require any user intervention. When you start a new chat session (or use the "clear" command), a new session ID is generated, and a new cache is created.
|
|
156
|
+
|
|
157
|
+
## Provider Options
|
|
158
|
+
|
|
159
|
+
Probe Chat supports multiple AI providers, giving you flexibility in choosing which model to use for your code search and analysis:
|
|
160
|
+
|
|
161
|
+
### Supported Providers
|
|
162
|
+
|
|
163
|
+
1. **Anthropic Claude**
|
|
164
|
+
- Default model: `claude-3-7-sonnet-latest`
|
|
165
|
+
- Environment variable: `ANTHROPIC_API_KEY`
|
|
166
|
+
- Best for: Complex code analysis, detailed explanations, and understanding nuanced patterns
|
|
167
|
+
|
|
168
|
+
2. **OpenAI GPT**
|
|
169
|
+
- Default model: `gpt-4o-2024-05-13`
|
|
170
|
+
- Environment variable: `OPENAI_API_KEY`
|
|
171
|
+
- Best for: General code search, pattern recognition, and concise explanations
|
|
172
|
+
|
|
173
|
+
3. **Google Gemini**
|
|
174
|
+
- Default model: `gemini-2.0-flash`
|
|
175
|
+
- Environment variable: `GOOGLE_API_KEY`
|
|
176
|
+
- Best for: Fast responses, code generation, and efficient search
|
|
177
|
+
|
|
178
|
+
### Forcing a Specific Provider
|
|
179
|
+
|
|
180
|
+
You can force Probe Chat to use a specific provider in two ways:
|
|
181
|
+
|
|
182
|
+
1. **Using the command line option**:
|
|
183
|
+
```bash
|
|
184
|
+
node index.js --force-provider anthropic
|
|
185
|
+
node index.js --force-provider openai
|
|
186
|
+
node index.js --force-provider google
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
2. **Using the environment variable**:
|
|
190
|
+
Add this to your `.env` file:
|
|
191
|
+
```
|
|
192
|
+
FORCE_PROVIDER=anthropic # or openai, google
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
When forcing a provider, Probe Chat will verify that you have the corresponding API key set. If the API key is missing, it will display an error message.
|
|
196
|
+
|
|
197
|
+
### Customizing Models
|
|
198
|
+
|
|
199
|
+
You can specify which model to use for each provider:
|
|
200
|
+
|
|
201
|
+
1. **Using the command line option**:
|
|
202
|
+
```bash
|
|
203
|
+
node index.js --model claude-3-7-sonnet-latest
|
|
204
|
+
node index.js --model gpt-4o-2024-05-13
|
|
205
|
+
node index.js --model gemini-2.0-flash
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
2. **Using the environment variable**:
|
|
209
|
+
Add this to your `.env` file:
|
|
210
|
+
```
|
|
211
|
+
MODEL_NAME=claude-3-7-sonnet-latest
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Note that the model must be compatible with the selected provider. If you force a specific provider and specify a model, the model must be available for that provider.
|
|
215
|
+
|
|
216
|
+
### Custom API Endpoints
|
|
217
|
+
|
|
218
|
+
You can configure custom API endpoints for each provider:
|
|
219
|
+
|
|
220
|
+
1. **Generic endpoint for all providers**:
|
|
221
|
+
```
|
|
222
|
+
LLM_BASE_URL=https://your-custom-endpoint.com
|
|
223
|
+
```
|
|
224
|
+
This will be used for all providers unless a provider-specific URL is set.
|
|
225
|
+
|
|
226
|
+
2. **Provider-specific endpoints**:
|
|
227
|
+
```
|
|
228
|
+
ANTHROPIC_API_URL=https://your-anthropic-endpoint.com
|
|
229
|
+
OPENAI_API_URL=https://your-openai-endpoint.com
|
|
230
|
+
GOOGLE_API_URL=https://your-google-endpoint.com
|
|
231
|
+
```
|
|
232
|
+
These override the generic LLM_BASE_URL for their respective providers.
|
|
233
|
+
Provider-specific URLs always take precedence over the generic LLM_BASE_URL.
|
|
234
|
+
|
|
235
|
+
## Custom Prompts
|
|
236
|
+
|
|
237
|
+
Probe Chat allows you to customize the system prompt used by the AI assistant. This can be useful for tailoring the assistant's behavior to specific use cases or domains.
|
|
238
|
+
|
|
239
|
+
### Predefined Prompts
|
|
240
|
+
|
|
241
|
+
By default, Probe Chat uses a "Code Explorer" prompt that's optimized for answering questions about code, explaining how systems work, and providing insights into code functionality.
|
|
242
|
+
|
|
243
|
+
The `--prompt` option accepts several predefined prompt types to specialize the assistant for different tasks:
|
|
244
|
+
|
|
245
|
+
1. **code-explorer** (default): Focuses on explaining and navigating code. The assistant will provide clear explanations of how code works, find relevant snippets, and trace function calls and data flow.
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
node index.js --prompt code-explorer
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Note: This is the default behavior, so you don't need to specify this prompt explicitly.
|
|
252
|
+
|
|
253
|
+
2. **architect**: Focuses on software architecture and design. The assistant will analyze code from an architectural perspective, identify patterns, suggest improvements, and create high-level design documentation.
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
node index.js --prompt architect
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
2. **code-review**: Focuses on code quality and best practices. The assistant will identify issues, suggest improvements, and ensure code follows best practices.
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
node index.js --prompt code-review
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
3. **support**: Focuses on troubleshooting and problem-solving. The assistant will help diagnose errors, understand unexpected behaviors, and find solutions.
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
node index.js --prompt support
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Each predefined prompt type maintains the core functionality of Probe Chat while specializing in a particular area of focus. The standard instructions for using tools and following the XML format are automatically included with all predefined prompts.
|
|
272
|
+
|
|
273
|
+
### Custom Prompt Files
|
|
274
|
+
|
|
275
|
+
You can also provide a path to a file containing your own custom prompt:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
node index.js --prompt /path/to/your/prompt.txt
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
The file should contain the complete system prompt that you want to use. This completely replaces the default system prompt. If you're creating a custom prompt, make sure to include instructions for using the available tools and following the XML format.
|
|
282
|
+
|
|
283
|
+
Example custom prompt file:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
You are ProbeChat Custom, a specialized AI assistant for [your specific use case].
|
|
287
|
+
You focus on [specific area of expertise] and excel at [key strengths].
|
|
288
|
+
|
|
289
|
+
Follow these instructions carefully:
|
|
290
|
+
1. Analyze the user's request with a focus on [your specific focus area].
|
|
291
|
+
2. Use <thinking></thinking> tags to analyze the situation and determine the appropriate tool for each step.
|
|
292
|
+
3. Use the available tools step-by-step to fulfill the request.
|
|
293
|
+
4. Ensure to get really deep and understand the full picture before answering.
|
|
294
|
+
5. You MUST respond with exactly ONE tool call per message, using the specified XML format, until the task is complete.
|
|
295
|
+
6. Wait for the tool execution result (provided in the next user message in a <tool_result> block) before proceeding to the next step.
|
|
296
|
+
7. Once the task is fully completed, and you have confirmed the success of all steps, use the '<attempt_completion>' tool to provide the final result.
|
|
297
|
+
8. Prefer concise and focused search queries. Use specific keywords and phrases to narrow down results.
|
|
298
|
+
9. [Add any additional specialized instructions here]
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Environment Variables
|
|
302
|
+
|
|
303
|
+
You can also set a default prompt type using the environment variable:
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
PROMPT_TYPE=architect
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Or specify a path to a custom prompt file:
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
CUSTOM_PROMPT=/path/to/your/prompt.txt
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
The command-line option takes precedence over the environment variable.
|
|
316
|
+
Provider-specific URLs always take precedence over the generic LLM_BASE_URL.
|
|
317
|
+
|
|
318
|
+
## Example Queries
|
|
319
|
+
|
|
320
|
+
- "How does the config loading work?"
|
|
321
|
+
- "Show me all RPC handlers"
|
|
322
|
+
- "What does the process_file function do?"
|
|
323
|
+
- "Find all implementations of the extract tool"
|
|
324
|
+
- "Show me the main entry point of the application"
|
|
325
|
+
|
|
326
|
+
## Architecture
|
|
327
|
+
|
|
328
|
+
- `index.js`: Main entry point for both CLI and web interfaces
|
|
329
|
+
- `probeChat.js`: Core chat functionality
|
|
330
|
+
- `webServer.js`: Web server implementation
|
|
331
|
+
- `auth.js`: Authentication middleware for web interface
|
|
332
|
+
- `probeTool.js`: Tool definitions for code search, query, and extraction
|
|
333
|
+
- `tokenCounter.js`: Utility for tracking token usage
|
|
334
|
+
- `index.html`: Web interface HTML template
|
|
335
|
+
|
|
336
|
+
## License
|
|
337
|
+
|
|
338
|
+
Apache-2.0
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Tracing Support for Probe Chat
|
|
2
|
+
|
|
3
|
+
This document describes the tracing functionality available in the Probe Chat application.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Probe Chat now supports OpenTelemetry tracing for AI model calls, allowing you to:
|
|
8
|
+
- Track AI model interactions and performance
|
|
9
|
+
- Export traces to files for analysis
|
|
10
|
+
- Send traces to remote OpenTelemetry collectors
|
|
11
|
+
- Debug AI model calls with console output
|
|
12
|
+
|
|
13
|
+
## Configuration
|
|
14
|
+
|
|
15
|
+
### CLI Options
|
|
16
|
+
|
|
17
|
+
You can enable tracing using the following command-line options:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Enable file tracing (default: ./traces.jsonl)
|
|
21
|
+
node index.js --trace-file
|
|
22
|
+
|
|
23
|
+
# Enable file tracing with custom path
|
|
24
|
+
node index.js --trace-file ./my-traces.jsonl
|
|
25
|
+
|
|
26
|
+
# Enable remote tracing (default: http://localhost:4318/v1/traces)
|
|
27
|
+
node index.js --trace-remote
|
|
28
|
+
|
|
29
|
+
# Enable remote tracing with custom endpoint
|
|
30
|
+
node index.js --trace-remote http://my-collector:4318/v1/traces
|
|
31
|
+
|
|
32
|
+
# Enable console tracing for debugging
|
|
33
|
+
node index.js --trace-console
|
|
34
|
+
|
|
35
|
+
# Enable multiple exporters
|
|
36
|
+
node index.js --trace-file --trace-remote --trace-console
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Environment Variables
|
|
40
|
+
|
|
41
|
+
You can also configure tracing using environment variables:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Enable file tracing
|
|
45
|
+
export OTEL_ENABLE_FILE=true
|
|
46
|
+
export OTEL_FILE_PATH=./traces.jsonl
|
|
47
|
+
|
|
48
|
+
# Enable remote tracing
|
|
49
|
+
export OTEL_ENABLE_REMOTE=true
|
|
50
|
+
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces
|
|
51
|
+
|
|
52
|
+
# Enable console tracing
|
|
53
|
+
export OTEL_ENABLE_CONSOLE=true
|
|
54
|
+
|
|
55
|
+
# Service information
|
|
56
|
+
export OTEL_SERVICE_NAME=probe-chat
|
|
57
|
+
export OTEL_SERVICE_VERSION=1.0.0
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Trace Data
|
|
61
|
+
|
|
62
|
+
The tracing system captures the following information:
|
|
63
|
+
|
|
64
|
+
### Span Attributes
|
|
65
|
+
- **Service Information**: Service name, version
|
|
66
|
+
- **Session Information**: Session ID, iteration number
|
|
67
|
+
- **Model Information**: Model name, API type (anthropic, openai, google)
|
|
68
|
+
- **Configuration**: Allow edit flag, prompt type
|
|
69
|
+
- **Function ID**: Unique identifier for each chat function
|
|
70
|
+
|
|
71
|
+
### Trace Content
|
|
72
|
+
- AI model requests and responses
|
|
73
|
+
- Token usage statistics
|
|
74
|
+
- Tool call information
|
|
75
|
+
- Error details when they occur
|
|
76
|
+
|
|
77
|
+
## File Format
|
|
78
|
+
|
|
79
|
+
When using file tracing, traces are saved in JSON Lines format (`.jsonl`), where each line contains a complete trace span:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"traceId": "abcd1234...",
|
|
84
|
+
"spanId": "efgh5678...",
|
|
85
|
+
"name": "ai.generateText",
|
|
86
|
+
"startTimeUnixNano": 1704067200000000000,
|
|
87
|
+
"endTimeUnixNano": 1704067201000000000,
|
|
88
|
+
"attributes": {
|
|
89
|
+
"sessionId": "session-123",
|
|
90
|
+
"iteration": "1",
|
|
91
|
+
"model": "claude-3-7-sonnet-20250219",
|
|
92
|
+
"apiType": "anthropic"
|
|
93
|
+
},
|
|
94
|
+
"status": { "code": "OK" },
|
|
95
|
+
"events": [],
|
|
96
|
+
"links": [],
|
|
97
|
+
"resource": {
|
|
98
|
+
"attributes": {
|
|
99
|
+
"service.name": "probe-chat",
|
|
100
|
+
"service.version": "1.0.0"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Remote Tracing
|
|
107
|
+
|
|
108
|
+
For remote tracing, you can use any OpenTelemetry-compatible collector:
|
|
109
|
+
|
|
110
|
+
### Using OpenTelemetry Collector
|
|
111
|
+
|
|
112
|
+
1. Install the OpenTelemetry Collector
|
|
113
|
+
2. Configure it with a `receiver` for OTLP HTTP
|
|
114
|
+
3. Configure exporters for your preferred backend (Jaeger, Zipkin, etc.)
|
|
115
|
+
|
|
116
|
+
Example collector config:
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
receivers:
|
|
120
|
+
otlp:
|
|
121
|
+
protocols:
|
|
122
|
+
http:
|
|
123
|
+
endpoint: 0.0.0.0:4318
|
|
124
|
+
|
|
125
|
+
exporters:
|
|
126
|
+
jaeger:
|
|
127
|
+
endpoint: jaeger:14250
|
|
128
|
+
tls:
|
|
129
|
+
insecure: true
|
|
130
|
+
|
|
131
|
+
service:
|
|
132
|
+
pipelines:
|
|
133
|
+
traces:
|
|
134
|
+
receivers: [otlp]
|
|
135
|
+
exporters: [jaeger]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Using Jaeger
|
|
139
|
+
|
|
140
|
+
You can send traces directly to Jaeger using the OTLP endpoint:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Start Jaeger
|
|
144
|
+
docker run -d --name jaeger \
|
|
145
|
+
-p 16686:16686 \
|
|
146
|
+
-p 14250:14250 \
|
|
147
|
+
-p 14268:14268 \
|
|
148
|
+
-p 4317:4317 \
|
|
149
|
+
-p 4318:4318 \
|
|
150
|
+
jaegertracing/all-in-one:latest
|
|
151
|
+
|
|
152
|
+
# Run probe-chat with remote tracing
|
|
153
|
+
node index.js --trace-remote http://localhost:4318/v1/traces
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Example Usage
|
|
157
|
+
|
|
158
|
+
### Basic File Tracing
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Enable file tracing and run a query
|
|
162
|
+
node index.js --trace-file --message "What files are in this project?"
|
|
163
|
+
|
|
164
|
+
# Check the generated traces
|
|
165
|
+
cat traces.jsonl | jq '.'
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Remote Tracing with Jaeger
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Start Jaeger
|
|
172
|
+
docker run -d --name jaeger -p 16686:16686 -p 4318:4318 jaegertracing/all-in-one:latest
|
|
173
|
+
|
|
174
|
+
# Run probe-chat with remote tracing
|
|
175
|
+
node index.js --trace-remote --message "Analyze the main function"
|
|
176
|
+
|
|
177
|
+
# View traces at http://localhost:16686
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Combined Tracing
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
# Enable both file and remote tracing
|
|
184
|
+
node index.js --trace-file ./debug-traces.jsonl --trace-remote http://localhost:4318/v1/traces --trace-console
|
|
185
|
+
|
|
186
|
+
# This will:
|
|
187
|
+
# 1. Save traces to ./debug-traces.jsonl
|
|
188
|
+
# 2. Send traces to the remote collector
|
|
189
|
+
# 3. Print traces to console for debugging
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Performance Considerations
|
|
193
|
+
|
|
194
|
+
- **File Tracing**: Minimal overhead, suitable for production
|
|
195
|
+
- **Remote Tracing**: Slight network overhead, depends on collector performance
|
|
196
|
+
- **Console Tracing**: Higher overhead, recommended for debugging only
|
|
197
|
+
|
|
198
|
+
## Integration with Vercel AI SDK
|
|
199
|
+
|
|
200
|
+
The tracing system integrates with the Vercel AI SDK's experimental telemetry feature. When tracing is enabled, the SDK automatically:
|
|
201
|
+
|
|
202
|
+
- Creates spans for each AI model call
|
|
203
|
+
- Captures request/response data
|
|
204
|
+
- Records token usage information
|
|
205
|
+
- Tracks tool calls and their results
|
|
206
|
+
|
|
207
|
+
## Troubleshooting
|
|
208
|
+
|
|
209
|
+
### Common Issues
|
|
210
|
+
|
|
211
|
+
1. **File permissions**: Ensure write permissions for the trace file directory
|
|
212
|
+
2. **Remote collector unavailable**: Check network connectivity and collector status
|
|
213
|
+
3. **Large trace files**: Consider log rotation for long-running sessions
|
|
214
|
+
|
|
215
|
+
### Debug Mode
|
|
216
|
+
|
|
217
|
+
Enable debug mode to see tracing initialization messages:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
node index.js --debug --trace-file
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
This will show:
|
|
224
|
+
- Telemetry initialization status
|
|
225
|
+
- Exporter configuration
|
|
226
|
+
- Any errors during setup
|