dominds 1.2.5 → 1.2.7

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 (149) hide show
  1. package/dist/agent-priming.js +2051 -0
  2. package/dist/apps/app-lock-file.js +228 -0
  3. package/dist/apps/assigned-port.js +124 -0
  4. package/dist/apps/enabled-apps.js +472 -7
  5. package/dist/apps/manifest.js +37 -0
  6. package/dist/apps/override-paths.js +19 -6
  7. package/dist/apps/problems.js +43 -0
  8. package/dist/apps/resolution-file.js +370 -0
  9. package/dist/apps/runtime.js +5 -17
  10. package/dist/apps/teammates.js +102 -1
  11. package/dist/cli/disable.js +10 -6
  12. package/dist/cli/enable.js +21 -19
  13. package/dist/cli/install.js +40 -18
  14. package/dist/cli/uninstall.js +6 -6
  15. package/dist/cli/update.js +38 -13
  16. package/dist/dialog.js +5 -0
  17. package/dist/docs/app-constitution.md +85 -18
  18. package/dist/docs/app-constitution.zh.md +86 -21
  19. package/dist/docs/dialog-system.md +1 -1
  20. package/dist/docs/dialog-system.zh.md +1 -1
  21. package/dist/docs/dominds-agent-priming.md +218 -0
  22. package/dist/docs/dominds-agent-priming.zh.md +196 -0
  23. package/dist/docs/drive-logic-context-refactor-plan.zh.md +338 -0
  24. package/dist/docs/keep-going.md +176 -0
  25. package/dist/docs/keep-going.zh.md +162 -0
  26. package/dist/docs/showing-by-doing.md +208 -0
  27. package/dist/docs/showing-by-doing.zh.md +177 -0
  28. package/dist/docs/team-mgmt-toolset.md +482 -0
  29. package/dist/docs/team-mgmt-toolset.zh.md +426 -0
  30. package/dist/llm/defaults.yaml +1 -1
  31. package/dist/llm/driver.js +4093 -0
  32. package/dist/llm/kernel-driver/drive.js +5 -2
  33. package/dist/llm/kernel-driver/flow.js +3 -0
  34. package/dist/minds/promptdocs.js +263 -0
  35. package/dist/problems.js +67 -16
  36. package/dist/server/api-routes.js +333 -0
  37. package/dist/server/prompts-routes.js +545 -0
  38. package/dist/server/server-core.js +4 -0
  39. package/dist/server/websocket-handler.js +17 -0
  40. package/dist/shared/team-mgmt-manual.js +120 -0
  41. package/dist/shared/types/prompts.js +2 -0
  42. package/dist/shared/types/tellask.js +8 -0
  43. package/dist/showing-by-doing.js +1091 -0
  44. package/dist/snippets/README.en.md +3 -0
  45. package/dist/snippets/README.md +4 -0
  46. package/dist/static/assets/{_basePickBy-CF9r08iy.js → _basePickBy-BMCtwrV7.js} +3 -3
  47. package/dist/static/assets/{_basePickBy-CF9r08iy.js.map → _basePickBy-BMCtwrV7.js.map} +1 -1
  48. package/dist/static/assets/{_baseUniq-CxKv0cd4.js → _baseUniq-BuyCgJiA.js} +2 -2
  49. package/dist/static/assets/{_baseUniq-CxKv0cd4.js.map → _baseUniq-BuyCgJiA.js.map} +1 -1
  50. package/dist/static/assets/{arc-C9JyvnlB.js → arc-BDuN8lwA.js} +2 -2
  51. package/dist/static/assets/{arc-C9JyvnlB.js.map → arc-BDuN8lwA.js.map} +1 -1
  52. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js → architectureDiagram-VXUJARFQ-C-ekqGAD.js} +7 -7
  53. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js.map → architectureDiagram-VXUJARFQ-C-ekqGAD.js.map} +1 -1
  54. package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js → blockDiagram-VD42YOAC-CgQiNuuQ.js} +7 -7
  55. package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js.map → blockDiagram-VD42YOAC-CgQiNuuQ.js.map} +1 -1
  56. package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js → c4Diagram-YG6GDRKO-DONC39q-.js} +3 -3
  57. package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js.map → c4Diagram-YG6GDRKO-DONC39q-.js.map} +1 -1
  58. package/dist/static/assets/{channel-B4KzL0Kg.js → channel-CJTFwXIG.js} +2 -2
  59. package/dist/static/assets/{channel-B4KzL0Kg.js.map → channel-CJTFwXIG.js.map} +1 -1
  60. package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js → chunk-4BX2VUAB-NaIy4uLJ.js} +2 -2
  61. package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js.map → chunk-4BX2VUAB-NaIy4uLJ.js.map} +1 -1
  62. package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js → chunk-55IACEB6-JUKI_Ayx.js} +2 -2
  63. package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js.map → chunk-55IACEB6-JUKI_Ayx.js.map} +1 -1
  64. package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js → chunk-B4BG7PRW-dIswFJDn.js} +5 -5
  65. package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js.map → chunk-B4BG7PRW-dIswFJDn.js.map} +1 -1
  66. package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js → chunk-DI55MBZ5-DU2b_N30.js} +4 -4
  67. package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js.map → chunk-DI55MBZ5-DU2b_N30.js.map} +1 -1
  68. package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js → chunk-FMBD7UC4-BgExcScw.js} +2 -2
  69. package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js.map → chunk-FMBD7UC4-BgExcScw.js.map} +1 -1
  70. package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js → chunk-QN33PNHL-bitxyqh7.js} +2 -2
  71. package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js.map → chunk-QN33PNHL-bitxyqh7.js.map} +1 -1
  72. package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js → chunk-QZHKN3VN-Cor8u7DT.js} +2 -2
  73. package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js.map → chunk-QZHKN3VN-Cor8u7DT.js.map} +1 -1
  74. package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js → chunk-TZMSLE5B-Aceoxav_.js} +2 -2
  75. package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js.map → chunk-TZMSLE5B-Aceoxav_.js.map} +1 -1
  76. package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js → classDiagram-2ON5EDUG-D1Q6a8Hg.js} +6 -6
  77. package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js.map → classDiagram-2ON5EDUG-D1Q6a8Hg.js.map} +1 -1
  78. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js} +6 -6
  79. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js.map → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js.map} +1 -1
  80. package/dist/static/assets/{clone-C-JULvnG.js → clone-MlWbv1V0.js} +2 -2
  81. package/dist/static/assets/{clone-C-JULvnG.js.map → clone-MlWbv1V0.js.map} +1 -1
  82. package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js → cose-bilkent-S5V4N54A-DWPCXSrn.js} +2 -2
  83. package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js.map → cose-bilkent-S5V4N54A-DWPCXSrn.js.map} +1 -1
  84. package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js → dagre-6UL2VRFP-C8ptQ9V3.js} +7 -7
  85. package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js.map → dagre-6UL2VRFP-C8ptQ9V3.js.map} +1 -1
  86. package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js → diagram-PSM6KHXK-Bgf1FqkE.js} +8 -8
  87. package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js.map → diagram-PSM6KHXK-Bgf1FqkE.js.map} +1 -1
  88. package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js → diagram-QEK2KX5R-BZ5xzofU.js} +7 -7
  89. package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js.map → diagram-QEK2KX5R-BZ5xzofU.js.map} +1 -1
  90. package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js → diagram-S2PKOQOG-Dwp47T9I.js} +7 -7
  91. package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js.map → diagram-S2PKOQOG-Dwp47T9I.js.map} +1 -1
  92. package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js → erDiagram-Q2GNP2WA-Cx4weIHl.js} +5 -5
  93. package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js.map → erDiagram-Q2GNP2WA-Cx4weIHl.js.map} +1 -1
  94. package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js → flowDiagram-NV44I4VS-vNUuIeRk.js} +6 -6
  95. package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js.map → flowDiagram-NV44I4VS-vNUuIeRk.js.map} +1 -1
  96. package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js → ganttDiagram-JELNMOA3-BEfozJAr.js} +3 -3
  97. package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js.map → ganttDiagram-JELNMOA3-BEfozJAr.js.map} +1 -1
  98. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js} +8 -8
  99. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js.map → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js.map} +1 -1
  100. package/dist/static/assets/{graph-DwrKSIE7.js → graph-C6a6uAok.js} +3 -3
  101. package/dist/static/assets/{graph-DwrKSIE7.js.map → graph-C6a6uAok.js.map} +1 -1
  102. package/dist/static/assets/{index-HWTRvE2k.js → index-D3TQbAKh.js} +383 -59
  103. package/dist/static/assets/index-D3TQbAKh.js.map +1 -0
  104. package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js → infoDiagram-HS3SLOUP-CX0NiId3.js} +6 -6
  105. package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js.map → infoDiagram-HS3SLOUP-CX0NiId3.js.map} +1 -1
  106. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js → journeyDiagram-XKPGCS4Q-C1IepPZ-.js} +5 -5
  107. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js.map → journeyDiagram-XKPGCS4Q-C1IepPZ-.js.map} +1 -1
  108. package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js → kanban-definition-3W4ZIXB7-uMNX4Z1W.js} +3 -3
  109. package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js.map → kanban-definition-3W4ZIXB7-uMNX4Z1W.js.map} +1 -1
  110. package/dist/static/assets/{layout-D6uIxu1E.js → layout-CpE3kk5z.js} +5 -5
  111. package/dist/static/assets/{layout-D6uIxu1E.js.map → layout-CpE3kk5z.js.map} +1 -1
  112. package/dist/static/assets/{linear-CvBOGQA2.js → linear-DV8laXr9.js} +2 -2
  113. package/dist/static/assets/{linear-CvBOGQA2.js.map → linear-DV8laXr9.js.map} +1 -1
  114. package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js → mindmap-definition-VGOIOE7T-CKjgVM9S.js} +4 -4
  115. package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js.map → mindmap-definition-VGOIOE7T-CKjgVM9S.js.map} +1 -1
  116. package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js → pieDiagram-ADFJNKIX-BBonlNyT.js} +8 -8
  117. package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js.map → pieDiagram-ADFJNKIX-BBonlNyT.js.map} +1 -1
  118. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js → quadrantDiagram-AYHSOK5B-BTI8HbBu.js} +3 -3
  119. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js.map → quadrantDiagram-AYHSOK5B-BTI8HbBu.js.map} +1 -1
  120. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js} +4 -4
  121. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js.map → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js.map} +1 -1
  122. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js → sankeyDiagram-TZEHDZUN-DibLVGzg.js} +2 -2
  123. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js.map → sankeyDiagram-TZEHDZUN-DibLVGzg.js.map} +1 -1
  124. package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js → sequenceDiagram-WL72ISMW-qXatfzVt.js} +4 -4
  125. package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js.map → sequenceDiagram-WL72ISMW-qXatfzVt.js.map} +1 -1
  126. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js → stateDiagram-FKZM4ZOC-7fgxCQHo.js} +9 -9
  127. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js.map → stateDiagram-FKZM4ZOC-7fgxCQHo.js.map} +1 -1
  128. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js} +5 -5
  129. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js.map → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js.map} +1 -1
  130. package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js → timeline-definition-IT6M3QCI-iX2MRdpY.js} +3 -3
  131. package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js.map → timeline-definition-IT6M3QCI-iX2MRdpY.js.map} +1 -1
  132. package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js → treemap-GDKQZRPO-AVRnyXu1.js} +5 -5
  133. package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js.map → treemap-GDKQZRPO-AVRnyXu1.js.map} +1 -1
  134. package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js → xychartDiagram-PRI3JC2R-DVYEo5aJ.js} +3 -3
  135. package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js.map → xychartDiagram-PRI3JC2R-DVYEo5aJ.js.map} +1 -1
  136. package/dist/static/index.html +1 -1
  137. package/dist/team.js +52 -48
  138. package/dist/tellask.js +439 -0
  139. package/dist/tools/context-health.js +177 -0
  140. package/dist/tools/diag.js +583 -0
  141. package/dist/tools/fs.js +194 -68
  142. package/dist/tools/prompts/memory/en/principles.md +13 -5
  143. package/dist/tools/prompts/memory/en/tools.md +11 -36
  144. package/dist/tools/prompts/memory/zh/principles.md +18 -8
  145. package/dist/tools/prompts/memory/zh/tools.md +11 -36
  146. package/dist/tools/team-mgmt.js +3487 -0
  147. package/dist/utils/task-doc.js +236 -0
  148. package/package.json +1 -1
  149. package/dist/static/assets/index-HWTRvE2k.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-bhGzX6kO.js","assets/graph-DwrKSIE7.js","assets/_baseUniq-CxKv0cd4.js","assets/layout-D6uIxu1E.js","assets/_basePickBy-CF9r08iy.js","assets/clone-C-JULvnG.js","assets/cose-bilkent-S5V4N54A-vXCmi_eC.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-D49MGNdF.js","assets/chunk-TZMSLE5B-Bcuvqo45.js","assets/flowDiagram-NV44I4VS-aBmNMuQ0.js","assets/chunk-FMBD7UC4-DAjkhhUU.js","assets/chunk-55IACEB6-Dnl2HDTZ.js","assets/chunk-QN33PNHL-CK6TY7IE.js","assets/channel-B4KzL0Kg.js","assets/erDiagram-Q2GNP2WA-S3hR85On.js","assets/gitGraphDiagram-V2S2FVAM-DEOBCM0G.js","assets/chunk-4BX2VUAB-0F-1ayl0.js","assets/chunk-QZHKN3VN-CketngiE.js","assets/treemap-GDKQZRPO-BoOzOm2j.js","assets/ganttDiagram-JELNMOA3-DJxXaiW1.js","assets/linear-CvBOGQA2.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-BH9kVuYd.js","assets/pieDiagram-ADFJNKIX-CdVZjM8g.js","assets/arc-C9JyvnlB.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-A6m5lZKd.js","assets/xychartDiagram-PRI3JC2R-C_h3_ICR.js","assets/requirementDiagram-UZGBJVZJ-Cac3zSJH.js","assets/sequenceDiagram-WL72ISMW-Domsjl5Y.js","assets/classDiagram-2ON5EDUG-CaP4T3r4.js","assets/chunk-B4BG7PRW-Bhx5RbkQ.js","assets/classDiagram-v2-WZHVMYZB-CaP4T3r4.js","assets/stateDiagram-FKZM4ZOC-Bu0lRQK1.js","assets/chunk-DI55MBZ5-EYd1wL3E.js","assets/stateDiagram-v2-4FDKWEC3-D0K-n3ic.js","assets/journeyDiagram-XKPGCS4Q-Dap7AcjR.js","assets/timeline-definition-IT6M3QCI-BGvpddwR.js","assets/mindmap-definition-VGOIOE7T-ugsrLNY5.js","assets/kanban-definition-3W4ZIXB7-4NOl8MEj.js","assets/sankeyDiagram-TZEHDZUN-DXDdUUl1.js","assets/diagram-S2PKOQOG-CjxkLHWG.js","assets/diagram-QEK2KX5R-DYlq3uFq.js","assets/blockDiagram-VD42YOAC-BA9vtmm7.js","assets/architectureDiagram-VXUJARFQ-CpcUgjHf.js","assets/diagram-PSM6KHXK-BUKfmfGk.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-C8ptQ9V3.js","assets/graph-C6a6uAok.js","assets/_baseUniq-BuyCgJiA.js","assets/layout-CpE3kk5z.js","assets/_basePickBy-BMCtwrV7.js","assets/clone-MlWbv1V0.js","assets/cose-bilkent-S5V4N54A-DWPCXSrn.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-DONC39q-.js","assets/chunk-TZMSLE5B-Aceoxav_.js","assets/flowDiagram-NV44I4VS-vNUuIeRk.js","assets/chunk-FMBD7UC4-BgExcScw.js","assets/chunk-55IACEB6-JUKI_Ayx.js","assets/chunk-QN33PNHL-bitxyqh7.js","assets/channel-CJTFwXIG.js","assets/erDiagram-Q2GNP2WA-Cx4weIHl.js","assets/gitGraphDiagram-V2S2FVAM-eHxwc3d9.js","assets/chunk-4BX2VUAB-NaIy4uLJ.js","assets/chunk-QZHKN3VN-Cor8u7DT.js","assets/treemap-GDKQZRPO-AVRnyXu1.js","assets/ganttDiagram-JELNMOA3-BEfozJAr.js","assets/linear-DV8laXr9.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-CX0NiId3.js","assets/pieDiagram-ADFJNKIX-BBonlNyT.js","assets/arc-BDuN8lwA.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-BTI8HbBu.js","assets/xychartDiagram-PRI3JC2R-DVYEo5aJ.js","assets/requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js","assets/sequenceDiagram-WL72ISMW-qXatfzVt.js","assets/classDiagram-2ON5EDUG-D1Q6a8Hg.js","assets/chunk-B4BG7PRW-dIswFJDn.js","assets/classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js","assets/stateDiagram-FKZM4ZOC-7fgxCQHo.js","assets/chunk-DI55MBZ5-DU2b_N30.js","assets/stateDiagram-v2-4FDKWEC3-DcWlOAnF.js","assets/journeyDiagram-XKPGCS4Q-C1IepPZ-.js","assets/timeline-definition-IT6M3QCI-iX2MRdpY.js","assets/mindmap-definition-VGOIOE7T-CKjgVM9S.js","assets/kanban-definition-3W4ZIXB7-uMNX4Z1W.js","assets/sankeyDiagram-TZEHDZUN-DibLVGzg.js","assets/diagram-S2PKOQOG-Dwp47T9I.js","assets/diagram-QEK2KX5R-BZ5xzofU.js","assets/blockDiagram-VD42YOAC-CgQiNuuQ.js","assets/architectureDiagram-VXUJARFQ-C-ekqGAD.js","assets/diagram-PSM6KHXK-Bgf1FqkE.js"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -68,6 +68,10 @@ function getUiStrings(language) {
