@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,824 @@
1
+ # @probelabs/probe
2
+
3
+ A Node.js wrapper for the [probe](https://github.com/probelabs/probe) code search tool.
4
+
5
+ ## Installation
6
+
7
+ ### Local Installation
8
+
9
+ ```bash
10
+ npm install @probelabs/probe
11
+ ```
12
+
13
+ ### Global Installation
14
+
15
+ ```bash
16
+ npm install -g @probelabs/probe
17
+ ```
18
+
19
+ During installation, the package will automatically download the appropriate probe binary for your platform.
20
+
21
+ ## Features
22
+
23
+ - **Search Code**: Search for patterns in your codebase using Elasticsearch-like query syntax
24
+ - **Query Code**: Find specific code structures using tree-sitter patterns
25
+ - **Extract Code**: Extract code blocks from files based on file paths and line numbers
26
+ - **AI Tools Integration**: Ready-to-use tools for Vercel AI SDK, LangChain, and other AI frameworks
27
+ - **System Message**: Default system message for AI assistants with instructions on using probe tools
28
+ - **Cross-Platform**: Works on Windows, macOS, and Linux
29
+ - **Automatic Binary Management**: Automatically downloads and manages the probe binary
30
+ - **Direct CLI Access**: Use the probe binary directly from the command line when installed globally
31
+ - **MCP Server**: Built-in Model Context Protocol server for AI assistant integration
32
+ - **Context Window Compaction**: Automatic conversation history compression when approaching token limits
33
+
34
+ ## Usage
35
+
36
+ ### Using as a Node.js Library
37
+
38
+ ```javascript
39
+ import { search, query, extract } from '@probelabs/probe';
40
+
41
+ // Search for code
42
+ const searchResults = await search({
43
+ path: '/path/to/your/project',
44
+ query: 'function',
45
+ maxResults: 10
46
+ });
47
+
48
+ // Query for specific code structures
49
+ const queryResults = await query({
50
+ path: '/path/to/your/project',
51
+ pattern: 'function $NAME($$$PARAMS) $$$BODY',
52
+ language: 'javascript'
53
+ });
54
+
55
+ // Extract code blocks
56
+ const extractResults = await extract({
57
+ files: ['/path/to/your/project/src/main.js:42']
58
+ });
59
+ ```
60
+
61
+ ### Using as a Command-Line Tool
62
+
63
+ When installed globally, the `probe` command will be available directly from the command line:
64
+
65
+ ```bash
66
+ # Search for code
67
+ probe search "function" /path/to/your/project
68
+
69
+ # Query for specific code structures
70
+ probe query "function $NAME($$$PARAMS) $$$BODY" /path/to/your/project
71
+
72
+ # Extract code blocks
73
+ probe extract /path/to/your/project/src/main.js:42
74
+
75
+ # Run MCP server for AI assistant integration
76
+ probe mcp
77
+ ```
78
+
79
+ The package installs the actual probe binary, not a JavaScript wrapper, so you get the full native performance and all features of the original probe CLI.
80
+
81
+ ### Using ProbeAgent (AI-Powered Code Assistant)
82
+
83
+ ProbeAgent provides a high-level AI-powered interface for interacting with your codebase:
84
+
85
+ ```javascript
86
+ import { ProbeAgent } from '@probelabs/probe';
87
+
88
+ // Create an AI agent for your project
89
+ const agent = new ProbeAgent({
90
+ sessionId: 'my-session', // Optional: for conversation continuity
91
+ path: '/path/to/your/project',
92
+ provider: 'anthropic', // or 'openai', 'google'
93
+ model: 'claude-3-5-sonnet-20241022', // Optional: override model
94
+ allowEdit: false, // Optional: enable code modification
95
+ debug: true, // Optional: enable debug logging
96
+ allowedTools: ['*'], // Optional: filter available tools (see Tool Filtering below)
97
+ enableMcp: true, // Optional: enable MCP tool integration
98
+ mcpConfig: { // Optional: MCP configuration (see MCP section below)
99
+ mcpServers: {...}
100
+ }
101
+ });
102
+
103
+ // Ask questions about your codebase
104
+ const answer = await agent.answer("How does authentication work in this codebase?");
105
+ console.log(answer);
106
+
107
+ // The agent maintains conversation history automatically
108
+ const followUp = await agent.answer("Can you show me the login implementation?");
109
+ console.log(followUp);
110
+
111
+ // Get token usage statistics
112
+ const usage = agent.getTokenUsage();
113
+ console.log(`Used ${usage.total} tokens total`);
114
+
115
+ // Clear conversation history if needed
116
+ agent.history = [];
117
+ ```
118
+
119
+ **Environment Variables:**
120
+ ```bash
121
+ # Set your API key for the chosen provider
122
+ export ANTHROPIC_API_KEY=your_anthropic_key
123
+ export OPENAI_API_KEY=your_openai_key
124
+ export GOOGLE_API_KEY=your_google_key
125
+
126
+ # Optional: Force a specific provider
127
+ export FORCE_PROVIDER=anthropic
128
+
129
+ # Optional: Override model name
130
+ export MODEL_NAME=claude-3-5-sonnet-20241022
131
+ ```
132
+
133
+ **ProbeAgent Features:**
134
+ - **Multi-turn conversations** with automatic history management
135
+ - **Code search integration** - Uses probe's search capabilities transparently
136
+ - **Multiple AI providers** - Supports Anthropic Claude, OpenAI GPT, Google Gemini, AWS Bedrock
137
+ - **Automatic retry with exponential backoff** - Handles transient API failures gracefully
138
+ - **Provider fallback** - Seamlessly switch between providers if one fails (e.g., Azure Claude → Bedrock Claude → OpenAI)
139
+ - **Session management** - Maintain conversation context across calls
140
+ - **Token tracking** - Monitor usage and costs
141
+ - **Configurable personas** - Engineer, architect, code-review, and more
142
+
143
+ ### Retry and Fallback Support
144
+
145
+ ProbeAgent includes comprehensive retry and fallback capabilities for maximum reliability:
146
+
147
+ ```javascript
148
+ import { ProbeAgent } from '@probelabs/probe';
149
+
150
+ const agent = new ProbeAgent({
151
+ path: '/path/to/your/project',
152
+
153
+ // Configure retry behavior
154
+ retry: {
155
+ maxRetries: 5, // Retry up to 5 times per provider
156
+ initialDelay: 1000, // Start with 1 second delay
157
+ maxDelay: 30000, // Cap delays at 30 seconds
158
+ backoffFactor: 2 // Double the delay each time
159
+ },
160
+
161
+ // Configure provider fallback
162
+ fallback: {
163
+ strategy: 'custom',
164
+ providers: [
165
+ {
166
+ provider: 'anthropic',
167
+ apiKey: process.env.ANTHROPIC_API_KEY,
168
+ model: 'claude-3-7-sonnet-20250219',
169
+ maxRetries: 5 // Can override retry config per provider
170
+ },
171
+ {
172
+ provider: 'bedrock',
173
+ region: 'us-west-2',
174
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID,
175
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
176
+ model: 'anthropic.claude-sonnet-4-20250514-v1:0'
177
+ },
178
+ {
179
+ provider: 'openai',
180
+ apiKey: process.env.OPENAI_API_KEY,
181
+ model: 'gpt-4o'
182
+ }
183
+ ],
184
+ maxTotalAttempts: 15 // Maximum attempts across all providers
185
+ }
186
+ });
187
+
188
+ // API calls automatically retry on failures and fallback to other providers
189
+ const answer = await agent.answer("Explain this codebase");
190
+ ```
191
+
192
+ **Retry & Fallback Features:**
193
+ - **Exponential backoff** - Intelligently delays retries to avoid overwhelming APIs
194
+ - **Automatic error detection** - Retries on transient errors (Overloaded, 429, 503, timeouts, network errors)
195
+ - **Multi-provider support** - Fallback across Anthropic, OpenAI, Google, and AWS Bedrock
196
+ - **Cross-cloud failover** - Use Azure Claude → Bedrock Claude → OpenAI as fallback chain
197
+ - **Statistics tracking** - Monitor retry attempts and provider usage
198
+ - **Environment variable support** - Configure via env vars for easy deployment
199
+
200
+ **Quick Setup with Auto-Fallback:**
201
+ ```bash
202
+ # Set all your API keys
203
+ export ANTHROPIC_API_KEY=sk-ant-xxx
204
+ export OPENAI_API_KEY=sk-xxx
205
+ export GOOGLE_API_KEY=xxx
206
+ export AUTO_FALLBACK=1 # Enable automatic fallback
207
+ export MAX_RETRIES=5 # Configure retry limit
208
+ ```
209
+
210
+ ```javascript
211
+ // No configuration needed - uses all available providers automatically!
212
+ const agent = new ProbeAgent({
213
+ path: '/path/to/your/project',
214
+ fallback: { auto: true }
215
+ });
216
+ ```
217
+
218
+ See [docs/RETRY_AND_FALLBACK.md](./docs/RETRY_AND_FALLBACK.md) for complete documentation and examples.
219
+
220
+ ### Tool Filtering
221
+
222
+ ProbeAgent supports filtering available tools to control what operations the AI can perform. This is useful for security, cost control, or limiting functionality to specific use cases.
223
+
224
+ ```javascript
225
+ import { ProbeAgent } from '@probelabs/probe';
226
+
227
+ // Allow all tools (default behavior)
228
+ const agent1 = new ProbeAgent({
229
+ path: '/path/to/project',
230
+ allowedTools: ['*'] // or undefined
231
+ });
232
+
233
+ // Allow only specific tools (whitelist mode)
234
+ const agent2 = new ProbeAgent({
235
+ path: '/path/to/project',
236
+ allowedTools: ['search', 'query', 'extract']
237
+ });
238
+
239
+ // Allow all except specific tools (exclusion mode)
240
+ const agent3 = new ProbeAgent({
241
+ path: '/path/to/project',
242
+ allowedTools: ['*', '!bash', '!implement']
243
+ });
244
+
245
+ // Raw AI mode - no tools at all
246
+ const agent4 = new ProbeAgent({
247
+ path: '/path/to/project',
248
+ allowedTools: [] // or use disableTools: true
249
+ });
250
+
251
+ // Convenience flag for raw AI mode (better DX)
252
+ const agent5 = new ProbeAgent({
253
+ path: '/path/to/project',
254
+ disableTools: true // Clearer than allowedTools: []
255
+ });
256
+ ```
257
+
258
+ **Available Tools:**
259
+ - `search` - Semantic code search
260
+ - `query` - Tree-sitter pattern matching
261
+ - `extract` - Extract code blocks
262
+ - `listFiles` - List files and directories
263
+ - `searchFiles` - Find files by glob pattern
264
+ - `bash` - Execute bash commands (requires `enableBash: true`)
265
+ - `implement` - Implement features with aider (requires `allowEdit: true`)
266
+ - `edit` - Edit files with exact string replacement (requires `allowEdit: true`)
267
+ - `create` - Create new files (requires `allowEdit: true`)
268
+ - `delegate` - Delegate tasks to subagents (requires `enableDelegate: true`)
269
+ - `attempt_completion` - Signal task completion
270
+ - `mcp__*` - MCP tools use the `mcp__` prefix (e.g., `mcp__filesystem__read_file`)
271
+
272
+ **MCP Tool Filtering:**
273
+ MCP tools follow the `mcp__toolname` naming convention. You can:
274
+ - Allow all MCP tools: `allowedTools: ['*']`
275
+ - Allow specific MCP tool: `allowedTools: ['mcp__filesystem__read_file']`
276
+ - Allow all from a server: `allowedTools: ['mcp__filesystem__*']` (using pattern matching)
277
+ - Block MCP tools: `allowedTools: ['*', '!mcp__*']`
278
+
279
+ **CLI Usage:**
280
+ ```bash
281
+ # Allow only search and extract tools
282
+ probe agent "Explain this code" --allowed-tools search,extract
283
+
284
+ # Raw AI mode (no tools) - option 1
285
+ probe agent "What is this project about?" --allowed-tools none
286
+
287
+ # Raw AI mode (no tools) - option 2 (better DX)
288
+ probe agent "Tell me about this project" --disable-tools
289
+
290
+ # All tools (default)
291
+ probe agent "Analyze the architecture" --allowed-tools all
292
+ ```
293
+
294
+ **Notes:**
295
+ - Tool filtering works in conjunction with feature flags (`allowEdit`, `enableBash`, `enableDelegate`)
296
+ - Both the feature flag AND `allowedTools` must permit a tool for it to be available
297
+ - Blocked tools will not appear in the system message and cannot be executed
298
+ - Use `allowedTools: []` for pure conversational AI without code analysis tools
299
+
300
+ ### Using as an MCP Server
301
+
302
+ Probe includes a built-in MCP (Model Context Protocol) server for integration with AI assistants:
303
+
304
+ ```bash
305
+ # Start the MCP server
306
+ probe mcp
307
+
308
+ # With custom timeout
309
+ probe mcp --timeout 60
310
+ ```
311
+
312
+ Add to your AI assistant's MCP configuration:
313
+
314
+ ```json
315
+ {
316
+ "mcpServers": {
317
+ "probe": {
318
+ "command": "npx",
319
+ "args": ["-y", "@probelabs/probe", "mcp"]
320
+ }
321
+ }
322
+ }
323
+ ```
324
+
325
+ ### Using MCP with ProbeAgent SDK
326
+
327
+ When using ProbeAgent programmatically, you can integrate MCP servers to extend the agent's capabilities:
328
+
329
+ ```javascript
330
+ const agent = new ProbeAgent({
331
+ enableMcp: true, // Enable MCP support
332
+
333
+ // Option 1: Provide MCP configuration directly
334
+ mcpConfig: {
335
+ mcpServers: {
336
+ 'my-server': {
337
+ command: 'node',
338
+ args: ['path/to/server.js'],
339
+ transport: 'stdio',
340
+ enabled: true
341
+ }
342
+ }
343
+ },
344
+
345
+ // Option 2: Load from config file
346
+ mcpConfigPath: '/path/to/mcp-config.json',
347
+
348
+ // Option 3: Auto-discovery from standard locations
349
+ // (~/.mcp/config.json, or via MCP_CONFIG_PATH env var)
350
+ });
351
+ ```
352
+
353
+ **Note:** MCP tools are automatically initialized when needed (lazy initialization), so you don't need to call `agent.initialize()` when using the SDK.
354
+
355
+ ## Claude Code Integration
356
+
357
+ ProbeAgent now supports Claude Code's `claude` command for zero-configuration usage in Claude Code environments. See the [Claude Code Integration Guide](./docs/CLAUDE_CODE_INTEGRATION.md) for full details.
358
+
359
+ ### Quick Start
360
+
361
+ ```javascript
362
+ import { ProbeAgent } from '@probelabs/probe';
363
+
364
+ // Works automatically if claude command is installed!
365
+ const agent = new ProbeAgent({
366
+ allowedFolders: ['/path/to/your/code']
367
+ });
368
+
369
+ await agent.initialize();
370
+ const response = await agent.answer('Explain how this codebase works');
371
+ ```
372
+
373
+ ### Auto-Fallback
374
+
375
+ ProbeAgent automatically detects and uses Claude Code when:
376
+ - No API keys are configured (no ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.)
377
+ - The `claude` command is available on your system
378
+
379
+ Priority order:
380
+ 1. Explicit `provider: 'claude-code'`
381
+ 2. API keys (Anthropic, OpenAI, Google, AWS)
382
+ 3. Claude command (auto-detected)
383
+
384
+ ### Features
385
+
386
+ - **Zero Configuration**: No API keys needed in Claude Code environments
387
+ - **Black-box Operation**: Claude Code handles its own agentic loop
388
+ - **Tool Event Extraction**: Visibility into internal tool usage
389
+ - **Built-in MCP Server**: Provides Probe's semantic search tools
390
+ - **Auto-fallback**: Seamlessly switches based on environment
391
+
392
+ For complete documentation, examples, and troubleshooting, see [docs/CLAUDE_CODE_INTEGRATION.md](./docs/CLAUDE_CODE_INTEGRATION.md).
393
+
394
+ ## API Reference
395
+
396
+ ### Search
397
+
398
+ ```javascript
399
+ import { search } from '@probelabs/probe';
400
+
401
+ const results = await search({
402
+ path: '/path/to/your/project',
403
+ query: 'function',
404
+ // Optional parameters
405
+ filesOnly: false,
406
+ ignore: ['node_modules', 'dist'],
407
+ excludeFilenames: false,
408
+ reranker: 'hybrid',
409
+ frequencySearch: true,
410
+ maxResults: 10,
411
+ maxBytes: 1000000,
412
+ maxTokens: 40000,
413
+ allowTests: false,
414
+ noMerge: false,
415
+ mergeThreshold: 5,
416
+ json: false,
417
+ binaryOptions: {
418
+ forceDownload: false,
419
+ version: '1.0.0'
420
+ }
421
+ });
422
+ ```
423
+
424
+ #### Parameters
425
+
426
+ - `path` (required): Path to search in
427
+ - `query` (required): Search query or queries (string or array of strings)
428
+ - `filesOnly`: Only output file paths
429
+ - `ignore`: Patterns to ignore (array of strings)
430
+ - `excludeFilenames`: Exclude filenames from search
431
+ - `reranker`: Reranking method ('hybrid', 'hybrid2', 'bm25', 'tfidf')
432
+ - `frequencySearch`: Use frequency-based search
433
+ - `maxResults`: Maximum number of results
434
+ - `maxBytes`: Maximum bytes to return
435
+ - `maxTokens`: Maximum tokens to return
436
+ - `allowTests`: Include test files
437
+ - `noMerge`: Don't merge adjacent blocks
438
+ - `mergeThreshold`: Merge threshold
439
+ - `json`: Return results as parsed JSON instead of string
440
+ - `binaryOptions`: Options for getting the binary
441
+ - `forceDownload`: Force download even if binary exists
442
+ - `version`: Specific version to download
443
+
444
+ ### Query
445
+
446
+ ```javascript
447
+ import { query } from '@probelabs/probe';
448
+
449
+ const results = await query({
450
+ path: '/path/to/your/project',
451
+ pattern: 'function $NAME($$$PARAMS) $$$BODY',
452
+ // Optional parameters
453
+ language: 'javascript',
454
+ ignore: ['node_modules', 'dist'],
455
+ allowTests: false,
456
+ maxResults: 10,
457
+ format: 'markdown',
458
+ json: false,
459
+ binaryOptions: {
460
+ forceDownload: false,
461
+ version: '1.0.0'
462
+ }
463
+ });
464
+ ```
465
+
466
+ #### Parameters
467
+
468
+ - `path` (required): Path to search in
469
+ - `pattern` (required): The ast-grep pattern to search for
470
+ - `language`: Programming language to search in
471
+ - `ignore`: Patterns to ignore (array of strings)
472
+ - `allowTests`: Include test files
473
+ - `maxResults`: Maximum number of results
474
+ - `format`: Output format ('markdown', 'plain', 'json', 'color')
475
+ - `json`: Return results as parsed JSON instead of string
476
+ - `binaryOptions`: Options for getting the binary
477
+ - `forceDownload`: Force download even if binary exists
478
+ - `version`: Specific version to download
479
+
480
+ ### Extract
481
+
482
+ ```javascript
483
+ import { extract } from '@probelabs/probe';
484
+
485
+ const results = await extract({
486
+ files: [
487
+ '/path/to/your/project/src/main.js',
488
+ '/path/to/your/project/src/utils.js:42' // Extract from line 42
489
+ ],
490
+ // Optional parameters
491
+ allowTests: false,
492
+ contextLines: 2,
493
+ format: 'markdown',
494
+ json: false,
495
+ binaryOptions: {
496
+ forceDownload: false,
497
+ version: '1.0.0'
498
+ }
499
+ });
500
+ ```
501
+
502
+ #### Parameters
503
+
504
+ - `files` (required): Files to extract from (can include line numbers with colon, e.g., "/path/to/file.rs:10")
505
+ - `allowTests`: Include test files
506
+ - `contextLines`: Number of context lines to include
507
+ - `format`: Output format ('markdown', 'plain', 'json')
508
+ - `json`: Return results as parsed JSON instead of string
509
+ - `binaryOptions`: Options for getting the binary
510
+ - `forceDownload`: Force download even if binary exists
511
+ - `version`: Specific version to download
512
+
513
+ ### Binary Management
514
+
515
+ ```javascript
516
+ import { getBinaryPath, setBinaryPath } from '@probelabs/probe';
517
+
518
+ // Get the path to the probe binary
519
+ const binaryPath = await getBinaryPath({
520
+ forceDownload: false,
521
+ version: '1.0.0'
522
+ });
523
+
524
+ // Manually set the path to the probe binary
525
+ setBinaryPath('/path/to/probe/binary');
526
+ ```
527
+
528
+ ### AI Tools
529
+
530
+ ```javascript
531
+ import { tools } from '@probelabs/probe';
532
+
533
+ // Vercel AI SDK tools
534
+ const { searchTool, queryTool, extractTool } = tools;
535
+
536
+ // LangChain tools
537
+ const searchLangChainTool = tools.createSearchTool();
538
+ const queryLangChainTool = tools.createQueryTool();
539
+ const extractLangChainTool = tools.createExtractTool();
540
+ // Access schemas
541
+ const { searchSchema, querySchema, extractSchema } = tools;
542
+
543
+ // Access default system message
544
+ const systemMessage = tools.DEFAULT_SYSTEM_MESSAGE;
545
+ ```
546
+
547
+ #### Vercel AI SDK Tools
548
+
549
+ - `searchTool`: Tool for searching code using Elasticsearch-like query syntax
550
+ - `queryTool`: Tool for searching code using tree-sitter patterns
551
+ - `extractTool`: Tool for extracting code blocks from files
552
+
553
+ #### LangChain Tools
554
+
555
+ - `createSearchTool()`: Creates a tool for searching code using Elasticsearch-like query syntax
556
+ - `createQueryTool()`: Creates a tool for searching code using tree-sitter patterns
557
+ - `createExtractTool()`: Creates a tool for extracting code blocks from files
558
+
559
+ #### Schemas
560
+
561
+ - `searchSchema`: Zod schema for search tool parameters
562
+ - `querySchema`: Zod schema for query tool parameters
563
+ - `extractSchema`: Zod schema for extract tool parameters
564
+
565
+ #### System Message
566
+
567
+ - `DEFAULT_SYSTEM_MESSAGE`: Default system message for AI assistants with instructions on how to use the probe tools
568
+ - `extractSchema`: Zod schema for extract tool parameters
569
+
570
+ ## Examples
571
+
572
+ ### Basic Search Example
573
+
574
+ ```javascript
575
+ import { search } from '@probelabs/probe';
576
+
577
+ async function basicSearchExample() {
578
+ try {
579
+ const results = await search({
580
+ path: '/path/to/your/project',
581
+ query: 'function',
582
+ maxResults: 5
583
+ });
584
+
585
+ console.log('Search results:');
586
+ console.log(results);
587
+ } catch (error) {
588
+ console.error('Search error:', error);
589
+ }
590
+ }
591
+ ```
592
+
593
+ ### Advanced Search with Multiple Options
594
+
595
+ ```javascript
596
+ import { search } from '@probelabs/probe';
597
+
598
+ async function advancedSearchExample() {
599
+ try {
600
+ const results = await search({
601
+ path: '/path/to/your/project',
602
+ query: 'config AND (parse OR tokenize)',
603
+ ignore: ['node_modules', 'dist'],
604
+ reranker: 'hybrid',
605
+ frequencySearch: true,
606
+ maxResults: 10,
607
+ maxTokens: 20000,
608
+ allowTests: false
609
+ });
610
+
611
+ console.log('Advanced search results:');
612
+ console.log(results);
613
+ } catch (error) {
614
+ console.error('Advanced search error:', error);
615
+ }
616
+ }
617
+ ```
618
+
619
+ ### Query for Specific Code Structures
620
+
621
+ ```javascript
622
+ import { query } from '@probelabs/probe';
623
+
624
+ async function queryExample() {
625
+ try {
626
+ // Find all JavaScript functions
627
+ const jsResults = await query({
628
+ path: '/path/to/your/project',
629
+ pattern: 'function $NAME($$$PARAMS) $$$BODY',
630
+ language: 'javascript',
631
+ maxResults: 5
632
+ });
633
+
634
+ console.log('JavaScript functions:');
635
+ console.log(jsResults);
636
+
637
+ // Find all Rust structs
638
+ const rustResults = await query({
639
+ path: '/path/to/your/project',
640
+ pattern: 'struct $NAME $$$BODY',
641
+ language: 'rust',
642
+ maxResults: 5
643
+ });
644
+
645
+ console.log('Rust structs:');
646
+ console.log(rustResults);
647
+ } catch (error) {
648
+ console.error('Query error:', error);
649
+ }
650
+ }
651
+ ```
652
+
653
+ ### Extract Code Blocks
654
+
655
+ ```javascript
656
+ import { extract } from '@probelabs/probe';
657
+
658
+ async function extractExample() {
659
+ try {
660
+ const results = await extract({
661
+ files: [
662
+ '/path/to/your/project/src/main.js',
663
+ '/path/to/your/project/src/utils.js:42' // Extract from line 42
664
+ ],
665
+ contextLines: 2,
666
+ format: 'markdown'
667
+ });
668
+
669
+ console.log('Extracted code:');
670
+ console.log(results);
671
+ } catch (error) {
672
+ console.error('Extract error:', error);
673
+ }
674
+ }
675
+ ```
676
+
677
+ ## How It Works
678
+
679
+ When you install this package:
680
+
681
+ 1. A placeholder binary is included in the package
682
+ 2. During installation, the postinstall script downloads the actual probe binary for your platform
683
+ 3. The placeholder is replaced with the actual binary
684
+ 4. When installed globally, npm creates a symlink to this binary in your system path
685
+
686
+ This approach ensures that you get the actual native binary, not a JavaScript wrapper, providing full performance and all features of the original probe CLI.
687
+
688
+ ## AI Tools Integration
689
+
690
+ The package provides built-in tools for integrating with AI SDKs like Vercel AI SDK and LangChain, allowing you to use probe's powerful code search capabilities in AI applications.
691
+
692
+ ### Using with Vercel AI SDK
693
+
694
+ ```javascript
695
+ import { generateText } from 'ai';
696
+ import { tools } from '@probelabs/probe';
697
+
698
+ // Use the pre-built tools with Vercel AI SDK
699
+ async function chatWithAI(userMessage) {
700
+ const result = await generateText({
701
+ model: provider(modelName),
702
+ messages: [{ role: 'user', content: userMessage }],
703
+ system: "You are a code intelligence assistant. Use the provided tools to search and analyze code.",
704
+ tools: {
705
+ search: tools.searchTool,
706
+ query: tools.queryTool,
707
+ extract: tools.extractTool
708
+ },
709
+ maxSteps: 15,
710
+ temperature: 0.7
711
+ });
712
+
713
+ return result.text;
714
+ }
715
+ ```
716
+
717
+ ### Using with LangChain
718
+
719
+ ```javascript
720
+ import { ChatOpenAI } from '@langchain/openai';
721
+ import { tools } from '@probelabs/probe';
722
+
723
+ // Create the LangChain tools
724
+ const searchTool = tools.createSearchTool();
725
+ const queryTool = tools.createQueryTool();
726
+ const extractTool = tools.createExtractTool();
727
+
728
+ // Create a ChatOpenAI instance with tools
729
+ const model = new ChatOpenAI({
730
+ modelName: "gpt-4o",
731
+ temperature: 0.7
732
+ }).withTools([searchTool, queryTool, extractTool]);
733
+
734
+ // Use the model with tools
735
+ async function chatWithAI(userMessage) {
736
+ const result = await model.invoke([
737
+ { role: "system", content: "You are a code intelligence assistant. Use the provided tools to search and analyze code." },
738
+ { role: "user", content: userMessage }
739
+ ]);
740
+
741
+ return result.content;
742
+ }
743
+ ```
744
+
745
+ ### Using the Default System Message
746
+
747
+ The package provides a default system message that you can use with your AI assistants:
748
+
749
+ ```javascript
750
+ import { tools } from '@probelabs/probe';
751
+
752
+ // Use the default system message in your AI application
753
+ const systemMessage = tools.DEFAULT_SYSTEM_MESSAGE;
754
+
755
+ // Example with Vercel AI SDK
756
+ const result = await generateText({
757
+ model: provider(modelName),
758
+ messages: [{ role: 'user', content: userMessage }],
759
+ system: tools.DEFAULT_SYSTEM_MESSAGE,
760
+ tools: {
761
+ search: tools.searchTool,
762
+ query: tools.queryTool,
763
+ extract: tools.extractTool
764
+ }
765
+ });
766
+ ```
767
+
768
+ The default system message provides instructions for AI assistants on how to use the probe tools effectively, including search query formatting, tool execution sequence, and best practices.
769
+
770
+ ## License
771
+
772
+ ISC
773
+
774
+ ## Migration from @probelabs/probe-mcp
775
+
776
+ If you're migrating from the standalone `@probelabs/probe-mcp` package, `probe mcp` is a drop-in replacement:
777
+
778
+ **Old usage:**
779
+ ```bash
780
+ npx @probelabs/probe-mcp
781
+ # or
782
+ probe-mcp --timeout 60
783
+ ```
784
+
785
+ **New usage (drop-in replacement):**
786
+ ```bash
787
+ probe mcp
788
+ # or
789
+ probe mcp --timeout 60
790
+ ```
791
+
792
+ **MCP Configuration:**
793
+ ```json
794
+ // Old configuration
795
+ {
796
+ "mcpServers": {
797
+ "probe": {
798
+ "command": "npx",
799
+ "args": ["-y", "@probelabs/probe-mcp"]
800
+ }
801
+ }
802
+ }
803
+
804
+ // New configuration (drop-in replacement)
805
+ {
806
+ "mcpServers": {
807
+ "probe": {
808
+ "command": "npx",
809
+ "args": ["-y", "@probelabs/probe", "mcp"]
810
+ }
811
+ }
812
+ }
813
+ ```
814
+
815
+ ## Additional Documentation
816
+
817
+ - [Context Window Compaction](./CONTEXT_COMPACTION.md) - Automatic conversation history compression
818
+ - [MCP Integration](./MCP_INTEGRATION_SUMMARY.md) - Model Context Protocol support details
819
+ - [Delegate Tool](./DELEGATE_TOOL_README.md) - Task distribution to subagents
820
+ - [Maid Integration](./MAID_INTEGRATION.md) - Integration with Maid LLM framework
821
+
822
+ ## Related Projects
823
+
824
+ - [probe](https://github.com/probelabs/probe) - The core probe code search tool