@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,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Docker Integration
|
|
3
|
+
description: Deploy and run Probe using Docker containers for both CLI and web interface usage.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Docker Integration
|
|
7
|
+
|
|
8
|
+
Probe provides Docker images for both the CLI tool and the web interface, making it easy to deploy and use in containerized environments.
|
|
9
|
+
|
|
10
|
+
## Docker Hub Images
|
|
11
|
+
|
|
12
|
+
Pre-built images are available on Docker Hub:
|
|
13
|
+
- **Probe CLI**: `probelabs/probe:latest`
|
|
14
|
+
- **Probe Chat**: `probelabs/probe-chat:latest`
|
|
15
|
+
|
|
16
|
+
### Available Tags
|
|
17
|
+
- `latest` - Latest stable release
|
|
18
|
+
- `X.Y.Z` - Specific version (e.g., `1.0.0`)
|
|
19
|
+
- `X.Y` - Minor version (e.g., `1.0`)
|
|
20
|
+
- `X` - Major version (e.g., `1`)
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### Probe CLI
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Pull the image
|
|
28
|
+
docker pull probelabs/probe:latest
|
|
29
|
+
|
|
30
|
+
# Basic usage
|
|
31
|
+
docker run --rm -v $(pwd):/workspace probelabs/probe search "function" /workspace
|
|
32
|
+
|
|
33
|
+
# Create an alias for convenience
|
|
34
|
+
alias probe='docker run --rm -v $(pwd):/workspace probelabs/probe'
|
|
35
|
+
probe search "class" .
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Probe Chat Interface
|
|
39
|
+
|
|
40
|
+
#### CLI Mode
|
|
41
|
+
```bash
|
|
42
|
+
# Interactive chat with your codebase
|
|
43
|
+
docker run --rm -it \
|
|
44
|
+
-e ANTHROPIC_API_KEY=your_api_key \
|
|
45
|
+
-v $(pwd):/workspace \
|
|
46
|
+
probelabs/probe-chat
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
#### Web Mode
|
|
50
|
+
```bash
|
|
51
|
+
# Run web interface on port 3000
|
|
52
|
+
docker run --rm \
|
|
53
|
+
-e ANTHROPIC_API_KEY=your_api_key \
|
|
54
|
+
-v $(pwd):/workspace \
|
|
55
|
+
-p 3000:3000 \
|
|
56
|
+
probelabs/probe-chat --web
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Docker Compose
|
|
60
|
+
|
|
61
|
+
For easier local development and testing, use the included Docker Compose configuration:
|
|
62
|
+
|
|
63
|
+
### Setup
|
|
64
|
+
|
|
65
|
+
1. **Create a `.env` file** with your API keys:
|
|
66
|
+
```bash
|
|
67
|
+
ANTHROPIC_API_KEY=your_api_key_here
|
|
68
|
+
# Or use OpenAI:
|
|
69
|
+
# OPENAI_API_KEY=your_api_key_here
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
2. **Run services**:
|
|
73
|
+
```bash
|
|
74
|
+
# Run Probe CLI
|
|
75
|
+
docker compose run --rm probe search "function" .
|
|
76
|
+
|
|
77
|
+
# Run Probe Chat CLI
|
|
78
|
+
docker compose run --rm probe-chat-cli
|
|
79
|
+
|
|
80
|
+
# Run Probe Chat Web (accessible at http://localhost:3000)
|
|
81
|
+
docker compose up probe-chat-web
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Available Services
|
|
85
|
+
|
|
86
|
+
- **probe**: Probe CLI tool for code search
|
|
87
|
+
- **probe-chat-cli**: Interactive chat interface (CLI mode)
|
|
88
|
+
- **probe-chat-web**: Web interface (port 3000)
|
|
89
|
+
- **probe-dev**: Development build with cargo cache (dev profile)
|
|
90
|
+
|
|
91
|
+
## Environment Variables
|
|
92
|
+
|
|
93
|
+
### Probe Chat
|
|
94
|
+
- `ANTHROPIC_API_KEY` - Anthropic API key for Claude models
|
|
95
|
+
- `OPENAI_API_KEY` - OpenAI API key for GPT models
|
|
96
|
+
- `ALLOWED_FOLDERS` - Optional, restricts which folders can be searched
|
|
97
|
+
|
|
98
|
+
## Use Cases
|
|
99
|
+
|
|
100
|
+
### CI/CD Integration
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
# Example GitHub Actions usage
|
|
104
|
+
- name: Analyze Code Structure
|
|
105
|
+
run: |
|
|
106
|
+
docker run --rm -v ${{ github.workspace }}:/workspace \
|
|
107
|
+
probelabs/probe search "TODO|FIXME" /workspace --format json > analysis.json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Development Teams
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Team development environment
|
|
114
|
+
docker run --rm -it \
|
|
115
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
116
|
+
-v $(pwd):/workspace \
|
|
117
|
+
-p 3000:3000 \
|
|
118
|
+
probelabs/probe-chat --web
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Code Review Automation
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Automated code review
|
|
125
|
+
docker run --rm \
|
|
126
|
+
-v $(pwd):/workspace \
|
|
127
|
+
probelabs/probe extract "security|auth" /workspace --format markdown
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Multi-Platform Support
|
|
131
|
+
|
|
132
|
+
Probe Docker images support multiple architectures:
|
|
133
|
+
- `linux/amd64` - x86_64 Linux systems
|
|
134
|
+
- `linux/arm64` - ARM64 Linux systems (Apple Silicon, ARM servers)
|
|
135
|
+
|
|
136
|
+
Docker will automatically pull the correct architecture for your system.
|
|
137
|
+
|
|
138
|
+
## Building Locally
|
|
139
|
+
|
|
140
|
+
If you prefer to build the images locally:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Build Probe CLI
|
|
144
|
+
docker build -t probe-local .
|
|
145
|
+
|
|
146
|
+
# Build Probe Chat
|
|
147
|
+
docker build -t probe-chat-local -f examples/chat/Dockerfile examples/chat
|
|
148
|
+
|
|
149
|
+
# Build with Docker Compose
|
|
150
|
+
docker compose build
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Health Checks
|
|
154
|
+
|
|
155
|
+
Both images include health checks:
|
|
156
|
+
- **Probe CLI**: Tests `probe --version`
|
|
157
|
+
- **Probe Chat**: Tests application endpoint (web mode) or Node.js version (CLI mode)
|
|
158
|
+
|
|
159
|
+
## Security Features
|
|
160
|
+
|
|
161
|
+
- **Non-root execution**: Both containers run as non-root user `probe`
|
|
162
|
+
- **Minimal base images**: Based on `debian:bookworm-slim` and `node:slim`
|
|
163
|
+
- **Security labels**: OCI-compliant labels for metadata
|
|
164
|
+
- **Read-only volumes**: Mount code directories as read-only when possible
|
|
165
|
+
|
|
166
|
+
## Troubleshooting
|
|
167
|
+
|
|
168
|
+
### Port Already in Use
|
|
169
|
+
If port 3000 is already in use:
|
|
170
|
+
```bash
|
|
171
|
+
docker run --rm -e ANTHROPIC_API_KEY=your_key -p 8080:3000 probelabs/probe-chat --web
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Permission Issues
|
|
175
|
+
If you need to write to mounted volumes:
|
|
176
|
+
```bash
|
|
177
|
+
# Set ownership for mounted directory
|
|
178
|
+
sudo chown -R 1000:1000 /path/to/mounted/directory
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### API Key Issues
|
|
182
|
+
Ensure your API key is properly set:
|
|
183
|
+
```bash
|
|
184
|
+
# Check if key is set
|
|
185
|
+
echo $ANTHROPIC_API_KEY
|
|
186
|
+
|
|
187
|
+
# Set key if needed
|
|
188
|
+
export ANTHROPIC_API_KEY=your_actual_key
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Advanced Configuration
|
|
192
|
+
|
|
193
|
+
### Custom Dockerfile
|
|
194
|
+
|
|
195
|
+
For advanced use cases, you can extend the base images:
|
|
196
|
+
|
|
197
|
+
```dockerfile
|
|
198
|
+
FROM probelabs/probe-chat:latest
|
|
199
|
+
|
|
200
|
+
# Add custom configurations
|
|
201
|
+
COPY custom-config.json /app/config/
|
|
202
|
+
ENV CUSTOM_CONFIG_PATH=/app/config/custom-config.json
|
|
203
|
+
|
|
204
|
+
# Add additional tools
|
|
205
|
+
USER root
|
|
206
|
+
RUN apt-get update && apt-get install -y git
|
|
207
|
+
USER probe
|
|
208
|
+
|
|
209
|
+
ENTRYPOINT ["node", "index.js"]
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Production Deployment
|
|
213
|
+
|
|
214
|
+
For production deployments, consider:
|
|
215
|
+
- Using specific version tags instead of `latest`
|
|
216
|
+
- Setting resource limits
|
|
217
|
+
- Implementing proper logging
|
|
218
|
+
- Using secrets management for API keys
|
|
219
|
+
- Setting up monitoring and health checks
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
# docker-compose.prod.yml
|
|
223
|
+
version: '3.8'
|
|
224
|
+
services:
|
|
225
|
+
probe-chat:
|
|
226
|
+
image: probelabs/probe-chat:1.0.0
|
|
227
|
+
environment:
|
|
228
|
+
- ANTHROPIC_API_KEY_FILE=/run/secrets/anthropic_api_key
|
|
229
|
+
secrets:
|
|
230
|
+
- anthropic_api_key
|
|
231
|
+
deploy:
|
|
232
|
+
resources:
|
|
233
|
+
limits:
|
|
234
|
+
memory: 1G
|
|
235
|
+
cpus: '0.5'
|
|
236
|
+
restart: unless-stopped
|
|
237
|
+
|
|
238
|
+
secrets:
|
|
239
|
+
anthropic_api_key:
|
|
240
|
+
external: true
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Related Documentation
|
|
244
|
+
|
|
245
|
+
- [Installation Guide](../installation.md)
|
|
246
|
+
- [Quick Start](../quick-start.md)
|
|
247
|
+
- [GitHub Actions Integration](./github-actions.md)
|
|
248
|
+
- [Web Interface](../web-interface.md)
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: GitHub Actions Integration
|
|
3
|
+
description: Automate issue responses, PR reviews, and code modifications using Probe with GitHub Actions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitHub Actions Integration
|
|
7
|
+
|
|
8
|
+
Probe can be integrated into your GitHub workflow to automate responses to issues and pull requests, and even implement code changes, acting as an AI assistant powered by code context. This allows Probe to help answer questions, review code, or make modifications directly within GitHub.
|
|
9
|
+
|
|
10
|
+
## Example Workflows
|
|
11
|
+
|
|
12
|
+
### Example 1: Issue & PR Assistant (Read-Only)
|
|
13
|
+
|
|
14
|
+
This example workflow demonstrates how to set up Probe to respond to commands in issue comments and newly opened pull requests or issues without modifying code.
|
|
15
|
+
|
|
16
|
+
**File:** `.github/workflows/probe-assistant.yml`
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
name: AI Comment Handler
|
|
20
|
+
|
|
21
|
+
on:
|
|
22
|
+
pull_request:
|
|
23
|
+
types: [opened] # Trigger on new PRs
|
|
24
|
+
issue_comment:
|
|
25
|
+
types: [created] # Trigger on new issue comments
|
|
26
|
+
issues:
|
|
27
|
+
types: [opened] # Trigger on new issues
|
|
28
|
+
|
|
29
|
+
# Define permissions needed for the workflow
|
|
30
|
+
permissions:
|
|
31
|
+
issues: write # To post comments on issues
|
|
32
|
+
pull-requests: write # To post comments on PRs
|
|
33
|
+
contents: read # To read repository code for context
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
trigger_probe_chat:
|
|
37
|
+
# Use the reusable workflow from the main Probe repository
|
|
38
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
39
|
+
# Pass required inputs
|
|
40
|
+
with:
|
|
41
|
+
# Define the command prefix to trigger the bot
|
|
42
|
+
command_prefix: "/probe" # Or '/ai', '/ask', etc.
|
|
43
|
+
# Optionally override the default npx command if the secret isn't set
|
|
44
|
+
# default_probe_chat_command: 'node path/to/custom/script.js'
|
|
45
|
+
# Comment management options
|
|
46
|
+
update_existing_comment: true # Update existing comment instead of creating new ones
|
|
47
|
+
update_comment_marker: "<!-- probe-assistant -->" # Custom marker for this workflow
|
|
48
|
+
# Pass necessary secrets to the reusable workflow
|
|
49
|
+
secrets:
|
|
50
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
51
|
+
ANTHROPIC_API_URL: ${{ secrets.ANTHROPIC_API_URL }}
|
|
52
|
+
# GITHUB_TOKEN is automatically passed
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### How it Works (Read-Only Assistant)
|
|
56
|
+
|
|
57
|
+
1. **Triggers**: The workflow runs when a new PR/issue is opened or a comment is made on an issue.
|
|
58
|
+
2. **Permissions**: It requires `write` permissions for issues/PRs to post comments and `read` permission for `contents` to access repository code for analysis.
|
|
59
|
+
3. **Reusable Workflow**: It utilizes `probelabs/probe/.github/workflows/probe.yml@main`, which handles parsing the command, invoking the Probe AI agent, searching the codebase, generating a response, and posting it back as a comment.
|
|
60
|
+
4. **Configuration**:
|
|
61
|
+
* `command_prefix`: Defines how users trigger the bot (e.g., `/probe <Your question>`).
|
|
62
|
+
* `secrets`: Requires AI provider secrets (e.g., `ANTHROPIC_API_KEY`).
|
|
63
|
+
|
|
64
|
+
### Example 2: AI Engineer (Code Editing Enabled)
|
|
65
|
+
|
|
66
|
+
This example demonstrates how to configure Probe to not only respond to comments but also potentially implement code changes using a specific AI persona (`engineer`) and enabling edit capabilities.
|
|
67
|
+
|
|
68
|
+
**File:** `.github/workflows/probe-engineer.yml`
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
name: Probe Engineer Handler
|
|
72
|
+
|
|
73
|
+
on:
|
|
74
|
+
issue_comment:
|
|
75
|
+
types: [created] # Trigger only on issue comments
|
|
76
|
+
|
|
77
|
+
# Define permissions needed for the workflow
|
|
78
|
+
permissions:
|
|
79
|
+
issues: write # To post comments
|
|
80
|
+
pull-requests: write # To potentially create/comment on PRs (depending on implement tool behavior)
|
|
81
|
+
contents: write # REQUIRED to allow code modifications
|
|
82
|
+
|
|
83
|
+
jobs:
|
|
84
|
+
trigger_probe_implement:
|
|
85
|
+
# Use the reusable workflow
|
|
86
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
87
|
+
with:
|
|
88
|
+
# Define the command prefix
|
|
89
|
+
command_prefix: "/engineer" # Specific prefix for this persona
|
|
90
|
+
# --- Enable Code Modifications ---
|
|
91
|
+
allow_suggestions: true # Enable suggestions via suggest-changes (recommended for PR contexts)
|
|
92
|
+
# allow_edit: true # Alternative: enable direct commits
|
|
93
|
+
# --- Set AI Persona ---
|
|
94
|
+
prompt: engineer # Use the 'engineer' predefined prompt
|
|
95
|
+
# --- Comment Management ---
|
|
96
|
+
update_existing_comment: true # Update existing comment instead of creating new ones
|
|
97
|
+
update_comment_marker: "<!-- probe-engineer -->" # Custom marker for engineer workflow
|
|
98
|
+
secrets:
|
|
99
|
+
# AI Provider Secrets
|
|
100
|
+
ANTHROPIC_API_KEY: ${{ secrets.PROBE_ANTHROPIC_API_KEY }}
|
|
101
|
+
ANTHROPIC_API_URL: ${{ secrets.PROBE_ANTHROPIC_URL }}
|
|
102
|
+
# GitHub App Secrets (Potentially needed for more complex git operations)
|
|
103
|
+
APP_ID: ${{ secrets.PROBE_APP_ID }}
|
|
104
|
+
APP_PRIVATE_KEY: ${{ secrets.PROBE_APP_PRIVATE_KEY }}
|
|
105
|
+
# GITHUB_TOKEN is automatically passed
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### How it Works (AI Engineer)
|
|
109
|
+
|
|
110
|
+
1. **Trigger**: This workflow specifically triggers on issue comments.
|
|
111
|
+
2. **Permissions**: Crucially, it requires `contents: write` permission in addition to `issues: write` and potentially `pull-requests: write`. The `contents: write` permission is essential for allowing the workflow to modify files in the repository.
|
|
112
|
+
3. **Reusable Workflow**: Still uses `probelabs/probe/.github/workflows/probe.yml@main`.
|
|
113
|
+
4. **Configuration**:
|
|
114
|
+
* `command_prefix`: Uses `/engineer` to invoke this specific workflow.
|
|
115
|
+
* `allow_edit: true`: This flag enables Probe's code editing capabilities (likely via the `implement` tool). **Use with caution.**
|
|
116
|
+
* `prompt: engineer`: Instructs the AI agent to use the specialized "engineer" persona, focusing on analysis and implementation.
|
|
117
|
+
* `secrets`: May require additional secrets like GitHub App credentials (`APP_ID`, `APP_PRIVATE_KEY`) if the implementation involves creating commits or PRs under a specific App identity, depending on the underlying `implement` tool's behavior.
|
|
118
|
+
|
|
119
|
+
## Code Modification Options
|
|
120
|
+
|
|
121
|
+
Probe can help you make code changes in two ways:
|
|
122
|
+
|
|
123
|
+
### Direct Changes (`allow_edit: true`)
|
|
124
|
+
|
|
125
|
+
When you set `allow_edit: true`, Probe can make changes directly to your code.
|
|
126
|
+
|
|
127
|
+
* **What it does**: Probe can modify files in your repository when you ask it to (like "Fix this bug" or "Add error handling").
|
|
128
|
+
* **Requirements**: Your workflow needs permission to write to your repository (`contents: write`).
|
|
129
|
+
* **Result**: Changes are saved directly to your code.
|
|
130
|
+
|
|
131
|
+
### Suggested Changes (`allow_suggestions: true`) - Recommended
|
|
132
|
+
|
|
133
|
+
When you set `allow_suggestions: true`, Probe creates suggestions instead of making direct changes.
|
|
134
|
+
|
|
135
|
+
* **What it does**: Probe analyzes your code and creates suggestions that appear in pull requests, just like when a human reviewer suggests changes.
|
|
136
|
+
* **Requirements**: Your workflow needs permission to read your code (`contents: read`) and comment on pull requests (`pull-requests: write`).
|
|
137
|
+
* **Result**: You see suggested changes that you can accept or reject with one click.
|
|
138
|
+
* **When it works**: Only in pull requests. For other contexts, no changes are made.
|
|
139
|
+
|
|
140
|
+
### Which Should You Choose?
|
|
141
|
+
|
|
142
|
+
**We recommend `allow_suggestions: true`** because:
|
|
143
|
+
- You get to review changes before they're applied
|
|
144
|
+
- It's safer than automatic changes
|
|
145
|
+
- You maintain full control over your code
|
|
146
|
+
- It works great with GitHub's built-in review tools
|
|
147
|
+
|
|
148
|
+
**Important**: Both options let AI modify your code, so always review the changes carefully before accepting them.
|
|
149
|
+
|
|
150
|
+
## Manual Triggering (`workflow_dispatch`)
|
|
151
|
+
|
|
152
|
+
You can allow workflows using `probe.yml` to be triggered manually from the GitHub UI. This is useful for testing or running the agent on demand without needing an issue comment or PR event.
|
|
153
|
+
|
|
154
|
+
1. **Add `workflow_dispatch` to Triggers**: Modify the `on:` section of your workflow file:
|
|
155
|
+
|
|
156
|
+
```yaml
|
|
157
|
+
name: Manual Probe Run
|
|
158
|
+
|
|
159
|
+
on:
|
|
160
|
+
workflow_dispatch: # Allows manual triggering
|
|
161
|
+
# Optional: Define inputs for the manual run
|
|
162
|
+
inputs:
|
|
163
|
+
user_request:
|
|
164
|
+
description: 'The request/question for Probe'
|
|
165
|
+
required: true
|
|
166
|
+
default: 'Explain the main function in src/main.rs'
|
|
167
|
+
# Add other inputs if needed, e.g., target branch
|
|
168
|
+
|
|
169
|
+
# Keep other triggers if needed
|
|
170
|
+
issue_comment:
|
|
171
|
+
types: [created]
|
|
172
|
+
|
|
173
|
+
permissions:
|
|
174
|
+
# ... your permissions ...
|
|
175
|
+
contents: read # Or write if allow_edit is true
|
|
176
|
+
|
|
177
|
+
jobs:
|
|
178
|
+
trigger_probe_manual:
|
|
179
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
180
|
+
with:
|
|
181
|
+
# Use the input from the manual trigger
|
|
182
|
+
manual_input: ${{ github.event.inputs.user_request }}
|
|
183
|
+
# Set other parameters as needed
|
|
184
|
+
allow_edit: false # Example: disable editing for manual runs
|
|
185
|
+
# command_prefix is not typically needed for workflow_dispatch
|
|
186
|
+
secrets:
|
|
187
|
+
# ... your secrets ...
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
2. **Trigger from GitHub UI**:
|
|
191
|
+
* Go to your repository's "Actions" tab.
|
|
192
|
+
* Select the workflow (e.g., "Manual Probe Run") from the list on the left.
|
|
193
|
+
* Click the "Run workflow" dropdown button.
|
|
194
|
+
* If you defined inputs (like `user_request`), fill them in the form.
|
|
195
|
+
* Click the "Run workflow" button.
|
|
196
|
+
|
|
197
|
+
The reusable `probe.yml` workflow needs to be designed to handle the `manual_input` (or a similarly named input) when triggered via `workflow_dispatch`. Check the `probe.yml` documentation for specifics on how it handles manual inputs.
|
|
198
|
+
|
|
199
|
+
## Advanced Configuration
|
|
200
|
+
|
|
201
|
+
### OpenTelemetry Tracing
|
|
202
|
+
|
|
203
|
+
Probe's GitHub Actions integration supports OpenTelemetry tracing to monitor AI model interactions and performance metrics. This is particularly useful for understanding usage patterns, debugging issues, and optimizing AI interactions.
|
|
204
|
+
|
|
205
|
+
#### Enable Tracing
|
|
206
|
+
|
|
207
|
+
Add the `enable_tracing` parameter to your workflow:
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
jobs:
|
|
211
|
+
trigger_probe_chat:
|
|
212
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
213
|
+
with:
|
|
214
|
+
command_prefix: "/probe"
|
|
215
|
+
enable_tracing: true # Enable OpenTelemetry tracing
|
|
216
|
+
secrets:
|
|
217
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
#### File Tracing (Default)
|
|
221
|
+
|
|
222
|
+
When `enable_tracing: true` is set without `TRACING_URL`, traces are saved to a file:
|
|
223
|
+
|
|
224
|
+
- **Output**: `probe-traces.jsonl` file in JSON Lines format
|
|
225
|
+
- **Artifact**: Automatically uploaded as `probe-traces` artifact
|
|
226
|
+
- **Retention**: 30 days (configurable)
|
|
227
|
+
- **Download**: Available in the Actions run artifacts section
|
|
228
|
+
|
|
229
|
+
```yaml
|
|
230
|
+
jobs:
|
|
231
|
+
trigger_probe_chat:
|
|
232
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
233
|
+
with:
|
|
234
|
+
command_prefix: "/probe"
|
|
235
|
+
enable_tracing: true
|
|
236
|
+
secrets:
|
|
237
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
238
|
+
# No TRACING_URL = file tracing
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### Remote Tracing
|
|
242
|
+
|
|
243
|
+
For remote tracing to an OpenTelemetry collector, add the `TRACING_URL` secret:
|
|
244
|
+
|
|
245
|
+
```yaml
|
|
246
|
+
jobs:
|
|
247
|
+
trigger_probe_chat:
|
|
248
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
249
|
+
with:
|
|
250
|
+
command_prefix: "/probe"
|
|
251
|
+
enable_tracing: true
|
|
252
|
+
secrets:
|
|
253
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
254
|
+
TRACING_URL: ${{ secrets.TRACING_URL }} # e.g., http://localhost:4318/v1/traces
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### What Gets Traced
|
|
258
|
+
|
|
259
|
+
The tracing system captures comprehensive data about AI interactions:
|
|
260
|
+
|
|
261
|
+
- **AI Model Calls**: Request/response cycles with detailed timing
|
|
262
|
+
- **Token Usage**: Prompt tokens, completion tokens, and total consumption
|
|
263
|
+
- **Performance Metrics**: Response times, request durations, and throughput
|
|
264
|
+
- **GitHub Context**: Issue/PR numbers, repository information, and workflow details
|
|
265
|
+
- **Session Information**: Unique session IDs and conversation flow
|
|
266
|
+
- **Error Tracking**: Failed requests, timeouts, and error details
|
|
267
|
+
|
|
268
|
+
#### Example Trace Data
|
|
269
|
+
|
|
270
|
+
```json
|
|
271
|
+
{
|
|
272
|
+
"traceId": "abc123def456...",
|
|
273
|
+
"spanId": "789ghi012jkl...",
|
|
274
|
+
"name": "ai.generateText",
|
|
275
|
+
"startTimeUnixNano": 1704067200000000000,
|
|
276
|
+
"endTimeUnixNano": 1704067201000000000,
|
|
277
|
+
"attributes": {
|
|
278
|
+
"ai.model.id": "claude-3-7-sonnet-20250219",
|
|
279
|
+
"ai.model.provider": "anthropic",
|
|
280
|
+
"ai.telemetry.functionId": "chat-issue-123",
|
|
281
|
+
"ai.telemetry.metadata.sessionId": "github-issue-123",
|
|
282
|
+
"ai.telemetry.metadata.iteration": "1",
|
|
283
|
+
"github.repository": "owner/repo",
|
|
284
|
+
"github.issue.number": "123",
|
|
285
|
+
"github.event": "issue_comment"
|
|
286
|
+
},
|
|
287
|
+
"events": [
|
|
288
|
+
{
|
|
289
|
+
"name": "ai.request.start",
|
|
290
|
+
"attributes": {
|
|
291
|
+
"ai.request.messages": "[{\"role\":\"user\",\"content\":\"How does X work?\"}]"
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"name": "ai.response.complete",
|
|
296
|
+
"attributes": {
|
|
297
|
+
"ai.usage.prompt_tokens": "245",
|
|
298
|
+
"ai.usage.completion_tokens": "156",
|
|
299
|
+
"ai.usage.total_tokens": "401"
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
#### Setting Up Remote Tracing
|
|
307
|
+
|
|
308
|
+
For remote tracing with Jaeger:
|
|
309
|
+
|
|
310
|
+
1. **Set up Jaeger**:
|
|
311
|
+
```bash
|
|
312
|
+
docker run -d --name jaeger \
|
|
313
|
+
-p 16686:16686 \
|
|
314
|
+
-p 4318:4318 \
|
|
315
|
+
jaegertracing/all-in-one:latest
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
2. **Add Repository Secret**:
|
|
319
|
+
- Go to Settings > Secrets and variables > Actions
|
|
320
|
+
- Add: `TRACING_URL` = `http://localhost:4318/v1/traces`
|
|
321
|
+
|
|
322
|
+
3. **Configure Workflow**:
|
|
323
|
+
```yaml
|
|
324
|
+
jobs:
|
|
325
|
+
trigger_probe_chat:
|
|
326
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
327
|
+
with:
|
|
328
|
+
enable_tracing: true
|
|
329
|
+
secrets:
|
|
330
|
+
TRACING_URL: ${{ secrets.TRACING_URL }}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
#### Analyzing Traces
|
|
334
|
+
|
|
335
|
+
Download and analyze trace files:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Download artifact from GitHub Actions
|
|
339
|
+
# Extract probe-traces.jsonl
|
|
340
|
+
|
|
341
|
+
# View traces
|
|
342
|
+
cat probe-traces.jsonl | jq '.'
|
|
343
|
+
|
|
344
|
+
# Count interactions by model
|
|
345
|
+
cat probe-traces.jsonl | jq -r '.attributes."ai.model.id"' | sort | uniq -c
|
|
346
|
+
|
|
347
|
+
# Calculate total token usage
|
|
348
|
+
cat probe-traces.jsonl | jq -r '.events[]? | select(.name == "ai.response.complete") |
|
|
349
|
+
.attributes."ai.usage.total_tokens"' | jq -s 'add'
|
|
350
|
+
|
|
351
|
+
# Find slow responses (>5 seconds)
|
|
352
|
+
cat probe-traces.jsonl | jq -r 'select(((.endTimeUnixNano - .startTimeUnixNano) / 1000000000) > 5) |
|
|
353
|
+
{duration: ((.endTimeUnixNano - .startTimeUnixNano) / 1000000000), name: .name}'
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
#### Use Cases for Tracing
|
|
357
|
+
|
|
358
|
+
- **Performance Monitoring**: Track AI response times and optimize workflows
|
|
359
|
+
- **Usage Analytics**: Understand token consumption patterns and costs
|
|
360
|
+
- **Debugging**: Identify failed requests and troubleshoot issues
|
|
361
|
+
- **Capacity Planning**: Monitor request volumes and plan scaling
|
|
362
|
+
- **Cost Optimization**: Analyze token usage to optimize AI interactions
|
|
363
|
+
|
|
364
|
+
### Comment Management
|
|
365
|
+
|
|
366
|
+
By default, Probe creates a new comment for each invocation. However, you can configure it to update an existing comment instead, which helps reduce comment clutter in issues and pull requests.
|
|
367
|
+
|
|
368
|
+
#### Parameters
|
|
369
|
+
|
|
370
|
+
* **`update_existing_comment`** (boolean, default: `false`): When set to `true`, Probe will search for an existing comment containing the `update_comment_marker` and replace its content instead of creating a new comment.
|
|
371
|
+
* **`update_comment_marker`** (string, default: `"<!-- probe-bot -->")`): A hidden HTML comment marker inserted into the comment body. This serves as a reliable anchor that allows the workflow to locate and update the correct comment on subsequent runs.
|
|
372
|
+
|
|
373
|
+
#### Benefits
|
|
374
|
+
|
|
375
|
+
* **Reduced Clutter**: Instead of accumulating multiple bot comments, you get a single, continuously updated response.
|
|
376
|
+
* **Better UX**: Users see the latest response without scrolling through multiple bot comments.
|
|
377
|
+
* **Cleaner History**: Issue and PR conversations remain focused and readable.
|
|
378
|
+
|
|
379
|
+
#### Example Usage
|
|
380
|
+
|
|
381
|
+
```yaml
|
|
382
|
+
jobs:
|
|
383
|
+
trigger_probe_chat:
|
|
384
|
+
uses: probelabs/probe/.github/workflows/probe.yml@main
|
|
385
|
+
with:
|
|
386
|
+
command_prefix: "/probe"
|
|
387
|
+
# Enable comment updating
|
|
388
|
+
update_existing_comment: true
|
|
389
|
+
# Use a custom marker to distinguish different workflows
|
|
390
|
+
update_comment_marker: "<!-- my-probe-bot -->"
|
|
391
|
+
secrets:
|
|
392
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
#### How It Works
|
|
396
|
+
|
|
397
|
+
1. **First Run**: Probe creates a new comment with the marker embedded as a hidden HTML comment.
|
|
398
|
+
2. **Subsequent Runs**: Probe searches for existing comments containing the specified marker and updates the first match found.
|
|
399
|
+
3. **Marker Uniqueness**: Use different markers for different workflows (e.g., `<!-- probe-assistant -->` vs `<!-- probe-engineer -->`) to prevent conflicts.
|
|
400
|
+
|
|
401
|
+
#### Best Practices
|
|
402
|
+
|
|
403
|
+
* Use descriptive markers that identify the specific workflow or purpose (e.g., `<!-- probe-code-review -->`, `<!-- probe-qa-bot -->`).
|
|
404
|
+
* Enable this feature for workflows that are likely to be invoked multiple times on the same issue or PR.
|
|
405
|
+
* Consider keeping it disabled for one-off assistance requests where you want to preserve the conversation history.
|
|
406
|
+
|
|
407
|
+
## Use Cases
|
|
408
|
+
|
|
409
|
+
* **Ticket Answering Assistant**: Users ask questions (`/probe How does X work?`), and Probe analyzes code to answer.
|
|
410
|
+
* **Pull Request Reviewer**: Invoke Probe (`/probe Review this change`) to get AI feedback on PRs.
|
|
411
|
+
* **AI Code Implementation**: Request code changes (`/engineer Refactor this function`) and have Probe attempt to implement them (requires `allow_edit: true` and `contents: write`).
|
|
412
|
+
|
|
413
|
+
This integration streamlines development by bringing code-aware AI assistance and automation directly into your GitHub issues and pull requests.
|