@crownpeak/dqm-react-component-dev-mcp 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/README.md +138 -0
  2. package/data/.env.example +22 -0
  3. package/data/.gitattributes +47 -0
  4. package/data/.glfrc.json +7 -0
  5. package/data/.husky/pre-commit +5 -0
  6. package/data/.nvmrc +1 -0
  7. package/data/CHANGELOG.md +75 -0
  8. package/data/CODE_OF_CONDUCT.md +129 -0
  9. package/data/CONTRIBUTING.md +203 -0
  10. package/data/DOCS-STRUCTURE.md +307 -0
  11. package/data/I18N.md +292 -0
  12. package/data/LICENSE +22 -0
  13. package/data/README.md +315 -0
  14. package/data/SECURITY.md +125 -0
  15. package/data/WIKI-DEPLOYMENT.md +348 -0
  16. package/data/docs/AI-FEATURES.md +610 -0
  17. package/data/docs/API-REFERENCE.md +1022 -0
  18. package/data/docs/AUTHENTICATION.md +301 -0
  19. package/data/docs/BACKEND-API.md +468 -0
  20. package/data/docs/DEVELOPMENT.md +375 -0
  21. package/data/docs/EXAMPLES.md +622 -0
  22. package/data/docs/MCP-SERVER.md +307 -0
  23. package/data/docs/MIGRATION-GUIDE.md +367 -0
  24. package/data/docs/NPM-PUBLISH.md +193 -0
  25. package/data/docs/QUICKSTART.md +206 -0
  26. package/data/docs/REDIS-SETUP.md +162 -0
  27. package/data/docs/SERVER.md +228 -0
  28. package/data/docs/TROUBLESHOOTING.md +657 -0
  29. package/data/docs/WIDGET-GUIDE.md +638 -0
  30. package/data/docs/WIKI-HOME.md +58 -0
  31. package/data/docs/WIKI-SIDEBAR.md +39 -0
  32. package/data/package.json +171 -0
  33. package/data/playwright.config.ts +64 -0
  34. package/data/probe/.cargo/config.toml +10 -0
  35. package/data/probe/.claude/commands/performance-review.md +15 -0
  36. package/data/probe/.clinerules +288 -0
  37. package/data/probe/.dockerignore +57 -0
  38. package/data/probe/.githooks/post-commit +11 -0
  39. package/data/probe/.githooks/pre-commit +99 -0
  40. package/data/probe/.githooks/pre-commit-vow +9 -0
  41. package/data/probe/.prompts/engineer.md +41 -0
  42. package/data/probe/.roomodes +28 -0
  43. package/data/probe/.windsurfrules +0 -0
  44. package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
  45. package/data/probe/BENCHMARKING.md +256 -0
  46. package/data/probe/CLAUDE.md +226 -0
  47. package/data/probe/CODE_OF_CONDUCT.md +128 -0
  48. package/data/probe/CONTRIBUTING.md +193 -0
  49. package/data/probe/Cargo.toml +120 -0
  50. package/data/probe/Cross.toml +10 -0
  51. package/data/probe/DOCKER-README.md +224 -0
  52. package/data/probe/Dockerfile +32 -0
  53. package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
  54. package/data/probe/LICENSE +201 -0
  55. package/data/probe/Makefile +210 -0
  56. package/data/probe/README.md +824 -0
  57. package/data/probe/SECURITY.md +67 -0
  58. package/data/probe/WINDOWS-GUIDE.md +294 -0
  59. package/data/probe/benches/parsing_benchmarks.rs +370 -0
  60. package/data/probe/benches/search_benchmarks.rs +599 -0
  61. package/data/probe/benches/simd_benchmarks.rs +372 -0
  62. package/data/probe/benches/timing_benchmarks.rs +287 -0
  63. package/data/probe/build-windows.bat +229 -0
  64. package/data/probe/codex-config/config.toml +6 -0
  65. package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
  66. package/data/probe/examples/cache_demo.rs +46 -0
  67. package/data/probe/examples/chat/.dockerignore +37 -0
  68. package/data/probe/examples/chat/ChatSessionManager.js +295 -0
  69. package/data/probe/examples/chat/Dockerfile +98 -0
  70. package/data/probe/examples/chat/LICENSE +201 -0
  71. package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
  72. package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
  73. package/data/probe/examples/chat/README.md +338 -0
  74. package/data/probe/examples/chat/TRACING.md +226 -0
  75. package/data/probe/examples/chat/appTracer.js +968 -0
  76. package/data/probe/examples/chat/auth.js +76 -0
  77. package/data/probe/examples/chat/bin/probe-chat.js +13 -0
  78. package/data/probe/examples/chat/build.js +104 -0
  79. package/data/probe/examples/chat/cancelRequest.js +84 -0
  80. package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
  81. package/data/probe/examples/chat/demo-local-images.js +128 -0
  82. package/data/probe/examples/chat/fileSpanExporter.js +181 -0
  83. package/data/probe/examples/chat/implement/README.md +228 -0
  84. package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
  85. package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
  86. package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
  87. package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
  88. package/data/probe/examples/chat/implement/backends/registry.js +85 -0
  89. package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
  90. package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
  91. package/data/probe/examples/chat/implement/core/config.js +428 -0
  92. package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
  93. package/data/probe/examples/chat/implement/core/utils.js +496 -0
  94. package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
  95. package/data/probe/examples/chat/index.js +669 -0
  96. package/data/probe/examples/chat/mcpServer.js +341 -0
  97. package/data/probe/examples/chat/npm/LICENSE +15 -0
  98. package/data/probe/examples/chat/npm/README.md +168 -0
  99. package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
  100. package/data/probe/examples/chat/npm/index.js +259 -0
  101. package/data/probe/examples/chat/npm/package.json +54 -0
  102. package/data/probe/examples/chat/package.json +102 -0
  103. package/data/probe/examples/chat/probeChat.js +456 -0
  104. package/data/probe/examples/chat/probeTool.js +491 -0
  105. package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
  106. package/data/probe/examples/chat/telemetry.js +281 -0
  107. package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
  108. package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
  109. package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
  110. package/data/probe/examples/chat/test/test-backends.js +90 -0
  111. package/data/probe/examples/chat/test/testUtils.js +530 -0
  112. package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
  113. package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
  114. package/data/probe/examples/chat/test/verify-tests.js +118 -0
  115. package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
  116. package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
  117. package/data/probe/examples/chat/test-chat-tracing.js +38 -0
  118. package/data/probe/examples/chat/test-direct-function.js +49 -0
  119. package/data/probe/examples/chat/test-file-size-validation.js +103 -0
  120. package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
  121. package/data/probe/examples/chat/test-github-context.txt +12 -0
  122. package/data/probe/examples/chat/test-hierarchy.js +203 -0
  123. package/data/probe/examples/chat/test-image-spans.js +37 -0
  124. package/data/probe/examples/chat/test-local-image-reading.js +176 -0
  125. package/data/probe/examples/chat/test-mcp-integration.js +136 -0
  126. package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
  127. package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
  128. package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
  129. package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
  130. package/data/probe/examples/chat/test-security-validation.js +145 -0
  131. package/data/probe/examples/chat/test-simple-tracing.js +32 -0
  132. package/data/probe/examples/chat/test-trace-verification.js +235 -0
  133. package/data/probe/examples/chat/test-tracing.js +114 -0
  134. package/data/probe/examples/chat/tokenCounter.js +419 -0
  135. package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
  136. package/data/probe/examples/chat/webServer.js +1103 -0
  137. package/data/probe/examples/reranker/Cargo.toml +33 -0
  138. package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
  139. package/data/probe/examples/reranker/MODELS.md +66 -0
  140. package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
  141. package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
  142. package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
  143. package/data/probe/examples/reranker/README.md +347 -0
  144. package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
  145. package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
  146. package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
  147. package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
  148. package/data/probe/examples/reranker/debug_scoring.py +189 -0
  149. package/data/probe/examples/reranker/debug_tokenization.py +154 -0
  150. package/data/probe/examples/reranker/download_models.sh +73 -0
  151. package/data/probe/examples/reranker/requirements.txt +13 -0
  152. package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
  153. package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
  154. package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
  155. package/data/probe/examples/reranker/simple_test.py +50 -0
  156. package/data/probe/examples/reranker/test_all_models.sh +63 -0
  157. package/data/probe/examples/reranker/test_bert_results.sh +44 -0
  158. package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
  159. package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
  160. package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
  161. package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
  162. package/data/probe/examples/reranker/test_scores.py +132 -0
  163. package/data/probe/install.ps1 +508 -0
  164. package/data/probe/install.sh +460 -0
  165. package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
  166. package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
  167. package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
  168. package/data/probe/npm/MAID_INTEGRATION.md +313 -0
  169. package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
  170. package/data/probe/npm/README.md +824 -0
  171. package/data/probe/npm/bin/.gitignore +7 -0
  172. package/data/probe/npm/bin/.gitkeep +0 -0
  173. package/data/probe/npm/bin/README.md +12 -0
  174. package/data/probe/npm/bin/probe +167 -0
  175. package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
  176. package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
  177. package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
  178. package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
  179. package/data/probe/npm/example-usage.js +335 -0
  180. package/data/probe/npm/examples/multi-engine-demo.js +117 -0
  181. package/data/probe/npm/examples/probe-agent-cli.js +113 -0
  182. package/data/probe/npm/examples/test-agent-edit.js +114 -0
  183. package/data/probe/npm/examples/test-edit-create.js +120 -0
  184. package/data/probe/npm/examples/test-edit-direct.js +114 -0
  185. package/data/probe/npm/index.d.ts +744 -0
  186. package/data/probe/npm/jest.config.js +52 -0
  187. package/data/probe/npm/package.json +117 -0
  188. package/data/probe/npm/scripts/build-agent.cjs +75 -0
  189. package/data/probe/npm/scripts/build-cjs.js +124 -0
  190. package/data/probe/npm/scripts/build-mcp.cjs +36 -0
  191. package/data/probe/npm/scripts/postinstall.js +216 -0
  192. package/data/probe/npm/test-codex-e2e.js +78 -0
  193. package/data/probe/npm/test-download-lock.js +109 -0
  194. package/data/probe/npm/test-grep-security.js +94 -0
  195. package/data/probe/npm/test-grep-simplified.js +63 -0
  196. package/data/probe/npm/test-grep.js +51 -0
  197. package/data/probe/npm/tests/README.md +96 -0
  198. package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
  199. package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
  200. package/data/probe/npm/tests/contextCompactor.test.js +498 -0
  201. package/data/probe/npm/tests/delegate-config.test.js +353 -0
  202. package/data/probe/npm/tests/delegate-integration.test.js +348 -0
  203. package/data/probe/npm/tests/extractor-integration.test.js +162 -0
  204. package/data/probe/npm/tests/extractor.test.js +317 -0
  205. package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
  206. package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
  207. package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
  208. package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
  209. package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
  210. package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
  211. package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
  212. package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
  213. package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
  214. package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
  215. package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
  216. package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
  217. package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
  218. package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
  219. package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
  220. package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
  221. package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
  222. package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
  223. package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
  224. package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
  225. package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
  226. package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
  227. package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
  228. package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
  229. package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
  230. package/data/probe/npm/tests/setup.js +46 -0
  231. package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
  232. package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
  233. package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
  234. package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
  235. package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
  236. package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
  237. package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
  238. package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
  239. package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
  240. package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
  241. package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
  242. package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
  243. package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
  244. package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
  245. package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
  246. package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
  247. package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
  248. package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
  249. package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
  250. package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
  251. package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
  252. package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
  253. package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
  254. package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
  255. package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
  256. package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
  257. package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
  258. package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
  259. package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
  260. package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
  261. package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
  262. package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
  263. package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
  264. package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
  265. package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
  266. package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
  267. package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
  268. package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
  269. package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
  270. package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
  271. package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
  272. package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
  273. package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
  274. package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
  275. package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
  276. package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
  277. package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
  278. package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
  279. package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
  280. package/data/probe/npm/tsconfig.json +21 -0
  281. package/data/probe/result1.txt +19 -0
  282. package/data/probe/result2.txt +26 -0
  283. package/data/probe/scripts/benchmark.sh +270 -0
  284. package/data/probe/scripts/cache_memory_analysis.rs +844 -0
  285. package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
  286. package/data/probe/site/.env.example +10 -0
  287. package/data/probe/site/DEPLOYMENT.md +86 -0
  288. package/data/probe/site/README.md +183 -0
  289. package/data/probe/site/adding-languages.md +135 -0
  290. package/data/probe/site/ai-chat.md +427 -0
  291. package/data/probe/site/ai-integration.md +1488 -0
  292. package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
  293. package/data/probe/site/blog/index.md +118 -0
  294. package/data/probe/site/blog/v0.6.0-release.md +426 -0
  295. package/data/probe/site/blog.md +8 -0
  296. package/data/probe/site/changelog.md +200 -0
  297. package/data/probe/site/cli-mode.md +437 -0
  298. package/data/probe/site/code-extraction.md +436 -0
  299. package/data/probe/site/contributing/README.md +9 -0
  300. package/data/probe/site/contributing/documentation-cross-references.md +215 -0
  301. package/data/probe/site/contributing/documentation-maintenance.md +275 -0
  302. package/data/probe/site/contributing/documentation-structure.md +75 -0
  303. package/data/probe/site/documentation-cross-references.md +215 -0
  304. package/data/probe/site/documentation-guide.md +132 -0
  305. package/data/probe/site/documentation-maintenance.md +275 -0
  306. package/data/probe/site/features.md +147 -0
  307. package/data/probe/site/how-it-works.md +118 -0
  308. package/data/probe/site/index.md +175 -0
  309. package/data/probe/site/index.md.bak +133 -0
  310. package/data/probe/site/installation.md +235 -0
  311. package/data/probe/site/integrations/docker.md +248 -0
  312. package/data/probe/site/integrations/github-actions.md +413 -0
  313. package/data/probe/site/language-support-overview.md +168 -0
  314. package/data/probe/site/mcp-integration.md +587 -0
  315. package/data/probe/site/mcp-server.md +304 -0
  316. package/data/probe/site/navigation-structure.md +76 -0
  317. package/data/probe/site/nodejs-sdk.md +798 -0
  318. package/data/probe/site/output-formats.md +625 -0
  319. package/data/probe/site/package.json +21 -0
  320. package/data/probe/site/public/_headers +28 -0
  321. package/data/probe/site/public/_redirects +11 -0
  322. package/data/probe/site/quick-start.md +289 -0
  323. package/data/probe/site/search-functionality.md +291 -0
  324. package/data/probe/site/search-reference.md +291 -0
  325. package/data/probe/site/supported-languages.md +215 -0
  326. package/data/probe/site/use-cases/README.md +8 -0
  327. package/data/probe/site/use-cases/advanced-cli.md +253 -0
  328. package/data/probe/site/use-cases/ai-code-editors.md +239 -0
  329. package/data/probe/site/use-cases/building-ai-tools.md +529 -0
  330. package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
  331. package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
  332. package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
  333. package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
  334. package/data/probe/site/use-cases/team-chat.md +350 -0
  335. package/data/probe/site/web-interface.md +434 -0
  336. package/data/probe/site/wrangler.toml +9 -0
  337. package/data/probe/test-api-key.sh +1 -0
  338. package/data/probe/test-probe-implementation/hello.js +7 -0
  339. package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
  340. package/data/probe/test_cases/early_termination_issues.rs +533 -0
  341. package/data/probe/test_data/test_nested_struct.go +26 -0
  342. package/data/probe/tests/README.md +286 -0
  343. package/data/probe/tests/README_search_determinism_tests.md +116 -0
  344. package/data/probe/tests/adjacent_comment_test.rs +152 -0
  345. package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
  346. package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
  347. package/data/probe/tests/block_merging_tests.rs +396 -0
  348. package/data/probe/tests/c_outline_format_tests.rs +2179 -0
  349. package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
  350. package/data/probe/tests/cache_order_tests.rs +147 -0
  351. package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
  352. package/data/probe/tests/cli_tests.rs +680 -0
  353. package/data/probe/tests/comment_context_integration_test.rs +240 -0
  354. package/data/probe/tests/common.rs +33 -0
  355. package/data/probe/tests/complex_block_merging_tests.rs +599 -0
  356. package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
  357. package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
  358. package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
  359. package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
  360. package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
  361. package/data/probe/tests/extract_command_tests.rs +1848 -0
  362. package/data/probe/tests/extract_deduplication_tests.rs +146 -0
  363. package/data/probe/tests/extract_input_file_tests.rs +84 -0
  364. package/data/probe/tests/extract_prompt_tests.rs +102 -0
  365. package/data/probe/tests/filename_search_tests.rs +96 -0
  366. package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
  367. package/data/probe/tests/github_extract_tests.rs +234 -0
  368. package/data/probe/tests/go_comment_test.rs +253 -0
  369. package/data/probe/tests/go_outline_format_tests.rs +2587 -0
  370. package/data/probe/tests/go_path_resolver_tests.rs +96 -0
  371. package/data/probe/tests/html_outline_format_tests.rs +637 -0
  372. package/data/probe/tests/integration_tests.rs +837 -0
  373. package/data/probe/tests/ip_whitelist_test.rs +148 -0
  374. package/data/probe/tests/java_outline_format_tests.rs +1611 -0
  375. package/data/probe/tests/javascript_extract_tests.rs +315 -0
  376. package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
  377. package/data/probe/tests/json_format_tests.rs +436 -0
  378. package/data/probe/tests/json_schema_validation_tests.rs +450 -0
  379. package/data/probe/tests/lib_usage.rs +60 -0
  380. package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
  381. package/data/probe/tests/line_map_cache_tests.rs +114 -0
  382. package/data/probe/tests/markdown_integration_tests.rs +190 -0
  383. package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
  384. package/data/probe/tests/mocks/test_object.js +27 -0
  385. package/data/probe/tests/mocks/test_struct.go +50 -0
  386. package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
  387. package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
  388. package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
  389. package/data/probe/tests/negative_compound_word_tests.rs +246 -0
  390. package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
  391. package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
  392. package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
  393. package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
  394. package/data/probe/tests/parallel_extraction_tests.rs +178 -0
  395. package/data/probe/tests/parallel_search_tests.rs +355 -0
  396. package/data/probe/tests/path_resolver_tests.rs +698 -0
  397. package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
  398. package/data/probe/tests/php_outline_format_tests.rs +768 -0
  399. package/data/probe/tests/property_tests.proptest-regressions +9 -0
  400. package/data/probe/tests/property_tests.rs +118 -0
  401. package/data/probe/tests/python_outline_format_tests.rs +1538 -0
  402. package/data/probe/tests/query_command_json_tests.rs +438 -0
  403. package/data/probe/tests/query_command_tests.rs +232 -0
  404. package/data/probe/tests/query_command_xml_tests.rs +569 -0
  405. package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
  406. package/data/probe/tests/required_terms_filename_tests.rs +116 -0
  407. package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
  408. package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
  409. package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
  410. package/data/probe/tests/rust_outline_format_tests.rs +843 -0
  411. package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
  412. package/data/probe/tests/search_determinism_tests.rs +451 -0
  413. package/data/probe/tests/search_hints_tests.rs +253 -0
  414. package/data/probe/tests/special_character_escaping_tests.rs +417 -0
  415. package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
  416. package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
  417. package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
  418. package/data/probe/tests/symbols_tests.rs +166 -0
  419. package/data/probe/tests/test_file.rs +45 -0
  420. package/data/probe/tests/test_tokenize.rs +28 -0
  421. package/data/probe/tests/timeout_tests.rs +82 -0
  422. package/data/probe/tests/tokenization_tests.rs +195 -0
  423. package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
  424. package/data/probe/tests/typescript_extract_tests.rs +214 -0
  425. package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
  426. package/data/probe/tests/xml_format_tests.rs +568 -0
  427. package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
  428. package/data/scripts/postinstall.mjs +9 -0
  429. package/data/scripts/set-version.js +0 -0
  430. package/data/scripts/wiki-build.sh +111 -0
  431. package/data/scripts/wiki-deploy.sh +73 -0
  432. package/data/serve.json +12 -0
  433. package/data/test/demo-dynamic.html +134 -0
  434. package/data/test/demo-esm.html +105 -0
  435. package/data/test/demo-iife.html +78 -0
  436. package/data/tsconfig.json +7 -0
  437. package/data/vite.server.ts +483 -0
  438. package/data/vitest.config.ts +40 -0
  439. package/data/wiki/Home.md +58 -0
  440. package/data/wiki/_Sidebar.md +39 -0
  441. package/docs-mcp.config.json +20 -0
  442. package/package.json +56 -0
  443. package/src/config.js +111 -0
  444. package/src/index.js +395 -0
