dominds 1.17.2 → 1.17.4

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 (125) hide show
  1. package/dist/apps-host/host.js +13 -2
  2. package/dist/apps-host/ipc-types.js +18 -1
  3. package/dist/dialog-fork.js +1 -0
  4. package/dist/dialog.js +5 -0
  5. package/dist/docs/mcp-support.md +4 -1
  6. package/dist/docs/team_mgmt-toolset.md +8 -7
  7. package/dist/docs/team_mgmt-toolset.zh.md +6 -5
  8. package/dist/mcp/manual-problems.d.ts +33 -0
  9. package/dist/mcp/manual-problems.js +323 -0
  10. package/dist/mcp/supervisor.js +23 -1
  11. package/dist/persistence.js +12 -0
  12. package/dist/priming.js +7 -0
  13. package/dist/shared-reminders.js +2 -0
  14. package/dist/tool.d.ts +5 -0
  15. package/dist/tool.js +66 -4
  16. package/dist/tools/app-reminders.js +20 -3
  17. package/dist/tools/ctrl.js +43 -4
  18. package/dist/tools/manual/output-limit.d.ts +9 -0
  19. package/dist/tools/manual/output-limit.js +12 -0
  20. package/dist/tools/os.js +173 -37
  21. package/dist/tools/pending-tellask-reminder.d.ts +1 -1
  22. package/dist/tools/pending-tellask-reminder.js +39 -19
  23. package/dist/tools/team_mgmt-manual.d.ts +2 -0
  24. package/dist/tools/team_mgmt-manual.js +160 -0
  25. package/dist/tools/team_mgmt-mcp-manual.d.ts +27 -0
  26. package/dist/tools/team_mgmt-mcp-manual.js +643 -0
  27. package/dist/tools/team_mgmt.d.ts +11 -1
  28. package/dist/tools/team_mgmt.js +22 -867
  29. package/dist/tools/toolset-manual.js +5 -5
  30. package/package.json +4 -4
  31. package/webapp/dist/assets/{_basePickBy-EK9iGcOl.js → _basePickBy-CgM-M_q8.js} +3 -3
  32. package/webapp/dist/assets/{_basePickBy-EK9iGcOl.js.map → _basePickBy-CgM-M_q8.js.map} +1 -1
  33. package/webapp/dist/assets/{_baseUniq-BHtz-XvO.js → _baseUniq-B06twih4.js} +2 -2
  34. package/webapp/dist/assets/{_baseUniq-BHtz-XvO.js.map → _baseUniq-B06twih4.js.map} +1 -1
  35. package/webapp/dist/assets/{arc-NqUmMwkS.js → arc-CoXJvjeB.js} +2 -2
  36. package/webapp/dist/assets/{arc-NqUmMwkS.js.map → arc-CoXJvjeB.js.map} +1 -1
  37. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CJ7Jb15a.js → architectureDiagram-2XIMDMQ5-BLFRWTKn.js} +7 -7
  38. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CJ7Jb15a.js.map → architectureDiagram-2XIMDMQ5-BLFRWTKn.js.map} +1 -1
  39. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-RNM7ujN4.js → blockDiagram-WCTKOSBZ-CYRE6deu.js} +7 -7
  40. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-RNM7ujN4.js.map → blockDiagram-WCTKOSBZ-CYRE6deu.js.map} +1 -1
  41. package/webapp/dist/assets/{c4Diagram-IC4MRINW-DKra5-za.js → c4Diagram-IC4MRINW-B26QTIJt.js} +3 -3
  42. package/webapp/dist/assets/{c4Diagram-IC4MRINW-DKra5-za.js.map → c4Diagram-IC4MRINW-B26QTIJt.js.map} +1 -1
  43. package/webapp/dist/assets/{channel-CxE9sL_E.js → channel-C5U2W0P9.js} +2 -2
  44. package/webapp/dist/assets/{channel-CxE9sL_E.js.map → channel-C5U2W0P9.js.map} +1 -1
  45. package/webapp/dist/assets/{chunk-4BX2VUAB-BlyIt9uv.js → chunk-4BX2VUAB-7z2PgnSv.js} +2 -2
  46. package/webapp/dist/assets/{chunk-4BX2VUAB-BlyIt9uv.js.map → chunk-4BX2VUAB-7z2PgnSv.js.map} +1 -1
  47. package/webapp/dist/assets/{chunk-55IACEB6-DsPShmjL.js → chunk-55IACEB6-6sRVmXqs.js} +2 -2
  48. package/webapp/dist/assets/{chunk-55IACEB6-DsPShmjL.js.map → chunk-55IACEB6-6sRVmXqs.js.map} +1 -1
  49. package/webapp/dist/assets/{chunk-FMBD7UC4-C2i0rEFF.js → chunk-FMBD7UC4-BwYp8OtY.js} +2 -2
  50. package/webapp/dist/assets/{chunk-FMBD7UC4-C2i0rEFF.js.map → chunk-FMBD7UC4-BwYp8OtY.js.map} +1 -1
  51. package/webapp/dist/assets/{chunk-JSJVCQXG-CK8inzJx.js → chunk-JSJVCQXG-CRq8LK53.js} +2 -2
  52. package/webapp/dist/assets/{chunk-JSJVCQXG-CK8inzJx.js.map → chunk-JSJVCQXG-CRq8LK53.js.map} +1 -1
  53. package/webapp/dist/assets/{chunk-KX2RTZJC-BjEK5_oI.js → chunk-KX2RTZJC-CzFE355P.js} +2 -2
  54. package/webapp/dist/assets/{chunk-KX2RTZJC-BjEK5_oI.js.map → chunk-KX2RTZJC-CzFE355P.js.map} +1 -1
  55. package/webapp/dist/assets/{chunk-NQ4KR5QH-Clf489xc.js → chunk-NQ4KR5QH-3cQSOzCt.js} +4 -4
  56. package/webapp/dist/assets/{chunk-NQ4KR5QH-Clf489xc.js.map → chunk-NQ4KR5QH-3cQSOzCt.js.map} +1 -1
  57. package/webapp/dist/assets/{chunk-QZHKN3VN-CMikir3s.js → chunk-QZHKN3VN-DWkpxb-w.js} +2 -2
  58. package/webapp/dist/assets/{chunk-QZHKN3VN-CMikir3s.js.map → chunk-QZHKN3VN-DWkpxb-w.js.map} +1 -1
  59. package/webapp/dist/assets/{chunk-WL4C6EOR-1gtCLicd.js → chunk-WL4C6EOR-DkpfoQzK.js} +6 -6
  60. package/webapp/dist/assets/{chunk-WL4C6EOR-1gtCLicd.js.map → chunk-WL4C6EOR-DkpfoQzK.js.map} +1 -1
  61. package/webapp/dist/assets/{classDiagram-VBA2DB6C-kzzlkQ_D.js → classDiagram-VBA2DB6C-mVfJeuZL.js} +7 -7
  62. package/webapp/dist/assets/{classDiagram-VBA2DB6C-kzzlkQ_D.js.map → classDiagram-VBA2DB6C-mVfJeuZL.js.map} +1 -1
  63. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-kzzlkQ_D.js → classDiagram-v2-RAHNMMFH-mVfJeuZL.js} +7 -7
  64. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-kzzlkQ_D.js.map → classDiagram-v2-RAHNMMFH-mVfJeuZL.js.map} +1 -1
  65. package/webapp/dist/assets/{clone-XglJh1R0.js → clone-5uLJc7AC.js} +2 -2
  66. package/webapp/dist/assets/{clone-XglJh1R0.js.map → clone-5uLJc7AC.js.map} +1 -1
  67. package/webapp/dist/assets/{cose-bilkent-S5V4N54A--gZrh2tG.js → cose-bilkent-S5V4N54A-CoiJzdQi.js} +2 -2
  68. package/webapp/dist/assets/{cose-bilkent-S5V4N54A--gZrh2tG.js.map → cose-bilkent-S5V4N54A-CoiJzdQi.js.map} +1 -1
  69. package/webapp/dist/assets/{dagre-KLK3FWXG-D_JMhNNL.js → dagre-KLK3FWXG-DU_3BSOq.js} +7 -7
  70. package/webapp/dist/assets/{dagre-KLK3FWXG-D_JMhNNL.js.map → dagre-KLK3FWXG-DU_3BSOq.js.map} +1 -1
  71. package/webapp/dist/assets/{diagram-E7M64L7V-HkYhqJDL.js → diagram-E7M64L7V-DgqOvF1U.js} +8 -8
  72. package/webapp/dist/assets/{diagram-E7M64L7V-HkYhqJDL.js.map → diagram-E7M64L7V-DgqOvF1U.js.map} +1 -1
  73. package/webapp/dist/assets/{diagram-IFDJBPK2-BFv5iU5U.js → diagram-IFDJBPK2-CFWMc1oD.js} +7 -7
  74. package/webapp/dist/assets/{diagram-IFDJBPK2-BFv5iU5U.js.map → diagram-IFDJBPK2-CFWMc1oD.js.map} +1 -1
  75. package/webapp/dist/assets/{diagram-P4PSJMXO-Dg46tTnk.js → diagram-P4PSJMXO-lrqvXDXp.js} +7 -7
  76. package/webapp/dist/assets/{diagram-P4PSJMXO-Dg46tTnk.js.map → diagram-P4PSJMXO-lrqvXDXp.js.map} +1 -1
  77. package/webapp/dist/assets/{erDiagram-INFDFZHY-BzJClUtq.js → erDiagram-INFDFZHY-C28KjRkA.js} +5 -5
  78. package/webapp/dist/assets/{erDiagram-INFDFZHY-BzJClUtq.js.map → erDiagram-INFDFZHY-C28KjRkA.js.map} +1 -1
  79. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-IBGgxeki.js → flowDiagram-PKNHOUZH-DkxGh-JF.js} +7 -7
  80. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-IBGgxeki.js.map → flowDiagram-PKNHOUZH-DkxGh-JF.js.map} +1 -1
  81. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DdxgzFKe.js → ganttDiagram-A5KZAMGK-BmZnHD96.js} +3 -3
  82. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DdxgzFKe.js.map → ganttDiagram-A5KZAMGK-BmZnHD96.js.map} +1 -1
  83. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C14OpSSI.js → gitGraphDiagram-K3NZZRJ6-xiHqomZC.js} +8 -8
  84. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C14OpSSI.js.map → gitGraphDiagram-K3NZZRJ6-xiHqomZC.js.map} +1 -1
  85. package/webapp/dist/assets/{graph-BrKKvSVx.js → graph-ozb0amP0.js} +3 -3
  86. package/webapp/dist/assets/{graph-BrKKvSVx.js.map → graph-ozb0amP0.js.map} +1 -1
  87. package/webapp/dist/assets/{index-BV_dDe3L.js → index-Cyx7eev_.js} +700 -165
  88. package/webapp/dist/assets/{index-BV_dDe3L.js.map → index-Cyx7eev_.js.map} +1 -1
  89. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-k0Yv94VI.js → infoDiagram-LFFYTUFH-fLl_TA1F.js} +6 -6
  90. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-k0Yv94VI.js.map → infoDiagram-LFFYTUFH-fLl_TA1F.js.map} +1 -1
  91. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-C3EYBxjN.js → ishikawaDiagram-PHBUUO56-ZL9tBKUr.js} +2 -2
  92. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-C3EYBxjN.js.map → ishikawaDiagram-PHBUUO56-ZL9tBKUr.js.map} +1 -1
  93. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BnSlOrbq.js → journeyDiagram-4ABVD52K--aRyymZs.js} +5 -5
  94. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BnSlOrbq.js.map → journeyDiagram-4ABVD52K--aRyymZs.js.map} +1 -1
  95. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-CNYH0HDF.js → kanban-definition-K7BYSVSG-BO_QdW_O.js} +3 -3
  96. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-CNYH0HDF.js.map → kanban-definition-K7BYSVSG-BO_QdW_O.js.map} +1 -1
  97. package/webapp/dist/assets/{layout-NtmBC9CZ.js → layout-Bu3Xw0z2.js} +5 -5
  98. package/webapp/dist/assets/{layout-NtmBC9CZ.js.map → layout-Bu3Xw0z2.js.map} +1 -1
  99. package/webapp/dist/assets/{linear-BrqwApt9.js → linear-Bq77itJm.js} +2 -2
  100. package/webapp/dist/assets/{linear-BrqwApt9.js.map → linear-Bq77itJm.js.map} +1 -1
  101. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DcknQb8H.js → mindmap-definition-YRQLILUH-CHB8qv8L.js} +4 -4
  102. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DcknQb8H.js.map → mindmap-definition-YRQLILUH-CHB8qv8L.js.map} +1 -1
  103. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-wydKHXzN.js → pieDiagram-SKSYHLDU-Cxg_wh4K.js} +8 -8
  104. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-wydKHXzN.js.map → pieDiagram-SKSYHLDU-Cxg_wh4K.js.map} +1 -1
  105. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D6i3VaFO.js → quadrantDiagram-337W2JSQ-DFguuaS9.js} +3 -3
  106. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D6i3VaFO.js.map → quadrantDiagram-337W2JSQ-DFguuaS9.js.map} +1 -1
  107. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-C0sBwH6H.js → requirementDiagram-Z7DCOOCP--tJ_dfsT.js} +4 -4
  108. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-C0sBwH6H.js.map → requirementDiagram-Z7DCOOCP--tJ_dfsT.js.map} +1 -1
  109. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-33jPg4PK.js → sankeyDiagram-WA2Y5GQK-f0zWimMc.js} +2 -2
  110. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-33jPg4PK.js.map → sankeyDiagram-WA2Y5GQK-f0zWimMc.js.map} +1 -1
  111. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-CJsKHnh5.js → sequenceDiagram-2WXFIKYE-dwXRRnyq.js} +4 -4
  112. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-CJsKHnh5.js.map → sequenceDiagram-2WXFIKYE-dwXRRnyq.js.map} +1 -1
  113. package/webapp/dist/assets/{stateDiagram-RAJIS63D-B6A5jTdU.js → stateDiagram-RAJIS63D-DToxcEC2.js} +9 -9
  114. package/webapp/dist/assets/{stateDiagram-RAJIS63D-B6A5jTdU.js.map → stateDiagram-RAJIS63D-DToxcEC2.js.map} +1 -1
  115. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-6YIjpVKr.js → stateDiagram-v2-FVOUBMTO-BY5hDUqz.js} +5 -5
  116. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-6YIjpVKr.js.map → stateDiagram-v2-FVOUBMTO-BY5hDUqz.js.map} +1 -1
  117. package/webapp/dist/assets/{timeline-definition-YZTLITO2-BQS5KHfj.js → timeline-definition-YZTLITO2-CT3WRcFt.js} +3 -3
  118. package/webapp/dist/assets/{timeline-definition-YZTLITO2-BQS5KHfj.js.map → timeline-definition-YZTLITO2-CT3WRcFt.js.map} +1 -1
  119. package/webapp/dist/assets/{treemap-KZPCXAKY-DB1uUX8l.js → treemap-KZPCXAKY-Lnkh2bpd.js} +5 -5
  120. package/webapp/dist/assets/{treemap-KZPCXAKY-DB1uUX8l.js.map → treemap-KZPCXAKY-Lnkh2bpd.js.map} +1 -1
  121. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BtcfWZJx.js → vennDiagram-LZ73GAT5-CYSLSh1w.js} +2 -2
  122. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BtcfWZJx.js.map → vennDiagram-LZ73GAT5-CYSLSh1w.js.map} +1 -1
  123. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-CfIdcI74.js → xychartDiagram-JWTSCODW-DgvaqrGO.js} +3 -3
  124. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-CfIdcI74.js.map → xychartDiagram-JWTSCODW-DgvaqrGO.js.map} +1 -1
  125. package/webapp/dist/index.html +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-D_JMhNNL.js","assets/graph-BrKKvSVx.js","assets/_baseUniq-BHtz-XvO.js","assets/layout-NtmBC9CZ.js","assets/_basePickBy-EK9iGcOl.js","assets/clone-XglJh1R0.js","assets/cose-bilkent-S5V4N54A--gZrh2tG.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-DKra5-za.js","assets/chunk-JSJVCQXG-CK8inzJx.js","assets/flowDiagram-PKNHOUZH-IBGgxeki.js","assets/chunk-FMBD7UC4-C2i0rEFF.js","assets/chunk-55IACEB6-DsPShmjL.js","assets/chunk-KX2RTZJC-BjEK5_oI.js","assets/channel-CxE9sL_E.js","assets/erDiagram-INFDFZHY-BzJClUtq.js","assets/gitGraphDiagram-K3NZZRJ6-C14OpSSI.js","assets/chunk-4BX2VUAB-BlyIt9uv.js","assets/chunk-QZHKN3VN-CMikir3s.js","assets/treemap-KZPCXAKY-DB1uUX8l.js","assets/ganttDiagram-A5KZAMGK-DdxgzFKe.js","assets/linear-BrqwApt9.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-k0Yv94VI.js","assets/pieDiagram-SKSYHLDU-wydKHXzN.js","assets/arc-NqUmMwkS.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-D6i3VaFO.js","assets/xychartDiagram-JWTSCODW-CfIdcI74.js","assets/requirementDiagram-Z7DCOOCP-C0sBwH6H.js","assets/sequenceDiagram-2WXFIKYE-CJsKHnh5.js","assets/classDiagram-VBA2DB6C-kzzlkQ_D.js","assets/chunk-WL4C6EOR-1gtCLicd.js","assets/classDiagram-v2-RAHNMMFH-kzzlkQ_D.js","assets/stateDiagram-RAJIS63D-B6A5jTdU.js","assets/chunk-NQ4KR5QH-Clf489xc.js","assets/stateDiagram-v2-FVOUBMTO-6YIjpVKr.js","assets/journeyDiagram-4ABVD52K-BnSlOrbq.js","assets/timeline-definition-YZTLITO2-BQS5KHfj.js","assets/mindmap-definition-YRQLILUH-DcknQb8H.js","assets/kanban-definition-K7BYSVSG-CNYH0HDF.js","assets/sankeyDiagram-WA2Y5GQK-33jPg4PK.js","assets/diagram-P4PSJMXO-Dg46tTnk.js","assets/diagram-IFDJBPK2-BFv5iU5U.js","assets/blockDiagram-WCTKOSBZ-RNM7ujN4.js","assets/architectureDiagram-2XIMDMQ5-CJ7Jb15a.js","assets/diagram-E7M64L7V-HkYhqJDL.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-DU_3BSOq.js","assets/graph-ozb0amP0.js","assets/_baseUniq-B06twih4.js","assets/layout-Bu3Xw0z2.js","assets/_basePickBy-CgM-M_q8.js","assets/clone-5uLJc7AC.js","assets/cose-bilkent-S5V4N54A-CoiJzdQi.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-B26QTIJt.js","assets/chunk-JSJVCQXG-CRq8LK53.js","assets/flowDiagram-PKNHOUZH-DkxGh-JF.js","assets/chunk-FMBD7UC4-BwYp8OtY.js","assets/chunk-55IACEB6-6sRVmXqs.js","assets/chunk-KX2RTZJC-CzFE355P.js","assets/channel-C5U2W0P9.js","assets/erDiagram-INFDFZHY-C28KjRkA.js","assets/gitGraphDiagram-K3NZZRJ6-xiHqomZC.js","assets/chunk-4BX2VUAB-7z2PgnSv.js","assets/chunk-QZHKN3VN-DWkpxb-w.js","assets/treemap-KZPCXAKY-Lnkh2bpd.js","assets/ganttDiagram-A5KZAMGK-BmZnHD96.js","assets/linear-Bq77itJm.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-fLl_TA1F.js","assets/pieDiagram-SKSYHLDU-Cxg_wh4K.js","assets/arc-CoXJvjeB.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-DFguuaS9.js","assets/xychartDiagram-JWTSCODW-DgvaqrGO.js","assets/requirementDiagram-Z7DCOOCP--tJ_dfsT.js","assets/sequenceDiagram-2WXFIKYE-dwXRRnyq.js","assets/classDiagram-VBA2DB6C-mVfJeuZL.js","assets/chunk-WL4C6EOR-DkpfoQzK.js","assets/classDiagram-v2-RAHNMMFH-mVfJeuZL.js","assets/stateDiagram-RAJIS63D-DToxcEC2.js","assets/chunk-NQ4KR5QH-3cQSOzCt.js","assets/stateDiagram-v2-FVOUBMTO-BY5hDUqz.js","assets/journeyDiagram-4ABVD52K--aRyymZs.js","assets/timeline-definition-YZTLITO2-CT3WRcFt.js","assets/mindmap-definition-YRQLILUH-CHB8qv8L.js","assets/kanban-definition-K7BYSVSG-BO_QdW_O.js","assets/sankeyDiagram-WA2Y5GQK-f0zWimMc.js","assets/diagram-P4PSJMXO-lrqvXDXp.js","assets/diagram-IFDJBPK2-CFWMc1oD.js","assets/blockDiagram-WCTKOSBZ-CYRE6deu.js","assets/architectureDiagram-2XIMDMQ5-BLFRWTKn.js","assets/diagram-E7M64L7V-DgqOvF1U.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);
