@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,638 @@
1
+ This guide covers using the DQM React Component as a standalone widget via the pre-built IIFE or ESM bundles. This allows you to use DQM without a build pipeline or React setup.
2
+
3
+ ## Table of Contents
4
+ - [Overview](#overview)
5
+ - [Bundle Types](#bundle-types)
6
+ - [IIFE Bundle (Browser Global)](#iife-bundle-browser-global)
7
+ - [ESM Bundle (ES Modules)](#esm-bundle-es-modules)
8
+ - [Widget Loading Flow](#widget-loading-flow)
9
+ - [Integration Examples](#integration-examples)
10
+ - [CMS Integrations](#cms-integrations)
11
+ - [Configuration](#configuration)
12
+ - [Troubleshooting](#troubleshooting)
13
+
14
+ ## Overview
15
+
16
+ The widget bundle provides a standalone version of the DQM sidebar that can be embedded in any web page without React dependencies. The widget:
17
+
18
+ - **Runs in Shadow DOM** - Isolated from page styles and scripts
19
+ - **Zero Dependencies** - All dependencies bundled (React, MUI, etc.)
20
+ - **Self-Contained** - No build pipeline or npm required
21
+ - **CMS-Friendly** - Easy integration with WordPress, Shopify, Drupal, etc.
22
+
23
+ ## Bundle Types
24
+
25
+ | Format | File | Use Case | Browser Support |
26
+ |--------|------|----------|----------------|
27
+ | **IIFE** | `dqm-widget.iife.js` | Traditional `<script>` tag | All browsers (IE11+) |
28
+ | **ESM** | `dqm-widget.esm.js` | `<script type="module">` | Modern browsers (ES2015+) |
29
+
30
+ Both bundles are located in `/dist/` after building:
31
+
32
+ ```bash
33
+ npm run build:lib
34
+ ls -lh dist/dqm-widget.*
35
+ ```
36
+
37
+ **Sizes:**
38
+ - IIFE: ~500KB minified (includes all dependencies)
39
+ - ESM: ~480KB minified (tree-shakeable)
40
+
41
+ ## IIFE Bundle (Browser Global)
42
+
43
+ ### Basic Usage
44
+
45
+ ```html
46
+ <!DOCTYPE html>
47
+ <html lang="en">
48
+ <head>
49
+ <meta charset="UTF-8">
50
+ <title>DQM Widget - IIFE Example</title>
51
+ </head>
52
+ <body>
53
+ <h1>My Website</h1>
54
+ <p>Content to be analyzed by DQM</p>
55
+
56
+ <!-- Include the IIFE bundle -->
57
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
58
+
59
+ <script>
60
+ // Load DQM Widget
61
+ window.DQMWidget.loadDQMWidget({
62
+ config: {
63
+ websiteId: 'your-website-id',
64
+ apiKey: 'your-api-key',
65
+ }
66
+ });
67
+ </script>
68
+ </body>
69
+ </html>
70
+ ```
71
+
72
+ ### API
73
+
74
+ The IIFE bundle exposes a global `DQMWidget` object with:
75
+
76
+ ```typescript
77
+ window.DQMWidget = {
78
+ /**
79
+ * Load and initialize the DQM widget
80
+ * @param options - Widget configuration
81
+ * @returns Cleanup function to remove widget
82
+ */
83
+ loadDQMWidget(options: {
84
+ config: DQMConfig;
85
+ containerId?: string;
86
+ open?: boolean;
87
+ }): () => void;
88
+
89
+ /**
90
+ * Get current widget version
91
+ */
92
+ version: string;
93
+ }
94
+ ```
95
+
96
+ ### Full Example with AI Features
97
+
98
+ ```html
99
+ <!DOCTYPE html>
100
+ <html lang="en">
101
+ <head>
102
+ <meta charset="UTF-8">
103
+ <title>DQM Widget with AI Translation</title>
104
+ </head>
105
+ <body>
106
+ <h1>Willkommen zu meiner Website</h1>
107
+ <p>Diese Seite wird mit Crownpeak DQM überwacht.</p>
108
+
109
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
110
+
111
+ <script>
112
+ // Initialize widget with AI features
113
+ const cleanup = window.DQMWidget.loadDQMWidget({
114
+ open: true, // Auto-open sidebar
115
+ config: {
116
+ websiteId: 'your-website-id',
117
+ apiKey: 'your-dqm-api-key',
118
+
119
+ // AI Translation (API key configured via localStorage)
120
+ translation: {
121
+ enabledByDefault: true,
122
+ computeBudgetMs: 15000, // 15 seconds timeout
123
+ },
124
+
125
+ // AI Summary (API key configured via localStorage)
126
+ summary: {
127
+ timeoutMs: 30000, // 30 seconds timeout
128
+ }
129
+ }
130
+ });
131
+
132
+ // Set OpenAI API key via localStorage
133
+ localStorage.setItem('dqm_openai_apiKey', 'sk-...');
134
+ localStorage.setItem('dqm_openai_model', 'gpt-4o-mini');
135
+
136
+ // Optional: Remove widget later
137
+ // cleanup();
138
+ </script>
139
+ </body>
140
+ </html>
141
+ ```
142
+
143
+ ## ESM Bundle (ES Modules)
144
+
145
+ ### Basic Usage
146
+
147
+ ```html
148
+ <!DOCTYPE html>
149
+ <html lang="en">
150
+ <head>
151
+ <meta charset="UTF-8">
152
+ <title>DQM Widget - ESM Example</title>
153
+ </head>
154
+ <body>
155
+ <h1>My Website</h1>
156
+ <p>Content to be analyzed by DQM</p>
157
+
158
+ <script type="module">
159
+ import { loadDQMWidget } from 'https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.esm.js';
160
+
161
+ loadDQMWidget({
162
+ config: {
163
+ websiteId: 'your-website-id',
164
+ apiKey: 'your-api-key',
165
+ }
166
+ });
167
+ </script>
168
+ </body>
169
+ </html>
170
+ ```
171
+
172
+ ### With Import Maps
173
+
174
+ ```html
175
+ <!DOCTYPE html>
176
+ <html lang="en">
177
+ <head>
178
+ <meta charset="UTF-8">
179
+ <title>DQM Widget - ESM with Import Maps</title>
180
+
181
+ <!-- Define import map for cleaner imports -->
182
+ <script type="importmap">
183
+ {
184
+ "imports": {
185
+ "dqm-widget": "https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.esm.js"
186
+ }
187
+ }
188
+ </script>
189
+ </head>
190
+ <body>
191
+ <h1>My Website</h1>
192
+
193
+ <script type="module">
194
+ import { loadDQMWidget } from 'dqm-widget';
195
+
196
+ loadDQMWidget({
197
+ config: {
198
+ websiteId: 'your-website-id',
199
+ apiKey: 'your-api-key',
200
+ }
201
+ });
202
+ </script>
203
+ </body>
204
+ </html>
205
+ ```
206
+
207
+ ## Widget Loading Flow
208
+
209
+ ```mermaid
210
+ flowchart TD
211
+ A[Page Load] --> B{Widget Script Loaded?}
212
+ B -->|Yes| C[Call loadDQMWidget]
213
+ B -->|No| D[Wait for DOMContentLoaded]
214
+ D --> C
215
+
216
+ C --> E[Create Shadow DOM Container]
217
+ E --> F[Mount React App in Shadow DOM]
218
+ F --> G[Initialize DQM Sidebar Component]
219
+
220
+ G --> H{Auto-open?}
221
+ H -->|Yes| I[Open Sidebar]
222
+ H -->|No| J[Show FAB Button]
223
+
224
+ I --> K[Extract HTML from current page]
225
+ K --> L[Send to DQM API]
226
+ L --> M[Poll for Analysis Result]
227
+ M --> N{Analysis Complete?}
228
+ N -->|Yes| O[Display Results]
229
+ N -->|No| M
230
+
231
+ O --> P{AI Translation Enabled?}
232
+ P -->|Yes| Q[Translate Checkpoints]
233
+ P -->|No| R[Display Raw Results]
234
+
235
+ Q --> S{AI Summary Enabled?}
236
+ S -->|Yes| T[Generate Summary]
237
+ S -->|No| R
238
+
239
+ T --> R
240
+
241
+ J --> U[User Clicks FAB]
242
+ U --> K
243
+ ```
244
+
245
+ ## Integration Examples
246
+
247
+ ### WordPress (PHP Template)
248
+
249
+ ```php
250
+ <?php
251
+ /**
252
+ * Template Name: DQM Monitored Page
253
+ */
254
+ get_header();
255
+ ?>
256
+
257
+ <main id="primary" class="site-main">
258
+ <?php
259
+ while ( have_posts() ) :
260
+ the_post();
261
+ the_content();
262
+ endwhile;
263
+ ?>
264
+ </main>
265
+
266
+ <!-- DQM Widget -->
267
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
268
+ <script>
269
+ window.DQMWidget.loadDQMWidget({
270
+ config: {
271
+ websiteId: '<?php echo esc_js( get_option('dqm_website_id') ); ?>',
272
+ apiKey: '<?php echo esc_js( get_option('dqm_api_key') ); ?>',
273
+ }
274
+ });
275
+ </script>
276
+
277
+ <?php get_footer(); ?>
278
+ ```
279
+
280
+ ### Shopify (Liquid Template)
281
+
282
+ ```liquid
283
+ <!-- layout/theme.liquid -->
284
+ <!DOCTYPE html>
285
+ <html lang="{{ request.locale.iso_code }}">
286
+ <head>
287
+ <meta charset="utf-8">
288
+ <title>{{ page_title }}</title>
289
+ {{ content_for_header }}
290
+ </head>
291
+ <body>
292
+ {{ content_for_layout }}
293
+
294
+ <!-- DQM Widget -->
295
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
296
+ <script>
297
+ window.DQMWidget.loadDQMWidget({
298
+ config: {
299
+ websiteId: '{{ settings.dqm_website_id }}',
300
+ apiKey: '{{ settings.dqm_api_key }}',
301
+ }
302
+ });
303
+ </script>
304
+ </body>
305
+ </html>
306
+ ```
307
+
308
+ ### Drupal (Twig Template)
309
+
310
+ ```twig
311
+ {# page.html.twig #}
312
+ <div class="layout-container">
313
+ <header role="banner">
314
+ {{ page.header }}
315
+ </header>
316
+
317
+ <main role="main">
318
+ {{ page.content }}
319
+ </main>
320
+
321
+ <footer role="contentinfo">
322
+ {{ page.footer }}
323
+ </footer>
324
+ </div>
325
+
326
+ {# DQM Widget #}
327
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
328
+ <script>
329
+ window.DQMWidget.loadDQMWidget({
330
+ config: {
331
+ websiteId: '{{ drupal_variable('dqm_website_id') }}',
332
+ apiKey: '{{ drupal_variable('dqm_api_key') }}',
333
+ }
334
+ });
335
+ </script>
336
+ ```
337
+
338
+ ### Webflow (Custom Code)
339
+
340
+ ```html
341
+ <!-- Embed in Page Settings > Custom Code > Before </body> tag -->
342
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
343
+ <script>
344
+ window.DQMWidget.loadDQMWidget({
345
+ config: {
346
+ websiteId: 'your-website-id',
347
+ apiKey: 'your-api-key',
348
+ }
349
+ });
350
+ </script>
351
+ ```
352
+
353
+ ### Google Tag Manager
354
+
355
+ ```javascript
356
+ // Create new Custom HTML tag
357
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
358
+ <script>
359
+ window.DQMWidget.loadDQMWidget({
360
+ config: {
361
+ websiteId: '{{DQM Website ID}}', // GTM Variable
362
+ apiKey: '{{DQM API Key}}', // GTM Variable
363
+ }
364
+ });
365
+ </script>
366
+
367
+ // Trigger: All Pages (or specific pages)
368
+ ```
369
+
370
+ ## CMS Integrations
371
+
372
+ ### WordPress Plugin Structure
373
+
374
+ ```
375
+ dqm-widget-wordpress/
376
+ ├── dqm-widget.php # Main plugin file
377
+ ├── admin/
378
+ │ └── settings.php # Admin settings page
379
+ └── public/
380
+ └── widget-loader.php # Frontend widget loader
381
+ ```
382
+
383
+ **dqm-widget.php:**
384
+ ```php
385
+ <?php
386
+ /**
387
+ * Plugin Name: Crownpeak DQM Widget
388
+ * Description: Adds Crownpeak Digital Quality Management to your WordPress site
389
+ * Version: 1.2.0
390
+ * Author: Crownpeak
391
+ */
392
+
393
+ // Admin settings
394
+ require_once plugin_dir_path(__FILE__) . 'admin/settings.php';
395
+
396
+ // Frontend loader
397
+ require_once plugin_dir_path(__FILE__) . 'public/widget-loader.php';
398
+
399
+ function dqm_enqueue_widget() {
400
+ if (!is_admin()) {
401
+ wp_enqueue_script(
402
+ 'dqm-widget',
403
+ 'https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js',
404
+ array(),
405
+ '1.1.0',
406
+ true
407
+ );
408
+
409
+ wp_add_inline_script('dqm-widget', sprintf(
410
+ 'window.DQMWidget.loadDQMWidget({config:{websiteId:"%s",apiKey:"%s"}});',
411
+ esc_js(get_option('dqm_website_id')),
412
+ esc_js(get_option('dqm_api_key'))
413
+ ));
414
+ }
415
+ }
416
+ add_action('wp_enqueue_scripts', 'dqm_enqueue_widget');
417
+ ```
418
+
419
+ ### Shopify App Structure
420
+
421
+ ```
422
+ dqm-widget-shopify/
423
+ ├── app.js # Node.js server
424
+ ├── package.json
425
+ ├── extensions/
426
+ │ └── theme-app-extension/
427
+ │ ├── blocks/
428
+ │ │ └── dqm-widget.liquid
429
+ │ └── locales/
430
+ │ └── en.default.json
431
+ ```
432
+
433
+ **blocks/dqm-widget.liquid:**
434
+ ```liquid
435
+ {% schema %}
436
+ {
437
+ "name": "DQM Widget",
438
+ "target": "section",
439
+ "settings": [
440
+ {
441
+ "type": "text",
442
+ "id": "website_id",
443
+ "label": "DQM Website ID"
444
+ },
445
+ {
446
+ "type": "text",
447
+ "id": "api_key",
448
+ "label": "DQM API Key"
449
+ }
450
+ ]
451
+ }
452
+ {% endschema %}
453
+
454
+ <script src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
455
+ <script>
456
+ window.DQMWidget.loadDQMWidget({
457
+ config: {
458
+ websiteId: '{{ block.settings.website_id }}',
459
+ apiKey: '{{ block.settings.api_key }}',
460
+ }
461
+ });
462
+ </script>
463
+ ```
464
+
465
+ ## Configuration
466
+
467
+ ### Full Configuration Object
468
+
469
+ ```typescript
470
+ interface DQMConfig {
471
+ // Authentication (required)
472
+ websiteId: string;
473
+ apiKey: string;
474
+
475
+ // Overlay Detection (optional)
476
+ overlayConfig?: {
477
+ selector?: string;
478
+ validateIframe?: boolean;
479
+ pollMs?: number;
480
+ manualOffset?: {
481
+ position: 'top' | 'bottom' | 'left' | 'right';
482
+ pixels: number;
483
+ };
484
+ };
485
+
486
+ // AI Translation (optional)
487
+ // Note: OpenAI API key is configured via localStorage (dqm_openai_apiKey)
488
+ translation?: {
489
+ enabledByDefault?: boolean; // Enable translation by default
490
+ computeBudgetMs?: number; // Timeout in ms (default: 15000 for fast mode)
491
+ };
492
+
493
+ // AI Summary (optional)
494
+ // Note: OpenAI API key is configured via localStorage (dqm_openai_apiKey)
495
+ summary?: {
496
+ timeoutMs?: number; // Timeout in ms (default: 30000)
497
+ };
498
+ }
499
+ ```
500
+
501
+ ### Environment-Specific Configuration
502
+
503
+ ```javascript
504
+ // Configure OpenAI API key via localStorage
505
+ localStorage.setItem('dqm_openai_apiKey', 'sk-...');
506
+ localStorage.setItem('dqm_openai_model', 'gpt-4o-mini');
507
+ localStorage.setItem('dqm_target_language', 'de');
508
+
509
+ // Development
510
+ window.DQMWidget.loadDQMWidget({
511
+ config: {
512
+ websiteId: 'dev-website-id',
513
+ apiKey: 'dev-api-key',
514
+ translation: {
515
+ enabledByDefault: true,
516
+ computeBudgetMs: 30000, // 30s for full mode
517
+ }
518
+ }
519
+ });
520
+
521
+ // Production
522
+ window.DQMWidget.loadDQMWidget({
523
+ config: {
524
+ websiteId: 'prod-website-id',
525
+ apiKey: 'prod-api-key',
526
+ translation: {
527
+ enabledByDefault: true,
528
+ computeBudgetMs: 15000, // 15s for fast mode
529
+ },
530
+ summary: {
531
+ timeoutMs: 30000,
532
+ }
533
+ }
534
+ });
535
+ ```
536
+
537
+ ## Troubleshooting
538
+
539
+ ### Widget Not Loading
540
+
541
+ **Symptom:** Nothing appears on the page after script inclusion.
542
+
543
+ **Solutions:**
544
+ 1. Check browser console for errors
545
+ 2. Verify script URL is correct and accessible
546
+ 3. Ensure script is loaded after `<body>` tag
547
+ 4. Check if Content Security Policy (CSP) blocks script
548
+
549
+ ```html
550
+ <!-- Add to <head> if CSP is blocking -->
551
+ <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://unpkg.com;">
552
+ ```
553
+
554
+ ### Shadow DOM Conflicts
555
+
556
+ **Symptom:** Widget styles broken or invisible.
557
+
558
+ **Solutions:**
559
+ 1. Ensure no global CSS resets affect Shadow DOM
560
+ 2. Check if page uses `::slotted()` selectors that interfere
561
+ 3. Verify no JavaScript tries to access widget internals
562
+
563
+ ```javascript
564
+ // DON'T: Access Shadow DOM internals
565
+ const widgetHost = document.querySelector('#dqm-widget-host');
566
+ const shadowRoot = widgetHost.shadowRoot; // May be null or closed
567
+
568
+ // DO: Use widget API only
569
+ window.DQMWidget.loadDQMWidget({ /* config */ });
570
+ ```
571
+
572
+ ### CORS Errors
573
+
574
+ **Symptom:** `Access-Control-Allow-Origin` errors in console.
575
+
576
+ **Solutions:**
577
+ 1. Use CDN URL (unpkg.com) instead of local file
578
+ 2. Host bundle on same domain as page
579
+ 3. Configure server CORS headers if self-hosting
580
+
581
+ ```nginx
582
+ # nginx configuration for self-hosting
583
+ location /dqm-widget.iife.js {
584
+ add_header Access-Control-Allow-Origin *;
585
+ add_header Access-Control-Allow-Methods "GET, OPTIONS";
586
+ }
587
+ ```
588
+
589
+ ### Performance Issues
590
+
591
+ **Symptom:** Widget loads slowly or blocks page rendering.
592
+
593
+ **Solutions:**
594
+ 1. Load script with `defer` or `async` attribute
595
+ 2. Use ESM bundle for better tree-shaking
596
+ 3. Consider lazy-loading widget on user interaction
597
+
598
+ ```html
599
+ <!-- Defer script loading -->
600
+ <script defer src="https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js"></script>
601
+
602
+ <!-- Or load on user click -->
603
+ <button id="load-dqm">Analyze Page Quality</button>
604
+ <script>
605
+ document.getElementById('load-dqm').addEventListener('click', () => {
606
+ const script = document.createElement('script');
607
+ script.src = 'https://unpkg.com/@crownpeak/dqm-react-component/dist/dqm-widget.iife.js';
608
+ script.onload = () => {
609
+ window.DQMWidget.loadDQMWidget({ config: { /* ... */ } });
610
+ };
611
+ document.body.appendChild(script);
612
+ });
613
+ </script>
614
+ ```
615
+
616
+ ### AI Features Not Working
617
+
618
+ **Symptom:** Translation or summary not appearing.
619
+
620
+ **Solutions:**
621
+ 1. Check OpenAI API key is valid
622
+ 2. Check browser console for AI-related errors
623
+ 3. Ensure localStorage keys are set correctly
624
+
625
+ ```javascript
626
+ // Debug AI configuration
627
+ console.log('Translation Enabled:', localStorage.getItem('dqm_translate_results_enabled'));
628
+ console.log('OpenAI API Key Set:', !!localStorage.getItem('dqm_openai_apiKey'));
629
+ console.log('Target Language:', localStorage.getItem('dqm_target_language'));
630
+ console.log('Summary Enabled:', localStorage.getItem('dqm_ai_summary_enabled'));
631
+ ```
632
+
633
+ ## See Also
634
+
635
+ - **[Examples](./EXAMPLES.md)** - React component examples
636
+ - **[AI Features Guide](./AI-FEATURES.md)** - AI translation and summary documentation
637
+ - **[Troubleshooting](./TROUBLESHOOTING.md)** - Common issues and solutions
638
+ - **[API Reference](./API-REFERENCE.md)** - Full TypeScript API documentation
@@ -0,0 +1,58 @@
1
+ # Crownpeak DQM React Component - Documentation Wiki
2
+
3
+ Welcome to the complete documentation for `@crownpeak/dqm-react-component`.
4
+
5
+ ## Quick Links
6
+
7
+ - 📚 **[Quick Start Guide](Quick-Start-Guide)** - Get started in 5 minutes
8
+ - 🤖 **[AI Features Guide](AI-Features-Guide)** - Translation & Summary with OpenAI
9
+ - 📖 **[Example Usage](Example-Usage)** - Integration examples
10
+ - 🔧 **[API Reference](API-Reference)** - Full TypeScript API
11
+
12
+ ## What is DQM?
13
+
14
+ Crownpeak Digital Quality Management (DQM) provides automated quality analysis for web pages, including accessibility violations, SEO issues, mobile responsiveness, design consistency, and performance metrics.
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ npm install @crownpeak/dqm-react-component
20
+ ```
21
+
22
+ ## Basic Example
23
+
24
+ ```typescript
25
+ import React, { useState } from 'react';
26
+ import { DQMSidebar } from '@crownpeak/dqm-react-component';
27
+
28
+ function App() {
29
+ const [open, setOpen] = useState(false);
30
+
31
+ return (
32
+ <DQMSidebar
33
+ open={open}
34
+ onClose={() => setOpen(false)}
35
+ onOpen={() => setOpen(true)}
36
+ config={{
37
+ websiteId: 'your-website-id',
38
+ apiKey: 'your-api-key',
39
+ }}
40
+ />
41
+ );
42
+ }
43
+ ```
44
+
45
+ See **[Quick Start Guide](Quick-Start-Guide)** for detailed setup.
46
+
47
+ ## Documentation Sections
48
+
49
+ Use the sidebar (→) to navigate, or explore:
50
+
51
+ - **[Quick Start Guide](Quick-Start-Guide)** - Installation and setup
52
+ - **[Example Usage](Example-Usage)** - React, Next.js, TypeScript examples
53
+ - **[Authentication Configuration](Authentication-Configuration)** - API keys, backend proxy
54
+ - **[AI Features Guide](AI-Features-Guide)** - Translation & summary generation
55
+ - **[Widget Bundle Guide](Widget-Bundle-Guide)** - Standalone IIFE/ESM bundles
56
+ - **[API Reference](API-Reference)** - Complete TypeScript API
57
+ - **[Troubleshooting Guide](Troubleshooting-Guide)** - Common issues and solutions
58
+ - **[Development Guide](Development-Guide)** - Contributing guide