@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.
Files changed (444) hide show
  1. package/README.md +138 -0
  2. package/data/.env.example +22 -0
  3. package/data/.gitattributes +47 -0
  4. package/data/.glfrc.json +7 -0
  5. package/data/.husky/pre-commit +5 -0
  6. package/data/.nvmrc +1 -0
  7. package/data/CHANGELOG.md +75 -0
  8. package/data/CODE_OF_CONDUCT.md +129 -0
  9. package/data/CONTRIBUTING.md +203 -0
  10. package/data/DOCS-STRUCTURE.md +307 -0
  11. package/data/I18N.md +292 -0
  12. package/data/LICENSE +22 -0
  13. package/data/README.md +315 -0
  14. package/data/SECURITY.md +125 -0
  15. package/data/WIKI-DEPLOYMENT.md +348 -0
  16. package/data/docs/AI-FEATURES.md +610 -0
  17. package/data/docs/API-REFERENCE.md +1022 -0
  18. package/data/docs/AUTHENTICATION.md +301 -0
  19. package/data/docs/BACKEND-API.md +468 -0
  20. package/data/docs/DEVELOPMENT.md +375 -0
  21. package/data/docs/EXAMPLES.md +622 -0
  22. package/data/docs/MCP-SERVER.md +307 -0
  23. package/data/docs/MIGRATION-GUIDE.md +367 -0
  24. package/data/docs/NPM-PUBLISH.md +193 -0
  25. package/data/docs/QUICKSTART.md +206 -0
  26. package/data/docs/REDIS-SETUP.md +162 -0
  27. package/data/docs/SERVER.md +228 -0
  28. package/data/docs/TROUBLESHOOTING.md +657 -0
  29. package/data/docs/WIDGET-GUIDE.md +638 -0
  30. package/data/docs/WIKI-HOME.md +58 -0
  31. package/data/docs/WIKI-SIDEBAR.md +39 -0
  32. package/data/package.json +171 -0
  33. package/data/playwright.config.ts +64 -0
  34. package/data/probe/.cargo/config.toml +10 -0
  35. package/data/probe/.claude/commands/performance-review.md +15 -0
  36. package/data/probe/.clinerules +288 -0
  37. package/data/probe/.dockerignore +57 -0
  38. package/data/probe/.githooks/post-commit +11 -0
  39. package/data/probe/.githooks/pre-commit +99 -0
  40. package/data/probe/.githooks/pre-commit-vow +9 -0
  41. package/data/probe/.prompts/engineer.md +41 -0
  42. package/data/probe/.roomodes +28 -0
  43. package/data/probe/.windsurfrules +0 -0
  44. package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
  45. package/data/probe/BENCHMARKING.md +256 -0
  46. package/data/probe/CLAUDE.md +226 -0
  47. package/data/probe/CODE_OF_CONDUCT.md +128 -0
  48. package/data/probe/CONTRIBUTING.md +193 -0
  49. package/data/probe/Cargo.toml +120 -0
  50. package/data/probe/Cross.toml +10 -0
  51. package/data/probe/DOCKER-README.md +224 -0
  52. package/data/probe/Dockerfile +32 -0
  53. package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
  54. package/data/probe/LICENSE +201 -0
  55. package/data/probe/Makefile +210 -0
  56. package/data/probe/README.md +824 -0
  57. package/data/probe/SECURITY.md +67 -0
  58. package/data/probe/WINDOWS-GUIDE.md +294 -0
  59. package/data/probe/benches/parsing_benchmarks.rs +370 -0
  60. package/data/probe/benches/search_benchmarks.rs +599 -0
  61. package/data/probe/benches/simd_benchmarks.rs +372 -0
  62. package/data/probe/benches/timing_benchmarks.rs +287 -0
  63. package/data/probe/build-windows.bat +229 -0
  64. package/data/probe/codex-config/config.toml +6 -0
  65. package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
  66. package/data/probe/examples/cache_demo.rs +46 -0
  67. package/data/probe/examples/chat/.dockerignore +37 -0
  68. package/data/probe/examples/chat/ChatSessionManager.js +295 -0
  69. package/data/probe/examples/chat/Dockerfile +98 -0
  70. package/data/probe/examples/chat/LICENSE +201 -0
  71. package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
  72. package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
  73. package/data/probe/examples/chat/README.md +338 -0
  74. package/data/probe/examples/chat/TRACING.md +226 -0
  75. package/data/probe/examples/chat/appTracer.js +968 -0
  76. package/data/probe/examples/chat/auth.js +76 -0
  77. package/data/probe/examples/chat/bin/probe-chat.js +13 -0
  78. package/data/probe/examples/chat/build.js +104 -0
  79. package/data/probe/examples/chat/cancelRequest.js +84 -0
  80. package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
  81. package/data/probe/examples/chat/demo-local-images.js +128 -0
  82. package/data/probe/examples/chat/fileSpanExporter.js +181 -0
  83. package/data/probe/examples/chat/implement/README.md +228 -0
  84. package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
  85. package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
  86. package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
  87. package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
  88. package/data/probe/examples/chat/implement/backends/registry.js +85 -0
  89. package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
  90. package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
  91. package/data/probe/examples/chat/implement/core/config.js +428 -0
  92. package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
  93. package/data/probe/examples/chat/implement/core/utils.js +496 -0
  94. package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
  95. package/data/probe/examples/chat/index.js +669 -0
  96. package/data/probe/examples/chat/mcpServer.js +341 -0
  97. package/data/probe/examples/chat/npm/LICENSE +15 -0
  98. package/data/probe/examples/chat/npm/README.md +168 -0
  99. package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
  100. package/data/probe/examples/chat/npm/index.js +259 -0
  101. package/data/probe/examples/chat/npm/package.json +54 -0
  102. package/data/probe/examples/chat/package.json +102 -0
  103. package/data/probe/examples/chat/probeChat.js +456 -0
  104. package/data/probe/examples/chat/probeTool.js +491 -0
  105. package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
  106. package/data/probe/examples/chat/telemetry.js +281 -0
  107. package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
  108. package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
  109. package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
  110. package/data/probe/examples/chat/test/test-backends.js +90 -0
  111. package/data/probe/examples/chat/test/testUtils.js +530 -0
  112. package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
  113. package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
  114. package/data/probe/examples/chat/test/verify-tests.js +118 -0
  115. package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
  116. package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
  117. package/data/probe/examples/chat/test-chat-tracing.js +38 -0
  118. package/data/probe/examples/chat/test-direct-function.js +49 -0
  119. package/data/probe/examples/chat/test-file-size-validation.js +103 -0
  120. package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
  121. package/data/probe/examples/chat/test-github-context.txt +12 -0
  122. package/data/probe/examples/chat/test-hierarchy.js +203 -0
  123. package/data/probe/examples/chat/test-image-spans.js +37 -0
  124. package/data/probe/examples/chat/test-local-image-reading.js +176 -0
  125. package/data/probe/examples/chat/test-mcp-integration.js +136 -0
  126. package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
  127. package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
  128. package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
  129. package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
  130. package/data/probe/examples/chat/test-security-validation.js +145 -0
  131. package/data/probe/examples/chat/test-simple-tracing.js +32 -0
  132. package/data/probe/examples/chat/test-trace-verification.js +235 -0
  133. package/data/probe/examples/chat/test-tracing.js +114 -0
  134. package/data/probe/examples/chat/tokenCounter.js +419 -0
  135. package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
  136. package/data/probe/examples/chat/webServer.js +1103 -0
  137. package/data/probe/examples/reranker/Cargo.toml +33 -0
  138. package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
  139. package/data/probe/examples/reranker/MODELS.md +66 -0
  140. package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
  141. package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
  142. package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
  143. package/data/probe/examples/reranker/README.md +347 -0
  144. package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
  145. package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
  146. package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
  147. package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
  148. package/data/probe/examples/reranker/debug_scoring.py +189 -0
  149. package/data/probe/examples/reranker/debug_tokenization.py +154 -0
  150. package/data/probe/examples/reranker/download_models.sh +73 -0
  151. package/data/probe/examples/reranker/requirements.txt +13 -0
  152. package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
  153. package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
  154. package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
  155. package/data/probe/examples/reranker/simple_test.py +50 -0
  156. package/data/probe/examples/reranker/test_all_models.sh +63 -0
  157. package/data/probe/examples/reranker/test_bert_results.sh +44 -0
  158. package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
  159. package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
  160. package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
  161. package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
  162. package/data/probe/examples/reranker/test_scores.py +132 -0
  163. package/data/probe/install.ps1 +508 -0
  164. package/data/probe/install.sh +460 -0
  165. package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
  166. package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
  167. package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
  168. package/data/probe/npm/MAID_INTEGRATION.md +313 -0
  169. package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
  170. package/data/probe/npm/README.md +824 -0
  171. package/data/probe/npm/bin/.gitignore +7 -0
  172. package/data/probe/npm/bin/.gitkeep +0 -0
  173. package/data/probe/npm/bin/README.md +12 -0
  174. package/data/probe/npm/bin/probe +167 -0
  175. package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
  176. package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
  177. package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
  178. package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
  179. package/data/probe/npm/example-usage.js +335 -0
  180. package/data/probe/npm/examples/multi-engine-demo.js +117 -0
  181. package/data/probe/npm/examples/probe-agent-cli.js +113 -0
  182. package/data/probe/npm/examples/test-agent-edit.js +114 -0
  183. package/data/probe/npm/examples/test-edit-create.js +120 -0
  184. package/data/probe/npm/examples/test-edit-direct.js +114 -0
  185. package/data/probe/npm/index.d.ts +744 -0
  186. package/data/probe/npm/jest.config.js +52 -0
  187. package/data/probe/npm/package.json +117 -0
  188. package/data/probe/npm/scripts/build-agent.cjs +75 -0
  189. package/data/probe/npm/scripts/build-cjs.js +124 -0
  190. package/data/probe/npm/scripts/build-mcp.cjs +36 -0
  191. package/data/probe/npm/scripts/postinstall.js +216 -0
  192. package/data/probe/npm/test-codex-e2e.js +78 -0
  193. package/data/probe/npm/test-download-lock.js +109 -0
  194. package/data/probe/npm/test-grep-security.js +94 -0
  195. package/data/probe/npm/test-grep-simplified.js +63 -0
  196. package/data/probe/npm/test-grep.js +51 -0
  197. package/data/probe/npm/tests/README.md +96 -0
  198. package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
  199. package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
  200. package/data/probe/npm/tests/contextCompactor.test.js +498 -0
  201. package/data/probe/npm/tests/delegate-config.test.js +353 -0
  202. package/data/probe/npm/tests/delegate-integration.test.js +348 -0
  203. package/data/probe/npm/tests/extractor-integration.test.js +162 -0
  204. package/data/probe/npm/tests/extractor.test.js +317 -0
  205. package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
  206. package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
  207. package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
  208. package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
  209. package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
  210. package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
  211. package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
  212. package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
  213. package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
  214. package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
  215. package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
  216. package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
  217. package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
  218. package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
  219. package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
  220. package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
  221. package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
  222. package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
  223. package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
  224. package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
  225. package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
  226. package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
  227. package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
  228. package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
  229. package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
  230. package/data/probe/npm/tests/setup.js +46 -0
  231. package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
  232. package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
  233. package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
  234. package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
  235. package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
  236. package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
  237. package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
  238. package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
  239. package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
  240. package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
  241. package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
  242. package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
  243. package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
  244. package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
  245. package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
  246. package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
  247. package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
  248. package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
  249. package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
  250. package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
  251. package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
  252. package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
  253. package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
  254. package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
  255. package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
  256. package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
  257. package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
  258. package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
  259. package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
  260. package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
  261. package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
  262. package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
  263. package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
  264. package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
  265. package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
  266. package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
  267. package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
  268. package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
  269. package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
  270. package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
  271. package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
  272. package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
  273. package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
  274. package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
  275. package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
  276. package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
  277. package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
  278. package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
  279. package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
  280. package/data/probe/npm/tsconfig.json +21 -0
  281. package/data/probe/result1.txt +19 -0
  282. package/data/probe/result2.txt +26 -0
  283. package/data/probe/scripts/benchmark.sh +270 -0
  284. package/data/probe/scripts/cache_memory_analysis.rs +844 -0
  285. package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
  286. package/data/probe/site/.env.example +10 -0
  287. package/data/probe/site/DEPLOYMENT.md +86 -0
  288. package/data/probe/site/README.md +183 -0
  289. package/data/probe/site/adding-languages.md +135 -0
  290. package/data/probe/site/ai-chat.md +427 -0
  291. package/data/probe/site/ai-integration.md +1488 -0
  292. package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
  293. package/data/probe/site/blog/index.md +118 -0
  294. package/data/probe/site/blog/v0.6.0-release.md +426 -0
  295. package/data/probe/site/blog.md +8 -0
  296. package/data/probe/site/changelog.md +200 -0
  297. package/data/probe/site/cli-mode.md +437 -0
  298. package/data/probe/site/code-extraction.md +436 -0
  299. package/data/probe/site/contributing/README.md +9 -0
  300. package/data/probe/site/contributing/documentation-cross-references.md +215 -0
  301. package/data/probe/site/contributing/documentation-maintenance.md +275 -0
  302. package/data/probe/site/contributing/documentation-structure.md +75 -0
  303. package/data/probe/site/documentation-cross-references.md +215 -0
  304. package/data/probe/site/documentation-guide.md +132 -0
  305. package/data/probe/site/documentation-maintenance.md +275 -0
  306. package/data/probe/site/features.md +147 -0
  307. package/data/probe/site/how-it-works.md +118 -0
  308. package/data/probe/site/index.md +175 -0
  309. package/data/probe/site/index.md.bak +133 -0
  310. package/data/probe/site/installation.md +235 -0
  311. package/data/probe/site/integrations/docker.md +248 -0
  312. package/data/probe/site/integrations/github-actions.md +413 -0
  313. package/data/probe/site/language-support-overview.md +168 -0
  314. package/data/probe/site/mcp-integration.md +587 -0
  315. package/data/probe/site/mcp-server.md +304 -0
  316. package/data/probe/site/navigation-structure.md +76 -0
  317. package/data/probe/site/nodejs-sdk.md +798 -0
  318. package/data/probe/site/output-formats.md +625 -0
  319. package/data/probe/site/package.json +21 -0
  320. package/data/probe/site/public/_headers +28 -0
  321. package/data/probe/site/public/_redirects +11 -0
  322. package/data/probe/site/quick-start.md +289 -0
  323. package/data/probe/site/search-functionality.md +291 -0
  324. package/data/probe/site/search-reference.md +291 -0
  325. package/data/probe/site/supported-languages.md +215 -0
  326. package/data/probe/site/use-cases/README.md +8 -0
  327. package/data/probe/site/use-cases/advanced-cli.md +253 -0
  328. package/data/probe/site/use-cases/ai-code-editors.md +239 -0
  329. package/data/probe/site/use-cases/building-ai-tools.md +529 -0
  330. package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
  331. package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
  332. package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
  333. package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
  334. package/data/probe/site/use-cases/team-chat.md +350 -0
  335. package/data/probe/site/web-interface.md +434 -0
  336. package/data/probe/site/wrangler.toml +9 -0
  337. package/data/probe/test-api-key.sh +1 -0
  338. package/data/probe/test-probe-implementation/hello.js +7 -0
  339. package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
  340. package/data/probe/test_cases/early_termination_issues.rs +533 -0
  341. package/data/probe/test_data/test_nested_struct.go +26 -0
  342. package/data/probe/tests/README.md +286 -0
  343. package/data/probe/tests/README_search_determinism_tests.md +116 -0
  344. package/data/probe/tests/adjacent_comment_test.rs +152 -0
  345. package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
  346. package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
  347. package/data/probe/tests/block_merging_tests.rs +396 -0
  348. package/data/probe/tests/c_outline_format_tests.rs +2179 -0
  349. package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
  350. package/data/probe/tests/cache_order_tests.rs +147 -0
  351. package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
  352. package/data/probe/tests/cli_tests.rs +680 -0
  353. package/data/probe/tests/comment_context_integration_test.rs +240 -0
  354. package/data/probe/tests/common.rs +33 -0
  355. package/data/probe/tests/complex_block_merging_tests.rs +599 -0
  356. package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
  357. package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
  358. package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
  359. package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
  360. package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
  361. package/data/probe/tests/extract_command_tests.rs +1848 -0
  362. package/data/probe/tests/extract_deduplication_tests.rs +146 -0
  363. package/data/probe/tests/extract_input_file_tests.rs +84 -0
  364. package/data/probe/tests/extract_prompt_tests.rs +102 -0
  365. package/data/probe/tests/filename_search_tests.rs +96 -0
  366. package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
  367. package/data/probe/tests/github_extract_tests.rs +234 -0
  368. package/data/probe/tests/go_comment_test.rs +253 -0
  369. package/data/probe/tests/go_outline_format_tests.rs +2587 -0
  370. package/data/probe/tests/go_path_resolver_tests.rs +96 -0
  371. package/data/probe/tests/html_outline_format_tests.rs +637 -0
  372. package/data/probe/tests/integration_tests.rs +837 -0
  373. package/data/probe/tests/ip_whitelist_test.rs +148 -0
  374. package/data/probe/tests/java_outline_format_tests.rs +1611 -0
  375. package/data/probe/tests/javascript_extract_tests.rs +315 -0
  376. package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
  377. package/data/probe/tests/json_format_tests.rs +436 -0
  378. package/data/probe/tests/json_schema_validation_tests.rs +450 -0
  379. package/data/probe/tests/lib_usage.rs +60 -0
  380. package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
  381. package/data/probe/tests/line_map_cache_tests.rs +114 -0
  382. package/data/probe/tests/markdown_integration_tests.rs +190 -0
  383. package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
  384. package/data/probe/tests/mocks/test_object.js +27 -0
  385. package/data/probe/tests/mocks/test_struct.go +50 -0
  386. package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
  387. package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
  388. package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
  389. package/data/probe/tests/negative_compound_word_tests.rs +246 -0
  390. package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
  391. package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
  392. package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
  393. package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
  394. package/data/probe/tests/parallel_extraction_tests.rs +178 -0
  395. package/data/probe/tests/parallel_search_tests.rs +355 -0
  396. package/data/probe/tests/path_resolver_tests.rs +698 -0
  397. package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
  398. package/data/probe/tests/php_outline_format_tests.rs +768 -0
  399. package/data/probe/tests/property_tests.proptest-regressions +9 -0
  400. package/data/probe/tests/property_tests.rs +118 -0
  401. package/data/probe/tests/python_outline_format_tests.rs +1538 -0
  402. package/data/probe/tests/query_command_json_tests.rs +438 -0
  403. package/data/probe/tests/query_command_tests.rs +232 -0
  404. package/data/probe/tests/query_command_xml_tests.rs +569 -0
  405. package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
  406. package/data/probe/tests/required_terms_filename_tests.rs +116 -0
  407. package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
  408. package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
  409. package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
  410. package/data/probe/tests/rust_outline_format_tests.rs +843 -0
  411. package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
  412. package/data/probe/tests/search_determinism_tests.rs +451 -0
  413. package/data/probe/tests/search_hints_tests.rs +253 -0
  414. package/data/probe/tests/special_character_escaping_tests.rs +417 -0
  415. package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
  416. package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
  417. package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
  418. package/data/probe/tests/symbols_tests.rs +166 -0
  419. package/data/probe/tests/test_file.rs +45 -0
  420. package/data/probe/tests/test_tokenize.rs +28 -0
  421. package/data/probe/tests/timeout_tests.rs +82 -0
  422. package/data/probe/tests/tokenization_tests.rs +195 -0
  423. package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
  424. package/data/probe/tests/typescript_extract_tests.rs +214 -0
  425. package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
  426. package/data/probe/tests/xml_format_tests.rs +568 -0
  427. package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
  428. package/data/scripts/postinstall.mjs +9 -0
  429. package/data/scripts/set-version.js +0 -0
  430. package/data/scripts/wiki-build.sh +111 -0
  431. package/data/scripts/wiki-deploy.sh +73 -0
  432. package/data/serve.json +12 -0
  433. package/data/test/demo-dynamic.html +134 -0
  434. package/data/test/demo-esm.html +105 -0
  435. package/data/test/demo-iife.html +78 -0
  436. package/data/tsconfig.json +7 -0
  437. package/data/vite.server.ts +483 -0
  438. package/data/vitest.config.ts +40 -0
  439. package/data/wiki/Home.md +58 -0
  440. package/data/wiki/_Sidebar.md +39 -0
  441. package/docs-mcp.config.json +20 -0
  442. package/package.json +56 -0
  443. package/src/config.js +111 -0
  444. 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.