@@ -63314,11 +63314,176 @@ function requireLib() {
63314
63314
  }
63315
63315
  var libExports = /* @__PURE__ */ requireLib();
63316
63316
  const HighlightJS = /* @__PURE__ */ getDefaultExportFromCjs(libExports);
63317
+ const PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX = 120;
63318
+ const PROGRESSIVE_EXPAND_STEP_PARENT_RATIO = 1 / 3;
63319
+ const PROGRESSIVE_EXPAND_STEP_PARENT_ATTR = "data-progressive-expand-step-parent";
63320
+ function sameProgressiveExpandState(left, right) {
63321
+ if (left.kind !== right.kind) return false;
63322
+ if (left.kind !== "partial" || right.kind !== "partial") return true;
63323
+ return left.maxHeightPx === right.maxHeightPx;
63324
+ }
63325
+ function resolveProgressiveExpandStepParent(target) {
63326
+ return target.closest(`[${PROGRESSIVE_EXPAND_STEP_PARENT_ATTR}="true"]`);
63327
+ }
63328
+ function computeProgressiveExpandStepPx(parent) {
63329
+ const parentHeight = parent?.clientHeight ?? 0;
63330
+ const viewportHeight = typeof window === "undefined" ? 0 : window.innerHeight;
63331
+ const referenceHeight = parentHeight > 0 ? parentHeight : viewportHeight > 0 ? viewportHeight : PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX;
63332
+ return Math.max(1, Math.floor(referenceHeight * PROGRESSIVE_EXPAND_STEP_PARENT_RATIO));
63333
+ }
63334
+ function getProgressiveExpandLabel(language2) {
63335
+ return language2 === "zh" ? { text: "展开更多", title: "展开更多" } : { text: "Show more", title: "Show more" };
63336
+ }
63337
+ class ProgressiveExpandableComponent {
63338
+ constructor(options) {
63339
+ this.overflowObserver = null;
63340
+ this.boundOnNestedGrowth = (event) => {
63341
+ if (!(event instanceof CustomEvent)) return;
63342
+ if (event.type !== "progressive-expand-content-grown") return;
63343
+ if (event.target === this.target) return;
63344
+ if (this.currentState.kind === "full") return;
63345
+ requestAnimationFrame(() => {
63346
+ this.refreshExpandFooter();
63347
+ });
63348
+ };
63349
+ this.boundOnClick = () => {
63350
+ const stepPx = computeProgressiveExpandStepPx(this.stepParent);
63351
+ const currentMaxHeightPx = this.currentState.kind === "partial" ? Math.max(this.currentState.maxHeightPx, this.target.clientHeight) : Math.max(this.target.clientHeight, PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX);
63352
+ const nextMaxHeightPx = currentMaxHeightPx + stepPx;
63353
+ this.collapseToHeight(nextMaxHeightPx);
63354
+ this.updateState({ kind: "partial", maxHeightPx: nextMaxHeightPx });
63355
+ requestAnimationFrame(() => {
63356
+ this.refreshExpandFooter();
63357
+ this.emitContentGrown("expand-step");
63358
+ this.onAfterExpandStep?.();
63359
+ });
63360
+ };
63361
+ this.target = options.target;
63362
+ this.footer = options.footer;
63363
+ this.button = options.button;
63364
+ this.stepParent = options.stepParent ?? null;
63365
+ this.label = options.label;
63366
+ this.observeTargetUntilOverflow = options.observeTargetUntilOverflow === true;
63367
+ this.onStateChange = options.onStateChange;
63368
+ this.onAfterExpandStep = options.onAfterExpandStep;
63369
+ this.currentState = options.state ?? { kind: "initial" };
63370
+ this.button.setAttribute("aria-label", this.label.text);
63371
+ this.button.title = this.label.title;
63372
+ this.button.onclick = this.boundOnClick;
63373
+ this.target.addEventListener(
63374
+ "progressive-expand-content-grown",
63375
+ this.boundOnNestedGrowth
63376
+ );
63377
+ this.applyCurrentState();
63378
+ this.attachOverflowObserverIfNeeded();
63379
+ this.refreshExpandFooter();
63380
+ requestAnimationFrame(() => {
63381
+ this.refreshExpandFooter();
63382
+ });
63383
+ }
63384
+ cleanup() {
63385
+ this.disconnectOverflowObserver();
63386
+ this.button.onclick = null;
63387
+ this.target.removeEventListener(
63388
+ "progressive-expand-content-grown",
63389
+ this.boundOnNestedGrowth
63390
+ );
63391
+ }
63392
+ emitContentGrown(reason) {
63393
+ dispatchDomindsEvent(
63394
+ this.target,
63395
+ "progressive-expand-content-grown",
63396
+ { reason },
63397
+ { bubbles: true, composed: true }
63398
+ );
63399
+ }
63400
+ updateState(nextState) {
63401
+ if (sameProgressiveExpandState(this.currentState, nextState)) return;
63402
+ this.currentState = nextState;
63403
+ this.onStateChange?.(nextState);
63404
+ }
63405
+ collapseToHeight(heightPx) {
63406
+ this.target.style.maxHeight = `${Math.max(PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX, heightPx)}px`;
63407
+ this.target.style.overflowY = "hidden";
63408
+ }
63409
+ collapseToInitial() {
63410
+ this.collapseToHeight(PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX);
63411
+ }
63412
+ showCurrentContentFully() {
63413
+ this.target.style.maxHeight = "none";
63414
+ this.target.style.overflowY = "visible";
63415
+ }
63416
+ disconnectOverflowObserver() {
63417
+ this.overflowObserver?.disconnect();
63418
+ this.overflowObserver = null;
63419
+ }
63420
+ expandFully() {
63421
+ this.showCurrentContentFully();
63422
+ this.footer.classList.add("is-hidden");
63423
+ this.disconnectOverflowObserver();
63424
+ this.updateState({ kind: "full" });
63425
+ }
63426
+ applyCurrentState() {
63427
+ switch (this.currentState.kind) {
63428
+ case "initial":
63429
+ this.collapseToInitial();
63430
+ return;
63431
+ case "partial":
63432
+ this.collapseToHeight(this.currentState.maxHeightPx);
63433
+ return;
63434
+ case "full":
63435
+ this.expandFully();
63436
+ return;
63437
+ }
63438
+ }
63439
+ attachOverflowObserverIfNeeded() {
63440
+ this.disconnectOverflowObserver();
63441
+ if (!this.observeTargetUntilOverflow || this.currentState.kind !== "initial" || typeof ResizeObserver === "undefined") {
63442
+ return;
63443
+ }
63444
+ this.overflowObserver = new ResizeObserver(() => {
63445
+ this.refreshExpandFooter();
63446
+ this.emitContentGrown("content-growth");
63447
+ });
63448
+ this.overflowObserver.observe(this.target);
63449
+ }
63450
+ refreshExpandFooter() {
63451
+ if (!this.target.isConnected) return;
63452
+ if (this.currentState.kind === "initial") {
63453
+ const exceedsInitialClamp = this.target.scrollHeight > PROGRESSIVE_EXPAND_INITIAL_MAX_HEIGHT_PX + 1;
63454
+ if (exceedsInitialClamp) {
63455
+ this.collapseToInitial();
63456
+ this.footer.classList.remove("is-hidden");
63457
+ this.disconnectOverflowObserver();
63458
+ return;
63459
+ }
63460
+ this.footer.classList.add("is-hidden");
63461
+ this.showCurrentContentFully();
63462
+ return;
63463
+ }
63464
+ const overflow = this.target.scrollHeight > this.target.clientHeight + 1;
63465
+ if (overflow) {
63466
+ this.footer.classList.remove("is-hidden");
63467
+ this.disconnectOverflowObserver();
63468
+ return;
63469
+ }
63470
+ this.footer.classList.add("is-hidden");
63471
+ this.expandFully();
63472
+ }
63473
+ }
63474
+ function setupProgressiveExpandBehavior(options) {
63475
+ const component = new ProgressiveExpandableComponent(options);
63476
+ return () => {
63477
+ component.cleanup();
63478
+ };
63479
+ }
63317
63480
  class DomindsCodeBlock extends HTMLElement {
63318
63481
  constructor() {
63319
63482
  super();
63320
63483
  this._language = "";
63321
63484
  this._code = "";
63485
+ this.progressiveExpandCleanup = null;
63486
+ this.progressiveExpandState = { kind: "initial" };
63322
63487
  this.style.display = "block";
63323
63488
  }
63324
63489
  static get observedAttributes() {
@@ -63327,6 +63492,10 @@ class DomindsCodeBlock extends HTMLElement {
63327
63492
  connectedCallback() {
63328
63493
  this.render();
63329
63494
  }
63495
+ disconnectedCallback() {
63496
+ this.progressiveExpandCleanup?.();
63497
+ this.progressiveExpandCleanup = null;
63498
+ }
63330
63499
  attributeChangedCallback(name, oldValue, newValue) {
63331
63500
  if (name === "language" && oldValue !== newValue) {
63332
63501
  this._language = newValue;
@@ -63413,11 +63582,82 @@ class DomindsCodeBlock extends HTMLElement {
63413
63582
  background: var(--dominds-bg, var(--color-bg-primary, #f8f8f8));
63414
63583
  overflow: auto;
63415
63584
  }
63585
+ .code-expand-footer {
63586
+ display: flex;
63587
+ justify-content: center;
63588
+ align-items: center;
63589
+ padding: 0 0 4px;
63590
+ margin-top: -1px;
63591
+ background: linear-gradient(
63592
+ to bottom,
63593
+ color-mix(in srgb, var(--dominds-bg-secondary, #ffffff) 0%, transparent),
63594
+ var(--dominds-bg-secondary, var(--color-bg-secondary, #ffffff)) 72%
63595
+ );
63596
+ }
63597
+ .code-expand-footer.is-hidden {
63598
+ display: none;
63599
+ }
63600
+ .code-expand-btn {
63601
+ width: 28px;
63602
+ height: 20px;
63603
+ border-radius: 999px;
63604
+ border: 1px solid var(--dominds-border, var(--color-border-primary, #e5e5e5));
63605
+ background: var(--dominds-bg-secondary, var(--color-bg-secondary, #ffffff));
63606
+ color: var(--dominds-muted, var(--color-fg-tertiary, #616161));
63607
+ cursor: pointer;
63608
+ display: inline-flex;
63609
+ align-items: center;
63610
+ justify-content: center;
63611
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
63612
+ transition:
63613
+ background 0.2s ease,
63614
+ border-color 0.2s ease,
63615
+ color 0.2s ease,
63616
+ box-shadow 0.2s ease;
63617
+ }
63618
+ .code-expand-btn:hover {
63619
+ border-color: var(--dominds-primary, var(--color-accent-primary, #005fb8));
63620
+ color: var(--dominds-primary, var(--color-accent-primary, #005fb8));
63621
+ background: color-mix(
63622
+ in srgb,
63623
+ var(--dominds-bg-secondary, #ffffff) 85%,
63624
+ var(--dominds-primary, #005fb8) 15%
63625
+ );
63626
+ }
63627
+ .code-expand-btn:focus-visible {
63628
+ outline: 2px solid var(--dominds-primary, var(--color-accent-primary, #005fb8));
63629
+ outline-offset: 1px;
63630
+ }
63631
+ .code-expand-icon {
63632
+ width: 12px;
63633
+ height: 12px;
63634
+ --icon-mask: ${ICON_MASK_URLS.chevronsDown};
63635
+ animation: progressive-expand-flash 2.2s ease-in-out infinite;
63636
+ }
63637
+ .code-expand-btn:hover .code-expand-icon,
63638
+ .code-expand-btn:focus-visible .code-expand-icon {
63639
+ animation-play-state: paused;
63640
+ }
63416
63641
  code.hljs {
63417
63642
  padding: 0;
63418
63643
  background: transparent;
63419
63644
  color: var(--dominds-fg, var(--color-fg-primary, #3b3b3b));
63420
63645
  }
63646
+ @keyframes progressive-expand-flash {
63647
+ 0%,
63648
+ 100% {
63649
+ opacity: 0.5;
63650
+ transform: translateY(0);
63651
+ }
63652
+ 35% {
63653
+ opacity: 1;
63654
+ transform: translateY(1px);
63655
+ }
63656
+ 60% {
63657
+ opacity: 0.75;
63658
+ transform: translateY(3px);
63659
+ }
63660
+ }
63421
63661
  </style>
63422
63662
  <div class="code-block-wrapper">
63423
63663
  <div class="code-header">
@@ -63425,13 +63665,45 @@ class DomindsCodeBlock extends HTMLElement {
63425
63665
  <button class="copy-btn" title="Copy code" aria-label="Copy code" onclick="navigator.clipboard.writeText(this.parentElement.nextElementSibling.querySelector('code').textContent)"><span class="icon-mask" aria-hidden="true"></span></button>
63426
63666
  </div>
63427
63667
  <pre><code class="hljs language-${language2}">${highlighted}</code></pre>
63668
+ <div class="code-expand-footer is-hidden">
63669
+ <button type="button" class="code-expand-btn">
63670
+ <span class="code-expand-icon icon-mask" aria-hidden="true"></span>
63671
+ </button>
63672
+ </div>
63428
63673
  </div>
63429
63674
  `;
63675
+ this.setupProgressiveExpand();
63430
63676
  } catch (error2) {
63431
63677
  console.error("Highlighting error:", error2);
63432
63678
  this.innerHTML = `<pre><code>${this._code}</code></pre>`;
63433
63679
  }
63434
63680
  }
63681
+ setupProgressiveExpand() {
63682
+ const target = this.querySelector("pre");
63683
+ const footer = this.querySelector(".code-expand-footer");
63684
+ const button = this.querySelector(".code-expand-btn");
63685
+ if (!(target instanceof HTMLElement)) return;
63686
+ if (!(footer instanceof HTMLElement)) return;
63687
+ if (!(button instanceof HTMLButtonElement)) return;
63688
+ const stepParent = resolveProgressiveExpandStepParent(this);
63689
+ const language2 = this.closest("[lang]")?.getAttribute("lang") ?? "en";
63690
+ this.progressiveExpandCleanup?.();
63691
+ this.progressiveExpandCleanup = setupProgressiveExpandBehavior({
63692
+ target,
63693
+ footer,
63694
+ button,
63695
+ stepParent,
63696
+ label: getProgressiveExpandLabel(language2),
63697
+ // Code blocks can keep growing while streaming output arrives. Observe only the code block
63698
+ // itself until it first crosses the initial clamp threshold; never infer or observe parent
63699
+ // containers here.
63700
+ observeTargetUntilOverflow: true,
63701
+ state: this.progressiveExpandState,
63702
+ onStateChange: (state2) => {
63703
+ this.progressiveExpandState = state2;
63704
+ }
63705
+ });
63706
+ }
63435
63707
  }
63436
63708
  if (!customElements.get("dominds-code-block")) {
63437
63709
  customElements.define("dominds-code-block", DomindsCodeBlock);
@@ -98071,12 +98343,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
98071
98343
  registerLayoutLoaders([
98072
98344
  {
98073
98345
  name: "dagre",
98074
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-D_JMhNNL.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98346
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-DU_3BSOq.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98075
98347
  },
98076
98348
  ...[
98077
98349
  {
98078
98350
  name: "cose-bilkent",
98079
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A--gZrh2tG.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98351
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-CoiJzdQi.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98080
98352
  }
98081
98353
  ]
98082
98354
  ]);
@@ -98461,12 +98733,12 @@ function baseKeys(object) {
98461
98733
  var DataView = getNative(root, "DataView");
98462
98734
  var Promise$1 = getNative(root, "Promise");
98463
98735
  var Set$1 = getNative(root, "Set");
98464
- var WeakMap$1 = getNative(root, "WeakMap");
98736
+ var WeakMap = getNative(root, "WeakMap");
98465
98737
  var mapTag$1 = "[object Map]", objectTag = "[object Object]", promiseTag = "[object Promise]", setTag$1 = "[object Set]", weakMapTag = "[object WeakMap]";
98466
98738
  var dataViewTag = "[object DataView]";
98467
- var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1);
98739
+ var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap);
98468
98740
  var getTag = baseGetTag;
98469
- if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map$1 && getTag(new Map$1()) != mapTag$1 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$1 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag) {
98741
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map$1 && getTag(new Map$1()) != mapTag$1 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$1 || WeakMap && getTag(new WeakMap()) != weakMapTag) {
98470
98742
  getTag = function(value) {
98471
98743
  var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
98472
98744
  if (ctorString) {
@@ -98516,7 +98788,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
98516
98788
  }, "detector");
98517
98789
  var loader = /* @__PURE__ */ __name(async () => {
98518
98790
  const { diagram: diagram2 } = await __vitePreload(async () => {
98519
- const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-DKra5-za.js");
98791
+ const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-B26QTIJt.js");
98520
98792
  return { diagram: diagram22 };
98521
98793
  }, true ? __vite__mapDeps([8,9]) : void 0);
98522
98794
  return { id: id$1, diagram: diagram2 };
@@ -98536,7 +98808,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
98536
98808
  }, "detector");
98537
98809
  var loader2 = /* @__PURE__ */ __name(async () => {
98538
98810
  const { diagram: diagram2 } = await __vitePreload(async () => {
98539
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-IBGgxeki.js");
98811
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DkxGh-JF.js");
98540
98812
  return { diagram: diagram22 };
98541
98813
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
98542
98814
  return { id: id2, diagram: diagram2 };
@@ -98562,7 +98834,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
98562
98834
  }, "detector");
98563
98835
  var loader3 = /* @__PURE__ */ __name(async () => {
98564
98836
  const { diagram: diagram2 } = await __vitePreload(async () => {
98565
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-IBGgxeki.js");
98837
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DkxGh-JF.js");
98566
98838
  return { diagram: diagram22 };
98567
98839
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
98568
98840
  return { id: id3, diagram: diagram2 };
@@ -98579,7 +98851,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
98579
98851
  }, "detector");
98580
98852
  var loader4 = /* @__PURE__ */ __name(async () => {
98581
98853
  const { diagram: diagram2 } = await __vitePreload(async () => {
98582
- const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-BzJClUtq.js");
98854
+ const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-C28KjRkA.js");
98583
98855
  return { diagram: diagram22 };
98584
98856
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
98585
98857
  return { id: id4, diagram: diagram2 };
@@ -98596,7 +98868,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
98596
98868
  }, "detector");
98597
98869
  var loader5 = /* @__PURE__ */ __name(async () => {
98598
98870
  const { diagram: diagram2 } = await __vitePreload(async () => {
98599
- const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-C14OpSSI.js");
98871
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-xiHqomZC.js");
98600
98872
  return { diagram: diagram22 };
98601
98873
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
98602
98874
  return { id: id5, diagram: diagram2 };
@@ -98613,7 +98885,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
98613
98885
  }, "detector");
98614
98886
  var loader6 = /* @__PURE__ */ __name(async () => {
98615
98887
  const { diagram: diagram2 } = await __vitePreload(async () => {
98616
- const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-DdxgzFKe.js");
98888
+ const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-BmZnHD96.js");
98617
98889
  return { diagram: diagram22 };
98618
98890
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
98619
98891
  return { id: id6, diagram: diagram2 };
@@ -98630,7 +98902,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
98630
98902
  }, "detector");
98631
98903
  var loader7 = /* @__PURE__ */ __name(async () => {
98632
98904
  const { diagram: diagram2 } = await __vitePreload(async () => {
98633
- const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-k0Yv94VI.js");
98905
+ const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-fLl_TA1F.js");
98634
98906
  return { diagram: diagram22 };
98635
98907
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
98636
98908
  return { id: id7, diagram: diagram2 };
@@ -98646,7 +98918,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
98646
98918
  }, "detector");
98647
98919
  var loader8 = /* @__PURE__ */ __name(async () => {
98648
98920
  const { diagram: diagram2 } = await __vitePreload(async () => {
98649
- const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-wydKHXzN.js");
98921
+ const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-Cxg_wh4K.js");
98650
98922
  return { diagram: diagram22 };
98651
98923
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
98652
98924
  return { id: id8, diagram: diagram2 };
@@ -98662,7 +98934,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
98662
98934
  }, "detector");
98663
98935
  var loader9 = /* @__PURE__ */ __name(async () => {
98664
98936
  const { diagram: diagram2 } = await __vitePreload(async () => {
98665
- const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-D6i3VaFO.js");
98937
+ const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-DFguuaS9.js");
98666
98938
  return { diagram: diagram22 };
98667
98939
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
98668
98940
  return { id: id9, diagram: diagram2 };
@@ -98679,7 +98951,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
98679
98951
  }, "detector");
98680
98952
  var loader10 = /* @__PURE__ */ __name(async () => {
98681
98953
  const { diagram: diagram2 } = await __vitePreload(async () => {
98682
- const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-CfIdcI74.js");
98954
+ const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-DgvaqrGO.js");
98683
98955
  return { diagram: diagram22 };
98684
98956
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
98685
98957
  return { id: id10, diagram: diagram2 };
@@ -98696,7 +98968,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
98696
98968
  }, "detector");
98697
98969
  var loader11 = /* @__PURE__ */ __name(async () => {
98698
98970
  const { diagram: diagram2 } = await __vitePreload(async () => {
98699
- const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-C0sBwH6H.js");
98971
+ const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP--tJ_dfsT.js");
98700
98972
  return { diagram: diagram22 };
98701
98973
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
98702
98974
  return { id: id11, diagram: diagram2 };
@@ -98713,7 +98985,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
98713
98985
  }, "detector");
98714
98986
  var loader12 = /* @__PURE__ */ __name(async () => {
98715
98987
  const { diagram: diagram2 } = await __vitePreload(async () => {
98716
- const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-CJsKHnh5.js");
98988
+ const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-dwXRRnyq.js");
98717
98989
  return { diagram: diagram22 };
98718
98990
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
98719
98991
  return { id: id12, diagram: diagram2 };
@@ -98733,7 +99005,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
98733
99005
  }, "detector");
98734
99006
  var loader13 = /* @__PURE__ */ __name(async () => {
98735
99007
  const { diagram: diagram2 } = await __vitePreload(async () => {
98736
- const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-kzzlkQ_D.js");
99008
+ const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-mVfJeuZL.js");
98737
99009
  return { diagram: diagram22 };
98738
99010
  }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
98739
99011
  return { id: id13, diagram: diagram2 };
@@ -98753,7 +99025,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
98753
99025
  }, "detector");
98754
99026
  var loader14 = /* @__PURE__ */ __name(async () => {
98755
99027
  const { diagram: diagram2 } = await __vitePreload(async () => {
98756
- const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-kzzlkQ_D.js");
99028
+ const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-mVfJeuZL.js");
98757
99029
  return { diagram: diagram22 };
98758
99030
  }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
98759
99031
  return { id: id14, diagram: diagram2 };
@@ -98773,7 +99045,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
98773
99045
  }, "detector");
98774
99046
  var loader15 = /* @__PURE__ */ __name(async () => {
98775
99047
  const { diagram: diagram2 } = await __vitePreload(async () => {
98776
- const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-B6A5jTdU.js");
99048
+ const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-DToxcEC2.js");
98777
99049
  return { diagram: diagram22 };
98778
99050
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
98779
99051
  return { id: id15, diagram: diagram2 };
@@ -98796,7 +99068,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
98796
99068
  }, "detector");
98797
99069
  var loader16 = /* @__PURE__ */ __name(async () => {
98798
99070
  const { diagram: diagram2 } = await __vitePreload(async () => {
98799
- const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-6YIjpVKr.js");
99071
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-BY5hDUqz.js");
98800
99072
  return { diagram: diagram22 };
98801
99073
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
98802
99074
  return { id: id16, diagram: diagram2 };
@@ -98813,7 +99085,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
98813
99085
  }, "detector");
98814
99086
  var loader17 = /* @__PURE__ */ __name(async () => {
98815
99087
  const { diagram: diagram2 } = await __vitePreload(async () => {
98816
- const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-BnSlOrbq.js");
99088
+ const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K--aRyymZs.js");
98817
99089
  return { diagram: diagram22 };
98818
99090
  }, true ? __vite__mapDeps([38,11,9,26]) : void 0);
98819
99091
  return { id: id17, diagram: diagram2 };
@@ -98883,7 +99155,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
98883
99155
  }, "detector");
98884
99156
  var loader18 = /* @__PURE__ */ __name(async () => {
98885
99157
  const { diagram: diagram2 } = await __vitePreload(async () => {
98886
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-IBGgxeki.js");
99158
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DkxGh-JF.js");
98887
99159
  return { diagram: diagram22 };
98888
99160
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
98889
99161
  return { id: id18, diagram: diagram2 };
@@ -98900,7 +99172,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
98900
99172
  }, "detector");
98901
99173
  var loader19 = /* @__PURE__ */ __name(async () => {
98902
99174
  const { diagram: diagram2 } = await __vitePreload(async () => {
98903
- const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-BQS5KHfj.js");
99175
+ const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-CT3WRcFt.js");
98904
99176
  return { diagram: diagram22 };
98905
99177
  }, true ? __vite__mapDeps([39,26]) : void 0);
98906
99178
  return { id: id19, diagram: diagram2 };
@@ -98917,7 +99189,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
98917
99189
  }, "detector");
98918
99190
  var loader20 = /* @__PURE__ */ __name(async () => {
98919
99191
  const { diagram: diagram2 } = await __vitePreload(async () => {
98920
- const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-DcknQb8H.js");
99192
+ const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-CHB8qv8L.js");
98921
99193
  return { diagram: diagram22 };
98922
99194
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
98923
99195
  return { id: id20, diagram: diagram2 };
@@ -98934,7 +99206,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
98934
99206
  }, "detector");
98935
99207
  var loader21 = /* @__PURE__ */ __name(async () => {
98936
99208
  const { diagram: diagram2 } = await __vitePreload(async () => {
98937
- const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-CNYH0HDF.js");
99209
+ const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-BO_QdW_O.js");
98938
99210
  return { diagram: diagram22 };
98939
99211
  }, true ? __vite__mapDeps([41,11]) : void 0);
98940
99212
  return { id: id21, diagram: diagram2 };
@@ -98951,7 +99223,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
98951
99223
  }, "detector");
98952
99224
  var loader22 = /* @__PURE__ */ __name(async () => {
98953
99225
  const { diagram: diagram2 } = await __vitePreload(async () => {
98954
- const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-33jPg4PK.js");
99226
+ const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-f0zWimMc.js");
98955
99227
  return { diagram: diagram22 };
98956
99228
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
98957
99229
  return { id: id22, diagram: diagram2 };
@@ -98968,7 +99240,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
98968
99240
  }, "detector");
98969
99241
  var loader23 = /* @__PURE__ */ __name(async () => {
98970
99242
  const { diagram: diagram2 } = await __vitePreload(async () => {
98971
- const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-Dg46tTnk.js");
99243
+ const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-lrqvXDXp.js");
98972
99244
  return { diagram: diagram22 };
98973
99245
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
98974
99246
  return { id: id23, diagram: diagram2 };
@@ -98984,7 +99256,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
98984
99256
  }, "detector");
98985
99257
  var loader24 = /* @__PURE__ */ __name(async () => {
98986
99258
  const { diagram: diagram2 } = await __vitePreload(async () => {
98987
- const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-BFv5iU5U.js");
99259
+ const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-CFWMc1oD.js");
98988
99260
  return { diagram: diagram22 };
98989
99261
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
98990
99262
  return { id: id24, diagram: diagram2 };
@@ -99000,7 +99272,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
99000
99272
  }, "detector");
99001
99273
  var loader25 = /* @__PURE__ */ __name(async () => {
99002
99274
  const { diagram: diagram2 } = await __vitePreload(async () => {
99003
- const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-RNM7ujN4.js");
99275
+ const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-CYRE6deu.js");
99004
99276
  return { diagram: diagram22 };
99005
99277
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
99006
99278
  return { id: id25, diagram: diagram2 };
@@ -99017,7 +99289,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
99017
99289
  }, "detector");
99018
99290
  var loader26 = /* @__PURE__ */ __name(async () => {
99019
99291
  const { diagram: diagram2 } = await __vitePreload(async () => {
99020
- const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-CJ7Jb15a.js");
99292
+ const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-BLFRWTKn.js");
99021
99293
  return { diagram: diagram22 };
99022
99294
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
99023
99295
  return { id: id26, diagram: diagram2 };
@@ -99034,7 +99306,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
99034
99306
  }, "detector");
99035
99307
  var loader27 = /* @__PURE__ */ __name(async () => {
99036
99308
  const { diagram: diagram2 } = await __vitePreload(async () => {
99037
- const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-C3EYBxjN.js");
99309
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-ZL9tBKUr.js");
99038
99310
  return { diagram: diagram22 };
99039
99311
  }, true ? [] : void 0);
99040
99312
  return { id: id27, diagram: diagram2 };
@@ -99050,7 +99322,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
99050
99322
  }, "detector");
99051
99323
  var loader28 = /* @__PURE__ */ __name(async () => {
99052
99324
  const { diagram: diagram2 } = await __vitePreload(async () => {
99053
- const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-BtcfWZJx.js");
99325
+ const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-CYSLSh1w.js");
99054
99326
  return { diagram: diagram22 };
99055
99327
  }, true ? [] : void 0);
99056
99328
  return { id: id28, diagram: diagram2 };
@@ -99067,7 +99339,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
99067
99339
  }, "detector");
99068
99340
  var loader29 = /* @__PURE__ */ __name(async () => {
99069
99341
  const { diagram: diagram2 } = await __vitePreload(async () => {
99070
- const { diagram: diagram22 } = await import("./diagram-E7M64L7V-HkYhqJDL.js");
99342
+ const { diagram: diagram22 } = await import("./diagram-E7M64L7V-DgqOvF1U.js");
99071
99343
  return { diagram: diagram22 };
99072
99344
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
99073
99345
  return { id: id29, diagram: diagram2 };
@@ -100501,8 +100773,6 @@ function isSystemNoticeMarkdownContent(value) {
100501
100773
  const trimmed = value.trimStart();
100502
100774
  return trimmed.startsWith("【系统提示】") || trimmed.startsWith("[System notice]");
100503
100775
  }
100504
- const CALLING_CONTENT_INITIAL_MAX_HEIGHT_PX = 120;
100505
- const CALLING_EXPAND_STEP_VIEWPORT_RATIO = 1 / 3;
100506
100776
  const AUTO_SCROLL_FOLLOW_THRESHOLD_PX = 32;
100507
100777
  const AUTO_SCROLL_WHEEL_RESISTANCE_PX = 56;
100508
100778
  const AUTO_SCROLL_WHEEL_DECAY_MS = 520;
@@ -100547,7 +100817,7 @@ class DomindsDialogContainer extends HTMLElement {
100547
100817
  this.toolResultImageStatusElByKey = /* @__PURE__ */ new Map();
100548
100818
  this.queuedUserBubbleByMsgId = /* @__PURE__ */ new Map();
100549
100819
  this.pendingTellaskCallAnchorByGenseq = /* @__PURE__ */ new Map();
100550
- this.progressiveExpandObserverByTarget = /* @__PURE__ */ new WeakMap();
100820
+ this.progressiveExpandCleanupByTarget = /* @__PURE__ */ new Map();
100551
100821
  this.viewportPanelState = { kind: "hidden" };
100552
100822
  this.pendingScrollRequest = null;
100553
100823
  this.highlightSeq = 0;
@@ -101286,6 +101556,10 @@ class DomindsDialogContainer extends HTMLElement {
101286
101556
  }
101287
101557
  // Clean up current state and DOM content
101288
101558
  cleanup() {
101559
+ for (const cleanup of this.progressiveExpandCleanupByTarget.values()) {
101560
+ cleanup();
101561
+ }
101562
+ this.progressiveExpandCleanupByTarget.clear();
101289
101563
  this.stopAutoScrollObservation();
101290
101564
  this.resetAutoScrollTransientState();
101291
101565
  this.clearViewportPanel();
@@ -102472,73 +102746,41 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
102472
102746
  this.stopCallTimingTicker();
102473
102747
  }
102474
102748
  }
102475
- getProgressiveExpandLabel() {
102476
- if (this.uiLanguage === "zh") {
102477
- return { text: "展开更多", title: "展开更多" };
102478
- }
102479
- return { text: "Show more", title: "Show more" };
102480
- }
102481
102749
  setupProgressiveExpand(options) {
102482
- const { target, footer, button } = options;
102483
- const label = this.getProgressiveExpandLabel();
102750
+ const { target, footer, button, stepParent } = options;
102751
+ const label = getProgressiveExpandLabel(this.uiLanguage);
102484
102752
  button.innerHTML = `
102485
102753
  <span class="progressive-expand-icon icon-mask" aria-hidden="true"></span>
102486
102754
  `;
102487
- button.setAttribute("aria-label", label.text);
102488
- button.title = label.title;
102489
- const collapseToInitial = () => {
102490
- target.style.maxHeight = `${CALLING_CONTENT_INITIAL_MAX_HEIGHT_PX}px`;
102491
- target.style.overflowY = "hidden";
102492
- };
102493
- const expandFully = () => {
102494
- target.style.maxHeight = "none";
102495
- target.style.overflowY = "visible";
102496
- footer.classList.add("is-hidden");
102497
- };
102498
- const refreshExpandFooter = () => {
102499
- if (!target.isConnected) return;
102500
- const overflow = target.scrollHeight > target.clientHeight + 1;
102501
- if (overflow) {
102502
- footer.classList.remove("is-hidden");
102503
- return;
102504
- }
102505
- expandFully();
102506
- };
102507
- button.onclick = () => {
102508
- const stepPx = Math.max(
102509
- 1,
102510
- Math.floor(window.innerHeight * CALLING_EXPAND_STEP_VIEWPORT_RATIO)
102511
- );
102512
- const nextMaxHeightPx = Math.max(target.clientHeight, CALLING_CONTENT_INITIAL_MAX_HEIGHT_PX) + stepPx;
102513
- target.style.maxHeight = `${nextMaxHeightPx}px`;
102514
- target.style.overflowY = "hidden";
102515
- requestAnimationFrame(() => {
102516
- refreshExpandFooter();
102755
+ const previousCleanup = this.progressiveExpandCleanupByTarget.get(target);
102756
+ previousCleanup?.();
102757
+ const cleanup = setupProgressiveExpandBehavior({
102758
+ target,
102759
+ footer,
102760
+ button,
102761
+ stepParent,
102762
+ label,
102763
+ // Dialog blocks can still grow after first render while content streams in. Observe only
102764
+ // the target itself and stop as soon as the first overflow threshold is crossed.
102765
+ observeTargetUntilOverflow: true,
102766
+ onAfterExpandStep: () => {
102517
102767
  this.scrollToBottom();
102518
- });
102519
- };
102520
- const previousObserver = this.progressiveExpandObserverByTarget.get(target);
102521
- if (previousObserver) {
102522
- previousObserver.disconnect();
102523
- }
102524
- if (typeof ResizeObserver !== "undefined") {
102525
- const observer = new ResizeObserver(() => {
102526
- refreshExpandFooter();
102527
- });
102528
- observer.observe(target);
102529
- this.progressiveExpandObserverByTarget.set(target, observer);
102530
- }
102531
- collapseToInitial();
102532
- requestAnimationFrame(() => {
102533
- refreshExpandFooter();
102768
+ }
102534
102769
  });
102770
+ this.progressiveExpandCleanupByTarget.set(target, cleanup);
102535
102771
  }
102536
102772
  setupCallingProgressiveExpand(section) {
102537
102773
  const content = section.querySelector(".calling-content");
102538
102774
  const footer = section.querySelector(".calling-expand-footer");
102539
102775
  const button = section.querySelector(".calling-expand-btn");
102540
102776
  if (!content || !footer || !button) return;
102541
- this.setupProgressiveExpand({ target: content, footer, button });
102777
+ const stepParent = resolveProgressiveExpandStepParent(section);
102778
+ this.setupProgressiveExpand({
102779
+ target: content,
102780
+ footer,
102781
+ button,
102782
+ stepParent
102783
+ });
102542
102784
  }
102543
102785
  setupFuncCallArgsProgressiveExpand(section) {
102544
102786
  const target = section.querySelector(".func-call-arguments");
@@ -102549,7 +102791,8 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
102549
102791
  ".func-call-arguments-expand-btn"
102550
102792
  );
102551
102793
  if (!target || !footer || !button) return;
102552
- this.setupProgressiveExpand({ target, footer, button });
102794
+ const stepParent = resolveProgressiveExpandStepParent(section);
102795
+ this.setupProgressiveExpand({ target, footer, button, stepParent });
102553
102796
  }
102554
102797
  setupFuncCallResultProgressiveExpand(section) {
102555
102798
  const target = section.querySelector(".func-call-result");
@@ -102558,14 +102801,16 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
102558
102801
  ".func-call-result-expand-btn"
102559
102802
  );
102560
102803
  if (!target || !footer || !button) return;
102561
- this.setupProgressiveExpand({ target, footer, button });
102804
+ const stepParent = resolveProgressiveExpandStepParent(section);
102805
+ this.setupProgressiveExpand({ target, footer, button, stepParent });
102562
102806
  }
102563
102807
  setupTellaskResponseProgressiveExpand(section) {
102564
102808
  const target = section.querySelector(".teammate-content");
102565
102809
  const footer = section.querySelector(".teammate-expand-footer");
102566
102810
  const button = section.querySelector(".teammate-expand-btn");
102567
102811
  if (!target || !footer || !button) return;
102568
- this.setupProgressiveExpand({ target, footer, button });
102812
+ const stepParent = resolveProgressiveExpandStepParent(section);
102813
+ this.setupProgressiveExpand({ target, footer, button, stepParent });
102569
102814
  }
102570
102815
  setupUiOnlyMarkdownProgressiveExpand(section) {
102571
102816
  const target = section.querySelector(".ui-only-markdown-content");
@@ -102574,7 +102819,8 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
102574
102819
  ".ui-only-markdown-expand-btn"
102575
102820
  );
102576
102821
  if (!target || !footer || !button) return;
102577
- this.setupProgressiveExpand({ target, footer, button });
102822
+ const stepParent = resolveProgressiveExpandStepParent(section);
102823
+ this.setupProgressiveExpand({ target, footer, button, stepParent });
102578
102824
  }
102579
102825
  handleToolCallStart(event) {
102580
102826
  const genseq = event.genseq;
@@ -113861,6 +114107,7 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
113861
114107
  this.toolsWidgetWidthPx = 380;
113862
114108
  this.toolsWidgetHeightPx = 320;
113863
114109
  this.sidebarResizeCleanup = null;
114110
+ this.reminderProgressiveExpandCleanupByKey = /* @__PURE__ */ new Map();
113864
114111
  this.boundOnWindowResize = () => {
113865
114112
  this.restoreViewportScopedResizableSizes();
113866
114113
  this.setupSidebarResizePersistence();
@@ -115052,6 +115299,7 @@ ${formatUiLanguageOptionLabel({
115052
115299
  this.sidebarResizeCleanup();
115053
115300
  this.sidebarResizeCleanup = null;
115054
115301
  }
115302
+ this.cleanupAllReminderProgressiveExpands();
115055
115303
  }
115056
115304
  /**
115057
115305
  * Initial render - creates the DOM structure once after component construction.
@@ -118833,6 +119081,133 @@ ${currentVersion}`;
118833
119081
  min-width: 0;
118834
119082
  }
118835
119083
 
119084
+ .rem-item-body {
119085
+ display: flex;
119086
+ flex-direction: column;
119087
+ gap: 4px;
119088
+ min-width: 0;
119089
+ }
119090
+
119091
+ .rem-item-content.rem-item-content-markdown {
119092
+ white-space: normal;
119093
+ padding-right: 2px;
119094
+ }
119095
+
119096
+ .rem-item-content.rem-item-content-expandable {
119097
+ overflow-y: hidden;
119098
+ }
119099
+
119100
+ .rem-item-expand-footer {
119101
+ margin-top: 2px;
119102
+ padding-top: 2px;
119103
+ border-top: 1px solid var(--dominds-border, #e0e0e0);
119104
+ display: flex;
119105
+ justify-content: center;
119106
+ }
119107
+
119108
+ .rem-item-expand-footer.is-hidden {
119109
+ display: none;
119110
+ }
119111
+
119112
+ .rem-item-expand-btn {
119113
+ border: 1px solid var(--dominds-border, #e0e0e0);
119114
+ background: color-mix(in srgb, var(--dominds-bg, #ffffff) 86%, var(--dominds-hover, #f8f9fa) 14%);
119115
+ color: var(--dominds-fg, #475569);
119116
+ border-radius: 999px;
119117
+ width: 26px;
119118
+ height: 22px;
119119
+ padding: 0;
119120
+ cursor: pointer;
119121
+ display: inline-flex;
119122
+ align-items: center;
119123
+ justify-content: center;
119124
+ }
119125
+
119126
+ .rem-item-expand-btn:hover {
119127
+ background: var(--dominds-hover, #f1f5f9);
119128
+ }
119129
+
119130
+ .rem-item-expand-btn:focus-visible {
119131
+ outline: 2px solid var(--dominds-primary, #007acc);
119132
+ outline-offset: 1px;
119133
+ }
119134
+
119135
+ .rem-item-expand-icon {
119136
+ display: inline-flex;
119137
+ align-items: center;
119138
+ justify-content: center;
119139
+ animation: progressive-expand-flash 2.2s ease-in-out infinite;
119140
+ width: 14px;
119141
+ height: 14px;
119142
+ --icon-mask: ${ICON_MASK_URLS.chevronsDown};
119143
+ }
119144
+
119145
+ .rem-item-expand-btn:hover .rem-item-expand-icon,
119146
+ .rem-item-expand-btn:focus-visible .rem-item-expand-icon {
119147
+ animation-play-state: paused;
119148
+ }
119149
+
119150
+
119151
+ .rem-item-content.rem-item-content-markdown > :first-child {
119152
+ margin-top: 0;
119153
+ }
119154
+
119155
+ .rem-item-content.rem-item-content-markdown > :last-child {
119156
+ margin-bottom: 0;
119157
+ }
119158
+
119159
+ .rem-item-content.rem-item-content-markdown p {
119160
+ margin: 0 0 0.55em;
119161
+ }
119162
+
119163
+ .rem-item-content.rem-item-content-markdown ul,
119164
+ .rem-item-content.rem-item-content-markdown ol {
119165
+ margin: 0 0 0.65em 1.25em;
119166
+ padding: 0;
119167
+ }
119168
+
119169
+ .rem-item-content.rem-item-content-markdown li {
119170
+ margin: 0.18em 0;
119171
+ }
119172
+
119173
+ .rem-item-content.rem-item-content-markdown h1,
119174
+ .rem-item-content.rem-item-content-markdown h2,
119175
+ .rem-item-content.rem-item-content-markdown h3,
119176
+ .rem-item-content.rem-item-content-markdown h4,
119177
+ .rem-item-content.rem-item-content-markdown h5,
119178
+ .rem-item-content.rem-item-content-markdown h6 {
119179
+ margin: 0.75em 0 0.4em;
119180
+ line-height: 1.3;
119181
+ }
119182
+
119183
+ .rem-item-content.rem-item-content-markdown blockquote {
119184
+ margin: 0.6em 0;
119185
+ padding-left: 0.75em;
119186
+ border-left: 3px solid color-mix(in srgb, var(--dominds-primary, #007acc) 45%, transparent);
119187
+ color: color-mix(in srgb, var(--dominds-fg, #333333) 78%, var(--dominds-muted, #666666) 22%);
119188
+ }
119189
+
119190
+ .rem-item-content.rem-item-content-markdown code:not([class]) {
119191
+ background: color-mix(in srgb, var(--dominds-hover, #f8f9fa) 86%, var(--dominds-bg, #ffffff) 14%);
119192
+ border-radius: 4px;
119193
+ padding: 0.08em 0.32em;
119194
+ font-size: 0.95em;
119195
+ }
119196
+
119197
+ .rem-item-content.rem-item-content-markdown table {
119198
+ width: 100%;
119199
+ border-collapse: collapse;
119200
+ margin: 0.6em 0;
119201
+ }
119202
+
119203
+ .rem-item-content.rem-item-content-markdown th,
119204
+ .rem-item-content.rem-item-content-markdown td {
119205
+ border: 1px solid var(--dominds-border, #e0e0e0);
119206
+ padding: 0.32em 0.45em;
119207
+ text-align: left;
119208
+ vertical-align: top;
119209
+ }
119210
+
118836
119211
  .rem-item-content-loading {
118837
119212
  color: var(--dominds-muted, #666666);
118838
119213
  font-style: italic;
@@ -118863,6 +119238,11 @@ ${currentVersion}`;
118863
119238
  background: color-mix(in srgb, var(--dominds-hover) 65%, var(--dominds-bg) 35%);
118864
119239
  }
118865
119240
 
119241
+ @keyframes progressive-expand-flash {
119242
+ 0%, 100% { opacity: 0.46; transform: translateY(0); }
119243
+ 50% { opacity: 1; transform: translateY(1px); }
119244
+ }
119245
+
118866
119246
  `;
118867
119247
  }
118868
119248
  getHTML() {
@@ -119099,7 +119479,7 @@ ${uiLanguageButtonTooltip}">
119099
119479
  <span class="icon-mask app-icon-close" aria-hidden="true"></span>
119100
119480
  </button>
119101
119481
  </div>
119102
- <div id="reminders-widget-content">
119482
+ <div id="reminders-widget-content" lang="${this.uiLanguage}" data-progressive-expand-step-parent="true">
119103
119483
  ${this.toolbarReminders.length === 0 ? `<div class="reminders-widget-empty">${t2.noReminders}</div>` : ""}
119104
119484
  </div>
119105
119485
  <div id="reminders-widget-resize-handle" aria-hidden="true">
@@ -119110,7 +119490,7 @@ ${uiLanguageButtonTooltip}">
119110
119490
 
119111
119491
  <div class="dialog-section">
119112
119492
  <div class="conversation-viewport">
119113
- <div class="conversation-scroll-area">
119493
+ <div class="conversation-scroll-area" lang="${this.uiLanguage}" data-progressive-expand-step-parent="true">
119114
119494
  <dominds-dialog-container id="dialog-container" ui-language="${this.uiLanguage}"></dominds-dialog-container>
119115
119495
  </div>
119116
119496
  </div>
@@ -119267,13 +119647,6 @@ ${content}`;
119267
119647
  this.shadowRoot.addEventListener("reminders-update", () => {
119268
119648
  this.updateRemindersWidget();
119269
119649
  });
119270
- this.shadowRoot.addEventListener("reminder-text", (event) => {
119271
- this.toolbarReminders[event.detail.index] = {
119272
- reminder_id: `transient-${String(event.detail.index)}`,
119273
- content: event.detail.content
119274
- };
119275
- this.updateRemindersWidget();
119276
- });
119277
119650
  this.shadowRoot.addEventListener("dialog-expand", (event) => {
119278
119651
  const { rootId, status } = event.detail;
119279
119652
  if (rootId && status) {
@@ -122703,6 +123076,7 @@ ${content}`;
122703
123076
  }
122704
123077
  closeRemindersWidget() {
122705
123078
  this.remindersWidgetVisible = false;
123079
+ this.cleanupAllReminderProgressiveExpands();
122706
123080
  const widget = this.shadowRoot?.querySelector("#reminders-widget");
122707
123081
  if (widget) widget.remove();
122708
123082
  this.updateToolbarDisplay();
@@ -123402,9 +123776,6 @@ ${content}`;
123402
123776
  if (remBtnCount) {
123403
123777
  remBtnCount.textContent = String(this.toolbarReminders.length);
123404
123778
  }
123405
- if (this.remindersWidgetVisible) {
123406
- this.renderRemindersWidget();
123407
- }
123408
123779
  }
123409
123780
  /**
123410
123781
  * Reset reminder operation count (call when starting new dialog)
@@ -123463,7 +123834,7 @@ ${content}`;
123463
123834
  <span class="icon-mask app-icon-close" aria-hidden="true"></span>
123464
123835
  </button>
123465
123836
  </div>
123466
- <div id="reminders-widget-content"></div>
123837
+ <div id="reminders-widget-content" lang="${this.uiLanguage}" data-progressive-expand-step-parent="true"></div>
123467
123838
  <div id="reminders-widget-resize-handle" aria-hidden="true">
123468
123839
  <span class="icon-mask app-icon-resize-corner-bottom-left" aria-hidden="true"></span>
123469
123840
  </div>
@@ -123480,7 +123851,7 @@ ${content}`;
123480
123851
  }
123481
123852
  /**
123482
123853
  * Render reminders widget content with proper formatting
123483
- * Handles daemon reminders with PID and other metadata
123854
+ * Preserve backend-authored reminder semantics in the widget.
123484
123855
  */
123485
123856
  renderRemindersWidget() {
123486
123857
  if (!this.remindersWidgetVisible) return;
@@ -123494,49 +123865,30 @@ ${content}`;
123494
123865
  console.warn("No reminders widget content container found");
123495
123866
  return;
123496
123867
  }
123868
+ widgetContent.setAttribute("lang", this.uiLanguage);
123869
+ widgetContent.setAttribute("data-progressive-expand-step-parent", "true");
123497
123870
  if (widgetTitle) {
123498
123871
  widgetTitle.textContent = formatRemindersTitle(this.uiLanguage, this.toolbarReminders.length);
123499
123872
  }
123873
+ const shell = this.ensureRemindersWidgetShell(widgetContent);
123500
123874
  const numberedReminders = this.toolbarReminders.filter((r2) => r2 && r2.echoback !== false);
123501
123875
  const virtualReminders = this.toolbarReminders.filter((r2) => r2 && r2.echoback === false);
123502
- let contentHTML = "";
123503
- if (numberedReminders.length === 0 && virtualReminders.length === 0) {
123504
- const t2 = getUiStrings(this.uiLanguage);
123505
- contentHTML = `<div class="reminders-widget-empty">${t2.noReminders}</div>`;
123506
- } else {
123507
- const t2 = getUiStrings(this.uiLanguage);
123508
- const numberedItems = numberedReminders.map((r2, i2) => {
123509
- if (!r2 || !r2.content) {
123510
- const pendingId = `pending-${String(i2 + 1)}`;
123511
- return `<div class="rem-item"><div class="rem-item-head"><div class="rem-item-number" title="${this.escapeHtml(pendingId)}">${this.escapeHtml(pendingId)}</div></div><div class="rem-item-content rem-item-content-loading">${t2.loading}</div></div>`;
123512
- }
123513
- const reminderId = typeof r2.reminder_id === "string" && r2.reminder_id.trim() !== "" ? r2.reminder_id : `pending-${String(i2 + 1)}`;
123514
- const displayContent = this.formatReminderDisplayContent(r2.content, r2.meta);
123515
- const scopeBadgeHtml = this.renderReminderScopeBadgeHtml(r2.scope);
123516
- return `<div class="rem-item"><div class="rem-item-head"><div class="rem-item-number" title="${this.escapeHtml(reminderId)}">${this.escapeHtml(reminderId)}</div>${scopeBadgeHtml}</div><div class="rem-item-content">${this.renderReminderPlainHtml(displayContent)}</div></div>`;
123517
- }).join("");
123518
- const virtualItemsArray = virtualReminders.map((r2) => {
123519
- if (!r2 || !r2.content) {
123520
- return `<div class="rem-item rem-item-virtual"><div class="rem-item-content rem-item-content-loading">${t2.loading}</div></div>`;
123521
- }
123522
- r2.meta && typeof r2.meta === "object" ? r2.meta : void 0;
123523
- const displayContent = this.formatReminderDisplayContent(r2.content, r2.meta);
123524
- return `<div class="rem-item rem-item-virtual"><div class="rem-item-content">${this.renderReminderPlainHtml(displayContent)}</div></div>`;
123525
- });
123526
- const virtualItems = virtualItemsArray.join('<hr class="rem-divider">');
123527
- const sections = [];
123528
- if (virtualItems.length > 0) {
123529
- sections.push(`<div class="rem-section">${virtualItems}</div>`);
123530
- }
123531
- if (numberedItems.length > 0) {
123532
- if (virtualItems.length > 0) {
123533
- sections.push('<hr class="rem-divider rem-divider-section">');
123534
- }
123535
- sections.push(`<div class="rem-section">${numberedItems}</div>`);
123536
- }
123537
- contentHTML = sections.join("");
123538
- }
123539
- widgetContent.innerHTML = contentHTML;
123876
+ const t2 = getUiStrings(this.uiLanguage);
123877
+ const virtualEntries = virtualReminders.map(
123878
+ (r2, i2) => this.buildReminderRenderEntry("virtual", r2, i2, t2)
123879
+ );
123880
+ const numberedEntries = numberedReminders.map(
123881
+ (r2, i2) => this.buildReminderRenderEntry("numbered", r2, i2, t2)
123882
+ );
123883
+ this.assertUniqueReminderRenderKeys("virtual", virtualEntries);
123884
+ this.assertUniqueReminderRenderKeys("numbered", numberedEntries);
123885
+ shell.empty.textContent = t2.noReminders;
123886
+ shell.empty.hidden = virtualEntries.length > 0 || numberedEntries.length > 0;
123887
+ shell.virtualSection.hidden = virtualEntries.length < 1;
123888
+ shell.numberedSection.hidden = numberedEntries.length < 1;
123889
+ shell.sectionDivider.hidden = virtualEntries.length < 1 || numberedEntries.length < 1;
123890
+ this.patchReminderSection(shell.virtualSection, virtualEntries, widgetContent);
123891
+ this.patchReminderSection(shell.numberedSection, numberedEntries, widgetContent);
123540
123892
  }
123541
123893
  renderReminderScopeBadgeHtml(scope) {
123542
123894
  const t2 = getUiStrings(this.uiLanguage);
@@ -123548,26 +123900,209 @@ ${content}`;
123548
123900
  }
123549
123901
  return `<span class="rem-item-scope rem-item-scope-dialog" title="${this.escapeHtml(t2.dialogReminderScope)}" aria-label="${this.escapeHtml(t2.dialogReminderScope)}"><span class="icon-mask" aria-hidden="true"></span></span>`;
123550
123902
  }
123551
- formatReminderDisplayContent(content, meta) {
123552
- if (!meta) {
123553
- return content;
123554
- }
123555
- const metaPid = typeof meta.pid === "number" ? meta.pid : void 0;
123556
- const metaKind = typeof meta.kind === "string" ? meta.kind : void 0;
123557
- const metaInitialCommand = typeof meta.initialCommandLine === "string" ? meta.initialCommandLine : void 0;
123558
- const metaDaemonCommand = typeof meta.daemonCommandLine === "string" ? meta.daemonCommandLine : void 0;
123559
- if (metaKind === "daemon" && metaPid) {
123560
- const t2 = getUiStrings(this.uiLanguage);
123561
- const pidStr = String(metaPid);
123562
- const commandStr = metaInitialCommand || metaDaemonCommand || t2.unknownCommand;
123563
- return `🔄 ${t2.daemonLabel} (PID: ${pidStr})
123564
- ${t2.commandLabel}: ${commandStr}`;
123565
- }
123903
+ formatReminderDisplayContent(content, _meta) {
123566
123904
  return content;
123567
123905
  }
123906
+ renderReminderContentHtml(content, renderMode) {
123907
+ if (renderMode === "plain") {
123908
+ return [
123909
+ '<div class="rem-item-body">',
123910
+ `<div class="rem-item-content rem-item-content-expandable">${this.renderReminderPlainHtml(content)}</div>`,
123911
+ '<div class="rem-item-expand-footer is-hidden"><button type="button" class="rem-item-expand-btn"><span class="rem-item-expand-icon icon-mask" aria-hidden="true"></span></button></div>',
123912
+ "</div>"
123913
+ ].join("");
123914
+ }
123915
+ return [
123916
+ '<div class="rem-item-body">',
123917
+ `<div class="rem-item-content rem-item-content-markdown rem-item-content-expandable markdown-content">${renderDomindsMarkdown(content, { kind: "chat" })}</div>`,
123918
+ '<div class="rem-item-expand-footer is-hidden"><button type="button" class="rem-item-expand-btn"><span class="rem-item-expand-icon icon-mask" aria-hidden="true"></span></button></div>',
123919
+ "</div>"
123920
+ ].join("");
123921
+ }
123568
123922
  renderReminderPlainHtml(content) {
123569
123923
  return htmlExports.escapeHtml(content).replace(/\n/g, "<br>");
123570
123924
  }
123925
+ ensureRemindersWidgetShell(widgetContent) {
123926
+ let empty2 = widgetContent.querySelector('[data-reminders-role="empty"]');
123927
+ if (!(empty2 instanceof HTMLElement)) {
123928
+ empty2 = document.createElement("div");
123929
+ empty2.className = "reminders-widget-empty";
123930
+ empty2.setAttribute("data-reminders-role", "empty");
123931
+ widgetContent.appendChild(empty2);
123932
+ }
123933
+ let virtualSection = widgetContent.querySelector(
123934
+ '[data-reminders-role="virtual-section"]'
123935
+ );
123936
+ if (!(virtualSection instanceof HTMLElement)) {
123937
+ virtualSection = document.createElement("div");
123938
+ virtualSection.className = "rem-section rem-section-virtual";
123939
+ virtualSection.setAttribute("data-reminders-role", "virtual-section");
123940
+ widgetContent.appendChild(virtualSection);
123941
+ }
123942
+ let sectionDivider = widgetContent.querySelector(
123943
+ '[data-reminders-role="section-divider"]'
123944
+ );
123945
+ if (!(sectionDivider instanceof HTMLHRElement)) {
123946
+ sectionDivider = document.createElement("hr");
123947
+ sectionDivider.className = "rem-divider rem-divider-section";
123948
+ sectionDivider.setAttribute("data-reminders-role", "section-divider");
123949
+ widgetContent.appendChild(sectionDivider);
123950
+ }
123951
+ let numberedSection = widgetContent.querySelector(
123952
+ '[data-reminders-role="numbered-section"]'
123953
+ );
123954
+ if (!(numberedSection instanceof HTMLElement)) {
123955
+ numberedSection = document.createElement("div");
123956
+ numberedSection.className = "rem-section rem-section-numbered";
123957
+ numberedSection.setAttribute("data-reminders-role", "numbered-section");
123958
+ widgetContent.appendChild(numberedSection);
123959
+ }
123960
+ const orderedShellNodes = [
123961
+ empty2,
123962
+ virtualSection,
123963
+ sectionDivider,
123964
+ numberedSection
123965
+ ];
123966
+ let rootReferenceNode = widgetContent.firstChild;
123967
+ for (const shellNode of orderedShellNodes) {
123968
+ if (shellNode !== rootReferenceNode) {
123969
+ widgetContent.insertBefore(shellNode, rootReferenceNode);
123970
+ }
123971
+ rootReferenceNode = shellNode.nextSibling;
123972
+ }
123973
+ for (const child of Array.from(widgetContent.childNodes)) {
123974
+ if (orderedShellNodes.includes(child)) continue;
123975
+ child.remove();
123976
+ }
123977
+ return {
123978
+ empty: empty2,
123979
+ virtualSection,
123980
+ sectionDivider,
123981
+ numberedSection
123982
+ };
123983
+ }
123984
+ buildReminderRenderEntry(section, reminder, index, t2) {
123985
+ const fallbackId = `pending-${String(index + 1)}`;
123986
+ const reminderId = typeof reminder?.reminder_id === "string" && reminder.reminder_id.trim() !== "" ? reminder.reminder_id : fallbackId;
123987
+ let html2;
123988
+ if (!reminder || !reminder.content) {
123989
+ const scopeBadgeHtml = section === "numbered" ? "" : this.renderReminderScopeBadgeHtml(reminder?.scope);
123990
+ const itemClass = section === "virtual" ? "rem-item rem-item-virtual" : "rem-item";
123991
+ html2 = `<div class="${itemClass}"><div class="rem-item-head"><div class="rem-item-number" title="${this.escapeHtml(reminderId)}">${this.escapeHtml(reminderId)}</div>${scopeBadgeHtml}</div><div class="rem-item-content rem-item-content-loading">${t2.loading}</div></div>`;
123992
+ } else {
123993
+ const displayContent = this.formatReminderDisplayContent(reminder.content, reminder.meta);
123994
+ const scopeBadgeHtml = section === "numbered" ? this.renderReminderScopeBadgeHtml(reminder.scope) : "";
123995
+ const itemClass = section === "virtual" ? "rem-item rem-item-virtual" : "rem-item";
123996
+ html2 = `<div class="${itemClass}"><div class="rem-item-head"><div class="rem-item-number" title="${this.escapeHtml(reminderId)}">${this.escapeHtml(reminderId)}</div>${scopeBadgeHtml}</div>${this.renderReminderContentHtml(displayContent, reminder.renderMode)}</div>`;
123997
+ }
123998
+ return {
123999
+ key: `${section}:${reminderId}`,
124000
+ fingerprint: `${this.uiLanguage}\0${reminder?.renderRevision ?? `loading:${section}:${reminderId}`}`,
124001
+ html: html2
124002
+ };
124003
+ }
124004
+ createReminderItemElement(entry, widgetContent) {
124005
+ const wrapper = document.createElement("div");
124006
+ wrapper.innerHTML = entry.html;
124007
+ const item = wrapper.firstElementChild;
124008
+ if (!(item instanceof HTMLElement)) {
124009
+ throw new Error(`Reminder render produced no root node for key=${entry.key}`);
124010
+ }
124011
+ item.dataset.reminderKey = entry.key;
124012
+ item.dataset.reminderFingerprint = entry.fingerprint;
124013
+ postprocessRenderedDomindsMarkdown(item);
124014
+ this.setupReminderProgressiveExpandForItem(entry.key, item, widgetContent);
124015
+ return item;
124016
+ }
124017
+ setupReminderProgressiveExpandForItem(key, item, widgetContent) {
124018
+ this.cleanupReminderProgressiveExpand(key);
124019
+ const target = item.querySelector(".rem-item-content");
124020
+ const footer = item.querySelector(".rem-item-expand-footer");
124021
+ const button = item.querySelector(".rem-item-expand-btn");
124022
+ if (!target || !footer || !button) return;
124023
+ const cleanup = setupProgressiveExpandBehavior({
124024
+ target,
124025
+ footer,
124026
+ button,
124027
+ stepParent: widgetContent,
124028
+ label: getProgressiveExpandLabel(this.uiLanguage),
124029
+ // Reminder bodies can become long after first paint when a nested code block is expanded.
124030
+ // Track only target self-growth until the first outer overflow appears; never track widget
124031
+ // parent resize for this.
124032
+ observeTargetUntilOverflow: true
124033
+ });
124034
+ this.reminderProgressiveExpandCleanupByKey.set(key, cleanup);
124035
+ }
124036
+ cleanupReminderProgressiveExpand(key) {
124037
+ const cleanup = this.reminderProgressiveExpandCleanupByKey.get(key);
124038
+ if (!cleanup) return;
124039
+ cleanup();
124040
+ this.reminderProgressiveExpandCleanupByKey.delete(key);
124041
+ }
124042
+ cleanupAllReminderProgressiveExpands() {
124043
+ for (const cleanup of this.reminderProgressiveExpandCleanupByKey.values()) {
124044
+ cleanup();
124045
+ }
124046
+ this.reminderProgressiveExpandCleanupByKey.clear();
124047
+ }
124048
+ assertUniqueReminderRenderKeys(section, entries2) {
124049
+ const seen2 = /* @__PURE__ */ new Set();
124050
+ for (const entry of entries2) {
124051
+ if (seen2.has(entry.key)) {
124052
+ throw new Error(`Duplicate reminder render key in ${section} section: ${entry.key}`);
124053
+ }
124054
+ seen2.add(entry.key);
124055
+ }
124056
+ }
124057
+ patchReminderSection(section, entries2, widgetContent) {
124058
+ const existingByKey = /* @__PURE__ */ new Map();
124059
+ for (const child of Array.from(section.children)) {
124060
+ if (!(child instanceof HTMLElement)) {
124061
+ child.remove();
124062
+ continue;
124063
+ }
124064
+ if (!child.classList.contains("rem-item")) {
124065
+ child.remove();
124066
+ continue;
124067
+ }
124068
+ const key = child.dataset.reminderKey;
124069
+ if (typeof key === "string" && key.length > 0) {
124070
+ if (existingByKey.has(key)) {
124071
+ throw new Error(`Duplicate reminder DOM key in widget section: ${key}`);
124072
+ }
124073
+ existingByKey.set(key, child);
124074
+ } else {
124075
+ child.remove();
124076
+ }
124077
+ }
124078
+ let referenceNode = section.firstChild;
124079
+ for (const entry of entries2) {
124080
+ const existing = existingByKey.get(entry.key) ?? null;
124081
+ let item = existing;
124082
+ if (existing !== null && existing.dataset.reminderFingerprint !== entry.fingerprint) {
124083
+ const nextSibling = existing.nextSibling;
124084
+ const wasReferenceNode = existing === referenceNode;
124085
+ this.cleanupReminderProgressiveExpand(entry.key);
124086
+ existing.remove();
124087
+ if (wasReferenceNode) {
124088
+ referenceNode = nextSibling;
124089
+ }
124090
+ item = null;
124091
+ }
124092
+ if (item === null) {
124093
+ item = this.createReminderItemElement(entry, widgetContent);
124094
+ section.insertBefore(item, referenceNode);
124095
+ } else if (item !== referenceNode) {
124096
+ section.insertBefore(item, referenceNode);
124097
+ }
124098
+ referenceNode = item.nextSibling;
124099
+ existingByKey.delete(entry.key);
124100
+ }
124101
+ for (const [obsoleteKey, obsoleteNode] of existingByKey.entries()) {
124102
+ this.cleanupReminderProgressiveExpand(obsoleteKey);
124103
+ obsoleteNode.remove();
124104
+ }
124105
+ }
123571
124106
  /**
123572
124107
  * Get agent display name from team configuration or fallback to default format
123573
124108
  */
@@ -125854,4 +126389,4 @@ export {
125854
126389
  purify as y,
125855
126390
  clear$2 as z
125856
126391
  };
125857
- //# sourceMappingURL=index-BV_dDe3L.js.map
126392
+ //# sourceMappingURL=index-Cyx7eev_.js.map