68
68
  problemsButtonTitle: "问题(Problems)",
69
69
  problemsTitle: "问题",
70
70
  problemsEmpty: "暂无问题",
71
+ problemsClearResolvedTitle: "清理已解决问题",
72
+ problemsClearResolvedDonePrefix: "已清理已解决问题数量:",
73
+ problemsResolvedBadge: "已解决",
74
+ problemsActiveBadge: "进行中",
71
75
  activityBarAriaLabel: "活动栏",
72
76
  activityRunning: "运行中",
73
77
  activityDone: "已完成",
@@ -384,6 +388,10 @@ function getUiStrings(language) {
384
388
  problemsButtonTitle: "Problems",
385
389
  problemsTitle: "Problems",
386
390
  problemsEmpty: "No problems",
391
+ problemsClearResolvedTitle: "Clear resolved problems",
392
+ problemsClearResolvedDonePrefix: "Cleared resolved problems: ",
393
+ problemsResolvedBadge: "Resolved",
394
+ problemsActiveBadge: "Active",
387
395
  activityBarAriaLabel: "Activity Bar",
388
396
  activityRunning: "Running",
389
397
  activityDone: "Done",
@@ -97380,12 +97388,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
97380
97388
  registerLayoutLoaders([
97381
97389
  {
97382
97390
  name: "dagre",
97383
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-bhGzX6kO.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97391
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-C8ptQ9V3.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97384
97392
  },
97385
97393
  ...[
97386
97394
  {
97387
97395
  name: "cose-bilkent",
97388
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-vXCmi_eC.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97396
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-DWPCXSrn.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97389
97397
  }
97390
97398
  ]
97391
97399
  ]);
@@ -97825,7 +97833,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
97825
97833
  }, "detector");
