@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,596 @@
1
+ # Building AI Tools with Node.js SDK
2
+
3
+ This guide explains how to use Probe's Node.js SDK to build custom AI-powered code intelligence tools for your development workflow.
4
+
5
+ ## Overview
6
+
7
+ Probe's Node.js SDK provides programmatic access to its powerful code search capabilities, allowing you to build custom tools, integrate with AI frameworks, and create specialized workflows for your development team.
8
+
9
+ Key benefits:
10
+
11
+ - **Programmatic Access**: Use Probe's capabilities directly from your Node.js code
12
+ - **AI Integration**: Ready-to-use tools for Vercel AI SDK, LangChain, and other AI frameworks
13
+ - **Custom Workflows**: Build specialized tools for your specific development needs
14
+ - **Automation**: Create automated code analysis and documentation pipelines
15
+ - **Extensibility**: Extend existing tools with code-aware intelligence
16
+
17
+ ## Common Use Cases
18
+
19
+ ### 1. Building AI-Powered Code Assistants
20
+
21
+ Create custom AI assistants that understand your codebase:
22
+
23
+ ```javascript
24
+ import { search } from '@probelabs/probe';
25
+ import { ChatOpenAI } from '@langchain/openai';
26
+ import { PromptTemplate } from '@langchain/core/prompts';
27
+ import { StringOutputParser } from '@langchain/core/output_parsers';
28
+
29
+ async function createCodeAssistant() {
30
+ // Create a chat model
31
+ const model = new ChatOpenAI({
32
+ modelName: "gpt-4o",
33
+ temperature: 0.7
34
+ });
35
+
36
+ // Create a prompt template
37
+ const promptTemplate = PromptTemplate.fromTemplate(`
38
+ You are a code assistant. I'll provide you with a question and some code search results.
39
+ Please analyze the code and answer the question.
40
+
41
+ Question: {question}
42
+
43
+ Code search results:
44
+ {searchResults}
45
+
46
+ Your analysis:
47
+ `);
48
+
49
+ // Create a chain
50
+ const chain = promptTemplate
51
+ .pipe(model)
52
+ .pipe(new StringOutputParser());
53
+
54
+ // Function to answer questions about code
55
+ async function answerCodeQuestion(question, codebasePath) {
56
+ // Search for relevant code
57
+ const searchResults = await search({
58
+ path: codebasePath,
59
+ query: question,
60
+ maxResults: 5,
61
+ maxTokens: 10000
62
+ });
63
+
64
+ // Get the answer from the AI
65
+ const answer = await chain.invoke({
66
+ question,
67
+ searchResults
68
+ });
69
+
70
+ return answer;
71
+ }
72
+
73
+ return { answerCodeQuestion };
74
+ }
75
+
76
+ // Usage
77
+ const assistant = await createCodeAssistant();
78
+ const answer = await assistant.answerCodeQuestion(
79
+ "How is authentication implemented?",
80
+ "/path/to/your/project"
81
+ );
82
+ console.log(answer);
83
+ ```
84
+
85
+ ### 2. Creating Code Search APIs
86
+
87
+ Build a REST API for code search:
88
+
89
+ ```javascript
90
+ import express from 'express';
91
+ import { search, query, extract } from '@probelabs/probe';
92
+
93
+ const app = express();
94
+ app.use(express.json());
95
+
96
+ // Search endpoint
97
+ app.post('/api/search', async (req, res) => {
98
+ try {
99
+ const { path, query, options } = req.body;
100
+ const results = await search({
101
+ path,
102
+ query,
103
+ ...options
104
+ });
105
+ res.json({ results });
106
+ } catch (error) {
107
+ res.status(500).json({ error: error.message });
108
+ }
109
+ });
110
+
111
+ // Query endpoint
112
+ app.post('/api/query', async (req, res) => {
113
+ try {
114
+ const { path, pattern, language, options } = req.body;
115
+ const results = await query({
116
+ path,
117
+ pattern,
118
+ language,
119
+ ...options
120
+ });
121
+ res.json({ results });
122
+ } catch (error) {
123
+ res.status(500).json({ error: error.message });
124
+ }
125
+ });
126
+
127
+ // Extract endpoint
128
+ app.post('/api/extract', async (req, res) => {
129
+ try {
130
+ const { files, options } = req.body;
131
+ const results = await extract({
132
+ files,
133
+ ...options
134
+ });
135
+ res.json({ results });
136
+ } catch (error) {
137
+ res.status(500).json({ error: error.message });
138
+ }
139
+ });
140
+
141
+ app.listen(3000, () => {
142
+ console.log('Code search API running on port 3000');
143
+ });
144
+ ```
145
+
146
+ ### 3. Automated Code Analysis
147
+
148
+ Create automated code analysis pipelines:
149
+
150
+ ```javascript
151
+ import { search, query } from '@probelabs/probe';
152
+ import fs from 'fs/promises';
153
+
154
+ async function analyzeCodebase(codebasePath) {
155
+ const analysis = {
156
+ timestamp: new Date().toISOString(),
157
+ codebasePath,
158
+ metrics: {},
159
+ patterns: {},
160
+ potentialIssues: []
161
+ };
162
+
163
+ // Count functions by language
164
+ const languages = ['javascript', 'typescript', 'python', 'rust', 'go'];
165
+ const functionCounts = {};
166
+
167
+ for (const lang of languages) {
168
+ try {
169
+ const pattern = lang === 'javascript' || lang === 'typescript'
170
+ ? 'function $NAME($$$PARAMS) $$$BODY'
171
+ : lang === 'python'
172
+ ? 'def $NAME($$$PARAMS): $$$BODY'
173
+ : lang === 'rust'
174
+ ? 'fn $NAME($$$PARAMS) $$$BODY'
175
+ : 'func $NAME($$$PARAMS) $$$BODY';
176
+
177
+ const results = await query({
178
+ path: codebasePath,
179
+ pattern,
180
+ language: lang,
181
+ maxResults: 1000,
182
+ json: true
183
+ });
184
+
185
+ functionCounts[lang] = results.matches ? results.matches.length : 0;
186
+ } catch (error) {
187
+ console.error(`Error counting functions in ${lang}:`, error);
188
+ functionCounts[lang] = -1; // Error indicator
189
+ }
190
+ }
191
+
192
+ analysis.metrics.functionCounts = functionCounts;
193
+
194
+ // Find potential security issues
195
+ const securityPatterns = [
196
+ 'password',
197
+ 'token',
198
+ 'api_key',
199
+ 'apikey',
200
+ 'secret',
201
+ 'credential',
202
+ 'eval(',
203
+ 'exec(',
204
+ 'shell_exec'
205
+ ];
206
+
207
+ for (const pattern of securityPatterns) {
208
+ try {
209
+ const results = await search({
210
+ path: codebasePath,
211
+ query: pattern,
212
+ maxResults: 50,
213
+ json: true
214
+ });
215
+
216
+ if (results.matches && results.matches.length > 0) {
217
+ analysis.potentialIssues.push({
218
+ pattern,
219
+ matches: results.matches.map(match => ({
220
+ file: match.file,
221
+ line: match.line,
222
+ content: match.content.substring(0, 100) + '...' // Truncate long content
223
+ }))
224
+ });
225
+ }
226
+ } catch (error) {
227
+ console.error(`Error searching for pattern ${pattern}:`, error);
228
+ }
229
+ }
230
+
231
+ // Save analysis to file
232
+ await fs.writeFile(
233
+ 'codebase-analysis.json',
234
+ JSON.stringify(analysis, null, 2)
235
+ );
236
+
237
+ return analysis;
238
+ }
239
+
240
+ // Usage
241
+ const analysis = await analyzeCodebase('/path/to/your/project');
242
+ console.log('Analysis complete. Results saved to codebase-analysis.json');
243
+ console.log(`Found ${Object.values(analysis.metrics.functionCounts).reduce((a, b) => a + (b > 0 ? b : 0), 0)} functions across all languages`);
244
+ console.log(`Found ${analysis.potentialIssues.length} potential security issues`);
245
+ ```
246
+
247
+ ### 4. Documentation Generation
248
+
249
+ Automatically generate documentation for your codebase:
250
+
251
+ ```javascript
252
+ import { query, extract } from '@probelabs/probe';
253
+ import fs from 'fs/promises';
254
+ import path from 'path';
255
+ import { ChatOpenAI } from '@langchain/openai';
256
+
257
+ async function generateDocumentation(codebasePath, outputDir) {
258
+ // Create output directory if it doesn't exist
259
+ await fs.mkdir(outputDir, { recursive: true });
260
+
261
+ // Find all functions in the codebase
262
+ const functions = await query({
263
+ path: codebasePath,
264
+ pattern: 'function $NAME($$$PARAMS) $$$BODY',
265
+ language: 'javascript',
266
+ maxResults: 100,
267
+ json: true
268
+ });
269
+
270
+ // Create AI model for documentation generation
271
+ const model = new ChatOpenAI({
272
+ modelName: "gpt-4o",
273
+ temperature: 0.2
274
+ });
275
+
276
+ // Generate documentation for each function
277
+ for (const func of functions.matches || []) {
278
+ try {
279
+ // Extract the full function code
280
+ const extracted = await extract({
281
+ files: [`${func.file}:${func.line}`],
282
+ contextLines: 5,
283
+ json: true
284
+ });
285
+
286
+ // Generate documentation using AI
287
+ const response = await model.invoke([
288
+ {
289
+ role: "system",
290
+ content: "You are a technical documentation expert. Generate clear, concise documentation for the following function. Include: purpose, parameters, return value, and example usage."
291
+ },
292
+ {
293
+ role: "user",
294
+ content: `Generate documentation for this function:\n\n${extracted.content}`
295
+ }
296
+ ]);
297
+
298
+ // Save documentation to file
299
+ const funcName = func.name || `function_line_${func.line}`;
300
+ const docPath = path.join(outputDir, `${funcName}.md`);
301
+ await fs.writeFile(docPath, response.content);
302
+
303
+ console.log(`Generated documentation for ${funcName}`);
304
+ } catch (error) {
305
+ console.error(`Error generating documentation for function at ${func.file}:${func.line}:`, error);
306
+ }
307
+ }
308
+
309
+ console.log(`Documentation generation complete. Files saved to ${outputDir}`);
310
+ }
311
+
312
+ // Usage
313
+ await generateDocumentation('/path/to/your/project', './docs');
314
+ ```
315
+
316
+ ### 5. Code Review Automation
317
+
318
+ Create automated code review tools:
319
+
320
+ ```javascript
321
+ import { search, extract } from '@probelabs/probe';
322
+ import { ChatOpenAI } from '@langchain/openai';
323
+ import fs from 'fs/promises';
324
+
325
+ async function reviewPullRequest(repoPath, changedFiles) {
326
+ const model = new ChatOpenAI({
327
+ modelName: "gpt-4o",
328
+ temperature: 0.3
329
+ });
330
+
331
+ const reviews = [];
332
+
333
+ for (const file of changedFiles) {
334
+ try {
335
+ // Extract the file content
336
+ const fileContent = await extract({
337
+ files: [path.join(repoPath, file)],
338
+ json: true
339
+ });
340
+
341
+ // Search for potential issues
342
+ const securityIssues = await search({
343
+ path: path.join(repoPath, file),
344
+ query: 'password OR token OR secret OR eval OR exec',
345
+ maxResults: 10,
346
+ json: true
347
+ });
348
+
349
+ // Generate review using AI
350
+ const response = await model.invoke([
351
+ {
352
+ role: "system",
353
+ content: "You are a code review expert. Review the provided code for issues related to security, performance, maintainability, and best practices. Be concise but thorough."
354
+ },
355
+ {
356
+ role: "user",
357
+ content: `Review this file: ${file}\n\nContent:\n${fileContent.content}\n\nPotential security issues found:\n${JSON.stringify(securityIssues.matches || [])}`
358
+ }
359
+ ]);
360
+
361
+ reviews.push({
362
+ file,
363
+ review: response.content
364
+ });
365
+
366
+ console.log(`Reviewed ${file}`);
367
+ } catch (error) {
368
+ console.error(`Error reviewing ${file}:`, error);
369
+ reviews.push({
370
+ file,
371
+ error: error.message
372
+ });
373
+ }
374
+ }
375
+
376
+ // Save reviews to file
377
+ await fs.writeFile(
378
+ 'code-review.json',
379
+ JSON.stringify(reviews, null, 2)
380
+ );
381
+
382
+ return reviews;
383
+ }
384
+
385
+ // Usage
386
+ const changedFiles = ['src/auth.js', 'src/api.js', 'src/utils.js'];
387
+ const reviews = await reviewPullRequest('/path/to/your/project', changedFiles);
388
+ console.log(`Reviewed ${reviews.length} files. Results saved to code-review.json`);
389
+ ```
390
+
391
+ ## Integration with AI Frameworks
392
+
393
+ ### Vercel AI SDK Integration
394
+
395
+ ```javascript
396
+ import { generateText } from 'ai';
397
+ import { searchTool, queryTool, extractTool } from '@probelabs/probe';
398
+ import { randomUUID } from 'crypto';
399
+
400
+ // Generate a session ID for tool isolation
401
+ const sessionId = randomUUID();
402
+
403
+ // Configure tools with options
404
+ const configOptions = {
405
+ sessionId,
406
+ debug: process.env.DEBUG === 'true',
407
+ maxTokens: 30000 // Optional: override default max tokens
408
+ };
409
+
410
+ // Create configured tool instances
411
+ const configuredTools = {
412
+ search: searchTool(configOptions),
413
+ query: queryTool(configOptions),
414
+ extract: extractTool(configOptions)
415
+ };
416
+
417
+ // Use the configured tools with Vercel AI SDK
418
+ async function chatWithAI(userMessage) {
419
+ const result = await generateText({
420
+ model: provider(modelName),
421
+ messages: [{ role: 'user', content: userMessage }],
422
+ system: "You are a code intelligence assistant. Use the provided tools to search and analyze code.",
423
+ tools: configuredTools,
424
+ maxSteps: 15,
425
+ temperature: 0.7
426
+ });
427
+
428
+ return result.text;
429
+ }
430
+ ```
431
+
432
+ ### LangChain Integration
433
+
434
+ ```javascript
435
+ import { ChatOpenAI } from '@langchain/openai';
436
+ import { tools } from '@probelabs/probe';
437
+
438
+ // Create the LangChain tools
439
+ const searchTool = tools.createSearchTool();
440
+ const queryTool = tools.createQueryTool();
441
+ const extractTool = tools.createExtractTool();
442
+
443
+ // Create a ChatOpenAI instance with tools
444
+ const model = new ChatOpenAI({
445
+ modelName: "gpt-4o",
446
+ temperature: 0.7
447
+ }).withTools([searchTool, queryTool, extractTool]);
448
+
449
+ // Use the model with tools
450
+ async function chatWithAI(userMessage) {
451
+ const result = await model.invoke([
452
+ { role: "system", content: "You are a code intelligence assistant. Use the provided tools to search and analyze code." },
453
+ { role: "user", content: userMessage }
454
+ ]);
455
+
456
+ return result.content;
457
+ }
458
+ ```
459
+
460
+ ## Advanced Techniques
461
+
462
+ ### Batch Processing Multiple Repositories
463
+
464
+ ```javascript
465
+ import { search } from '@probelabs/probe';
466
+ import fs from 'fs/promises';
467
+ import path from 'path';
468
+
469
+ async function batchSearch(repositories, searchQuery) {
470
+ const results = {};
471
+
472
+ for (const repo of repositories) {
473
+ console.log(`Searching in ${repo}...`);
474
+ try {
475
+ const searchResults = await search({
476
+ path: repo,
477
+ query: searchQuery,
478
+ maxResults: 20,
479
+ json: true // Get structured results
480
+ });
481
+
482
+ results[repo] = searchResults;
483
+ } catch (error) {
484
+ console.error(`Error searching in ${repo}:`, error);
485
+ results[repo] = { error: error.message };
486
+ }
487
+ }
488
+
489
+ return results;
490
+ }
491
+
492
+ // Example usage
493
+ const repositories = [
494
+ '/path/to/repo1',
495
+ '/path/to/repo2',
496
+ '/path/to/repo3'
497
+ ];
498
+
499
+ const results = await batchSearch(repositories, 'security AND (vulnerability OR exploit)');
500
+
501
+ // Save results to a file
502
+ await fs.writeFile(
503
+ path.join(process.cwd(), 'search-results.json'),
504
+ JSON.stringify(results, null, 2)
505
+ );
506
+
507
+ console.log('Search completed and results saved to search-results.json');
508
+ ```
509
+
510
+ ### Session-Based Caching
511
+
512
+ ```javascript
513
+ import { search } from '@probelabs/probe';
514
+
515
+ // First search with empty session string (generates a session ID)
516
+ const results1 = await search({
517
+ path: '/path/to/your/project',
518
+ query: 'authentication',
519
+ session: ''
520
+ });
521
+
522
+ // Get the session ID from the results
523
+ const sessionId = results1.session;
524
+ console.log(`Session ID: ${sessionId}`);
525
+
526
+ // Use the same session ID for related searches
527
+ const results2 = await search({
528
+ path: '/path/to/your/project',
529
+ query: 'login',
530
+ session: sessionId
531
+ });
532
+
533
+ // This will skip code blocks already shown in the previous search
534
+ console.log(`Found ${results2.matches.length} new matches`);
535
+ ```
536
+
537
+ ## Best Practices
538
+
539
+ 1. **Use Specific Queries**: More specific queries yield better results and improve performance
540
+
541
+ 2. **Limit Result Size**: Use `maxResults` and `maxTokens` to limit the size of results, especially when using with AI models
542
+
543
+ 3. **Handle Errors**: Always wrap API calls in try/catch blocks to handle potential errors gracefully
544
+
545
+ 4. **Cache Results**: Consider caching results for frequently used queries to improve performance
546
+
547
+ 5. **Use JSON Format**: Use `json: true` for programmatic processing of results
548
+
549
+ 6. **Combine with Other Tools**: Use Probe alongside other tools for a more comprehensive understanding of your codebase
550
+
551
+ 7. **Optimize for Performance**: Use `filesOnly` for initial broad searches, then refine with more specific queries
552
+
553
+ 8. **Use Session IDs**: For related searches, use the same session ID to avoid seeing duplicate code blocks
554
+
555
+ ## Getting Started
556
+
557
+ ### Installation
558
+
559
+ ```bash
560
+ # Local installation
561
+ npm install @probelabs/probe@latest
562
+
563
+ # Global installation
564
+ npm install -g @probelabs/probe@latest
565
+ ```
566
+
567
+ ### Basic Usage
568
+
569
+ ```javascript
570
+ import { search, query, extract } from '@probelabs/probe';
571
+
572
+ // Search for code
573
+ const searchResults = await search({
574
+ path: '/path/to/your/project',
575
+ query: 'function',
576
+ maxResults: 10
577
+ });
578
+
579
+ // Query for specific code structures
580
+ const queryResults = await query({
581
+ path: '/path/to/your/project',
582
+ pattern: 'function $NAME($$$PARAMS) $$$BODY',
583
+ language: 'javascript'
584
+ });
585
+
586
+ // Extract code blocks
587
+ const extractResults = await extract({
588
+ files: ['/path/to/your/project/src/main.js:42']
589
+ });
590
+ ```
591
+
592
+ ## Next Steps
593
+
594
+ - Learn about [Probe's CLI Reference](/cli-mode) for advanced command-line usage
595
+ - Explore [using Probe with AI Code Editors](/use-cases/ai-code-editors) for integrated IDE experiences
596
+ - Check out [hosting a team chat](/use-cases/team-chat) for collaborative code exploration