@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,502 @@
1
+ # OpenAI Codex CLI Integration Guide
2
+
3
+ Complete guide for using ProbeAgent with OpenAI's Codex CLI command for zero-configuration AI-powered code assistance.
4
+
5
+ ## Table of Contents
6
+ - [Overview](#overview)
7
+ - [Quick Start](#quick-start)
8
+ - [How It Works](#how-it-works)
9
+ - [Auto-Fallback Feature](#auto-fallback-feature)
10
+ - [Tool Event Extraction](#tool-event-extraction)
11
+ - [Configuration](#configuration)
12
+ - [Examples](#examples)
13
+ - [Testing](#testing)
14
+ - [Troubleshooting](#troubleshooting)
15
+
16
+ ## Overview
17
+
18
+ ProbeAgent now supports OpenAI's Codex CLI `codex` command as a provider, enabling:
19
+ - **Zero-configuration usage** in Codex environments
20
+ - **Automatic fallback** when no API keys are present
21
+ - **Black-box operation** - Codex CLI handles its own agentic loop
22
+ - **Tool event extraction** - Visibility into internal tool usage
23
+ - **Full MCP integration** - Access to Probe's semantic search tools
24
+
25
+ ## Quick Start
26
+
27
+ ### Automatic (Zero Config)
28
+
29
+ ```javascript
30
+ import { ProbeAgent } from 'probe-agent';
31
+
32
+ // Works automatically if codex command is installed!
33
+ const agent = new ProbeAgent({
34
+ allowedFolders: ['/path/to/your/code']
35
+ });
36
+
37
+ await agent.initialize();
38
+ const response = await agent.answer('Explain how this codebase works');
39
+ ```
40
+
41
+ ### Explicit Provider
42
+
43
+ ```javascript
44
+ const agent = new ProbeAgent({
45
+ provider: 'codex', // Explicit
46
+ allowedFolders: ['/path/to/your/code']
47
+ });
48
+ ```
49
+
50
+ ### Environment Variable
51
+
52
+ ```bash
53
+ USE_CODEX=true node your-script.js
54
+ ```
55
+
56
+ ## How It Works
57
+
58
+ ### Architecture
59
+
60
+ ```
61
+ ProbeAgent
62
+
63
+ provider: 'codex'
64
+
65
+ Enhanced Codex Engine
66
+
67
+ Spawns: codex --output-format json --mcp-config ...
68
+
69
+ Codex CLI (black box)
70
+ - Handles its own agentic loop
71
+ - Uses MCP tools (mcp__probe__*)
72
+ - Returns final response
73
+
74
+ Tool Event Extraction
75
+
76
+ Response + Tool Events
77
+ ```
78
+
79
+ ### Black Box Mode
80
+
81
+ Unlike the native engine which controls tool iteration:
82
+ - **Codex CLI manages its own loop** - ProbeAgent doesn't see intermediate steps
83
+ - **No XML formatting** - Uses native MCP protocol
84
+ - **Tool events extracted post-hoc** - Emitted as batch after response
85
+ - **Bypass tool loop** - ProbeAgent's iteration logic is skipped
86
+
87
+ ### Key Components
88
+
89
+ 1. **Enhanced Codex Engine** (`src/agent/engines/enhanced-codex.js`)
90
+ - Spawns `codex` command with MCP configuration
91
+ - Manages session persistence
92
+ - Extracts tool events from response stream
93
+
94
+ 2. **Built-in MCP Server** (`src/agent/mcp/built-in-server.js`)
95
+ - Provides Probe tools via MCP protocol
96
+ - Tools: search, extract, query, list_files, search_files
97
+ - Automatically configured and started
98
+
99
+ 3. **Auto-Detection Logic** (`src/agent/ProbeAgent.js`)
100
+ - Checks for `codex` command availability
101
+ - Falls back when no API keys present
102
+
103
+ ## Auto-Fallback Feature
104
+
105
+ ### Fallback Priority
106
+
107
+ When ProbeAgent is initialized without API keys:
108
+
109
+ 1. **Check for `claude` command** → Use `claude-code` provider
110
+ 2. **Check for `codex` command** → Use `codex` provider
111
+ 3. **No CLI commands found** → Error with installation instructions
112
+
113
+ ### How Auto-Fallback Works
114
+
115
+ ```javascript
116
+ // In ProbeAgent.initialize()
117
+ async initialize() {
118
+ // No API keys configured
119
+ if (this.apiType === 'uninitialized') {
120
+ const claudeAvailable = await this.isClaudeCommandAvailable();
121
+ const codexAvailable = await this.isCodexCommandAvailable();
122
+
123
+ if (claudeAvailable) {
124
+ // Use claude-code (priority 1)
125
+ this.clientApiProvider = 'claude-code';
126
+ } else if (codexAvailable) {
127
+ // Use codex (priority 2)
128
+ this.clientApiProvider = 'codex';
129
+ } else {
130
+ // Error - neither available
131
+ throw new Error('...');
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### Force Codex CLI
138
+
139
+ Even if Claude Code is available, you can force Codex CLI:
140
+
141
+ ```javascript
142
+ const agent = new ProbeAgent({
143
+ provider: 'codex', // Force Codex even if claude available
144
+ allowedFolders: [process.cwd()]
145
+ });
146
+ ```
147
+
148
+ Or via environment:
149
+
150
+ ```bash
151
+ USE_CODEX=true node script.js
152
+ ```
153
+
154
+ ## Tool Event Extraction
155
+
156
+ ### Why Extract Tool Events?
157
+
158
+ Codex CLI operates as a black box - ProbeAgent doesn't control tool execution. But users still want visibility into:
159
+ - Which tools were used
160
+ - What arguments were passed
161
+ - When tools were called
162
+
163
+ ### How Extraction Works
164
+
165
+ The engine parses JSON output from Codex CLI:
166
+
167
+ ```javascript
168
+ // Codex CLI emits JSON like:
169
+ {
170
+ "type": "assistant",
171
+ "message": {
172
+ "content": [
173
+ { "type": "text", "text": "..." },
174
+ {
175
+ "type": "tool_use",
176
+ "id": "toolu_123",
177
+ "name": "mcp__probe__search",
178
+ "input": { "query": "ProbeAgent" }
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ ```
184
+
185
+ Events are collected and emitted as a batch:
186
+
187
+ ```javascript
188
+ agent.events.on('toolCall', (event) => {
189
+ console.log(`Tool: ${event.name}`);
190
+ console.log(`Status: ${event.status}`); // 'started' or 'completed'
191
+ console.log(`Args:`, event.args);
192
+ console.log(`Timestamp:`, event.timestamp);
193
+ });
194
+
195
+ agent.events.on('toolBatch', (batch) => {
196
+ console.log(`Total tools used: ${batch.tools.length}`);
197
+ console.log(`Batch timestamp: ${batch.timestamp}`);
198
+ });
199
+ ```
200
+
201
+ ## Configuration
202
+
203
+ ### Model Selection
204
+
205
+ Default model is `gpt-4o`. Override with:
206
+
207
+ ```javascript
208
+ const agent = new ProbeAgent({
209
+ provider: 'codex',
210
+ model: 'gpt-4o-mini', // Use faster model
211
+ allowedFolders: [process.cwd()]
212
+ });
213
+ ```
214
+
215
+ Or via environment:
216
+
217
+ ```bash
218
+ MODEL_NAME=gpt-4o-mini USE_CODEX=true node script.js
219
+ ```
220
+
221
+ ### Tool Filtering
222
+
223
+ Restrict which tools Codex CLI can access:
224
+
225
+ ```javascript
226
+ const agent = new ProbeAgent({
227
+ provider: 'codex',
228
+ allowedTools: ['search', 'extract'], // Only these tools
229
+ allowedFolders: [process.cwd()]
230
+ });
231
+ ```
232
+
233
+ Tools are automatically prefixed for MCP: `search` → `mcp__probe__search`
234
+
235
+ ### Session Persistence
236
+
237
+ Sessions are automatically managed:
238
+
239
+ ```javascript
240
+ const agent1 = new ProbeAgent({
241
+ provider: 'codex',
242
+ sessionId: 'my-session',
243
+ allowedFolders: [process.cwd()]
244
+ });
245
+
246
+ await agent1.answer('What is ProbeAgent?');
247
+
248
+ // Later - resume same conversation
249
+ const agent2 = new ProbeAgent({
250
+ provider: 'codex',
251
+ sessionId: 'my-session', // Same session ID
252
+ allowedFolders: [process.cwd()]
253
+ });
254
+
255
+ await agent2.answer('Tell me more'); // Continues context
256
+ ```
257
+
258
+ ### Debug Mode
259
+
260
+ Enable verbose logging:
261
+
262
+ ```javascript
263
+ const agent = new ProbeAgent({
264
+ provider: 'codex',
265
+ debug: true,
266
+ allowedFolders: [process.cwd()]
267
+ });
268
+ ```
269
+
270
+ Shows:
271
+ - Codex command execution
272
+ - Tool events as they're extracted
273
+ - Session management details
274
+ - MCP server lifecycle
275
+
276
+ ## Examples
277
+
278
+ ### Example 1: Zero-Config Code Exploration
279
+
280
+ ```javascript
281
+ import { ProbeAgent } from 'probe-agent';
282
+
283
+ // Auto-detects codex command
284
+ const agent = new ProbeAgent({
285
+ allowedFolders: ['/path/to/repo']
286
+ });
287
+
288
+ await agent.initialize();
289
+
290
+ // Codex will automatically use search/extract tools
291
+ const answer = await agent.answer('How does authentication work in this app?');
292
+ console.log(answer);
293
+ ```
294
+
295
+ ### Example 2: Monitor Tool Usage
296
+
297
+ ```javascript
298
+ const agent = new ProbeAgent({
299
+ provider: 'codex',
300
+ allowedFolders: [process.cwd()],
301
+ debug: true
302
+ });
303
+
304
+ await agent.initialize();
305
+
306
+ // Track all tools used
307
+ const toolsUsed = [];
308
+ agent.events.on('toolCall', (event) => {
309
+ toolsUsed.push(event.name);
310
+ });
311
+
312
+ await agent.answer('Find all API endpoints in this codebase');
313
+
314
+ console.log('Tools used:', [...new Set(toolsUsed)]);
315
+ ```
316
+
317
+ ### Example 3: Custom Persona with Codex
318
+
319
+ ```javascript
320
+ const agent = new ProbeAgent({
321
+ provider: 'codex',
322
+ predefinedPrompt: 'architect', // Use architect persona
323
+ allowedFolders: [process.cwd()]
324
+ });
325
+
326
+ await agent.initialize();
327
+
328
+ const analysis = await agent.answer('Analyze the architecture of this system');
329
+ ```
330
+
331
+ ### Example 4: Multi-Step Query with Session
332
+
333
+ ```javascript
334
+ const sessionId = `codex-${Date.now()}`;
335
+
336
+ const agent = new ProbeAgent({
337
+ provider: 'codex',
338
+ sessionId,
339
+ allowedFolders: [process.cwd()]
340
+ });
341
+
342
+ await agent.initialize();
343
+
344
+ // Step 1
345
+ await agent.answer('What components does this app have?');
346
+
347
+ // Step 2 - builds on previous context
348
+ await agent.answer('Which component handles user authentication?');
349
+
350
+ // Step 3 - continues same conversation
351
+ await agent.answer('Show me the authentication implementation');
352
+
353
+ // Clean up
354
+ if (agent.engine?.close) {
355
+ await agent.engine.close();
356
+ }
357
+ ```
358
+
359
+ ## Testing
360
+
361
+ ### Run Integration Tests
362
+
363
+ ```bash
364
+ # Auto-fallback test
365
+ node npm/tests/integration/codex-auto-fallback.spec.js
366
+
367
+ # Tool event extraction test
368
+ node npm/tests/integration/codex-tool-events.spec.js
369
+ ```
370
+
371
+ ### Test Requirements
372
+
373
+ - Codex CLI must be installed and in PATH
374
+ - Tests temporarily remove API keys to trigger auto-fallback
375
+ - Tests verify tool event extraction works correctly
376
+
377
+ ### What Tests Verify
378
+
379
+ 1. **Auto-Fallback Test**
380
+ - Codex CLI is detected when no API keys present
381
+ - Provider switches to `codex`
382
+ - Basic queries work end-to-end
383
+
384
+ 2. **Tool Events Test**
385
+ - Tool usage is captured from Codex output
386
+ - Events have correct format: `{ name, args, status, timestamp, id }`
387
+ - Batch emission works correctly
388
+
389
+ ## Troubleshooting
390
+
391
+ ### Codex Command Not Found
392
+
393
+ **Error:**
394
+ ```
395
+ No API key provided and neither claude nor codex command found
396
+ ```
397
+
398
+ **Solution:**
399
+ 1. Install OpenAI Codex CLI from https://openai.com/codex
400
+ 2. Verify installation: `codex --version`
401
+ 3. Ensure `codex` is in your PATH
402
+
403
+ ### Wrong Provider Selected
404
+
405
+ **Issue:** Claude Code is used instead of Codex CLI
406
+
407
+ **Reason:** Claude has higher priority in auto-fallback
408
+
409
+ **Solution:** Force Codex explicitly:
410
+ ```javascript
411
+ const agent = new ProbeAgent({
412
+ provider: 'codex', // Force Codex
413
+ allowedFolders: [process.cwd()]
414
+ });
415
+ ```
416
+
417
+ ### MCP Server Fails to Start
418
+
419
+ **Error:**
420
+ ```
421
+ Failed to start built-in MCP server
422
+ ```
423
+
424
+ **Solutions:**
425
+ 1. Check port availability (uses ephemeral ports)
426
+ 2. Verify Node.js version (requires Node 18+)
427
+ 3. Enable debug mode to see detailed error:
428
+ ```javascript
429
+ const agent = new ProbeAgent({
430
+ provider: 'codex',
431
+ debug: true,
432
+ allowedFolders: [process.cwd()]
433
+ });
434
+ ```
435
+
436
+ ### Tool Events Not Emitted
437
+
438
+ **Issue:** `toolCall` events not firing
439
+
440
+ **Possible causes:**
441
+ 1. Query didn't require tools
442
+ 2. Codex CLI used internal reasoning only
443
+ 3. Tool filtering blocked all tools
444
+
445
+ **Debug:**
446
+ ```javascript
447
+ agent.events.on('toolBatch', (batch) => {
448
+ console.log('Tools in batch:', batch.tools.length);
449
+ console.log('Tools:', batch.tools.map(t => t.name));
450
+ });
451
+ ```
452
+
453
+ ### Session Resume Not Working
454
+
455
+ **Issue:** Context lost between queries
456
+
457
+ **Solutions:**
458
+ 1. Use same `sessionId` for both agent instances
459
+ 2. Don't close engine between queries:
460
+ ```javascript
461
+ await agent.answer('First query');
462
+ await agent.answer('Second query'); // Same session
463
+ // Only close at the very end
464
+ await agent.engine.close();
465
+ ```
466
+
467
+ ### Performance Issues
468
+
469
+ **Issue:** Codex CLI is slow
470
+
471
+ **Solutions:**
472
+ 1. Use faster model: `model: 'gpt-4o-mini'`
473
+ 2. Limit tool access: `allowedTools: ['search']`
474
+ 3. Reduce workspace size: `allowedFolders: ['/specific/path']`
475
+
476
+ ## Comparison: Codex CLI vs Other Providers
477
+
478
+ | Feature | Codex CLI | Claude Code | Vercel AI SDK |
479
+ |---------|-----------|-------------|---------------|
480
+ | **API Key Required** | No | No | Yes |
481
+ | **Zero-Config** | ✅ | ✅ | ❌ |
482
+ | **Auto-Fallback** | ✅ (priority 2) | ✅ (priority 1) | ❌ |
483
+ | **Tool Control** | Black box | Black box | Full control |
484
+ | **Tool Events** | Post-hoc extraction | Post-hoc extraction | Real-time |
485
+ | **Session Persistence** | ✅ | ✅ | Manual |
486
+ | **MCP Integration** | Native | Native | XML parsing |
487
+ | **Best For** | OpenAI users | Claude users | Full control |
488
+
489
+ ## Related Documentation
490
+
491
+ - [Claude Code Integration](./CLAUDE_CODE_INTEGRATION.md) - Similar guide for Claude
492
+ - [ProbeAgent API](../README.md) - Main ProbeAgent documentation
493
+ - [MCP Tools](./MCP_TOOLS.md) - Available MCP tools reference
494
+ - [Multi-Engine Demo](../examples/multi-engine-demo.js) - Example switching engines
495
+
496
+ ## Contributing
497
+
498
+ Found a bug or have a feature request for Codex CLI integration?
499
+
500
+ 1. Check existing issues: https://github.com/probelabs/probe/issues
501
+ 2. Create new issue with `[codex]` prefix
502
+ 3. Include debug logs: Set `debug: true` in ProbeAgent options