97826
97834
  var loader = /* @__PURE__ */ __name(async () => {
97827
97835
  const { diagram: diagram2 } = await __vitePreload(async () => {
97828
- const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-D49MGNdF.js");
97836
+ const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-DONC39q-.js");
97829
97837
  return { diagram: diagram22 };
97830
97838
  }, true ? __vite__mapDeps([8,9]) : void 0);
97831
97839
  return { id, diagram: diagram2 };
@@ -97845,7 +97853,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
97845
97853
  }, "detector");
97846
97854
  var loader2 = /* @__PURE__ */ __name(async () => {
97847
97855
  const { diagram: diagram2 } = await __vitePreload(async () => {
97848
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-aBmNMuQ0.js");
97856
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-vNUuIeRk.js");
97849
97857
  return { diagram: diagram22 };
97850
97858
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97851
97859
  return { id: id2, diagram: diagram2 };
@@ -97871,7 +97879,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
97871
97879
  }, "detector");
97872
97880
  var loader3 = /* @__PURE__ */ __name(async () => {
97873
97881
  const { diagram: diagram2 } = await __vitePreload(async () => {
97874
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-aBmNMuQ0.js");
97882
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-vNUuIeRk.js");
97875
97883
  return { diagram: diagram22 };
97876
97884
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97877
97885
  return { id: id3, diagram: diagram2 };
@@ -97888,7 +97896,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
97888
97896
  }, "detector");
97889
97897
  var loader4 = /* @__PURE__ */ __name(async () => {
97890
97898
  const { diagram: diagram2 } = await __vitePreload(async () => {
97891
- const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-S3hR85On.js");
97899
+ const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-Cx4weIHl.js");
97892
97900
  return { diagram: diagram22 };
97893
97901
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
97894
97902
  return { id: id4, diagram: diagram2 };
@@ -97905,7 +97913,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
97905
97913
  }, "detector");
97906
97914
  var loader5 = /* @__PURE__ */ __name(async () => {
97907
97915
  const { diagram: diagram2 } = await __vitePreload(async () => {
97908
- const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-DEOBCM0G.js");
97916
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-eHxwc3d9.js");
97909
97917
  return { diagram: diagram22 };
97910
97918
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
97911
97919
  return { id: id5, diagram: diagram2 };
@@ -97922,7 +97930,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
97922
97930
  }, "detector");
97923
97931
  var loader6 = /* @__PURE__ */ __name(async () => {
97924
97932
  const { diagram: diagram2 } = await __vitePreload(async () => {
97925
- const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-DJxXaiW1.js");
97933
+ const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-BEfozJAr.js");
97926
97934
  return { diagram: diagram22 };
97927
97935
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
97928
97936
  return { id: id6, diagram: diagram2 };
@@ -97939,7 +97947,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
97939
97947
  }, "detector");
97940
97948
  var loader7 = /* @__PURE__ */ __name(async () => {
97941
97949
  const { diagram: diagram2 } = await __vitePreload(async () => {
97942
- const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-BH9kVuYd.js");
97950
+ const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-CX0NiId3.js");
97943
97951
  return { diagram: diagram22 };
97944
97952
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
97945
97953
  return { id: id7, diagram: diagram2 };
@@ -97955,7 +97963,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
97955
97963
  }, "detector");
97956
97964
  var loader8 = /* @__PURE__ */ __name(async () => {
97957
97965
  const { diagram: diagram2 } = await __vitePreload(async () => {
97958
- const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-CdVZjM8g.js");
97966
+ const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-BBonlNyT.js");
97959
97967
  return { diagram: diagram22 };
97960
97968
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
97961
97969
  return { id: id8, diagram: diagram2 };
@@ -97971,7 +97979,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
97971
97979
  }, "detector");
97972
97980
  var loader9 = /* @__PURE__ */ __name(async () => {
97973
97981
  const { diagram: diagram2 } = await __vitePreload(async () => {
97974
- const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-A6m5lZKd.js");
97982
+ const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-BTI8HbBu.js");
97975
97983
  return { diagram: diagram22 };
97976
97984
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
97977
97985
  return { id: id9, diagram: diagram2 };
@@ -97988,7 +97996,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
97988
97996
  }, "detector");
97989
97997
  var loader10 = /* @__PURE__ */ __name(async () => {
97990
97998
  const { diagram: diagram2 } = await __vitePreload(async () => {
97991
- const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-C_h3_ICR.js");
97999
+ const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-DVYEo5aJ.js");
97992
98000
  return { diagram: diagram22 };
97993
98001
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
97994
98002
  return { id: id10, diagram: diagram2 };
@@ -98005,7 +98013,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
98005
98013
  }, "detector");
98006
98014
  var loader11 = /* @__PURE__ */ __name(async () => {
98007
98015
  const { diagram: diagram2 } = await __vitePreload(async () => {
98008
- const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-Cac3zSJH.js");
98016
+ const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js");
98009
98017
  return { diagram: diagram22 };
98010
98018
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
98011
98019
  return { id: id11, diagram: diagram2 };
@@ -98022,7 +98030,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
98022
98030
  }, "detector");
98023
98031
  var loader12 = /* @__PURE__ */ __name(async () => {
98024
98032
  const { diagram: diagram2 } = await __vitePreload(async () => {
98025
- const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-Domsjl5Y.js");
98033
+ const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-qXatfzVt.js");
98026
98034
  return { diagram: diagram22 };
98027
98035
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
98028
98036
  return { id: id12, diagram: diagram2 };
@@ -98042,7 +98050,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
98042
98050
  }, "detector");
98043
98051
  var loader13 = /* @__PURE__ */ __name(async () => {
98044
98052
  const { diagram: diagram2 } = await __vitePreload(async () => {
98045
- const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-CaP4T3r4.js");
98053
+ const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-D1Q6a8Hg.js");
98046
98054
  return { diagram: diagram22 };
98047
98055
  }, true ? __vite__mapDeps([32,33,11,12,13]) : void 0);
98048
98056
  return { id: id13, diagram: diagram2 };
@@ -98062,7 +98070,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
98062
98070
  }, "detector");
98063
98071
  var loader14 = /* @__PURE__ */ __name(async () => {
98064
98072
  const { diagram: diagram2 } = await __vitePreload(async () => {
98065
- const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-CaP4T3r4.js");
98073
+ const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js");
98066
98074
  return { diagram: diagram22 };
98067
98075
  }, true ? __vite__mapDeps([34,33,11,12,13]) : void 0);
98068
98076
  return { id: id14, diagram: diagram2 };
@@ -98082,7 +98090,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
98082
98090
  }, "detector");
98083
98091
  var loader15 = /* @__PURE__ */ __name(async () => {
98084
98092
  const { diagram: diagram2 } = await __vitePreload(async () => {
98085
- const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-Bu0lRQK1.js");
98093
+ const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-7fgxCQHo.js");
98086
98094
  return { diagram: diagram22 };
98087
98095
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
98088
98096
  return { id: id15, diagram: diagram2 };
@@ -98105,7 +98113,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
98105
98113
  }, "detector");
98106
98114
  var loader16 = /* @__PURE__ */ __name(async () => {
98107
98115
  const { diagram: diagram2 } = await __vitePreload(async () => {
98108
- const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-D0K-n3ic.js");
98116
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-DcWlOAnF.js");
98109
98117
  return { diagram: diagram22 };
98110
98118
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
98111
98119
  return { id: id16, diagram: diagram2 };
@@ -98122,7 +98130,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
98122
98130
  }, "detector");
98123
98131
  var loader17 = /* @__PURE__ */ __name(async () => {
98124
98132
  const { diagram: diagram2 } = await __vitePreload(async () => {
98125
- const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-Dap7AcjR.js");
98133
+ const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-C1IepPZ-.js");
98126
98134
  return { diagram: diagram22 };
98127
98135
  }, true ? __vite__mapDeps([38,9,11,26]) : void 0);
98128
98136
  return { id: id17, diagram: diagram2 };
@@ -98192,7 +98200,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
98192
98200
  }, "detector");
98193
98201
  var loader18 = /* @__PURE__ */ __name(async () => {
98194
98202
  const { diagram: diagram2 } = await __vitePreload(async () => {
98195
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-aBmNMuQ0.js");
98203
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-vNUuIeRk.js");
98196
98204
  return { diagram: diagram22 };
98197
98205
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
98198
98206
  return { id: id18, diagram: diagram2 };
@@ -98209,7 +98217,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
98209
98217
  }, "detector");
98210
98218
  var loader19 = /* @__PURE__ */ __name(async () => {
98211
98219
  const { diagram: diagram2 } = await __vitePreload(async () => {
98212
- const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-BGvpddwR.js");
98220
+ const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-iX2MRdpY.js");
98213
98221
  return { diagram: diagram22 };
98214
98222
  }, true ? __vite__mapDeps([39,26]) : void 0);
98215
98223
  return { id: id19, diagram: diagram2 };
@@ -98226,7 +98234,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
98226
98234
  }, "detector");
98227
98235
  var loader20 = /* @__PURE__ */ __name(async () => {
98228
98236
  const { diagram: diagram2 } = await __vitePreload(async () => {
98229
- const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-ugsrLNY5.js");
98237
+ const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-CKjgVM9S.js");
98230
98238
  return { diagram: diagram22 };
98231
98239
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
98232
98240
  return { id: id20, diagram: diagram2 };
@@ -98243,7 +98251,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
98243
98251
  }, "detector");
98244
98252
  var loader21 = /* @__PURE__ */ __name(async () => {
98245
98253
  const { diagram: diagram2 } = await __vitePreload(async () => {
98246
- const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-4NOl8MEj.js");
98254
+ const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-uMNX4Z1W.js");
98247
98255
  return { diagram: diagram22 };
98248
98256
  }, true ? __vite__mapDeps([41,11]) : void 0);
98249
98257
  return { id: id21, diagram: diagram2 };
@@ -98260,7 +98268,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
98260
98268
  }, "detector");
98261
98269
  var loader22 = /* @__PURE__ */ __name(async () => {
98262
98270
  const { diagram: diagram2 } = await __vitePreload(async () => {
98263
- const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DXDdUUl1.js");
98271
+ const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DibLVGzg.js");
98264
98272
  return { diagram: diagram22 };
98265
98273
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
98266
98274
  return { id: id22, diagram: diagram2 };
@@ -98277,7 +98285,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
98277
98285
  }, "detector");
98278
98286
  var loader23 = /* @__PURE__ */ __name(async () => {
98279
98287
  const { diagram: diagram2 } = await __vitePreload(async () => {
98280
- const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-CjxkLHWG.js");
98288
+ const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-Dwp47T9I.js");
98281
98289
  return { diagram: diagram22 };
98282
98290
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
98283
98291
  return { id: id23, diagram: diagram2 };
@@ -98293,7 +98301,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
98293
98301
  }, "detector");
98294
98302
  var loader24 = /* @__PURE__ */ __name(async () => {
98295
98303
  const { diagram: diagram2 } = await __vitePreload(async () => {
98296
- const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-DYlq3uFq.js");
98304
+ const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-BZ5xzofU.js");
98297
98305
  return { diagram: diagram22 };
98298
98306
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
98299
98307
  return { id: id24, diagram: diagram2 };
@@ -98309,7 +98317,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
98309
98317
  }, "detector");
98310
98318
  var loader25 = /* @__PURE__ */ __name(async () => {
98311
98319
  const { diagram: diagram2 } = await __vitePreload(async () => {
98312
- const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-BA9vtmm7.js");
98320
+ const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-CgQiNuuQ.js");
98313
98321
  return { diagram: diagram22 };
98314
98322
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
98315
98323
  return { id: id25, diagram: diagram2 };
@@ -98326,7 +98334,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
98326
98334
  }, "detector");
98327
98335
  var loader26 = /* @__PURE__ */ __name(async () => {
98328
98336
  const { diagram: diagram2 } = await __vitePreload(async () => {
98329
- const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-CpcUgjHf.js");
98337
+ const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-C-ekqGAD.js");
98330
98338
  return { diagram: diagram22 };
98331
98339
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
98332
98340
  return { id: id26, diagram: diagram2 };
@@ -98343,7 +98351,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
98343
98351
  }, "detector");
98344
98352
  var loader27 = /* @__PURE__ */ __name(async () => {
98345
98353
  const { diagram: diagram2 } = await __vitePreload(async () => {
98346
- const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-BUKfmfGk.js");
98354
+ const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-Bgf1FqkE.js");
98347
98355
  return { diagram: diagram22 };
98348
98356
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
98349
98357
  return { id: id27, diagram: diagram2 };
@@ -99201,6 +99209,9 @@ class DomindsMermaidBlock extends HTMLElement {
99201
99209
  if (!customElements.get("dominds-mermaid-block")) {
99202
99210
  customElements.define("dominds-mermaid-block", DomindsMermaidBlock);
99203
99211
  }
99212
+ const WORKSPACE_FILE_LINK_PREFIX = "/ws/";
99213
+ const WORKSPACE_FILE_PREVIEW_ROUTE = "/f";
99214
+ const DOMINDS_RTWS_DATA_ATTR = "data-dominds-rtws";
99204
99215
  function slugifyHeadingId(raw) {
99205
99216
  const trimmed = raw.trim();
99206
99217
  if (!trimmed) return "";
@@ -99218,6 +99229,131 @@ function parseFenceLanguage(info2) {
99218
99229
  if (spaceIndex < 0) return trimmed;
99219
99230
  return trimmed.slice(0, spaceIndex);
99220
99231
  }
99232
+ function parseWorkspaceFileLinkTarget(rawHref) {
99233
+ const trimmed = rawHref.trim();
99234
+ if (!trimmed.startsWith(WORKSPACE_FILE_LINK_PREFIX)) return null;
99235
+ const queryIdx = trimmed.indexOf("?");
99236
+ const hashIdx = trimmed.indexOf("#");
99237
+ const cutIdxCandidates = [queryIdx, hashIdx].filter((idx) => idx >= 0);
99238
+ const endIdx = cutIdxCandidates.length > 0 ? Math.min(...cutIdxCandidates) : trimmed.length;
99239
+ const hrefWithoutQueryOrHash = trimmed.slice(0, endIdx);
99240
+ if (hrefWithoutQueryOrHash.length < 1) return null;
99241
+ const lineColMatch = hrefWithoutQueryOrHash.match(/^(.*):([1-9]\d*)(?::([1-9]\d*))?$/);
99242
+ const rawPath = lineColMatch ? lineColMatch[1] : hrefWithoutQueryOrHash;
99243
+ if (!rawPath.startsWith(WORKSPACE_FILE_LINK_PREFIX)) return null;
99244
+ if (rawPath.endsWith("/")) return null;
99245
+ let absolutePath = rawPath;
99246
+ try {
99247
+ absolutePath = decodeURIComponent(rawPath);
99248
+ } catch {
99249
+ absolutePath = rawPath;
99250
+ }
99251
+ if (!absolutePath.startsWith(WORKSPACE_FILE_LINK_PREFIX)) return null;
99252
+ const lineRaw = lineColMatch?.[2];
99253
+ const columnRaw = lineColMatch?.[3];
99254
+ const line2 = typeof lineRaw === "string" ? Number.parseInt(lineRaw, 10) : void 0;
99255
+ const column2 = typeof columnRaw === "string" ? Number.parseInt(columnRaw, 10) : void 0;
99256
+ return {
99257
+ absolutePath,
99258
+ line: typeof line2 === "number" ? line2 : void 0,
99259
+ column: typeof column2 === "number" ? column2 : void 0
99260
+ };
99261
+ }
99262
+ function normalizeSlashPath(value) {
99263
+ return value.replace(/\\/g, "/");
99264
+ }
99265
+ function normalizeRtwsAbsPath(value) {
99266
+ const normalized = normalizeSlashPath(value).replace(/\/+/g, "/");
99267
+ if (normalized === "/") return normalized;
99268
+ return normalized.replace(/\/+$/g, "");
99269
+ }
99270
+ function getCurrentRtwsAbsPath() {
99271
+ if (typeof document !== "undefined") {
99272
+ const raw = document.documentElement.getAttribute(DOMINDS_RTWS_DATA_ATTR);
99273
+ if (typeof raw === "string") {
99274
+ const trimmed = raw.trim();
99275
+ if (trimmed.length > 0 && trimmed.startsWith("/")) {
99276
+ return normalizeRtwsAbsPath(trimmed);
99277
+ }
99278
+ }
99279
+ }
99280
+ if (typeof window === "undefined") return null;
99281
+ try {
99282
+ const cached = window.localStorage.getItem("dominds.rtws");
99283
+ if (typeof cached !== "string") return null;
99284
+ const trimmed = cached.trim();
99285
+ if (trimmed.length < 1 || !trimmed.startsWith("/")) return null;
99286
+ return normalizeRtwsAbsPath(trimmed);
99287
+ } catch {
99288
+ return null;
99289
+ }
99290
+ }
99291
+ function toRtwsRelativePath(absolutePath, rtwsAbsPath) {
99292
+ const normalizedAbs = normalizeRtwsAbsPath(absolutePath);
99293
+ const normalizedRtws = normalizeRtwsAbsPath(rtwsAbsPath);
99294
+ if (normalizedAbs === normalizedRtws) return null;
99295
+ const prefix = normalizedRtws === "/" ? "/" : `${normalizedRtws}/`;
99296
+ if (!normalizedAbs.startsWith(prefix)) return null;
99297
+ const relativePath = normalizedAbs.slice(prefix.length);
99298
+ if (relativePath.length < 1) return null;
99299
+ if (relativePath.includes("\0")) return null;
99300
+ const segments = relativePath.split("/");
99301
+ if (segments.some((segment) => segment.length < 1 || segment === "." || segment === "..")) {
99302
+ return null;
99303
+ }
99304
+ return relativePath;
99305
+ }
99306
+ function resolveWorkspaceFilePreviewTarget(linkTarget) {
99307
+ const rtwsAbsPath = getCurrentRtwsAbsPath();
99308
+ if (rtwsAbsPath === null) return null;
99309
+ const relativePath = toRtwsRelativePath(linkTarget.absolutePath, rtwsAbsPath);
99310
+ if (relativePath === null) return null;
99311
+ return {
99312
+ relativePath,
99313
+ line: linkTarget.line,
99314
+ column: linkTarget.column
99315
+ };
99316
+ }
99317
+ function getAuthFromCurrentUrl() {
99318
+ if (typeof window === "undefined") return null;
99319
+ try {
99320
+ const url = new URL(window.location.href);
99321
+ const auth = url.searchParams.get("auth");
99322
+ if (typeof auth !== "string") return null;
99323
+ const trimmed = auth.trim();
99324
+ return trimmed.length > 0 ? trimmed : null;
99325
+ } catch {
99326
+ return null;
99327
+ }
99328
+ }
99329
+ function buildWorkspaceFilePreviewHref(target) {
99330
+ const encodedPath = target.relativePath.split("/").map((segment) => encodeURIComponent(segment)).join("/");
99331
+ const routePath = `${WORKSPACE_FILE_PREVIEW_ROUTE}/${encodedPath}`;
99332
+ const params = new URLSearchParams();
99333
+ if (typeof target.line === "number") {
99334
+ params.set("line", String(target.line));
99335
+ }
99336
+ if (typeof target.column === "number") {
99337
+ params.set("column", String(target.column));
99338
+ }
99339
+ const auth = getAuthFromCurrentUrl();
99340
+ if (auth !== null) {
99341
+ params.set("auth", auth);
99342
+ }
99343
+ const query = params.toString();
99344
+ if (query.length < 1) return routePath;
99345
+ return `${routePath}?${query}`;
99346
+ }
99347
+ function applyOpenInNewTabAttrs(token2) {
99348
+ token2.attrSet("target", "_blank");
99349
+ const relValue = token2.attrGet("rel");
99350
+ const relTokens = new Set(
99351
+ typeof relValue === "string" ? relValue.split(/\s+/).map((part) => part.trim()).filter((part) => part.length > 0) : []
99352
+ );
99353
+ relTokens.add("noopener");
99354
+ relTokens.add("noreferrer");
99355
+ token2.attrSet("rel", Array.from(relTokens).join(" "));
99356
+ }
99221
99357
  function installDomindsMathBlockRule(md2) {
99222
99358
  md2.block.ruler.before(
99223
99359
  "fence",
@@ -99313,15 +99449,17 @@ installDomindsMathBlockRule(md);
99313
99449
  md.renderer.rules.link_open = (tokens, idx, options, _env, self2) => {
99314
99450
  const token2 = tokens[idx];
99315
99451
  const href = token2.attrGet("href");
99316
- if (typeof href === "string" && /^https?:\/\//i.test(href.trim())) {
99317
- token2.attrSet("target", "_blank");
99318
- const relValue = token2.attrGet("rel");
99319
- const relTokens = new Set(
99320
- typeof relValue === "string" ? relValue.split(/\s+/).map((part) => part.trim()).filter((part) => part.length > 0) : []
99321
- );
99322
- relTokens.add("noopener");
99323
- relTokens.add("noreferrer");
99324
- token2.attrSet("rel", Array.from(relTokens).join(" "));
99452
+ if (typeof href === "string") {
99453
+ const workspaceFileLink = parseWorkspaceFileLinkTarget(href);
99454
+ const previewTarget = workspaceFileLink === null ? null : resolveWorkspaceFilePreviewTarget(workspaceFileLink);
99455
+ if (previewTarget) {
99456
+ token2.attrSet("href", buildWorkspaceFilePreviewHref(previewTarget));
99457
+ applyOpenInNewTabAttrs(token2);
99458
+ return self2.renderToken(tokens, idx, options);
99459
+ }
99460
+ if (/^https?:\/\//i.test(href.trim())) {
99461
+ applyOpenInNewTabAttrs(token2);
99462
+ }
99325
99463
  }
99326
99464
  return self2.renderToken(tokens, idx, options);
99327
99465
  };
@@ -112829,6 +112967,11 @@ ${formatUiLanguageOptionLabel({
112829
112967
  background: color-mix(in srgb, var(--dominds-danger-bg, #f8d7da) 35%, var(--dominds-bg, #ffffff));
112830
112968
  }
112831
112969
 
112970
+ .problem-item[data-resolved='true'] {
112971
+ opacity: 0.86;
112972
+ background: color-mix(in srgb, var(--dominds-sidebar-bg, #f8f9fa) 88%, var(--dominds-bg, #ffffff));
112973
+ }
112974
+
112832
112975
  .problem-head {
112833
112976
  display: flex;
112834
112977
  align-items: baseline;
@@ -112870,6 +113013,16 @@ ${formatUiLanguageOptionLabel({
112870
113013
  word-break: break-word;
112871
113014
  }
112872
113015
 
113016
+ .problem-lifecycle {
113017
+ margin-top: 4px;
113018
+ display: inline-flex;
113019
+ align-items: center;
113020
+ padding: 1px 6px;
113021
+ border-radius: 999px;
113022
+ border: 1px solid var(--dominds-border, #e0e0e0);
113023
+ background: color-mix(in srgb, var(--dominds-sidebar-bg, #f8f9fa) 65%, var(--dominds-bg, #ffffff));
113024
+ }
113025
+
112873
113026
  .lang-select {
112874
113027
  height: 24px;
112875
113028
  border: 1px solid var(--dominds-border, #e0e0e0);
@@ -115225,6 +115378,7 @@ ${uiLanguageButtonTooltip}">
115225
115378
  <div class="problems-panel-header">
115226
115379
  <div class="problems-panel-title">${t2.problemsTitle}</div>
115227
115380
  <div class="problems-panel-actions">
115381
+ <button type="button" id="problems-clear-resolved" title="${t2.problemsClearResolvedTitle}" aria-label="${t2.problemsClearResolvedTitle}"><span class="icon-mask app-icon-trash" aria-hidden="true"></span></button>
115228
115382
  <button type="button" id="problems-refresh" title="Refresh" aria-label="Refresh"><span class="icon-mask app-icon-refresh" aria-hidden="true"></span></button>
115229
115383
  <button type="button" id="problems-close" title="${t2.close}" aria-label="${t2.close}"><span class="icon-mask app-icon-close" aria-hidden="true"></span></button>
115230
115384
  </div>
@@ -115801,31 +115955,46 @@ ${content}`;
115801
115955
  const prevBtn = target.closest("#course-navi-prev");
115802
115956
  if (prevBtn) {
115803
115957
  if (this.toolbarCurrentCourse > 1) {
115958
+ const targetCourse = this.toolbarCurrentCourse - 1;
115804
115959
  const dc = this.shadowRoot?.querySelector(
115805
115960
  "#dialog-container"
115806
115961
  );
115807
115962
  if (dc && typeof dc.setCurrentCourse === "function") {
115808
- await dc.setCurrentCourse(this.toolbarCurrentCourse - 1);
115963
+ await dc.setCurrentCourse(targetCourse);
115809
115964
  }
115810
- this.toolbarCurrentCourse = Math.max(1, this.toolbarCurrentCourse - 1);
115965
+ this.toolbarCurrentCourse = Math.max(1, targetCourse);
115811
115966
  this.updateToolbarCourseDisplay();
115967
+ if (this.currentDialog) {
115968
+ this.syncAddressBarToDeepLink({
115969
+ kind: "dialog",
115970
+ rootId: this.currentDialog.rootId,
115971
+ selfId: this.currentDialog.selfId,
115972
+ course: this.toolbarCurrentCourse
115973
+ });
115974
+ }
115812
115975
  }
115813
115976
  return;
115814
115977
  }
115815
115978
  const nextBtn = target.closest("#course-navi-next");
115816
115979
  if (nextBtn) {
115817
115980
  if (this.toolbarCurrentCourse < this.toolbarTotalCourses) {
115981
+ const targetCourse = this.toolbarCurrentCourse + 1;
115818
115982
  const dc = this.shadowRoot?.querySelector(
115819
115983
  "#dialog-container"
115820
115984
  );
115821
115985
  if (dc && typeof dc.setCurrentCourse === "function") {
115822
- await dc.setCurrentCourse(this.toolbarCurrentCourse + 1);
115986
+ await dc.setCurrentCourse(targetCourse);
115823
115987
  }
115824
- this.toolbarCurrentCourse = Math.min(
115825
- this.toolbarTotalCourses,
115826
- this.toolbarCurrentCourse + 1
115827
- );
115988
+ this.toolbarCurrentCourse = Math.min(this.toolbarTotalCourses, targetCourse);
115828
115989
  this.updateToolbarCourseDisplay();
115990
+ if (this.currentDialog) {
115991
+ this.syncAddressBarToDeepLink({
115992
+ kind: "dialog",
115993
+ rootId: this.currentDialog.rootId,
115994
+ selfId: this.currentDialog.selfId,
115995
+ course: this.toolbarCurrentCourse
115996
+ });
115997
+ }
115829
115998
  }
115830
115999
  return;
115831
116000
  }
@@ -115849,6 +116018,13 @@ ${content}`;
115849
116018
  this.wsManager.sendRaw({ type: "get_problems" });
115850
116019
  return;
115851
116020
  }
116021
+ const problemsClearResolved = target.closest(
116022
+ "#problems-clear-resolved"
116023
+ );
116024
+ if (problemsClearResolved) {
116025
+ this.wsManager.sendRaw({ type: "clear_resolved_problems" });
116026
+ return;
116027
+ }
115852
116028
  const remToggle = target.closest("#navibar-reminders-toggle");
115853
116029
  if (remToggle) {
115854
116030
  this.toggleRemindersWidget();
@@ -116456,9 +116632,10 @@ ${content}`;
116456
116632
  const params = new URLSearchParams(window.location.search);
116457
116633
  const rootId = (params.get("rootId") ?? "").trim();
116458
116634
  const selfRaw = (params.get("selfId") ?? "").trim();
116635
+ const course = parseOptionalInt(params.get("course"));
116459
116636
  if (rootId === "") return null;
116460
116637
  const selfId = selfRaw === "" ? rootId : selfRaw;
116461
- return { kind: "dialog", rootId, selfId };
116638
+ return { kind: "dialog", rootId, selfId, course };
116462
116639
  }
116463
116640
  if (kind === "callsite") {
116464
116641
  const params = new URLSearchParams(window.location.search);
@@ -116545,7 +116722,7 @@ ${content}`;
116545
116722
  status: rootMatch.status
116546
116723
  };
116547
116724
  }
116548
- buildDialogDeepLinkUrl(rootId, selfId) {
116725
+ buildDialogDeepLinkUrl(rootId, selfId, course) {
116549
116726
  const url = new URL(window.location.href);
116550
116727
  url.searchParams.delete("rootId");
116551
116728
  url.searchParams.delete("selfId");
@@ -116558,6 +116735,38 @@ ${content}`;
116558
116735
  url.pathname = "/dl/dialog";
116559
116736
  url.searchParams.set("rootId", rootId);
116560
116737
  url.searchParams.set("selfId", selfId);
116738
+ if (typeof course === "number") {
116739
+ url.searchParams.set("course", String(Math.floor(course)));
116740
+ }
116741
+ return url;
116742
+ }
116743
+ buildCallsiteDeepLinkUrl(rootId, selfId, course, callId) {
116744
+ const url = this.buildDialogDeepLinkUrl(rootId, selfId);
116745
+ url.pathname = "/dl/callsite";
116746
+ url.searchParams.set("course", String(Math.floor(course)));
116747
+ url.searchParams.set("callId", callId);
116748
+ return url;
116749
+ }
116750
+ buildGenseqDeepLinkUrl(rootId, selfId, course, genseq) {
116751
+ const url = this.buildDialogDeepLinkUrl(rootId, selfId);
116752
+ url.pathname = "/dl/genseq";
116753
+ url.searchParams.set("course", String(Math.floor(course)));
116754
+ url.searchParams.set("genseq", String(Math.floor(genseq)));
116755
+ return url;
116756
+ }
116757
+ buildQ4HDeepLinkUrl(params) {
116758
+ const url = this.buildDialogDeepLinkUrl(params.rootId, params.selfId);
116759
+ url.pathname = "/dl/q4h";
116760
+ url.searchParams.set("qid", params.questionId);
116761
+ if (typeof params.course === "number") {
116762
+ url.searchParams.set("course", String(Math.floor(params.course)));
116763
+ }
116764
+ if (typeof params.messageIndex === "number") {
116765
+ url.searchParams.set("msg", String(Math.floor(params.messageIndex)));
116766
+ }
116767
+ if (typeof params.callId === "string" && params.callId.trim() !== "") {
116768
+ url.searchParams.set("callId", params.callId.trim());
116769
+ }
116561
116770
  return url;
116562
116771
  }
116563
116772
  stripUrlAuthParamAfterSuccessfulOpen() {
@@ -116576,6 +116785,48 @@ ${content}`;
116576
116785
  }
116577
116786
  window.history.replaceState({}, "", target.toString());
116578
116787
  }
116788
+ syncAddressBarToDeepLink(intent) {
116789
+ let target = null;
116790
+ if (intent.kind === "dialog") {
116791
+ target = this.buildDialogDeepLinkUrl(intent.rootId, intent.selfId, intent.course);
116792
+ } else if (intent.kind === "callsite") {
116793
+ target = this.buildCallsiteDeepLinkUrl(
116794
+ intent.rootId,
116795
+ intent.selfId,
116796
+ intent.course,
116797
+ intent.callId
116798
+ );
116799
+ } else if (intent.kind === "genseq") {
116800
+ target = this.buildGenseqDeepLinkUrl(
116801
+ intent.rootId,
116802
+ intent.selfId,
116803
+ intent.course,
116804
+ intent.genseq
116805
+ );
116806
+ } else if (intent.kind === "q4h") {
116807
+ const rootId = intent.rootId?.trim() ?? "";
116808
+ const selfId = intent.selfId?.trim() ?? "";
116809
+ if (rootId !== "" && selfId !== "") {
116810
+ target = this.buildQ4HDeepLinkUrl({
116811
+ questionId: intent.questionId,
116812
+ rootId,
116813
+ selfId,
116814
+ course: intent.course,
116815
+ messageIndex: intent.messageIndex,
116816
+ callId: intent.callId
116817
+ });
116818
+ }
116819
+ } else {
116820
+ const _exhaustive = intent;
116821
+ return _exhaustive;
116822
+ }
116823
+ if (!target) return;
116824
+ const current = new URL(window.location.href);
116825
+ if (current.pathname === target.pathname && current.search === target.search && current.hash === target.hash) {
116826
+ return;
116827
+ }
116828
+ window.history.replaceState({}, "", target.toString());
116829
+ }
116579
116830
  async copyTextToClipboard(text2) {
116580
116831
  try {
116581
116832
  if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
@@ -116686,6 +116937,9 @@ ${content}`;
116686
116937
  status: resolvedStatus
116687
116938
  };
116688
116939
  };
116940
+ const ensureDialogSelectedWithoutAddressSync = async (dialogInfo2) => {
116941
+ await this.restoreDialogFromDeepLink(dialogInfo2);
116942
+ };
116689
116943
  if (intent.kind === "dialog") {
116690
116944
  const dialogInfo2 = await resolveDialogInfoForDeepLink(intent.rootId, intent.selfId);
116691
116945
  if (!dialogInfo2) {
@@ -116693,8 +116947,17 @@ ${content}`;
116693
116947
  this.pendingDeepLink = null;
116694
116948
  return;
116695
116949
  }
116696
- await this.selectDialog(dialogInfo2);
116950
+ await ensureDialogSelectedWithoutAddressSync(dialogInfo2);
116951
+ if (typeof intent.course === "number") {
116952
+ const dialogContainer2 = this.shadowRoot?.querySelector(
116953
+ "#dialog-container"
116954
+ );
116955
+ if (dialogContainer2) {
116956
+ await dialogContainer2.setCurrentCourse(intent.course);
116957
+ }
116958
+ }
116697
116959
  this.q4hInput?.focusInput();
116960
+ this.syncAddressBarToDeepLink(intent);
116698
116961
  this.pendingDeepLink = null;
116699
116962
  return;
116700
116963
  }
@@ -116705,7 +116968,7 @@ ${content}`;
116705
116968
  this.pendingDeepLink = null;
116706
116969
  return;
116707
116970
  }
116708
- await this.selectDialog(dialogInfo2);
116971
+ await ensureDialogSelectedWithoutAddressSync(dialogInfo2);
116709
116972
  const dialogContainer2 = this.shadowRoot?.querySelector(
116710
116973
  "#dialog-container"
116711
116974
  );
@@ -116719,6 +116982,7 @@ ${content}`;
116719
116982
  })
116720
116983
  );
116721
116984
  }
116985
+ this.syncAddressBarToDeepLink(intent);
116722
116986
  this.q4hInput?.focusInput();
116723
116987
  this.pendingDeepLink = null;
116724
116988
  return;
@@ -116730,7 +116994,7 @@ ${content}`;
116730
116994
  this.pendingDeepLink = null;
116731
116995
  return;
116732
116996
  }
116733
- await this.selectDialog(dialogInfo2);
116997
+ await ensureDialogSelectedWithoutAddressSync(dialogInfo2);
116734
116998
  const dialogContainer2 = this.shadowRoot?.querySelector(
116735
116999
  "#dialog-container"
116736
117000
  );
@@ -116744,6 +117008,7 @@ ${content}`;
116744
117008
  })
116745
117009
  );
116746
117010
  }
117011
+ this.syncAddressBarToDeepLink(intent);
116747
117012
  this.q4hInput?.focusInput();
116748
117013
  this.pendingDeepLink = null;
116749
117014
  return;
@@ -116763,7 +117028,7 @@ ${content}`;
116763
117028
  this.pendingDeepLink = null;
116764
117029
  return;
116765
117030
  }
116766
- await this.selectDialog(dialogInfo);
117031
+ await ensureDialogSelectedWithoutAddressSync(dialogInfo);
116767
117032
  const dialogContainer = this.shadowRoot?.querySelector(
116768
117033
  "#dialog-container"
116769
117034
  );
@@ -116805,6 +117070,15 @@ ${content}`;
116805
117070
  } else {
116806
117071
  this.q4hInput?.focusInput();
116807
117072
  }
117073
+ this.syncAddressBarToDeepLink({
117074
+ kind: "q4h",
117075
+ questionId: intent.questionId,
117076
+ rootId,
117077
+ selfId,
117078
+ course,
117079
+ messageIndex,
117080
+ callId
117081
+ });
116808
117082
  this.pendingDeepLink = null;
116809
117083
  } finally {
116810
117084
  this.deepLinkInFlight = false;
@@ -117369,6 +117643,17 @@ ${content}`;
117369
117643
  const resolved = workspace !== "" ? workspace : rtws;
117370
117644
  if (resolved !== "") {
117371
117645
  this.backendRtws = resolved;
117646
+ document.documentElement.setAttribute("data-dominds-rtws", resolved);
117647
+ try {
117648
+ window.localStorage.setItem("dominds.rtws", resolved);
117649
+ } catch {
117650
+ }
117651
+ } else {
117652
+ document.documentElement.removeAttribute("data-dominds-rtws");
117653
+ try {
117654
+ window.localStorage.removeItem("dominds.rtws");
117655
+ } catch {
117656
+ }
117372
117657
  }
117373
117658
  }
117374
117659
  if (data && typeof data.version === "string") {
@@ -117379,6 +117664,11 @@ ${content}`;
117379
117664
  console.error("Failed to load rtws info:", error2);
117380
117665
  this.backendRtws = "Unknown rtws";
117381
117666
  this.backendVersion = "";
117667
+ document.documentElement.removeAttribute("data-dominds-rtws");
117668
+ try {
117669
+ window.localStorage.removeItem("dominds.rtws");
117670
+ } catch {
117671
+ }
117382
117672
  this.updateRtwsInfo();
117383
117673
  }
117384
117674
  }
@@ -117517,7 +117807,7 @@ ${content}`;
117517
117807
  this.q4hInput.setDisabled(disabled);
117518
117808
  }
117519
117809
  }
117520
- async selectDialog(dialog) {
117810
+ async applyDialogSelection(dialog, options) {
117521
117811
  const selfId = dialog.selfId || dialog.rootId;
117522
117812
  const rootId = dialog.rootId || dialog.selfId;
117523
117813
  if (!selfId || !rootId) {
@@ -117635,14 +117925,30 @@ ${content}`;
117635
117925
  this.renderRemindersWidget();
117636
117926
  this.setupRemindersWidgetDrag();
117637
117927
  }
117638
- this.syncAddressBarToDialogDeepLink(normalizedDialog);
117639
- const t2 = getUiStrings(this.uiLanguage);
117640
- this.showSuccess(t2.dialogLoadedToast);
117928
+ if (options.syncAddressBar) {
117929
+ this.syncAddressBarToDialogDeepLink(normalizedDialog);
117930
+ }
117931
+ if (options.showLoadedToast) {
117932
+ const t2 = getUiStrings(this.uiLanguage);
117933
+ this.showSuccess(t2.dialogLoadedToast);
117934
+ }
117641
117935
  } catch (error2) {
117642
117936
  const message = error2 instanceof Error ? error2.message : "Unknown error";
117643
117937
  this.showError(`Failed to load dialog: ${message}`, "error");
117644
117938
  }
117645
117939
  }
117940
+ async selectDialog(dialog) {
117941
+ await this.applyDialogSelection(dialog, { syncAddressBar: true, showLoadedToast: true });
117942
+ }
117943
+ async restoreDialogFromDeepLink(dialog) {
117944
+ const selfId = dialog.selfId || dialog.rootId;
117945
+ const rootId = dialog.rootId || dialog.selfId;
117946
+ const current = this.currentDialog;
117947
+ if (current && current.rootId === rootId && current.selfId === selfId) {
117948
+ return;
117949
+ }
117950
+ await this.applyDialogSelection(dialog, { syncAddressBar: false, showLoadedToast: false });
117951
+ }
117646
117952
  /**
117647
117953
  * Get the current dialog info (for E2E testing)
117648
117954
  * @returns Current dialog info or null if no dialog selected
@@ -118031,18 +118337,26 @@ ${content}`;
118031
118337
  return `<div class="problem-meta">${this.escapeHtml(t2.problemsEmpty)}</div>`;
118032
118338
  }
118033
118339
  const items = this.problems.slice().sort((a2, b2) => {
118340
+ const activeA = a2.resolved === true ? 0 : 1;
118341
+ const activeB = b2.resolved === true ? 0 : 1;
118342
+ if (activeA !== activeB) return activeB - activeA;
118034
118343
  const sa = a2.severity === "error" ? 3 : a2.severity === "warning" ? 2 : 1;
118035
118344
  const sb = b2.severity === "error" ? 3 : b2.severity === "warning" ? 2 : 1;
118036
118345
  if (sa !== sb) return sb - sa;
118037
118346
  return b2.timestamp.localeCompare(a2.timestamp);
118038
118347
  }).map((p2) => {
118039
118348
  const detailText = JSON.stringify(p2.detail, null, 2);
118349
+ const lifecycleLabel = p2.resolved === true ? t2.problemsResolvedBadge : t2.problemsActiveBadge;
118350
+ const occurredAt = typeof p2.occurredAt === "string" && p2.occurredAt.trim() !== "" ? p2.occurredAt : p2.timestamp;
118351
+ const resolvedAt = p2.resolved === true && typeof p2.resolvedAt === "string" && p2.resolvedAt.trim() !== "" ? p2.resolvedAt : null;
118352
+ const lifecycleMeta = p2.resolved === true && resolvedAt ? `${occurredAt} → ${resolvedAt}` : occurredAt;
118040
118353
  return `
118041
- <div class="problem-item" data-severity="${p2.severity}">
118354
+ <div class="problem-item" data-severity="${p2.severity}" data-resolved="${p2.resolved === true ? "true" : "false"}">
118042
118355
  <div class="problem-head">
118043
118356
  <div class="problem-message">${this.escapeHtml(p2.message)}</div>
118044
- <div class="problem-meta problem-timestamp">${this.escapeHtml(p2.timestamp)}</div>
118357
+ <div class="problem-meta problem-timestamp">${this.escapeHtml(lifecycleMeta)}</div>
118045
118358
  </div>
118359
+ <div class="problem-meta problem-lifecycle">${this.escapeHtml(lifecycleLabel)}</div>
118046
118360
  <div class="problem-detail">${this.escapeHtml(detailText)}</div>
118047
118361
  </div>
118048
118362
  `;
@@ -118175,6 +118489,16 @@ ${content}`;
118175
118489
  this.updateProblemsUi();
118176
118490
  return true;
118177
118491
  }
118492
+ case "clear_resolved_problems_result": {
118493
+ const result = message;
118494
+ const t2 = getUiStrings(this.uiLanguage);
118495
+ this.showToast(
118496
+ `${t2.problemsClearResolvedDonePrefix}${String(result.removedCount)}`,
118497
+ "info"
118498
+ );
118499
+ this.wsManager.sendRaw({ type: "get_problems" });
118500
+ return true;
118501
+ }
118178
118502
  case "team_config_updated": {
118179
118503
  void this.loadTeamMembers({ silent: true });
118180
118504
  const dialogContainer = this.shadowRoot?.querySelector("#dialog-container");
@@ -121094,4 +121418,4 @@ export {
121094
121418
  clear$2 as y,
121095
121419
  defaultConfig2 as z
121096
121420
  };
121097
- //# sourceMappingURL=index-HWTRvE2k.js.map
121421
+ //# sourceMappingURL=index-D3TQbAKh.js.map