@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,195 @@
1
+ # Local Image Support in Probe Agent
2
+
3
+ The probe agent now supports reading local image files directly from file paths mentioned in user messages and **automatically loads images when mentioned during the agentic loop**.
4
+
5
+ ## Features Added
6
+
7
+ ### Automatic Local File Detection
8
+ - Detects local image file paths in user messages
9
+ - Supports both relative and absolute paths
10
+ - Recognizes common image extensions: `.png`, `.jpg`, `.jpeg`, `.webp`, `.bmp`, `.svg`
11
+
12
+ ### 🚀 NEW: Agentic Loop Image Loading
13
+ - **Automatic detection**: Agent automatically detects when it mentions image files in its internal thinking
14
+ - **Smart loading**: Images are loaded and added to the AI context for subsequent iterations
15
+ - **Persistent context**: Loaded images remain available throughout the conversation
16
+ - **Tool result processing**: Images mentioned in tool outputs are also automatically loaded
17
+ - **Caching**: Prevents reloading the same images multiple times
18
+
19
+ ### Security Features
20
+ - Path validation to prevent directory traversal attacks
21
+ - Restricts file access to allowed directories (respects `ALLOWED_FOLDERS` environment variable)
22
+ - Validates file existence and readability before processing
23
+
24
+ ### Supported Path Formats
25
+ ```
26
+ ./image.png # Relative path from current directory
27
+ ../assets/screenshot.jpg # Relative path with directory traversal
28
+ /absolute/path/to/image.webp # Absolute path
29
+ image.png # File in current directory
30
+ ```
31
+
32
+ ### Automatic Conversion
33
+ - Local files are automatically converted to base64 data URLs
34
+ - Maintains original MIME type based on file extension
35
+ - Seamlessly integrates with existing URL and base64 image support
36
+
37
+ ## Usage Examples
38
+
39
+ ### Basic Usage
40
+ ```javascript
41
+ import { ProbeChat } from './probeChat.js';
42
+
43
+ const chat = new ProbeChat({ debug: true });
44
+
45
+ // The agent will automatically detect and process the local image
46
+ const response = await chat.chat('Analyze this screenshot: ./screenshot.png');
47
+ ```
48
+
49
+ ### Mixed Content
50
+ ```javascript
51
+ // Mix local files with URLs
52
+ const message = `
53
+ Compare this local image ./local.png
54
+ with this remote image https://example.com/remote.jpg
55
+ `;
56
+
57
+ const response = await chat.chat(message);
58
+ ```
59
+
60
+ ### Direct Function Usage
61
+ ```javascript
62
+ import { extractImageUrls } from './probeChat.js';
63
+
64
+ const message = 'Please review this diagram: ./architecture.png';
65
+ const result = await extractImageUrls(message, true);
66
+
67
+ console.log(`Found ${result.urls.length} images`);
68
+ console.log(`Cleaned message: "${result.cleanedMessage}"`);
69
+ ```
70
+
71
+ ## 🤖 Agentic Loop Integration
72
+
73
+ The most powerful feature is automatic image loading during the agent's internal reasoning process.
74
+
75
+ ### How It Works
76
+
77
+ When the probe agent is working through a task, it can now:
78
+
79
+ 1. **Mention an image file** in its reasoning: "I need to check ./screenshot.png"
80
+ 2. **Automatically load the image** before the next AI iteration
81
+ 3. **Use visual context** for enhanced analysis and problem-solving
82
+
83
+ ### Agentic Flow Example
84
+
85
+ ```
86
+ 👤 USER: "Analyze the system architecture"
87
+
88
+ 🤖 AGENT: "Let me search for architecture documentation..."
89
+ 🔍 Tool: search "architecture design"
90
+ 📊 Result: "Found ./docs/system-diagram.png"
91
+
92
+ 🤖 AGENT: "I found a system diagram at ./docs/system-diagram.png. Let me analyze it."
93
+ 🖼️ AUTO: Image ./docs/system-diagram.png loaded into context
94
+
95
+ 🤖 AGENT: "Based on the diagram I can see..."
96
+ 💭 AI now has visual access to the diagram and can analyze it
97
+ ```
98
+
99
+ ### Trigger Patterns
100
+
101
+ The agent automatically loads images when it mentions:
102
+
103
+ - **Direct paths**: `./screenshot.png`, `/path/to/image.jpg`
104
+ - **Contextual references**: "the file diagram.png shows", "looking at chart.png"
105
+ - **Tool results**: When tools return paths to image files
106
+ - **Generated content**: "saved visualization as ./output.png"
107
+
108
+ ### Benefits
109
+
110
+ - **🧠 Enhanced reasoning**: Agent gains visual understanding of referenced images
111
+ - **🔄 Seamless workflow**: No manual image loading required
112
+ - **⚡ Performance**: Intelligent caching prevents reloading
113
+ - **🔒 Security**: Same security validations as manual loading
114
+ - **📱 Persistence**: Images remain available throughout the conversation
115
+
116
+ ## Security Considerations
117
+
118
+ ### Path Restrictions
119
+ - Files must be within the allowed directory structure
120
+ - Prevents access to system files (e.g., `/etc/passwd`)
121
+ - Respects the `ALLOWED_FOLDERS` environment variable
122
+
123
+ ### File Validation
124
+ - Verifies file existence before attempting to read
125
+ - Validates file extensions against supported image formats
126
+ - Handles file reading errors gracefully
127
+
128
+ ### Error Handling
129
+ - Failed file reads are logged but don't interrupt processing
130
+ - Invalid paths are silently ignored
131
+ - Maintains functionality for valid images even if some fail
132
+
133
+ ## Implementation Details
134
+
135
+ ### Pattern Matching
136
+ The system uses an enhanced regex pattern to detect:
137
+ ```javascript
138
+ /(?:data:image\/[a-zA-Z]*;base64,[A-Za-z0-9+/=]+|https?:\/\/(?:(?:private-user-images\.githubusercontent\.com|github\.com\/user-attachments\/assets)\/[^\s"'<>]+|[^\s"'<>]+\.(?:png|jpg|jpeg|webp|bmp|svg)(?:\?[^\s"'<>]*)?)|(?:\.?\.?\/)?[^\s"'<>]*\.(?:png|jpg|jpeg|webp|bmp|svg))/gi
139
+ ```
140
+
141
+ ### Processing Pipeline
142
+ 1. **Pattern Detection** - Find all potential image references in text
143
+ 2. **Classification** - Distinguish between URLs, base64 data, and local paths
144
+ 3. **Validation** - Verify local file paths for security and existence
145
+ 4. **Conversion** - Read local files and convert to base64 data URLs
146
+ 5. **Integration** - Pass processed images to AI models
147
+
148
+ ### File Size Limitations
149
+ - No explicit file size limits implemented
150
+ - Memory usage scales with image size
151
+ - Large images may impact performance
152
+
153
+ ## Testing
154
+
155
+ Run the test suite to verify functionality:
156
+ ```bash
157
+ cd examples/chat
158
+ node test-local-image-reading.js
159
+ ```
160
+
161
+ The test covers:
162
+ - Basic local file detection and conversion
163
+ - Mixed URL and local file processing
164
+ - Relative path handling
165
+ - Security validation
166
+ - Error handling for missing files
167
+
168
+ ## Backward Compatibility
169
+
170
+ This enhancement is fully backward compatible:
171
+ - Existing URL-based image handling unchanged
172
+ - Base64 data URL support maintained
173
+ - No breaking changes to existing APIs
174
+
175
+ ## Environment Configuration
176
+
177
+ Set allowed folders to restrict file access:
178
+ ```bash
179
+ export ALLOWED_FOLDERS="/path/to/project,/path/to/assets"
180
+ ```
181
+
182
+ If no `ALLOWED_FOLDERS` is set, defaults to current working directory.
183
+
184
+ ## Error Handling
185
+
186
+ The system gracefully handles various error conditions:
187
+ - **File not found**: Logged and ignored
188
+ - **Permission denied**: Logged and ignored
189
+ - **Invalid format**: Logged and ignored
190
+ - **Path traversal attempts**: Blocked by security validation
191
+
192
+ Enable debug mode to see detailed logging:
193
+ ```javascript
194
+ const chat = new ProbeChat({ debug: true });
195
+ ```
@@ -0,0 +1,400 @@
1
+ # MCP (Model Context Protocol) Integration Guide
2
+
3
+ ## Overview
4
+
5
+ The Probe Chat application now supports the Model Context Protocol (MCP), enabling it to connect to external tool servers and extend its capabilities beyond the built-in code search tools. This integration maintains backward compatibility with the existing XML-based tool syntax while adding support for MCP tools that use JSON parameters.
6
+
7
+ ## Key Features
8
+
9
+ - ✅ **Multiple Transport Support**: stdio, WebSocket, SSE, and HTTP
10
+ - ✅ **Claude-Compatible Configuration**: Uses similar configuration format to Claude's MCP setup
11
+ - ✅ **Hybrid XML/JSON Syntax**: Native tools use XML parameters, MCP tools use JSON in `<params>` tags
12
+ - ✅ **Vercel AI SDK v5 Compatible**: Full support for the latest AI SDK version
13
+ - ✅ **Automatic Tool Discovery**: Dynamically discovers and registers tools from MCP servers
14
+ - ✅ **Seamless Integration**: MCP tools appear alongside native tools in the system prompt
15
+
16
+ ## Quick Start
17
+
18
+ ### 1. Enable MCP in ProbeChat
19
+
20
+ Set the environment variable or pass the option:
21
+
22
+ ```bash
23
+ # Via environment variable
24
+ export ENABLE_MCP=1
25
+ npm start
26
+
27
+ # Or via command line
28
+ probe-chat --enable-mcp
29
+ ```
30
+
31
+ ### 2. Configure MCP Servers
32
+
33
+ Create a `.mcp/config.json` file in your project or home directory:
34
+
35
+ ```json
36
+ {
37
+ "mcpServers": {
38
+ "probe": {
39
+ "command": "npx",
40
+ "args": ["-y", "@probelabs/probe@latest", "mcp"],
41
+ "transport": "stdio",
42
+ "enabled": true
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Configuration
49
+
50
+ ### Configuration File Locations
51
+
52
+ The system looks for MCP configuration in these locations (in order):
53
+
54
+ 1. Environment variable: `MCP_CONFIG_PATH`
55
+ 2. Project directory: `./.mcp/config.json`
56
+ 3. Project directory: `./mcp.config.json`
57
+ 4. Home directory: `~/.config/probe/mcp.json`
58
+ 5. Home directory: `~/.mcp/config.json`
59
+ 6. Claude config: `~/Library/Application Support/Claude/mcp_config.json` (macOS)
60
+
61
+ ### Configuration Format
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "server-name": {
67
+ "command": "command-to-run",
68
+ "args": ["arg1", "arg2"],
69
+ "transport": "stdio|websocket|sse|http",
70
+ "enabled": true|false,
71
+ "description": "Optional description",
72
+ "env": {
73
+ "ENV_VAR": "value"
74
+ }
75
+ }
76
+ },
77
+ "settings": {
78
+ "timeout": 30000,
79
+ "retryCount": 3,
80
+ "debug": false
81
+ }
82
+ }
83
+ ```
84
+
85
+ ### Environment Variables
86
+
87
+ You can also configure MCP servers via environment variables:
88
+
89
+ ```bash
90
+ # Basic server configuration
91
+ export MCP_SERVERS_PROBE_COMMAND="npx"
92
+ export MCP_SERVERS_PROBE_ARGS="-y,@probelabs/probe@latest,mcp"
93
+ export MCP_SERVERS_PROBE_TRANSPORT="stdio"
94
+ export MCP_SERVERS_PROBE_ENABLED="true"
95
+
96
+ # WebSocket server
97
+ export MCP_SERVERS_CUSTOM_URL="ws://localhost:8080"
98
+ export MCP_SERVERS_CUSTOM_TRANSPORT="websocket"
99
+ export MCP_SERVERS_CUSTOM_ENABLED="true"
100
+ ```
101
+
102
+ ## Tool Syntax
103
+
104
+ ### Native Tools (XML Parameters)
105
+
106
+ Native Probe tools continue to use XML parameter format:
107
+
108
+ ```xml
109
+ <search>
110
+ <query>authentication</query>
111
+ <path>./src</path>
112
+ <exact>true</exact>
113
+ </search>
114
+
115
+ <query>
116
+ <pattern>class $NAME extends Component</pattern>
117
+ <language>javascript</language>
118
+ </query>
119
+
120
+ <extract>
121
+ <targets>file.js:10-20</targets>
122
+ <format>markdown</format>
123
+ </extract>
124
+ ```
125
+
126
+ ### MCP Tools (JSON Parameters)
127
+
128
+ MCP tools use JSON within a `<params>` tag:
129
+
130
+ ```xml
131
+ <probe_search_code>
132
+ <params>
133
+ {
134
+ "query": "authentication",
135
+ "path": "/absolute/path/to/project",
136
+ "max_results": 10,
137
+ "session": "session-id"
138
+ }
139
+ </params>
140
+ </probe_search_code>
141
+
142
+ <filesystem_read>
143
+ <params>
144
+ {
145
+ "path": "/etc/hosts",
146
+ "encoding": "utf-8"
147
+ }
148
+ </params>
149
+ </filesystem_read>
150
+ ```
151
+
152
+ ## Available MCP Servers
153
+
154
+ ### Probe MCP Server
155
+
156
+ The official Probe MCP server provides code search capabilities:
157
+
158
+ ```json
159
+ {
160
+ "probe": {
161
+ "command": "npx",
162
+ "args": ["-y", "@probelabs/probe@latest", "mcp"],
163
+ "transport": "stdio",
164
+ "enabled": true
165
+ }
166
+ }
167
+ ```
168
+
169
+ **Tools provided:**
170
+ - `probe_search_code` - Elasticsearch-style code search
171
+ - `probe_query_code` - AST-based pattern matching
172
+ - `probe_extract_code` - Extract code blocks by file/line
173
+
174
+ ### Filesystem Server
175
+
176
+ Access local filesystem:
177
+
178
+ ```json
179
+ {
180
+ "filesystem": {
181
+ "command": "npx",
182
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allow"],
183
+ "transport": "stdio",
184
+ "enabled": true
185
+ }
186
+ }
187
+ ```
188
+
189
+ ### GitHub Server
190
+
191
+ Interact with GitHub API:
192
+
193
+ ```json
194
+ {
195
+ "github": {
196
+ "command": "npx",
197
+ "args": ["-y", "@modelcontextprotocol/server-github"],
198
+ "transport": "stdio",
199
+ "enabled": true,
200
+ "env": {
201
+ "GITHUB_TOKEN": "your-token-here"
202
+ }
203
+ }
204
+ }
205
+ ```
206
+
207
+ ### PostgreSQL Server
208
+
209
+ Database operations:
210
+
211
+ ```json
212
+ {
213
+ "postgres": {
214
+ "command": "npx",
215
+ "args": ["-y", "@modelcontextprotocol/server-postgres"],
216
+ "transport": "stdio",
217
+ "enabled": true,
218
+ "env": {
219
+ "DATABASE_URL": "postgresql://user:pass@localhost/db"
220
+ }
221
+ }
222
+ }
223
+ ```
224
+
225
+ ## Programmatic Usage
226
+
227
+ ### Using ProbeChat with MCP
228
+
229
+ ```javascript
230
+ import { ProbeChat } from './probeChat.js';
231
+
232
+ // Initialize with MCP enabled
233
+ const chat = new ProbeChat({
234
+ enableMcp: true,
235
+ mcpServers: {
236
+ mcpServers: {
237
+ 'probe': {
238
+ command: 'npx',
239
+ args: ['-y', '@probelabs/probe@latest', 'mcp'],
240
+ transport: 'stdio',
241
+ enabled: true
242
+ }
243
+ }
244
+ }
245
+ });
246
+
247
+ // Use chat normally - MCP tools are automatically available
248
+ const response = await chat.chat('Search for authentication code');
249
+
250
+ // Cleanup when done
251
+ await chat.cleanup();
252
+ ```
253
+
254
+ ### Using MCP Client Manager Directly
255
+
256
+ ```javascript
257
+ import { MCPClientManager } from './mcpClientV2.js';
258
+
259
+ // Create manager
260
+ const manager = new MCPClientManager({ debug: true });
261
+
262
+ // Initialize with configuration
263
+ await manager.initialize({
264
+ mcpServers: {
265
+ 'probe': {
266
+ command: 'npx',
267
+ args: ['-y', '@probelabs/probe@latest', 'mcp'],
268
+ transport: 'stdio',
269
+ enabled: true
270
+ }
271
+ }
272
+ });
273
+
274
+ // Call a tool
275
+ const result = await manager.callTool('probe_search_code', {
276
+ query: 'function',
277
+ path: '/path/to/project'
278
+ });
279
+
280
+ // Get tools for Vercel AI SDK
281
+ const tools = manager.getVercelTools();
282
+
283
+ // Cleanup
284
+ await manager.disconnect();
285
+ ```
286
+
287
+ ### Integration with Vercel AI SDK v5
288
+
289
+ ```javascript
290
+ import { generateText, tool } from 'ai';
291
+ import { z } from 'zod';
292
+ import { MCPClientManager } from './mcpClientV2.js';
293
+
294
+ // Initialize MCP
295
+ const mcpManager = new MCPClientManager();
296
+ await mcpManager.initialize();
297
+
298
+ // Get tools in Vercel format
299
+ const mcpTools = mcpManager.getVercelTools();
300
+
301
+ // Wrap tools for AI SDK v5
302
+ const aiTools = {};
303
+ for (const [name, mcpTool] of Object.entries(mcpTools)) {
304
+ aiTools[name] = tool({
305
+ description: mcpTool.description,
306
+ inputSchema: convertToZodSchema(mcpTool.inputSchema),
307
+ execute: mcpTool.execute
308
+ });
309
+ }
310
+
311
+ // Use with AI
312
+ const result = await generateText({
313
+ model: yourModel,
314
+ messages: [...],
315
+ tools: aiTools
316
+ });
317
+ ```
318
+
319
+ ## Testing
320
+
321
+ ### Test MCP Server Connection
322
+
323
+ ```bash
324
+ node test-mcp-probe-server.js
325
+ ```
326
+
327
+ ### Test Full Integration
328
+
329
+ ```bash
330
+ node test-full-mcp-integration.js
331
+ ```
332
+
333
+ ### Test with AI Model
334
+
335
+ ```bash
336
+ # Requires API key
337
+ export ANTHROPIC_API_KEY="your-key"
338
+ node test-mcp-with-ai.js
339
+ ```
340
+
341
+ ## Troubleshooting
342
+
343
+ ### MCP Server Not Connecting
344
+
345
+ 1. Check that the command exists and is executable
346
+ 2. For npx commands, ensure npm is installed
347
+ 3. Check server logs with `DEBUG_MCP=1`
348
+
349
+ ### Tools Not Appearing
350
+
351
+ 1. Ensure server is enabled in configuration
352
+ 2. Check that MCP is enabled (`ENABLE_MCP=1`)
353
+ 3. Verify server provides tools with `listTools` method
354
+
355
+ ### JSON Parsing Errors
356
+
357
+ 1. Ensure JSON in `<params>` tag is valid
358
+ 2. Use proper escaping for special characters
359
+ 3. Check quotes are properly balanced
360
+
361
+ ## Architecture
362
+
363
+ ### Components
364
+
365
+ 1. **MCPClientManager** - Manages connections to multiple MCP servers
366
+ 2. **MCPXmlBridge** - Bridges XML syntax with MCP JSON tools
367
+ 3. **ProbeChat** - Main chat interface with MCP support
368
+ 4. **Transport Layers** - stdio, WebSocket, SSE, HTTP support
369
+
370
+ ### Flow
371
+
372
+ 1. ProbeChat initializes with MCP enabled
373
+ 2. MCPClientManager connects to configured servers
374
+ 3. Tools are discovered and registered
375
+ 4. MCPXmlBridge converts tools to XML definitions
376
+ 5. System prompt includes both native and MCP tools
377
+ 6. AI generates tool calls in appropriate format
378
+ 7. Parser distinguishes native (XML) vs MCP (JSON) tools
379
+ 8. Tools are executed and results returned
380
+
381
+ ## Migration from v4 to v5
382
+
383
+ The integration includes full support for Vercel AI SDK v5:
384
+
385
+ 1. **Tool definitions**: Changed from `parameters` to `inputSchema`
386
+ 2. **Message types**: Support for new `UIMessage` and `ModelMessage` types
387
+ 3. **MCP support**: Native integration with `experimental_createMCPClient`
388
+
389
+ ## Future Enhancements
390
+
391
+ - [ ] Support for MCP resources and prompts
392
+ - [ ] Tool result caching and optimization
393
+ - [ ] Dynamic tool loading/unloading
394
+ - [ ] MCP server health monitoring
395
+ - [ ] Tool usage analytics
396
+ - [ ] Custom MCP server development kit
397
+
398
+ ## License
399
+
400
+ This MCP integration is part of the Probe Chat application and follows the same license terms.