@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,496 @@
1
+ /**
2
+ * Utility functions and classes for the implement tool
3
+ * @module utils
4
+ */
5
+
6
+ /**
7
+ * Error types for backend operations
8
+ * @enum {string}
9
+ */
10
+ const ErrorTypes = {
11
+ INITIALIZATION_FAILED: 'initialization_failed',
12
+ DEPENDENCY_MISSING: 'dependency_missing',
13
+ CONFIGURATION_INVALID: 'configuration_invalid',
14
+ EXECUTION_FAILED: 'execution_failed',
15
+ TIMEOUT: 'timeout',
16
+ CANCELLATION: 'cancellation',
17
+ NETWORK_ERROR: 'network_error',
18
+ API_ERROR: 'api_error',
19
+ AUTHENTICATION: 'authentication',
20
+ FILE_ACCESS_ERROR: 'file_access_error',
21
+ VALIDATION_ERROR: 'validation_error',
22
+ BACKEND_NOT_FOUND: 'backend_not_found',
23
+ SESSION_NOT_FOUND: 'session_not_found',
24
+ QUOTA_EXCEEDED: 'quota_exceeded'
25
+ };
26
+
27
+ /**
28
+ * Standardized error class for backend operations
29
+ * @class
30
+ * @extends Error
31
+ */
32
+ class BackendError extends Error {
33
+ /**
34
+ * @param {string} message - Error message
35
+ * @param {string} type - Error type from ErrorTypes
36
+ * @param {string} [code] - Error code
37
+ * @param {Object} [details] - Additional error details
38
+ */
39
+ constructor(message, type, code = null, details = {}) {
40
+ super(message);
41
+ this.name = 'BackendError';
42
+ this.type = type;
43
+ this.code = code;
44
+ this.details = details;
45
+ this.timestamp = new Date().toISOString();
46
+
47
+ // Capture stack trace
48
+ if (Error.captureStackTrace) {
49
+ Error.captureStackTrace(this, BackendError);
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Convert error to JSON representation
55
+ * @returns {Object}
56
+ */
57
+ toJSON() {
58
+ return {
59
+ name: this.name,
60
+ message: this.message,
61
+ type: this.type,
62
+ code: this.code,
63
+ details: this.details,
64
+ timestamp: this.timestamp,
65
+ stack: this.stack
66
+ };
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Error handling utilities
72
+ * @class
73
+ */
74
+ class ErrorHandler {
75
+ /**
76
+ * Create a new BackendError
77
+ * @param {string} type - Error type
78
+ * @param {string} message - Error message
79
+ * @param {string} [code] - Error code
80
+ * @param {Object} [details] - Additional details
81
+ * @returns {BackendError}
82
+ */
83
+ static createError(type, message, code = null, details = {}) {
84
+ return new BackendError(message, type, code, details);
85
+ }
86
+
87
+ /**
88
+ * Check if an error is retryable
89
+ * @param {Error|BackendError} error - Error to check
90
+ * @returns {boolean}
91
+ */
92
+ static isRetryable(error) {
93
+ if (error instanceof BackendError) {
94
+ const retryableTypes = [
95
+ ErrorTypes.NETWORK_ERROR,
96
+ ErrorTypes.TIMEOUT,
97
+ ErrorTypes.API_ERROR
98
+ ];
99
+ return retryableTypes.includes(error.type);
100
+ }
101
+
102
+ // Check for common retryable error patterns
103
+ const message = error.message.toLowerCase();
104
+ return message.includes('timeout') ||
105
+ message.includes('network') ||
106
+ message.includes('connection');
107
+ }
108
+
109
+ /**
110
+ * Get recovery strategy for an error
111
+ * @param {Error|BackendError} error - Error to analyze
112
+ * @returns {string} Recovery strategy
113
+ */
114
+ static getRecoveryStrategy(error) {
115
+ if (!(error instanceof BackendError)) {
116
+ return 'manual_intervention';
117
+ }
118
+
119
+ switch (error.type) {
120
+ case ErrorTypes.DEPENDENCY_MISSING:
121
+ return 'install_dependencies';
122
+ case ErrorTypes.CONFIGURATION_INVALID:
123
+ return 'fix_configuration';
124
+ case ErrorTypes.TIMEOUT:
125
+ return 'retry_with_longer_timeout';
126
+ case ErrorTypes.AUTHENTICATION:
127
+ return 'check_api_credentials';
128
+ case ErrorTypes.NETWORK_ERROR:
129
+ return 'retry_with_backoff';
130
+ case ErrorTypes.QUOTA_EXCEEDED:
131
+ return 'wait_or_upgrade';
132
+ case ErrorTypes.API_ERROR:
133
+ return 'check_api_key';
134
+ default:
135
+ return 'manual_intervention';
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Format error for user display
141
+ * @param {Error|BackendError} error - Error to format
142
+ * @returns {string}
143
+ */
144
+ static formatForDisplay(error) {
145
+ if (error instanceof BackendError) {
146
+ let message = `${error.message}`;
147
+
148
+ if (error.code) {
149
+ message += ` (${error.code})`;
150
+ }
151
+
152
+ // Add helpful context for specific error types
153
+ const strategy = this.getRecoveryStrategy(error);
154
+ switch (strategy) {
155
+ case 'install_dependencies':
156
+ message += '\n💡 Try installing missing dependencies';
157
+ break;
158
+ case 'fix_configuration':
159
+ message += '\n💡 Check your configuration settings';
160
+ break;
161
+ case 'retry_with_longer_timeout':
162
+ message += '\n💡 Consider increasing the timeout value';
163
+ break;
164
+ case 'check_api_credentials':
165
+ message += '\n💡 Check your API key and authentication settings';
166
+ break;
167
+ case 'check_api_key':
168
+ message += '\n💡 Verify your API key is valid';
169
+ break;
170
+ }
171
+
172
+ return message;
173
+ }
174
+
175
+ return error.message;
176
+ }
177
+ }
178
+
179
+ /**
180
+ * Retry utility for handling transient failures
181
+ * @class
182
+ */
183
+ class RetryHandler {
184
+ /**
185
+ * Execute a function with retry logic
186
+ * @param {Function} fn - Function to execute
187
+ * @param {Object} [options] - Retry options
188
+ * @param {number} [options.maxAttempts=3] - Maximum retry attempts
189
+ * @param {number} [options.initialDelay=1000] - Initial delay in ms
190
+ * @param {number} [options.maxDelay=30000] - Maximum delay in ms
191
+ * @param {number} [options.backoffFactor=2] - Backoff multiplier
192
+ * @param {Function} [options.shouldRetry] - Custom retry predicate
193
+ * @returns {Promise<*>}
194
+ */
195
+ static async withRetry(fn, options = {}) {
196
+ const {
197
+ maxAttempts = 3,
198
+ initialDelay = 1000,
199
+ maxDelay = 30000,
200
+ backoffFactor = 2,
201
+ shouldRetry = ErrorHandler.isRetryable
202
+ } = options;
203
+
204
+ let lastError;
205
+ let delay = initialDelay;
206
+
207
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
208
+ try {
209
+ return await fn();
210
+ } catch (error) {
211
+ lastError = error;
212
+
213
+ if (attempt === maxAttempts || !shouldRetry(error)) {
214
+ throw error;
215
+ }
216
+
217
+ console.error(`[ERROR] ========================================`);
218
+ console.error(`[ERROR] Attempt ${attempt} failed, retrying in ${delay}ms...`);
219
+ console.error(`[ERROR] Error message: ${error.message}`);
220
+ console.error(`[ERROR] Error type: ${error.type || 'unknown'}`);
221
+ console.error(`[ERROR] Error code: ${error.code || 'unknown'}`);
222
+ if (error.metadata) {
223
+ console.error(`[ERROR] Error metadata:`, JSON.stringify(error.metadata, null, 2));
224
+ }
225
+ console.error(`[ERROR] ========================================`);
226
+ await this.sleep(delay);
227
+
228
+ // Calculate next delay with exponential backoff
229
+ delay = Math.min(delay * backoffFactor, maxDelay);
230
+ }
231
+ }
232
+
233
+ throw lastError;
234
+ }
235
+
236
+ /**
237
+ * Sleep for specified milliseconds
238
+ * @param {number} ms - Milliseconds to sleep
239
+ * @returns {Promise<void>}
240
+ */
241
+ static sleep(ms) {
242
+ return new Promise(resolve => setTimeout(resolve, ms));
243
+ }
244
+ }
245
+
246
+ /**
247
+ * Progress tracking utility
248
+ * @class
249
+ */
250
+ class ProgressTracker {
251
+ /**
252
+ * @param {string} sessionId - Session ID
253
+ * @param {Function} [onProgress] - Progress callback
254
+ */
255
+ constructor(sessionId, onProgress = null) {
256
+ this.sessionId = sessionId;
257
+ this.onProgress = onProgress;
258
+ this.startTime = Date.now();
259
+ this.steps = [];
260
+ this.currentStep = null;
261
+ }
262
+
263
+ /**
264
+ * Start a new step
265
+ * @param {string} name - Step name
266
+ * @param {string} [message] - Step message
267
+ */
268
+ startStep(name, message = null) {
269
+ if (this.currentStep) {
270
+ this.endStep();
271
+ }
272
+
273
+ this.currentStep = {
274
+ name,
275
+ message,
276
+ startTime: Date.now()
277
+ };
278
+
279
+ this.reportProgress({
280
+ type: 'step_start',
281
+ step: name,
282
+ message
283
+ });
284
+ }
285
+
286
+ /**
287
+ * End the current step
288
+ * @param {string} [result] - Step result
289
+ */
290
+ endStep(result = 'completed') {
291
+ if (!this.currentStep) return;
292
+
293
+ const duration = Date.now() - this.currentStep.startTime;
294
+ this.currentStep.duration = duration;
295
+ this.currentStep.result = result;
296
+
297
+ this.steps.push(this.currentStep);
298
+
299
+ this.reportProgress({
300
+ type: 'step_end',
301
+ step: this.currentStep.name,
302
+ result,
303
+ duration
304
+ });
305
+
306
+ this.currentStep = null;
307
+ }
308
+
309
+ /**
310
+ * Report progress update
311
+ * @param {Object} update - Progress update
312
+ */
313
+ reportProgress(update) {
314
+ if (!this.onProgress) return;
315
+
316
+ const progress = {
317
+ sessionId: this.sessionId,
318
+ timestamp: Date.now(),
319
+ elapsed: Date.now() - this.startTime,
320
+ ...update
321
+ };
322
+
323
+ try {
324
+ this.onProgress(progress);
325
+ } catch (error) {
326
+ console.error('Progress callback error:', error);
327
+ }
328
+ }
329
+
330
+ /**
331
+ * Report a message
332
+ * @param {string} message - Message to report
333
+ * @param {string} [type='info'] - Message type
334
+ */
335
+ reportMessage(message, type = 'info') {
336
+ this.reportProgress({
337
+ type: 'message',
338
+ messageType: type,
339
+ message
340
+ });
341
+ }
342
+
343
+ /**
344
+ * Get execution summary
345
+ * @returns {Object}
346
+ */
347
+ getSummary() {
348
+ return {
349
+ sessionId: this.sessionId,
350
+ totalDuration: Date.now() - this.startTime,
351
+ steps: this.steps,
352
+ currentStep: this.currentStep
353
+ };
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Utility for parsing and extracting file changes from output
359
+ * @class
360
+ */
361
+ class FileChangeParser {
362
+ /**
363
+ * Parse file changes from command output
364
+ * @param {string} output - Command output
365
+ * @param {string} [workingDir] - Working directory
366
+ * @returns {import('../types/BackendTypes').FileChange[]}
367
+ */
368
+ static parseChanges(output, workingDir = process.cwd()) {
369
+ const changes = [];
370
+ const patterns = {
371
+ created: /(?:created?|new file|added?):?\s+(.+)/gi,
372
+ modified: /(?:modified?|changed?|updated?):?\s+(.+)/gi,
373
+ deleted: /(?:deleted?|removed?):?\s+(.+)/gi,
374
+ diff: /^[-+]{3}\s+(.+)$/gm
375
+ };
376
+
377
+ // Extract file changes
378
+ for (const [type, pattern] of Object.entries(patterns)) {
379
+ if (type === 'diff') continue;
380
+
381
+ let match;
382
+ while ((match = pattern.exec(output)) !== null) {
383
+ const filePath = match[1].trim();
384
+ if (filePath && !changes.some(c => c.path === filePath)) {
385
+ changes.push({
386
+ path: filePath,
387
+ type,
388
+ description: `File ${filePath} was ${type}`
389
+ });
390
+ }
391
+ }
392
+ }
393
+
394
+ // Git status parsing
395
+ const gitStatusPattern = /^([AMD])\s+(.+)$/gm;
396
+ let match;
397
+ while ((match = gitStatusPattern.exec(output)) !== null) {
398
+ const status = match[1];
399
+ const filePath = match[2];
400
+
401
+ const typeMap = {
402
+ 'A': 'created',
403
+ 'M': 'modified',
404
+ 'D': 'deleted'
405
+ };
406
+
407
+ if (typeMap[status] && !changes.some(c => c.path === filePath)) {
408
+ changes.push({
409
+ path: filePath,
410
+ type: typeMap[status],
411
+ description: `File ${filePath} was ${typeMap[status]}`
412
+ });
413
+ }
414
+ }
415
+
416
+ return changes;
417
+ }
418
+
419
+ /**
420
+ * Extract diff statistics from output
421
+ * @param {string} output - Command output
422
+ * @returns {Object}
423
+ */
424
+ static extractDiffStats(output) {
425
+ const stats = {
426
+ filesChanged: 0,
427
+ insertions: 0,
428
+ deletions: 0
429
+ };
430
+
431
+ // Git diff stat pattern
432
+ const statPattern = /(\d+)\s+files?\s+changed(?:,\s+(\d+)\s+insertions?)?(?:,\s+(\d+)\s+deletions?)?/;
433
+ const match = output.match(statPattern);
434
+
435
+ if (match) {
436
+ stats.filesChanged = parseInt(match[1], 10);
437
+ stats.insertions = match[2] ? parseInt(match[2], 10) : 0;
438
+ stats.deletions = match[3] ? parseInt(match[3], 10) : 0;
439
+ }
440
+
441
+ return stats;
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Simple token estimation utility
447
+ * @class
448
+ */
449
+ class TokenEstimator {
450
+ /**
451
+ * Estimate token count for text
452
+ * @param {string} text - Text to estimate
453
+ * @returns {number} Estimated token count
454
+ */
455
+ static estimate(text) {
456
+ // Simple estimation: ~4 characters per token
457
+ // This is a rough approximation; real tokenizers are more complex
458
+ return Math.ceil(text.length / 4);
459
+ }
460
+
461
+ /**
462
+ * Check if text exceeds token limit
463
+ * @param {string} text - Text to check
464
+ * @param {number} limit - Token limit
465
+ * @returns {boolean}
466
+ */
467
+ static exceedsLimit(text, limit) {
468
+ return this.estimate(text) > limit;
469
+ }
470
+
471
+ /**
472
+ * Truncate text to fit within token limit
473
+ * @param {string} text - Text to truncate
474
+ * @param {number} limit - Token limit
475
+ * @param {string} [suffix='...'] - Suffix to add
476
+ * @returns {string}
477
+ */
478
+ static truncate(text, limit, suffix = '...') {
479
+ const estimatedChars = limit * 4;
480
+ if (text.length <= estimatedChars) {
481
+ return text;
482
+ }
483
+
484
+ return text.substring(0, estimatedChars - suffix.length) + suffix;
485
+ }
486
+ }
487
+
488
+ export {
489
+ ErrorTypes,
490
+ BackendError,
491
+ ErrorHandler,
492
+ RetryHandler,
493
+ ProgressTracker,
494
+ FileChangeParser,
495
+ TokenEstimator
496
+ };
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Type definitions for implementation backends
3
+ * @module BackendTypes
4
+ */
5
+
6
+ /**
7
+ * @typedef {Object} BackendCapabilities
8
+ * @property {string[]} supportsLanguages - Supported programming languages
9
+ * @property {boolean} supportsStreaming - Whether backend supports streaming output
10
+ * @property {boolean} supportsRollback - Whether backend supports rollback operations
11
+ * @property {boolean} supportsDirectFileEdit - Whether backend can directly edit files
12
+ * @property {boolean} supportsPlanGeneration - Whether backend can generate implementation plans
13
+ * @property {boolean} supportsTestGeneration - Whether backend can generate tests
14
+ * @property {number} maxConcurrentSessions - Maximum concurrent implementation sessions
15
+ */
16
+
17
+ /**
18
+ * @typedef {Object} ImplementRequest
19
+ * @property {string} sessionId - Unique session identifier
20
+ * @property {string} task - Implementation task description
21
+ * @property {Object} [context] - Optional context information
22
+ * @property {string} [context.workingDirectory] - Working directory for implementation
23
+ * @property {string[]} [context.allowedFiles] - List of files allowed to be modified
24
+ * @property {string} [context.language] - Primary programming language
25
+ * @property {string} [context.additionalContext] - Additional context information
26
+ * @property {Object} [options] - Optional implementation options
27
+ * @property {boolean} [options.autoCommit] - Whether to auto-commit changes
28
+ * @property {boolean} [options.generateTests] - Whether to generate tests
29
+ * @property {boolean} [options.dryRun] - Whether to perform a dry run
30
+ * @property {number} [options.maxTokens] - Maximum tokens to use
31
+ * @property {number} [options.temperature] - Model temperature
32
+ * @property {Object} [callbacks] - Optional callback functions
33
+ * @property {Function} [callbacks.onProgress] - Progress update callback
34
+ * @property {Function} [callbacks.onFileChange] - File change callback
35
+ * @property {Function} [callbacks.onError] - Error callback
36
+ */
37
+
38
+ /**
39
+ * @typedef {Object} ImplementResult
40
+ * @property {boolean} success - Whether implementation was successful
41
+ * @property {string} sessionId - Session identifier
42
+ * @property {string} output - Implementation output
43
+ * @property {FileChange[]} [changes] - List of file changes
44
+ * @property {Object} [metrics] - Implementation metrics
45
+ * @property {number} [metrics.executionTime] - Execution time in milliseconds
46
+ * @property {number} [metrics.tokensUsed] - Number of tokens used
47
+ * @property {number} [metrics.filesModified] - Number of files modified
48
+ * @property {number} [metrics.linesChanged] - Number of lines changed
49
+ * @property {BackendError} [error] - Error information if failed
50
+ * @property {Object} [metadata] - Additional metadata
51
+ */
52
+
53
+ /**
54
+ * @typedef {Object} FileChange
55
+ * @property {string} path - File path
56
+ * @property {string} type - Change type: 'created', 'modified', 'deleted'
57
+ * @property {string} [description] - Description of change
58
+ * @property {number} [linesAdded] - Number of lines added
59
+ * @property {number} [linesRemoved] - Number of lines removed
60
+ * @property {string} [diff] - Diff content
61
+ */
62
+
63
+ /**
64
+ * @typedef {Object} BackendStatus
65
+ * @property {string} status - Status: 'pending', 'running', 'completed', 'failed', 'cancelled'
66
+ * @property {number} [progress] - Progress percentage (0-100)
67
+ * @property {string} [message] - Status message
68
+ * @property {Object} [details] - Additional status details
69
+ */
70
+
71
+ /**
72
+ * @typedef {Object} ProgressUpdate
73
+ * @property {string} sessionId - Session identifier
74
+ * @property {string} message - Progress message
75
+ * @property {string} [type] - Message type: 'stdout', 'stderr', 'info'
76
+ * @property {number} [progress] - Progress percentage
77
+ * @property {Object} [data] - Additional data
78
+ */
79
+
80
+ /**
81
+ * @typedef {Object} BackendError
82
+ * @property {string} message - Error message
83
+ * @property {string} type - Error type
84
+ * @property {string} [code] - Error code
85
+ * @property {Object} [details] - Additional error details
86
+ * @property {string} timestamp - Error timestamp
87
+ */
88
+
89
+ /**
90
+ * @typedef {Object} Dependency
91
+ * @property {string} name - Dependency name
92
+ * @property {string} type - Dependency type: 'npm', 'pip', 'environment', 'system'
93
+ * @property {string} [version] - Required version
94
+ * @property {string} [description] - Dependency description
95
+ * @property {string} [installCommand] - Installation command
96
+ */
97
+
98
+ /**
99
+ * @typedef {Object} BackendConfig
100
+ * @property {string} [apiKey] - API key for cloud-based backends
101
+ * @property {string} [model] - Model to use
102
+ * @property {number} [timeout] - Timeout in milliseconds
103
+ * @property {Object} [environment] - Environment variables
104
+ * @property {Object} [additional] - Additional backend-specific configuration
105
+ */
106
+
107
+ /**
108
+ * @typedef {Object} BackendInfo
109
+ * @property {string} name - Backend name
110
+ * @property {string} version - Backend version
111
+ * @property {string} description - Backend description
112
+ * @property {boolean} available - Whether backend is available
113
+ * @property {BackendCapabilities} capabilities - Backend capabilities
114
+ * @property {Dependency[]} dependencies - Required dependencies
115
+ */
116
+
117
+ /**
118
+ * @typedef {Object} ValidationResult
119
+ * @property {boolean} valid - Whether validation passed
120
+ * @property {string[]} errors - List of validation errors
121
+ * @property {string[]} [warnings] - List of validation warnings
122
+ */
123
+
124
+ module.exports = {
125
+ // Type exports for JSDoc references
126
+ };