@@ -0,0 +1,596 @@
1
+ # ProbeAgent Session Cloning Guide
2
+
3
+ The `clone()` method provides a native, intelligent way to clone ProbeAgent sessions with automatic filtering of internal messages.
4
+
5
+ ## Migration from Manual Cloning
6
+
7
+ If you were previously cloning sessions manually, here's how to migrate:
8
+
9
+ ### Before (Manual Approach)
10
+ ```javascript
11
+ // Create new agent
12
+ const clonedAgent = new ProbeAgent({
13
+ sessionId: 'clone-id',
14
+ path: './src'
15
+ });
16
+
17
+ await clonedAgent.initialize();
18
+
19
+ // Manually copy history (includes internal messages!)
20
+ clonedAgent.history = [...baseAgent.history];
21
+
22
+ // Use the clone
23
+ await clonedAgent.answer('Continue working...');
24
+ ```
25
+
26
+ ### After (Native Method)
27
+ ```javascript
28
+ // One line - automatically filters internal messages!
29
+ const clonedAgent = baseAgent.clone({
30
+ sessionId: 'clone-id' // Optional, auto-generates if not provided
31
+ });
32
+
33
+ await clonedAgent.initialize();
34
+
35
+ // Use the clone with clean history
36
+ await clonedAgent.answer('Continue working...');
37
+ ```
38
+
39
+ ## Why Use the Clone Method?
40
+
41
+ The native `clone()` method offers several advantages over manual history copying:
42
+
43
+ 1. **Smart Filtering**: Automatically removes internal messages (schema reminders, mermaid fixes, tool use prompts)
44
+ 2. **Clean Context**: Cloned agents get only the meaningful conversation (system + user + assistant + tool results)
45
+ 3. **Cache Efficiency**: Preserves the system message for prompt caching
46
+ 4. **Configuration Copying**: Automatically copies all agent settings
47
+ 5. **Type Safety**: Returns a properly configured ProbeAgent instance
48
+
49
+ ## Basic Usage
50
+
51
+ ### Example 1: Simple Clone
52
+
53
+ ```javascript
54
+ import { ProbeAgent } from '@probelabs/probe';
55
+
56
+ // Create base agent
57
+ const baseAgent = new ProbeAgent({
58
+ sessionId: 'base',
59
+ path: './src',
60
+ debug: true
61
+ });
62
+
63
+ await baseAgent.initialize();
64
+
65
+ // Have a conversation with schema (creates internal messages)
66
+ await baseAgent.answer('What files are in this project?');
67
+ await baseAgent.answer(
68
+ 'List all functions',
69
+ [],
70
+ {
71
+ schema: JSON.stringify({
72
+ type: 'object',
73
+ properties: {
74
+ functions: { type: 'array' }
75
+ }
76
+ })
77
+ }
78
+ );
79
+
80
+ console.log(`Base agent has ${baseAgent.history.length} messages`);
81
+ // Output: Base agent has 10 messages (includes internal schema reminders)
82
+
83
+ // Clone with automatic filtering
84
+ const clonedAgent = baseAgent.clone();
85
+
86
+ await clonedAgent.initialize();
87
+
88
+ console.log(`Cloned agent has ${clonedAgent.history.length} messages`);
89
+ // Output: Cloned agent has 5 messages (internal messages stripped)
90
+
91
+ // Use the cloned agent
92
+ await clonedAgent.answer('Based on what you learned, suggest improvements');
93
+ ```
94
+
95
+ ## Clone Options
96
+
97
+ ### Example 2: Custom Session ID
98
+
99
+ ```javascript
100
+ const clonedAgent = baseAgent.clone({
101
+ sessionId: 'my-custom-session-id'
102
+ });
103
+ ```
104
+
105
+ ### Example 3: Keep Internal Messages
106
+
107
+ ```javascript
108
+ // Keep all messages including internal ones
109
+ const clonedAgent = baseAgent.clone({
110
+ stripInternalMessages: false
111
+ });
112
+
113
+ // Useful when you need the exact conversation state
114
+ ```
115
+
116
+ ### Example 4: Remove System Message
117
+
118
+ ```javascript
119
+ // Clone without the system message (use new prompt type)
120
+ const clonedAgent = baseAgent.clone({
121
+ keepSystemMessage: false,
122
+ overrides: {
123
+ promptType: 'architect', // Use a different prompt
124
+ customPrompt: 'You are a security auditor...'
125
+ }
126
+ });
127
+ ```
128
+
129
+ ### Example 5: Override Configuration
130
+
131
+ ```javascript
132
+ // Clone with different settings
133
+ const clonedAgent = baseAgent.clone({
134
+ overrides: {
135
+ debug: false, // Disable debug in clone
136
+ allowEdit: true, // Enable edit tool
137
+ maxIterations: 50, // Increase iteration limit
138
+ promptType: 'code-review' // Different prompt type
139
+ }
140
+ });
141
+ ```
142
+
143
+ ### Example 6: Shallow Copy (Performance)
144
+
145
+ ```javascript
146
+ // Use shallow copy for better performance (be careful with mutations!)
147
+ const clonedAgent = baseAgent.clone({
148
+ deepCopy: false
149
+ });
150
+ ```
151
+
152
+ ## Real-World Use Cases
153
+
154
+ ### Use Case 1: Parallel Checks (Visor Pattern)
155
+
156
+ ```javascript
157
+ import { ProbeAgent } from '@probelabs/probe';
158
+
159
+ async function runParallelChecks(codebase) {
160
+ // Step 1: Build shared context
161
+ const baseAgent = new ProbeAgent({
162
+ sessionId: 'context-builder',
163
+ path: codebase,
164
+ debug: true
165
+ });
166
+
167
+ await baseAgent.initialize();
168
+
169
+ // Expensive context building (only done once)
170
+ await baseAgent.answer('Analyze the project structure');
171
+ await baseAgent.answer('List all API endpoints');
172
+ await baseAgent.answer('Identify database models');
173
+
174
+ console.log(`Base context: ${baseAgent.history.length} messages`);
175
+
176
+ // Step 2: Clone for parallel checks
177
+ const checks = [
178
+ {
179
+ name: 'security',
180
+ prompt: 'Analyze for security vulnerabilities',
181
+ schema: {
182
+ type: 'object',
183
+ properties: {
184
+ vulnerabilities: { type: 'array' },
185
+ severity: { type: 'string' }
186
+ }
187
+ }
188
+ },
189
+ {
190
+ name: 'performance',
191
+ prompt: 'Check for performance issues',
192
+ schema: {
193
+ type: 'object',
194
+ properties: {
195
+ issues: { type: 'array' },
196
+ impact: { type: 'string' }
197
+ }
198
+ }
199
+ },
200
+ {
201
+ name: 'style',
202
+ prompt: 'Check code style and best practices',
203
+ schema: {
204
+ type: 'object',
205
+ properties: {
206
+ violations: { type: 'array' },
207
+ suggestions: { type: 'array' }
208
+ }
209
+ }
210
+ }
211
+ ];
212
+
213
+ // Run all checks in parallel with cloned context
214
+ const results = await Promise.all(
215
+ checks.map(async (check) => {
216
+ // Clone base agent for this check
217
+ const checkAgent = baseAgent.clone({
218
+ sessionId: `check-${check.name}`
219
+ });
220
+
221
+ await checkAgent.initialize();
222
+
223
+ // Run check with structured output
224
+ const result = await checkAgent.answer(
225
+ check.prompt,
226
+ [],
227
+ { schema: JSON.stringify(check.schema) }
228
+ );
229
+
230
+ // Clean up
231
+ await checkAgent.cleanup();
232
+
233
+ return {
234
+ check: check.name,
235
+ result: JSON.parse(result)
236
+ };
237
+ })
238
+ );
239
+
240
+ // Clean up base agent
241
+ await baseAgent.cleanup();
242
+
243
+ return results;
244
+ }
245
+
246
+ // Usage
247
+ const checkResults = await runParallelChecks('./my-project');
248
+ console.log('Security:', checkResults[0]);
249
+ console.log('Performance:', checkResults[1]);
250
+ console.log('Style:', checkResults[2]);
251
+ ```
252
+
253
+ ### Use Case 2: Progressive Context Building
254
+
255
+ ```javascript
256
+ async function progressiveAnalysis(codebase) {
257
+ // Stage 1: Basic exploration
258
+ const stage1 = new ProbeAgent({
259
+ sessionId: 'stage1-exploration',
260
+ path: codebase
261
+ });
262
+
263
+ await stage1.initialize();
264
+ await stage1.answer('What is the main purpose of this codebase?');
265
+ await stage1.answer('What are the key components?');
266
+
267
+ // Stage 2: Deep dive (clone stage 1)
268
+ const stage2 = stage1.clone({
269
+ sessionId: 'stage2-deepdive'
270
+ });
271
+
272
+ await stage2.initialize();
273
+ await stage2.answer('Analyze the authentication system in detail');
274
+ await stage2.answer('How does the database layer work?');
275
+
276
+ // Stage 3: Security audit (clone stage 2)
277
+ const stage3 = stage2.clone({
278
+ sessionId: 'stage3-security',
279
+ overrides: {
280
+ promptType: 'security-audit'
281
+ }
282
+ });
283
+
284
+ await stage3.initialize();
285
+ const securityReport = await stage3.answer(
286
+ 'Generate a comprehensive security audit report',
287
+ [],
288
+ {
289
+ schema: JSON.stringify({
290
+ type: 'object',
291
+ properties: {
292
+ summary: { type: 'string' },
293
+ critical: { type: 'array' },
294
+ high: { type: 'array' },
295
+ medium: { type: 'array' },
296
+ recommendations: { type: 'array' }
297
+ }
298
+ })
299
+ }
300
+ );
301
+
302
+ // Each stage builds on the previous one
303
+ // But internal messages are automatically cleaned
304
+ console.log(`Stage 1: ${stage1.history.length} messages`);
305
+ console.log(`Stage 2: ${stage2.history.length} messages (filtered)`);
306
+ console.log(`Stage 3: ${stage3.history.length} messages (filtered)`);
307
+
308
+ return JSON.parse(securityReport);
309
+ }
310
+ ```
311
+
312
+ ### Use Case 3: A/B Testing Different Prompts
313
+
314
+ ```javascript
315
+ async function comparePrompts(question, codebase) {
316
+ // Build base context
317
+ const baseAgent = new ProbeAgent({
318
+ sessionId: 'base-context',
319
+ path: codebase
320
+ });
321
+
322
+ await baseAgent.initialize();
323
+ await baseAgent.answer('Analyze the codebase structure');
324
+
325
+ // Clone with different prompt types
326
+ const architectAgent = baseAgent.clone({
327
+ sessionId: 'architect-test',
328
+ overrides: { promptType: 'architect' }
329
+ });
330
+
331
+ const reviewerAgent = baseAgent.clone({
332
+ sessionId: 'reviewer-test',
333
+ overrides: { promptType: 'code-review' }
334
+ });
335
+
336
+ const supportAgent = baseAgent.clone({
337
+ sessionId: 'support-test',
338
+ overrides: { promptType: 'support' }
339
+ });
340
+
341
+ // Initialize all clones
342
+ await Promise.all([
343
+ architectAgent.initialize(),
344
+ reviewerAgent.initialize(),
345
+ supportAgent.initialize()
346
+ ]);
347
+
348
+ // Ask the same question with different prompts
349
+ const [architectResponse, reviewerResponse, supportResponse] = await Promise.all([
350
+ architectAgent.answer(question),
351
+ reviewerAgent.answer(question),
352
+ supportAgent.answer(question)
353
+ ]);
354
+
355
+ return {
356
+ architect: architectResponse,
357
+ reviewer: reviewerResponse,
358
+ support: supportResponse
359
+ };
360
+ }
361
+
362
+ // Usage
363
+ const responses = await comparePrompts(
364
+ 'How should we refactor the authentication module?',
365
+ './src'
366
+ );
367
+
368
+ console.log('Architect says:', responses.architect);
369
+ console.log('Reviewer says:', responses.reviewer);
370
+ console.log('Support says:', responses.support);
371
+ ```
372
+
373
+ ### Use Case 4: Stateless API with Session Management
374
+
375
+ ```javascript
376
+ import express from 'express';
377
+ import { ProbeAgent } from '@probelabs/probe';
378
+
379
+ const app = express();
380
+ const sessions = new Map(); // Store base agents
381
+
382
+ // Endpoint to create a session
383
+ app.post('/api/sessions', async (req, res) => {
384
+ const { codebase } = req.body;
385
+
386
+ const agent = new ProbeAgent({
387
+ sessionId: `session-${Date.now()}`,
388
+ path: codebase
389
+ });
390
+
391
+ await agent.initialize();
392
+
393
+ // Build initial context
394
+ await agent.answer('Analyze the project structure');
395
+
396
+ sessions.set(agent.sessionId, agent);
397
+
398
+ res.json({ sessionId: agent.sessionId });
399
+ });
400
+
401
+ // Endpoint to run a query (clones the session each time)
402
+ app.post('/api/query', async (req, res) => {
403
+ const { sessionId, question } = req.body;
404
+
405
+ const baseAgent = sessions.get(sessionId);
406
+ if (!baseAgent) {
407
+ return res.status(404).json({ error: 'Session not found' });
408
+ }
409
+
410
+ // Clone for this query (keeps base agent clean)
411
+ const queryAgent = baseAgent.clone({
412
+ sessionId: `${sessionId}-query-${Date.now()}`
413
+ });
414
+
415
+ await queryAgent.initialize();
416
+
417
+ try {
418
+ const answer = await queryAgent.answer(question);
419
+ res.json({ answer });
420
+ } finally {
421
+ // Clean up query agent
422
+ await queryAgent.cleanup();
423
+ }
424
+ });
425
+
426
+ // Endpoint to run structured analysis
427
+ app.post('/api/analyze', async (req, res) => {
428
+ const { sessionId, analysisType, schema } = req.body;
429
+
430
+ const baseAgent = sessions.get(sessionId);
431
+ if (!baseAgent) {
432
+ return res.status(404).json({ error: 'Session not found' });
433
+ }
434
+
435
+ // Clone with custom settings for analysis
436
+ const analysisAgent = baseAgent.clone({
437
+ sessionId: `${sessionId}-analysis-${Date.now()}`,
438
+ overrides: {
439
+ promptType: analysisType, // 'architect', 'code-review', etc.
440
+ maxIterations: 50
441
+ }
442
+ });
443
+
444
+ await analysisAgent.initialize();
445
+
446
+ try {
447
+ const result = await analysisAgent.answer(
448
+ `Perform ${analysisType} analysis`,
449
+ [],
450
+ { schema: JSON.stringify(schema) }
451
+ );
452
+ res.json({ result: JSON.parse(result) });
453
+ } finally {
454
+ await analysisAgent.cleanup();
455
+ }
456
+ });
457
+
458
+ // Clean up sessions periodically
459
+ setInterval(() => {
460
+ const now = Date.now();
461
+ for (const [sessionId, agent] of sessions.entries()) {
462
+ // Remove sessions older than 1 hour
463
+ if (now - agent.createdAt > 3600000) {
464
+ agent.cleanup();
465
+ sessions.delete(sessionId);
466
+ }
467
+ }
468
+ }, 300000); // Every 5 minutes
469
+
470
+ app.listen(3000, () => {
471
+ console.log('API server listening on port 3000');
472
+ });
473
+ ```
474
+
475
+ ## What Gets Filtered?
476
+
477
+ The `stripInternalMessages` option removes:
478
+
479
+ ### Schema Reminders
480
+ ```
481
+ IMPORTANT: A schema was provided. You MUST respond with data that matches this schema.
482
+ Your response must conform to this schema: {...}
483
+ ```
484
+
485
+ ### Tool Use Prompts
486
+ ```
487
+ Please use one of the available tools to help answer the question...
488
+ Remember: Use proper XML format with BOTH opening and closing tags...
489
+ ```
490
+
491
+ ### Mermaid Fix Prompts
492
+ ```
493
+ The mermaid diagram in your response has syntax errors.
494
+ Please fix the mermaid syntax errors...
495
+ Here is the corrected version:
496
+ ```
497
+
498
+ ### JSON Correction Prompts
499
+ ```
500
+ Your response does not match the expected JSON schema.
501
+ Please provide a valid JSON response.
502
+ Schema validation error: ...
503
+ ```
504
+
505
+ ### Empty Completion Reminders
506
+ ```
507
+ When using <attempt_complete>, this must be the ONLY content in your response...
508
+ ```
509
+
510
+ ## What Gets Kept?
511
+
512
+ - ✅ System message (configurable)
513
+ - ✅ User questions
514
+ - ✅ Assistant responses
515
+ - ✅ Tool calls and results
516
+ - ✅ Images and attachments
517
+ - ✅ All meaningful conversation content
518
+
519
+ ## Performance Considerations
520
+
521
+ ### Deep Copy vs Shallow Copy
522
+
523
+ ```javascript
524
+ // Deep copy (default) - Safe but slower
525
+ const clone1 = baseAgent.clone({
526
+ deepCopy: true // Default
527
+ });
528
+
529
+ // Shallow copy - Faster but be careful with mutations
530
+ const clone2 = baseAgent.clone({
531
+ deepCopy: false
532
+ });
533
+
534
+ // If you modify clone2.history, it may affect the original!
535
+ ```
536
+
537
+ ### Memory Management
538
+
539
+ ```javascript
540
+ // Clean up clones when done
541
+ async function runManyChecks(baseAgent) {
542
+ for (let i = 0; i < 100; i++) {
543
+ const clone = baseAgent.clone();
544
+ await clone.initialize();
545
+ await clone.answer(`Check ${i}`);
546
+ await clone.cleanup(); // Important: free resources!
547
+ }
548
+ }
549
+ ```
550
+
551
+ ## Debug Output
552
+
553
+ With `debug: true`, you'll see:
554
+
555
+ ```
556
+ [DEBUG] Cloned session base-session -> clone-abc123
557
+ [DEBUG] Cloned 5 messages (stripInternal: true)
558
+ [DEBUG] Stripping internal message at index 3: user
559
+ [DEBUG] Stripping internal message at index 7: user
560
+ [DEBUG] Reusing existing system message from history for cache efficiency
561
+ ```
562
+
563
+ ## TypeScript Support
564
+
565
+ ```typescript
566
+ import { ProbeAgent, CloneOptions } from '@probelabs/probe';
567
+
568
+ const baseAgent = new ProbeAgent({ path: './src' });
569
+ await baseAgent.initialize();
570
+
571
+ const options: CloneOptions = {
572
+ sessionId: 'my-clone',
573
+ stripInternalMessages: true,
574
+ keepSystemMessage: true,
575
+ deepCopy: true,
576
+ overrides: {
577
+ debug: false,
578
+ maxIterations: 30
579
+ }
580
+ };
581
+
582
+ const clonedAgent: ProbeAgent = baseAgent.clone(options);
583
+ ```
584
+
585
+ ## Summary
586
+
587
+ The native `clone()` method provides:
588
+
589
+ - 🧹 **Automatic cleaning** of internal messages
590
+ - 🚀 **Cache efficiency** by preserving system message
591
+ - ⚙️ **Configuration inheritance** with override support
592
+ - 🎯 **Type safety** with proper ProbeAgent instances
593
+ - 🐛 **Debug visibility** into what's being filtered
594
+ - 🔧 **Flexible options** for different use cases
595
+
596
+ Perfect for production use cases like Visor, API servers, and parallel processing pipelines!