@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,193 @@
1
+ ## Prerequisites
2
+
3
+ 1. **NPM Account**: Ensure you have an account on [npmjs.com](https://www.npmjs.com/)
4
+ 2. **NPM Login**: Login to npm from your terminal:
5
+ ```bash
6
+ npm login
7
+ ```
8
+ 3. **Organization Access**: If publishing to `@crownpeak` scope, ensure you have write permissions to the organization
9
+
10
+ ## Pre-Publishing Checklist
11
+
12
+ - [ ] Update version in `package.json` (follow [Semantic Versioning](https://semver.org/))
13
+ - [ ] Update `CHANGELOG.md` with changes in this release
14
+ - [ ] Ensure all tests pass: `npm test` (if tests exist)
15
+ - [ ] Build succeeds: `npm run build`
16
+ - [ ] Lint passes: `npm run lint`
17
+ - [ ] Review package contents: `npm pack --dry-run`
18
+
19
+ ## Version Update
20
+
21
+ Update the version number in `package.json`:
22
+
23
+ ```bash
24
+ # For patches (bug fixes)
25
+ npm version patch
26
+
27
+ # For minor releases (new features, backwards compatible)
28
+ npm version minor
29
+
30
+ # For major releases (breaking changes)
31
+ npm version major
32
+ ```
33
+
34
+ This will automatically:
35
+ - Update `package.json`
36
+ - Create a git commit
37
+ - Create a git tag
38
+
39
+ ## Publish to NPM
40
+
41
+ ### 1. First Time Publishing
42
+
43
+ For first-time publishing of a scoped package:
44
+
45
+ ```bash
46
+ npm publish --access public
47
+ ```
48
+
49
+ ### 2. Subsequent Publishes
50
+
51
+ For regular updates:
52
+
53
+ ```bash
54
+ npm publish
55
+ ```
56
+
57
+ The `prepublishOnly` script will automatically:
58
+ 1. Run `npm run build` to compile all code
59
+ 2. Run `npm run lint` to check code quality
60
+
61
+ ### 3. Beta/Pre-release Versions
62
+
63
+ For pre-release versions:
64
+
65
+ ```bash
66
+ # Update to beta version
67
+ npm version prerelease --preid=beta
68
+
69
+ # Publish with beta tag
70
+ npm publish --tag beta
71
+ ```
72
+
73
+ Users can install with: `npm install @crownpeak/dqm-react-component@beta`
74
+
75
+ ## Post-Publishing
76
+
77
+ 1. **Push to Git**:
78
+ ```bash
79
+ git push origin main --follow-tags
80
+ ```
81
+
82
+ 2. **Create GitHub Release**:
83
+ - Go to GitHub repository
84
+ - Create a new release from the version tag
85
+ - Add release notes from `CHANGELOG.md`
86
+
87
+ 3. **Verify Installation**:
88
+ ```bash
89
+ npm view @crownpeak/dqm-react-component
90
+ ```
91
+
92
+ 4. **Test Installation**:
93
+ ```bash
94
+ npm install @crownpeak/dqm-react-component
95
+ ```
96
+
97
+ ## Package Contents
98
+
99
+ The published package includes:
100
+
101
+ - `dist/` - Compiled outputs
102
+ - `dist/index.js` - Library ESM build
103
+ - `dist/index.cjs` - Library CommonJS build
104
+ - `dist/index.d.ts` - Library type definitions
105
+ - `dist/dqm-widget.esm.js` - Standalone widget (ESM)
106
+ - `dist/dqm-widget.iife.js` - Standalone widget (IIFE)
107
+ - `dist/dqm-widget.d.ts` - Widget type definitions
108
+ - `dist/server/` - Backend server code
109
+ - `dist/auth-ui/` - Authentication UI bundle
110
+ - `README.md` - Main documentation
111
+ - `LICENSE` - MIT License
112
+ - `CHANGELOG.md` - Version history
113
+ - `QUICKSTART.md` - Quick start guide
114
+ - `EXAMPLES.md` - Usage examples
115
+ - `AUTHENTICATION.md` - Auth documentation
116
+ - `BACKEND-API.md` - Backend API docs
117
+ - `DEVELOPMENT.md` - Development guide
118
+ - `PUBLISHING.md` - Publishing workflow
119
+
120
+ ## Files Excluded (via .npmignore)
121
+
122
+ - Source code (`src/`, `server/`, `server-ui/`)
123
+ - Development files (`.vscode/`, `.env`, config files)
124
+ - Build configuration files
125
+ - Test files
126
+ - Git files
127
+
128
+ ## Unpublishing
129
+
130
+ ⚠️ **Caution**: Unpublishing is discouraged and only allowed within 72 hours.
131
+
132
+ ```bash
133
+ npm unpublish @crownpeak/dqm-react-component@1.0.0
134
+ ```
135
+
136
+ ## Deprecating a Version
137
+
138
+ If a version has issues, deprecate it instead of unpublishing:
139
+
140
+ ```bash
141
+ npm deprecate @crownpeak/dqm-react-component@1.0.0 "Critical bug, use version 1.0.1 instead"
142
+ ```
143
+
144
+ ## Troubleshooting
145
+
146
+ ### Authentication Errors
147
+
148
+ ```bash
149
+ npm logout
150
+ npm login
151
+ ```
152
+
153
+ ### Permission Errors
154
+
155
+ Ensure you have write access to the `@crownpeak` organization on npmjs.com.
156
+
157
+ ### Build Errors
158
+
159
+ Clean and rebuild:
160
+
161
+ ```bash
162
+ rm -rf dist node_modules
163
+ npm install
164
+ npm run build
165
+ ```
166
+
167
+ ### Package Size Warnings
168
+
169
+ Check bundle size:
170
+
171
+ ```bash
172
+ npm pack --dry-run | grep "unpacked size"
173
+ ```
174
+
175
+ Current package size: ~4.3 MB unpacked, ~1.2 MB packed
176
+
177
+ ## NPM Scripts Reference
178
+
179
+ - `npm run build` - Build library, widget, server, and auth-ui
180
+ - `npm run build:lib` - Build library only
181
+ - `npm run build:widget` - Build standalone widget bundles + copy types
182
+ - `npm run build:server` - Build server only
183
+ - `npm run build:auth-ui` - Build auth-ui only
184
+ - `npm run lint` - Run ESLint
185
+ - `npm pack` - Create tarball locally for testing
186
+ - `npm publish` - Publish to npm registry
187
+
188
+ ## Resources
189
+
190
+ - [NPM Publishing Docs](https://docs.npmjs.com/cli/v10/commands/npm-publish)
191
+ - [Semantic Versioning](https://semver.org/)
192
+ - [NPM Package Scope](https://docs.npmjs.com/cli/v10/using-npm/scope)
193
+ - [NPM Organizations](https://docs.npmjs.com/organizations)
@@ -0,0 +1,206 @@
1
+ ## Installation
2
+
3
+ ```bash
4
+ npm install
5
+ ```
6
+
7
+ ## Build
8
+
9
+ ```bash
10
+ npm run build
11
+ ```
12
+
13
+ ### Build widget only (for standalone script usage)
14
+
15
+ ```bash
16
+ npm run build:widget
17
+ npm run serve:widget # preview demos at http://localhost:4173/test/demo-iife.html etc.
18
+ ```
19
+
20
+ ## Start Development
21
+
22
+ ```bash
23
+ npm run dev # Vite dev server with integrated backend (port 5173)
24
+ npm run dev:server # Standalone Express server with Redis (port 3001)
25
+ ```
26
+
27
+ This starts:
28
+ - ✅ **Frontend + Backend**: http://localhost:5173 (Vite Dev Server with integrated backend API)
29
+ - Backend routes (`/auth/*`, `/dqm/*`) are handled by Vite plugin
30
+
31
+ ## Test the Integration
32
+
33
+ ### 1. Open Frontend
34
+ Navigate to http://localhost:5173
35
+
36
+ ### 2. Configure Backend Mode
37
+ The test harness is already configured to use the backend:
38
+
39
+ ```tsx
40
+ config={{
41
+ authBackendUrl: '', // Empty = same origin (backend integrated in Vite dev server)
42
+ useLocalStorage: true,
43
+ }}
44
+ ```
45
+
46
+ ### 3. Login with Credentials
47
+ - Enter your Crownpeak DQM API Key
48
+ - Enter your Website ID
49
+ - Click "Continue"
50
+
51
+ The backend will:
52
+ 1. Validate credentials with Crownpeak DQM API
53
+ 2. Issue a session token
54
+ 3. Store token in localStorage
55
+
56
+ ### 4. Analyze HTML
57
+ - Paste HTML in the editor
58
+ - Click "Start Analysis"
59
+ - All requests go through `/dqm/*` on the same origin (port 5173 in dev)
60
+
61
+ ## Architecture
62
+
63
+ ```mermaid
64
+ graph LR
65
+ A[React App + Backend API<br/>Port 5173]
66
+ B[Vite Dev Server<br/>with integrated backend]
67
+ C[Crownpeak DQM<br/>API]
68
+
69
+ A -->|HTTP Requests| B
70
+ B -->|Proxied Requests| C
71
+
72
+ A -.->|sessionToken<br/>localStorage| A
73
+ B -.->|apiKey + websiteId<br/>in-memory · Redis-ready| B
74
+
75
+ subgraph Frontend
76
+ A
77
+ A1[DQMSidebar]
78
+ A2[Login UI]
79
+ A3[HTML Editor]
80
+ end
81
+
82
+ subgraph Backend
83
+ B
84
+ B1[Auth Routes]
85
+ B2[DQM Proxy]
86
+ B3[Sessions]
87
+ end
88
+
89
+ subgraph External
90
+ C
91
+ C1[Analysis]
92
+ C2[Highlights]
93
+ C3[Checkpoints]
94
+ end
95
+ ```
96
+
97
+ ## Two Authentication Modes
98
+
99
+ ### Backend Mode (Recommended)
100
+ ```tsx
101
+ config={{
102
+ authBackendUrl: '', // Dev: empty (same origin) | Prod: 'https://your-backend.com'
103
+ }}
104
+ ```
105
+ - ✅ Secure session tokens
106
+ - ✅ API keys remain server-side
107
+ - ✅ Centralized access control
108
+
109
+ ### Direct Mode (Development)
110
+ ```tsx
111
+ config={{
112
+ apiKey: 'YOUR_API_KEY',
113
+ websiteId: 'YOUR_WEBSITE_ID',
114
+ }}
115
+ ```
116
+ - ✅ No backend required
117
+ - ✅ Quick testing
118
+ - ✅ Props or localStorage
119
+
120
+ ## API Endpoints
121
+
122
+ ### Authentication
123
+ - `POST /auth/login` - Login with credentials
124
+ - `POST /auth/logout` - Invalidate session
125
+ - `GET /auth/session` - Get session info
126
+
127
+ ### DQM Proxy
128
+ - `POST /dqm/assets` - Start analysis
129
+ - `GET /dqm/assets/:id` - Get results
130
+ - `GET /dqm/assets/:id/pagehighlight/all` - All highlights
131
+ - `GET /dqm/assets/:id/pagehighlight/:cpId` - Single highlight
132
+
133
+ All DQM endpoints require `Authorization: Bearer <sessionToken>`
134
+
135
+ ## Scripts
136
+
137
+ ```bash
138
+ # Development
139
+ npm run dev # Vite dev server with integrated backend (port 5173)
140
+ npm run dev:client # Same as npm run dev
141
+ npm run dev:server # Standalone Express server with Redis (port 3001)
142
+
143
+ # Build
144
+ npm run build # Build all
145
+ npm run build:lib # Build React library
146
+ npm run build:server # Build Express server
147
+
148
+ # Production
149
+ npm run start:server # Run built server
150
+ ```
151
+
152
+ ## Environment Setup
153
+
154
+ Copy `.env.example` to `.env`:
155
+
156
+ ```env
157
+ PORT=3001
158
+ CORS_ORIGINS=http://localhost:5173
159
+ DQM_API_BASE_URL=https://api.crownpeak.net/dqm-cms/v1
160
+ JWT_SECRET=your-secret-key
161
+ ```
162
+
163
+ ## Documentation
164
+
165
+ - **[BACKEND-API.md](./BACKEND-API.md)** - Backend API specification
166
+ - **[DEVELOPMENT.md](./DEVELOPMENT.md)** - Development guide
167
+ - **[server/README.md](./server/README.md)** - Server documentation
168
+ - **[AUTHENTICATION.md](./AUTHENTICATION.md)** - Auth flow details
169
+ - **[EXAMPLES.md](./EXAMPLES.md)** - Integration examples
170
+
171
+ ## Testing
172
+
173
+ ### Test Backend Health (Dev Mode - Port 5173)
174
+ ```bash
175
+ curl http://localhost:5173/health
176
+ ```
177
+
178
+ ### Test Login (Dev Mode)
179
+ ```bash
180
+ curl -X POST http://localhost:5173/auth/login \
181
+ -H "Content-Type: application/json" \
182
+ -d '{"apiKey":"YOUR_KEY","websiteId":"YOUR_ID"}'
183
+ ```
184
+
185
+ ### Test Analysis (Dev Mode)
186
+ ```bash
187
+ curl -X POST http://localhost:5173/dqm/assets \
188
+ -H "Authorization: Bearer YOUR_TOKEN" \
189
+ -H "Content-Type: application/json" \
190
+ -d '{"html":"<html><body>Test</body></html>"}'
191
+ ```
192
+
193
+ ## Features
194
+
195
+ ✅ **Modular Backend** - Express.js with clean architecture
196
+ ✅ **Session Management** - In-memory store (Redis-ready)
197
+ ✅ **DQM API Proxy** - All analysis endpoints
198
+ ✅ **CORS & Security** - Helmet.js, CORS whitelist
199
+ ✅ **Auto-reload** - TSX watch mode for development
200
+ ✅ **Concurrent Servers** - Frontend + Backend in one command
201
+ ✅ **TypeScript** - Full type safety
202
+ ✅ **Error Handling** - Centralized middleware
203
+
204
+ ## License
205
+
206
+ MIT
@@ -0,0 +1,162 @@
1
+ ## Problem
2
+
3
+ The backend uses **In-Memory Sessions** by default. These are lost on every server restart, which means:
4
+ - Users must log in again after every deployment
5
+ - Development with hot-reload causes frequent session losses
6
+ - Load-balancing across multiple servers doesn't work
7
+
8
+ ## Solution: Redis
9
+
10
+ Redis stores sessions persistently and across servers. Sessions survive:
11
+ - ✅ Server restarts
12
+ - ✅ Deployments
13
+ - ✅ Load balancing
14
+ - ✅ Hot-reload during development
15
+
16
+ ## Quick Start
17
+
18
+ ### Local Development (Docker)
19
+
20
+ ```bash
21
+ # Start Redis
22
+ docker run -d -p 6379:6379 redis:alpine
23
+
24
+ # Set environment variable
25
+ export REDIS_URL=redis://localhost:6379
26
+
27
+ # Start server
28
+ npm run dev:server
29
+ ```
30
+
31
+ ### Local Development (without Docker)
32
+
33
+ ```bash
34
+ # macOS
35
+ brew install redis
36
+ redis-server
37
+
38
+ # Ubuntu/Debian
39
+ sudo apt-get install redis-server
40
+ sudo systemctl start redis-server
41
+
42
+ # Set environment variable
43
+ export REDIS_URL=redis://localhost:6379
44
+
45
+ # Start server
46
+ npm run dev:server
47
+ ```
48
+
49
+ ### Production Deployment
50
+
51
+ #### Option 1: Redis Cloud (Managed, Free Tier available)
52
+
53
+ 1. Create an account on [Redis Cloud](https://redis.com/try-free/)
54
+ 2. Create a new database
55
+ 3. Copy the connection string
56
+ 4. Set environment variable:
57
+
58
+ ```bash
59
+ REDIS_URL=redis://default:password@redis-xxxxx.redislabs.com:xxxxx
60
+ ```
61
+
62
+ #### Option 2: AWS ElastiCache
63
+
64
+ ```bash
65
+ REDIS_URL=redis://your-elasticache-cluster.xxxxx.cache.amazonaws.com:6379
66
+ ```
67
+
68
+ #### Option 3: Azure Cache for Redis
69
+
70
+ ```bash
71
+ REDIS_URL=redis://:password@your-cache.redis.cache.windows.net:6380?tls=true
72
+ ```
73
+
74
+ #### Option 4: Heroku Redis
75
+
76
+ ```bash
77
+ # Automatically set via REDIS_URL env var
78
+ heroku addons:create heroku-redis:mini
79
+ ```
80
+
81
+ ## Fallback Behavior
82
+
83
+ When **no Redis connection** is available:
84
+ - ⚠️ Automatic fallback to in-memory storage
85
+ - ⚠️ Warning log: "Redis not available, using in-memory storage"
86
+ - ⚠️ Sessions are lost on server restart
87
+
88
+ ## Monitoring
89
+
90
+ The backend logs show:
91
+ ```
92
+ [SessionStore] ✅ Connected to Redis
93
+ [SessionStore] Created Redis session: a285dde5... (expires in 1440 minutes)
94
+ [Auth] Current sessions in store: 5 (storage: redis)
95
+ ```
96
+
97
+ ## Configuration
98
+
99
+ ### Environment Variables
100
+
101
+ ```bash
102
+ # .env
103
+ REDIS_URL=redis://localhost:6379
104
+
105
+ # Optional Redis configuration
106
+ REDIS_PASSWORD=your-password
107
+ REDIS_TLS=true # For production with TLS
108
+ ```
109
+
110
+ ### Session TTL
111
+
112
+ Sessions expire after 24 hours (configurable in `server/config.ts`):
113
+
114
+ ```typescript
115
+ session: {
116
+ ttl: 24 * 60 * 60 * 1000, // 24 hours in milliseconds
117
+ }
118
+ ```
119
+
120
+ ## Troubleshooting
121
+
122
+ ### "Redis connection failed"
123
+ - Check if Redis is running: `redis-cli ping` → should return "PONG"
124
+ - Check REDIS_URL format
125
+ - Check firewall/security groups
126
+
127
+ ### "Session expired" despite Redis
128
+ - TTL might be too short → Increase in `config.ts`
129
+ - Redis memory full → Check `redis-cli info memory`
130
+
131
+ ### Sessions are not being saved
132
+ - Check backend logs: Should show "Created Redis session"
133
+ - Check Redis: `redis-cli KEYS "session:*"`
134
+
135
+ ## Best Practices
136
+
137
+ ### Development
138
+ ```bash
139
+ # Local Redis, no persistence needed
140
+ docker run -d -p 6379:6379 redis:alpine
141
+ ```
142
+
143
+ ### Staging/Production
144
+ ```bash
145
+ # Managed Redis with backups and monitoring
146
+ # Redis Cloud, AWS ElastiCache, Azure Cache
147
+ ```
148
+
149
+ ### Security
150
+ - ✅ Use TLS in production (`rediss://` instead of `redis://`)
151
+ - ✅ Use strong passwords
152
+ - ✅ Restrict network access (security groups)
153
+ - ✅ Enable Redis AUTH
154
+
155
+ ## Migration from In-Memory to Redis
156
+
157
+ No code changes required! Simply:
158
+ 1. Set REDIS_URL environment variable
159
+ 2. Restart server
160
+ 3. Backend automatically detects Redis
161
+
162
+ Existing sessions are lost during migration (users must log in again).