@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,625 @@
1
+ # Output Formats Reference
2
+
3
+ Complete reference documentation for Probe's output formats, including JSON and XML schemas for all commands. This reference covers the structure and usage of each format for the `search`, `query`, and `extract` commands.
4
+
5
+ ## Common Format Options
6
+
7
+ All three commands (`search`, `query`, and `extract`) support the following output formats:
8
+
9
+ | Format | Description |
10
+ |--------|-------------|
11
+ | `color` | Colorized terminal output (default) |
12
+ | `terminal` | Plain terminal output without colors |
13
+ | `markdown` | Markdown-formatted output |
14
+ | `plain` | Plain text output without formatting |
15
+ | `json` | JSON-formatted output |
16
+ | `xml` | XML-formatted output |
17
+
18
+ To specify an output format, use the `--format` or `-o` option:
19
+
20
+ ```bash
21
+ probe search "query" --format json
22
+ probe query "pattern" ./src --format xml
23
+ probe extract file.rs:42 --format markdown
24
+ ```
25
+
26
+ ## JSON Output Format
27
+
28
+ The JSON output format provides a structured representation of search results that's easy to parse programmatically. This is particularly useful for integrating Probe with other tools or scripts.
29
+
30
+ ### Common JSON Structure
31
+
32
+ All three commands share a common top-level JSON structure:
33
+
34
+ ```json
35
+ {
36
+ "results": [
37
+ // Array of result objects
38
+ ],
39
+ "summary": {
40
+ "count": 5, // Number of results
41
+ "total_bytes": 1024, // Total bytes of code in results
42
+ "total_tokens": 256 // Total tokens in results (for AI usage)
43
+ }
44
+ }
45
+ ```
46
+
47
+ ### Search Command JSON Format
48
+
49
+ The `search` command's JSON output includes the following fields for each result:
50
+
51
+ ```json
52
+ {
53
+ "results": [
54
+ {
55
+ "file": "/path/to/file.rs", // File path
56
+ "lines": [10, 20], // Start and end line numbers
57
+ "node_type": "function", // Type of code block (function, class, struct, etc.)
58
+ "code": "fn example() { ... }", // The actual code content
59
+ "matched_keywords": [ // Keywords that matched (if available)
60
+ "example",
61
+ "function"
62
+ ],
63
+ "rank": 1, // Rank in search results (if available)
64
+ "score": 0.95 // Relevance score (if available)
65
+ },
66
+ // More results...
67
+ ],
68
+ "summary": {
69
+ "count": 5,
70
+ "total_bytes": 1024,
71
+ "total_tokens": 256
72
+ }
73
+ }
74
+ ```
75
+
76
+ #### Example: Search JSON Output
77
+
78
+ ```bash
79
+ probe search "authentication" --format json
80
+ ```
81
+
82
+ ```json
83
+ {
84
+ "results": [
85
+ {
86
+ "file": "/path/to/auth.rs",
87
+ "lines": [15, 30],
88
+ "node_type": "function",
89
+ "code": "fn authenticate_user(username: &str, password: &str) -> Result<User, AuthError> {\n // Authentication logic\n ...\n}",
90
+ "matched_keywords": ["authenticate", "user"],
91
+ "rank": 1,
92
+ "score": 0.98
93
+ }
94
+ ],
95
+ "summary": {
96
+ "count": 1,
97
+ "total_bytes": 120,
98
+ "total_tokens": 30
99
+ }
100
+ }
101
+ ```
102
+
103
+ ### Query Command JSON Format
104
+
105
+ The `query` command's JSON output is similar to the search command but includes additional fields specific to AST-based queries:
106
+
107
+ ```json
108
+ {
109
+ "results": [
110
+ {
111
+ "file": "/path/to/file.rs", // File path
112
+ "lines": [10, 20], // Start and end line numbers
113
+ "node_type": "function", // Type of code block (function, class, struct, etc.)
114
+ "code": "fn example() { ... }", // The actual code content
115
+ "column_start": 0, // Starting column
116
+ "column_end": 20 // Ending column
117
+ },
118
+ // More results...
119
+ ],
120
+ "summary": {
121
+ "count": 5,
122
+ "total_bytes": 1024,
123
+ "total_tokens": 256
124
+ }
125
+ }
126
+ ```
127
+
128
+ #### Example: Query JSON Output
129
+
130
+ ```bash
131
+ probe query "fn $NAME($$$PARAMS) $$$BODY" ./src --language rust --format json
132
+ ```
133
+
134
+ ```json
135
+ {
136
+ "results": [
137
+ {
138
+ "file": "/path/to/functions.rs",
139
+ "lines": [5, 8],
140
+ "node_type": "function",
141
+ "code": "fn add(a: i32, b: i32) -> i32 {\n a + b\n}",
142
+ "column_start": 0,
143
+ "column_end": 35
144
+ }
145
+ ],
146
+ "summary": {
147
+ "count": 1,
148
+ "total_bytes": 35,
149
+ "total_tokens": 15
150
+ }
151
+ }
152
+ ```
153
+
154
+ ### Extract Command JSON Format
155
+
156
+ The `extract` command's JSON output is similar to the other commands but may include different `node_type` values depending on the extraction method:
157
+
158
+ ```json
159
+ {
160
+ "results": [
161
+ {
162
+ "file": "/path/to/file.rs", // File path
163
+ "lines": [10, 20], // Start and end line numbers
164
+ "node_type": "function", // Type: "function", "struct", "file", "range", "context"
165
+ "code": "fn example() { ... }" // The extracted code content
166
+ },
167
+ // More results...
168
+ ],
169
+ "summary": {
170
+ "count": 1,
171
+ "total_bytes": 1024,
172
+ "total_tokens": 256
173
+ }
174
+ }
175
+ ```
176
+
177
+ When using the `--keep-input` flag, the JSON output includes an additional `original_input` field containing the exact input text:
178
+
179
+ ```json
180
+ {
181
+ "original_input": "src/main.rs:42: error: invalid syntax", // Original input when using --keep-input
182
+ "results": [
183
+ {
184
+ "file": "src/main.rs",
185
+ "lines": [40, 45],
186
+ "node_type": "function",
187
+ "code": "fn process_data(data: &[u8]) -> Result<Vec<u8>, Error> {\n // Processing logic\n ...\n}"
188
+ }
189
+ ],
190
+ "summary": {
191
+ "count": 1,
192
+ "total_bytes": 85,
193
+ "total_tokens": 25
194
+ }
195
+ }
196
+ ```
197
+
198
+ #### Example: Extract JSON Output
199
+
200
+ ```bash
201
+ probe extract src/main.rs:42 --format json
202
+ ```
203
+
204
+ ```json
205
+ {
206
+ "results": [
207
+ {
208
+ "file": "src/main.rs",
209
+ "lines": [40, 45],
210
+ "node_type": "function",
211
+ "code": "fn process_data(data: &[u8]) -> Result<Vec<u8>, Error> {\n // Processing logic\n ...\n}"
212
+ }
213
+ ],
214
+ "summary": {
215
+ "count": 1,
216
+ "total_bytes": 85,
217
+ "total_tokens": 25
218
+ }
219
+ }
220
+ ```
221
+
222
+ ## XML Output Format
223
+
224
+ The XML output format provides a structured representation similar to JSON but in XML format. This can be useful for tools that prefer XML over JSON.
225
+
226
+ ### Common XML Structure
227
+
228
+ All three commands share a common XML structure:
229
+
230
+ ```xml
231
+ <?xml version="1.0" encoding="UTF-8"?>
232
+ <probe_results>
233
+ <result>
234
+ <!-- Result elements -->
235
+ </result>
236
+ <!-- More results... -->
237
+ <summary>
238
+ <count>5</count>
239
+ <total_bytes>1024</total_bytes>
240
+ <total_tokens>256</total_tokens>
241
+ </summary>
242
+ </probe_results>
243
+ ```
244
+
245
+ ### Search Command XML Format
246
+
247
+ The `search` command's XML output includes the following elements for each result:
248
+
249
+ ```xml
250
+ <probe_results>
251
+ <result>
252
+ <file>/path/to/file.rs</file>
253
+ <lines>
254
+ <start>10</start>
255
+ <end>20</end>
256
+ </lines>
257
+ <node_type>function</node_type>
258
+ <code><![CDATA[fn example() { ... }]]></code>
259
+ <matched_keywords>
260
+ <keyword>example</keyword>
261
+ <keyword>function</keyword>
262
+ </matched_keywords>
263
+ <rank>1</rank>
264
+ <score>0.95</score>
265
+ </result>
266
+ <!-- More results... -->
267
+ <summary>
268
+ <count>5</count>
269
+ <total_bytes>1024</total_bytes>
270
+ <total_tokens>256</total_tokens>
271
+ </summary>
272
+ </probe_results>
273
+ ```
274
+
275
+ #### Example: Search XML Output
276
+
277
+ ```bash
278
+ probe search "authentication" --format xml
279
+ ```
280
+
281
+ ```xml
282
+ <?xml version="1.0" encoding="UTF-8"?>
283
+ <probe_results>
284
+ <result>
285
+ <file>/path/to/auth.rs</file>
286
+ <lines>
287
+ <start>15</start>
288
+ <end>30</end>
289
+ </lines>
290
+ <node_type>function</node_type>
291
+ <code><![CDATA[fn authenticate_user(username: &str, password: &str) -> Result<User, AuthError> {
292
+ // Authentication logic
293
+ ...
294
+ }]]></code>
295
+ <matched_keywords>
296
+ <keyword>authenticate</keyword>
297
+ <keyword>user</keyword>
298
+ </matched_keywords>
299
+ <rank>1</rank>
300
+ <score>0.98</score>
301
+ </result>
302
+ <summary>
303
+ <count>1</count>
304
+ <total_bytes>120</total_bytes>
305
+ <total_tokens>30</total_tokens>
306
+ </summary>
307
+ </probe_results>
308
+ ```
309
+
310
+ ### Query Command XML Format
311
+
312
+ The `query` command's XML output is similar to the search command but includes additional elements specific to AST-based queries:
313
+
314
+ ```xml
315
+ <probe_results>
316
+ <result>
317
+ <file>/path/to/file.rs</file>
318
+ <lines>
319
+ <start>10</start>
320
+ <end>20</end>
321
+ </lines>
322
+ <node_type>function</node_type>
323
+ <column_start>0</column_start>
324
+ <column_end>20</column_end>
325
+ <code><![CDATA[fn example() { ... }]]></code>
326
+ </result>
327
+ <!-- More results... -->
328
+ <summary>
329
+ <count>5</count>
330
+ <total_bytes>1024</total_bytes>
331
+ <total_tokens>256</total_tokens>
332
+ </summary>
333
+ </probe_results>
334
+ ```
335
+
336
+ #### Example: Query XML Output
337
+
338
+ ```bash
339
+ probe query "fn $NAME($$$PARAMS) $$$BODY" ./src --language rust --format xml
340
+ ```
341
+
342
+ ```xml
343
+ <?xml version="1.0" encoding="UTF-8"?>
344
+ <probe_results>
345
+ <result>
346
+ <file>/path/to/functions.rs</file>
347
+ <lines>
348
+ <start>5</start>
349
+ <end>8</end>
350
+ </lines>
351
+ <node_type>function</node_type>
352
+ <column_start>0</column_start>
353
+ <column_end>35</column_end>
354
+ <code><![CDATA[fn add(a: i32, b: i32) -> i32 {
355
+ a + b
356
+ }]]></code>
357
+ </result>
358
+ <summary>
359
+ <count>1</count>
360
+ <total_bytes>35</total_bytes>
361
+ <total_tokens>15</total_tokens>
362
+ </summary>
363
+ </probe_results>
364
+ ```
365
+
366
+ ### Extract Command XML Format
367
+
368
+ The `extract` command's XML output is similar to the other commands but may include different `node_type` values depending on the extraction method:
369
+
370
+ ```xml
371
+ <probe_results>
372
+ <result>
373
+ <file>/path/to/file.rs</file>
374
+ <lines>
375
+ <start>10</start>
376
+ <end>20</end>
377
+ </lines>
378
+ <node_type>function</node_type>
379
+ <code><![CDATA[fn example() { ... }]]></code>
380
+ </result>
381
+ <!-- More results... -->
382
+ <summary>
383
+ <count>1</count>
384
+ <total_bytes>1024</total_bytes>
385
+ <total_tokens>256</total_tokens>
386
+ </summary>
387
+ </probe_results>
388
+ ```
389
+
390
+ When using the `--keep-input` flag, the XML output includes an additional `original_input` element containing the exact input text:
391
+
392
+ ```xml
393
+ <?xml version="1.0" encoding="UTF-8"?>
394
+ <probe_results>
395
+ <original_input><![CDATA[src/main.rs:42: error: invalid syntax]]></original_input>
396
+ <result>
397
+ <file>src/main.rs</file>
398
+ <lines>
399
+ <start>40</start>
400
+ <end>45</end>
401
+ </lines>
402
+ <node_type>function</node_type>
403
+ <code><![CDATA[fn process_data(data: &[u8]) -> Result<Vec<u8>, Error> {
404
+ // Processing logic
405
+ ...
406
+ }]]></code>
407
+ </result>
408
+ <summary>
409
+ <count>1</count>
410
+ <total_bytes>85</total_bytes>
411
+ <total_tokens>25</total_tokens>
412
+ </summary>
413
+ </probe_results>
414
+ ```
415
+
416
+ #### Example: Extract XML Output
417
+
418
+ ```bash
419
+ probe extract src/main.rs:42 --format xml
420
+
421
+ # With --keep-input flag to preserve original input
422
+ probe extract src/main.rs:42 --format xml --keep-input
423
+ ```
424
+
425
+ ```xml
426
+ <?xml version="1.0" encoding="UTF-8"?>
427
+ <probe_results>
428
+ <result>
429
+ <file>src/main.rs</file>
430
+ <lines>
431
+ <start>40</start>
432
+ <end>45</end>
433
+ </lines>
434
+ <node_type>function</node_type>
435
+ <code><![CDATA[fn process_data(data: &[u8]) -> Result<Vec<u8>, Error> {
436
+ // Processing logic
437
+ ...
438
+ }]]></code>
439
+ </result>
440
+ <summary>
441
+ <count>1</count>
442
+ <total_bytes>85</total_bytes>
443
+ <total_tokens>25</total_tokens>
444
+ </summary>
445
+ </probe_results>
446
+ ```
447
+
448
+ ## Parsing and Using the Output
449
+
450
+ ### Parsing JSON Output
451
+
452
+ You can easily parse the JSON output using any JSON parser. Here are some examples:
453
+
454
+ #### Python Example
455
+
456
+ ```python
457
+ import json
458
+ import subprocess
459
+
460
+ # Run probe search and capture output
461
+ output = subprocess.check_output(["probe", "search", "authentication", "--format", "json"])
462
+ results = json.loads(output)
463
+
464
+ # Process the results
465
+ # Check if original input is present (when using --keep-input)
466
+ if "original_input" in results:
467
+ print(f"Original Input:\n{results['original_input']}")
468
+ print("---")
469
+
470
+ for result in results["results"]:
471
+ print(f"File: {result['file']}")
472
+ print(f"Lines: {result['lines'][0]}-{result['lines'][1]}")
473
+ print(f"Code:\n{result['code']}")
474
+ print("---")
475
+
476
+ # Get summary information
477
+ print(f"Found {results['summary']['count']} results")
478
+ print(f"Total bytes: {results['summary']['total_bytes']}")
479
+ print(f"Total tokens: {results['summary']['total_tokens']}")
480
+ ```
481
+
482
+ #### JavaScript/Node.js Example
483
+
484
+ ```javascript
485
+ const { execSync } = require('child_process');
486
+
487
+ // Run probe search and capture output
488
+ const output = execSync('probe search "authentication" --format json', { encoding: 'utf-8' });
489
+ const results = JSON.parse(output);
490
+
491
+ // Process the results
492
+ // Check if original input is present (when using --keep-input)
493
+ if (results.original_input) {
494
+ console.log(`Original Input:\n${results.original_input}`);
495
+ console.log('---');
496
+ }
497
+
498
+ results.results.forEach(result => {
499
+ console.log(`File: ${result.file}`);
500
+ console.log(`Lines: ${result.lines[0]}-${result.lines[1]}`);
501
+ console.log(`Code:\n${result.code}`);
502
+ console.log('---');
503
+ });
504
+
505
+ // Get summary information
506
+ console.log(`Found ${results.summary.count} results`);
507
+ console.log(`Total bytes: ${results.summary.total_bytes}`);
508
+ console.log(`Total tokens: ${results.summary.total_tokens}`);
509
+ ```
510
+
511
+ ### Parsing XML Output
512
+
513
+ You can parse the XML output using any XML parser. Here are some examples:
514
+
515
+ #### Python Example
516
+
517
+ ```python
518
+ import subprocess
519
+ import xml.etree.ElementTree as ET
520
+
521
+ # Run probe search and capture output
522
+ output = subprocess.check_output(["probe", "search", "authentication", "--format", "xml"])
523
+ root = ET.fromstring(output)
524
+
525
+ # Process the results
526
+ # Check if original input is present (when using --keep-input)
527
+ original_input = root.find('original_input')
528
+ if original_input is not None:
529
+ print(f"Original Input:\n{original_input.text}")
530
+ print("---")
531
+
532
+ for result in root.findall('./result'):
533
+ file = result.find('file').text
534
+ lines_start = result.find('./lines/start').text
535
+ lines_end = result.find('./lines/end').text
536
+ code = result.find('code').text
537
+
538
+ print(f"File: {file}")
539
+ print(f"Lines: {lines_start}-{lines_end}")
540
+ print(f"Code:\n{code}")
541
+ print("---")
542
+
543
+ # Get summary information
544
+ summary = root.find('summary')
545
+ count = summary.find('count').text
546
+ total_bytes = summary.find('total_bytes').text
547
+ total_tokens = summary.find('total_tokens').text
548
+
549
+ print(f"Found {count} results")
550
+ print(f"Total bytes: {total_bytes}")
551
+ print(f"Total tokens: {total_tokens}")
552
+ ```
553
+
554
+ #### JavaScript/Node.js Example
555
+
556
+ ```javascript
557
+ const { execSync } = require('child_process');
558
+ const { parseString } = require('xml2js');
559
+
560
+ // Run probe search and capture output
561
+ const output = execSync('probe search "authentication" --format xml', { encoding: 'utf-8' });
562
+
563
+ // Parse XML
564
+ parseString(output, (err, result) => {
565
+ if (err) {
566
+ console.error('Error parsing XML:', err);
567
+ return;
568
+ }
569
+
570
+ // Process the results
571
+ // Check if original input is present (when using --keep-input)
572
+ if (result.probe_results.original_input) {
573
+ console.log(`Original Input:\n${result.probe_results.original_input[0]}`);
574
+ console.log('---');
575
+ }
576
+
577
+ const results = result.probe_results.result || [];
578
+ results.forEach(result => {
579
+ const file = result.file[0];
580
+ const linesStart = result.lines[0].start[0];
581
+ const linesEnd = result.lines[0].end[0];
582
+ const code = result.code[0];
583
+
584
+ console.log(`File: ${file}`);
585
+ console.log(`Lines: ${linesStart}-${linesEnd}`);
586
+ console.log(`Code:\n${code}`);
587
+ console.log('---');
588
+ });
589
+
590
+ // Get summary information
591
+ const summary = result.probe_results.summary[0];
592
+ console.log(`Found ${summary.count[0]} results`);
593
+ console.log(`Total bytes: ${summary.total_bytes[0]}`);
594
+ console.log(`Total tokens: ${summary.total_tokens[0]}`);
595
+ });
596
+ ```
597
+
598
+ ## Format Differences Between Commands
599
+
600
+ While the overall structure is similar, there are some differences in the output formats between commands:
601
+
602
+ 1. **Search Command**:
603
+ - Includes ranking and scoring information
604
+ - May include matched keywords
605
+ - Node types are typically language constructs (function, class, etc.)
606
+
607
+ 2. **Query Command**:
608
+ - Includes column start and end positions
609
+ - Results are based on AST patterns rather than text search
610
+ - More precise structural matching
611
+
612
+ 3. **Extract Command**:
613
+ - Node types can be "file", "function", "range", or "context"
614
+ - Focused on extracting specific code blocks rather than searching
615
+ - May include context lines around the extracted code
616
+ - Can include original input text when using `--keep-input` flag
617
+
618
+ ## Special Character Handling
619
+
620
+ Both JSON and XML formats handle special characters appropriately:
621
+
622
+ - **JSON**: Special characters in code are properly escaped according to JSON rules
623
+ - **XML**: Code blocks are wrapped in CDATA sections to preserve formatting and special characters
624
+
625
+ This ensures that the output can be reliably parsed regardless of the content of the code.
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "probe-docs",
3
+ "version": "1.0.0",
4
+ "description": "Documentation for Probe - AI-friendly code search tool",
5
+ "scripts": {
6
+ "docs:dev": "vitepress dev",
7
+ "docs:build": "vitepress build",
8
+ "docs:preview": "vitepress preview",
9
+ "dev": "vitepress dev",
10
+ "build": "vitepress build",
11
+ "preview": "vitepress preview"
12
+ },
13
+ "dependencies": {
14
+ "highlight.js": "^11.11.1",
15
+ "vitepress": "^1.6.3"
16
+ },
17
+ "devDependencies": {
18
+ "@vuepress/plugin-shiki": "^2.0.0-rc.83",
19
+ "markdown-it": "^14.1.0"
20
+ }
21
+ }
@@ -0,0 +1,28 @@
1
+ # Global headers for all files
2
+ /*
3
+ X-Frame-Options: DENY
4
+ X-Content-Type-Options: nosniff
5
+ Referrer-Policy: strict-origin-when-cross-origin
6
+ X-XSS-Protection: 1; mode=block
7
+
8
+ # Cache static assets for 1 year
9
+ /assets/*
10
+ Cache-Control: public, max-age=31536000, immutable
11
+
12
+ # Cache images for 1 week
13
+ /*.png
14
+ Cache-Control: public, max-age=604800
15
+
16
+ /*.jpg
17
+ Cache-Control: public, max-age=604800
18
+
19
+ /*.svg
20
+ Cache-Control: public, max-age=604800
21
+
22
+ # Cache main page for 1 hour
23
+ /
24
+ Cache-Control: public, max-age=3600
25
+
26
+ # Cache other HTML files for 1 hour
27
+ /*.html
28
+ Cache-Control: public, max-age=3600
@@ -0,0 +1,11 @@
1
+ # Redirect rules for Cloudflare Pages
2
+
3
+ # Redirect www to main domain
4
+ https://www.probelabs.com/* https://probelabs.com/:splat 301
5
+
6
+ # Handle clean URLs - VitePress already generates clean URLs
7
+ # but this ensures fallback behavior
8
+ /docs/* /404.html 404
9
+
10
+ # Fallback for any 404s to custom 404 page
11
+ /* /404.html 404