dominds 0.7.1 → 0.7.3

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 (120) hide show
  1. package/dist/dialog-global-registry.js +58 -3
  2. package/dist/dialog.js +17 -0
  3. package/dist/docs/dialog-system.md +18 -16
  4. package/dist/docs/dialog-system.zh.md +20 -19
  5. package/dist/evt-registry.js +16 -7
  6. package/dist/llm/driver-v2/context.js +2 -1
  7. package/dist/llm/driver-v2/core.js +102 -119
  8. package/dist/llm/driver-v2/orchestrator.js +65 -38
  9. package/dist/llm/driver-v2/round.js +213 -35
  10. package/dist/llm/driver-v2/runtime-utils.js +1 -0
  11. package/dist/llm/driver-v2/supdialog-response.js +5 -18
  12. package/dist/llm/driver-v2/tellask-bridge.js +95 -6
  13. package/dist/llm/driver.js +29 -2
  14. package/dist/minds/builtin/cmdr/persona.md +3 -0
  15. package/dist/minds/builtin/dijiang/knowledge.md +287 -0
  16. package/dist/minds/builtin/dijiang/persona.md +7 -0
  17. package/dist/persistence.js +28 -0
  18. package/dist/server/websocket-handler.js +134 -25
  19. package/dist/shared/diligence.js +8 -2
  20. package/dist/showing-by-doing.js +31 -34
  21. package/dist/static/assets/{_baseUniq-BxKNVs_E.js → _baseUniq-zV3pyJ-s.js} +2 -2
  22. package/dist/static/assets/{_baseUniq-BxKNVs_E.js.map → _baseUniq-zV3pyJ-s.js.map} +1 -1
  23. package/dist/static/assets/{arc-SobL0GO-.js → arc-Ctgmrh71.js} +2 -2
  24. package/dist/static/assets/{arc-SobL0GO-.js.map → arc-Ctgmrh71.js.map} +1 -1
  25. package/dist/static/assets/{architectureDiagram-VXUJARFQ-MMDS1QOC.js → architectureDiagram-VXUJARFQ-CAH1Zinn.js} +6 -6
  26. package/dist/static/assets/{architectureDiagram-VXUJARFQ-MMDS1QOC.js.map → architectureDiagram-VXUJARFQ-CAH1Zinn.js.map} +1 -1
  27. package/dist/static/assets/{blockDiagram-VD42YOAC-BOsSirNK.js → blockDiagram-VD42YOAC-Djz6JdD2.js} +7 -7
  28. package/dist/static/assets/{blockDiagram-VD42YOAC-BOsSirNK.js.map → blockDiagram-VD42YOAC-Djz6JdD2.js.map} +1 -1
  29. package/dist/static/assets/{c4Diagram-YG6GDRKO-D4jQkzwx.js → c4Diagram-YG6GDRKO-CSuskOyq.js} +3 -3
  30. package/dist/static/assets/{c4Diagram-YG6GDRKO-D4jQkzwx.js.map → c4Diagram-YG6GDRKO-CSuskOyq.js.map} +1 -1
  31. package/dist/static/assets/{channel-CNJ5IKbI.js → channel-Ym6U59Kh.js} +2 -2
  32. package/dist/static/assets/{channel-CNJ5IKbI.js.map → channel-Ym6U59Kh.js.map} +1 -1
  33. package/dist/static/assets/{chunk-4BX2VUAB-Dzp3xxyo.js → chunk-4BX2VUAB-CqbVylSz.js} +2 -2
  34. package/dist/static/assets/{chunk-4BX2VUAB-Dzp3xxyo.js.map → chunk-4BX2VUAB-CqbVylSz.js.map} +1 -1
  35. package/dist/static/assets/{chunk-55IACEB6-CbmixuSI.js → chunk-55IACEB6-CeWj8Jm_.js} +2 -2
  36. package/dist/static/assets/{chunk-55IACEB6-CbmixuSI.js.map → chunk-55IACEB6-CeWj8Jm_.js.map} +1 -1
  37. package/dist/static/assets/{chunk-B4BG7PRW-CdpmYjdb.js → chunk-B4BG7PRW-BjxJkuhq.js} +5 -5
  38. package/dist/static/assets/{chunk-B4BG7PRW-CdpmYjdb.js.map → chunk-B4BG7PRW-BjxJkuhq.js.map} +1 -1
  39. package/dist/static/assets/{chunk-DI55MBZ5-wBUIgR3h.js → chunk-DI55MBZ5-9kxfXB4B.js} +4 -4
  40. package/dist/static/assets/{chunk-DI55MBZ5-wBUIgR3h.js.map → chunk-DI55MBZ5-9kxfXB4B.js.map} +1 -1
  41. package/dist/static/assets/{chunk-FMBD7UC4-l62jcBz-.js → chunk-FMBD7UC4-DyM3IVWB.js} +2 -2
  42. package/dist/static/assets/{chunk-FMBD7UC4-l62jcBz-.js.map → chunk-FMBD7UC4-DyM3IVWB.js.map} +1 -1
  43. package/dist/static/assets/{chunk-QN33PNHL-BXfKZUpE.js → chunk-QN33PNHL-DGU21aEB.js} +2 -2
  44. package/dist/static/assets/{chunk-QN33PNHL-BXfKZUpE.js.map → chunk-QN33PNHL-DGU21aEB.js.map} +1 -1
  45. package/dist/static/assets/{chunk-QZHKN3VN-BYB4VxWj.js → chunk-QZHKN3VN-Cw9Hpt-y.js} +2 -2
  46. package/dist/static/assets/{chunk-QZHKN3VN-BYB4VxWj.js.map → chunk-QZHKN3VN-Cw9Hpt-y.js.map} +1 -1
  47. package/dist/static/assets/{chunk-TZMSLE5B-CvlWEnXl.js → chunk-TZMSLE5B-J-eTCnFj.js} +2 -2
  48. package/dist/static/assets/{chunk-TZMSLE5B-CvlWEnXl.js.map → chunk-TZMSLE5B-J-eTCnFj.js.map} +1 -1
  49. package/dist/static/assets/{classDiagram-2ON5EDUG-x2kw_AQY.js → classDiagram-2ON5EDUG-BvoDAd8E.js} +6 -6
  50. package/dist/static/assets/{classDiagram-2ON5EDUG-x2kw_AQY.js.map → classDiagram-2ON5EDUG-BvoDAd8E.js.map} +1 -1
  51. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-x2kw_AQY.js → classDiagram-v2-WZHVMYZB-BvoDAd8E.js} +6 -6
  52. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-x2kw_AQY.js.map → classDiagram-v2-WZHVMYZB-BvoDAd8E.js.map} +1 -1
  53. package/dist/static/assets/{clone-CfBpi3MU.js → clone-CojsCkky.js} +2 -2
  54. package/dist/static/assets/{clone-CfBpi3MU.js.map → clone-CojsCkky.js.map} +1 -1
  55. package/dist/static/assets/{cose-bilkent-S5V4N54A-DQSzPb7y.js → cose-bilkent-S5V4N54A-BEtK3OcG.js} +2 -2
  56. package/dist/static/assets/{cose-bilkent-S5V4N54A-DQSzPb7y.js.map → cose-bilkent-S5V4N54A-BEtK3OcG.js.map} +1 -1
  57. package/dist/static/assets/{dagre-6UL2VRFP-BuBo_U3J.js → dagre-6UL2VRFP-C5DMaVj0.js} +7 -7
  58. package/dist/static/assets/{dagre-6UL2VRFP-BuBo_U3J.js.map → dagre-6UL2VRFP-C5DMaVj0.js.map} +1 -1
  59. package/dist/static/assets/{diagram-PSM6KHXK-J2z13Z5A.js → diagram-PSM6KHXK-kVP0dZ6K.js} +7 -7
  60. package/dist/static/assets/{diagram-PSM6KHXK-J2z13Z5A.js.map → diagram-PSM6KHXK-kVP0dZ6K.js.map} +1 -1
  61. package/dist/static/assets/{diagram-QEK2KX5R-x8XUGykE.js → diagram-QEK2KX5R-C4p2yibe.js} +6 -6
  62. package/dist/static/assets/{diagram-QEK2KX5R-x8XUGykE.js.map → diagram-QEK2KX5R-C4p2yibe.js.map} +1 -1
  63. package/dist/static/assets/{diagram-S2PKOQOG-BE6Nr1BM.js → diagram-S2PKOQOG-B3vObsYY.js} +6 -6
  64. package/dist/static/assets/{diagram-S2PKOQOG-BE6Nr1BM.js.map → diagram-S2PKOQOG-B3vObsYY.js.map} +1 -1
  65. package/dist/static/assets/{erDiagram-Q2GNP2WA-D3qVnFAh.js → erDiagram-Q2GNP2WA-AKQItpVu.js} +5 -5
  66. package/dist/static/assets/{erDiagram-Q2GNP2WA-D3qVnFAh.js.map → erDiagram-Q2GNP2WA-AKQItpVu.js.map} +1 -1
  67. package/dist/static/assets/{flowDiagram-NV44I4VS-Cjp9Rt9t.js → flowDiagram-NV44I4VS-2dalJoL3.js} +6 -6
  68. package/dist/static/assets/{flowDiagram-NV44I4VS-Cjp9Rt9t.js.map → flowDiagram-NV44I4VS-2dalJoL3.js.map} +1 -1
  69. package/dist/static/assets/{ganttDiagram-JELNMOA3-D_hc66FC.js → ganttDiagram-JELNMOA3-DUw98Lbz.js} +3 -3
  70. package/dist/static/assets/{ganttDiagram-JELNMOA3-D_hc66FC.js.map → ganttDiagram-JELNMOA3-DUw98Lbz.js.map} +1 -1
  71. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-1I_zaTtz.js → gitGraphDiagram-NY62KEGX-DdwIFk8M.js} +7 -7
  72. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-1I_zaTtz.js.map → gitGraphDiagram-NY62KEGX-DdwIFk8M.js.map} +1 -1
  73. package/dist/static/assets/{graph-K6mmQESm.js → graph-BBEAP9Z9.js} +3 -3
  74. package/dist/static/assets/{graph-K6mmQESm.js.map → graph-BBEAP9Z9.js.map} +1 -1
  75. package/dist/static/assets/{index-RV1MEt3b.js → index-CqMOe9zt.js} +195 -114
  76. package/dist/static/assets/index-CqMOe9zt.js.map +1 -0
  77. package/dist/static/assets/{infoDiagram-WHAUD3N6-CqazW4ov.js → infoDiagram-WHAUD3N6-Cep11ST9.js} +5 -5
  78. package/dist/static/assets/{infoDiagram-WHAUD3N6-CqazW4ov.js.map → infoDiagram-WHAUD3N6-Cep11ST9.js.map} +1 -1
  79. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CCwUViz2.js → journeyDiagram-XKPGCS4Q-Ba8wkBNB.js} +5 -5
  80. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CCwUViz2.js.map → journeyDiagram-XKPGCS4Q-Ba8wkBNB.js.map} +1 -1
  81. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BKj9P06Z.js → kanban-definition-3W4ZIXB7-DhxNBORX.js} +3 -3
  82. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BKj9P06Z.js.map → kanban-definition-3W4ZIXB7-DhxNBORX.js.map} +1 -1
  83. package/dist/static/assets/{layout-BcrPlYah.js → layout-Ckbr6Zyz.js} +5 -5
  84. package/dist/static/assets/{layout-BcrPlYah.js.map → layout-Ckbr6Zyz.js.map} +1 -1
  85. package/dist/static/assets/{linear-DYXbzldi.js → linear-BrSsI51I.js} +2 -2
  86. package/dist/static/assets/{linear-DYXbzldi.js.map → linear-BrSsI51I.js.map} +1 -1
  87. package/dist/static/assets/{min-CAfJrdkg.js → min-CeEvLc8D.js} +3 -3
  88. package/dist/static/assets/{min-CAfJrdkg.js.map → min-CeEvLc8D.js.map} +1 -1
  89. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CXWJYrd0.js → mindmap-definition-VGOIOE7T-7ctLd3o3.js} +4 -4
  90. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CXWJYrd0.js.map → mindmap-definition-VGOIOE7T-7ctLd3o3.js.map} +1 -1
  91. package/dist/static/assets/{pieDiagram-ADFJNKIX-DjKlsPYr.js → pieDiagram-ADFJNKIX-CqyILziW.js} +7 -7
  92. package/dist/static/assets/{pieDiagram-ADFJNKIX-DjKlsPYr.js.map → pieDiagram-ADFJNKIX-CqyILziW.js.map} +1 -1
  93. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-fcJtlyUO.js → quadrantDiagram-AYHSOK5B-Byi_xYum.js} +3 -3
  94. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-fcJtlyUO.js.map → quadrantDiagram-AYHSOK5B-Byi_xYum.js.map} +1 -1
  95. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DmB9Ezaa.js → requirementDiagram-UZGBJVZJ-Boj5vxiZ.js} +4 -4
  96. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DmB9Ezaa.js.map → requirementDiagram-UZGBJVZJ-Boj5vxiZ.js.map} +1 -1
  97. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CdGDwaMo.js → sankeyDiagram-TZEHDZUN-DzoUAdfa.js} +2 -2
  98. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CdGDwaMo.js.map → sankeyDiagram-TZEHDZUN-DzoUAdfa.js.map} +1 -1
  99. package/dist/static/assets/{sequenceDiagram-WL72ISMW-C-jiKkhi.js → sequenceDiagram-WL72ISMW-BKKxpG1m.js} +4 -4
  100. package/dist/static/assets/{sequenceDiagram-WL72ISMW-C-jiKkhi.js.map → sequenceDiagram-WL72ISMW-BKKxpG1m.js.map} +1 -1
  101. package/dist/static/assets/{stateDiagram-FKZM4ZOC-M9808W5W.js → stateDiagram-FKZM4ZOC-B-J7uRZT.js} +9 -9
  102. package/dist/static/assets/{stateDiagram-FKZM4ZOC-M9808W5W.js.map → stateDiagram-FKZM4ZOC-B-J7uRZT.js.map} +1 -1
  103. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-JE0YQyVh.js → stateDiagram-v2-4FDKWEC3-BOzmoUba.js} +5 -5
  104. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-JE0YQyVh.js.map → stateDiagram-v2-4FDKWEC3-BOzmoUba.js.map} +1 -1
  105. package/dist/static/assets/{timeline-definition-IT6M3QCI-a2Rh8B62.js → timeline-definition-IT6M3QCI-zu1Rojx9.js} +3 -3
  106. package/dist/static/assets/{timeline-definition-IT6M3QCI-a2Rh8B62.js.map → timeline-definition-IT6M3QCI-zu1Rojx9.js.map} +1 -1
  107. package/dist/static/assets/{treemap-KMMF4GRG-D3tvybuo.js → treemap-KMMF4GRG-C4D91awC.js} +4 -4
  108. package/dist/static/assets/{treemap-KMMF4GRG-D3tvybuo.js.map → treemap-KMMF4GRG-C4D91awC.js.map} +1 -1
  109. package/dist/static/assets/{xychartDiagram-PRI3JC2R-kmwKLP3Y.js → xychartDiagram-PRI3JC2R-YvLKaPZ-.js} +3 -3
  110. package/dist/static/assets/{xychartDiagram-PRI3JC2R-kmwKLP3Y.js.map → xychartDiagram-PRI3JC2R-YvLKaPZ-.js.map} +1 -1
  111. package/dist/static/index.html +1 -1
  112. package/dist/tools/context-health.js +7 -7
  113. package/dist/utils/task-doc.js +16 -16
  114. package/package.json +1 -1
  115. package/dist/docs/keep-going.zh.md +0 -162
  116. package/dist/docs/showing-by-doing.md +0 -208
  117. package/dist/docs/showing-by-doing.zh.md +0 -177
  118. package/dist/minds/promptdocs.js +0 -263
  119. package/dist/snippets/README.en.md +0 -3
  120. package/dist/static/assets/index-RV1MEt3b.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-BuBo_U3J.js","assets/graph-K6mmQESm.js","assets/_baseUniq-BxKNVs_E.js","assets/layout-BcrPlYah.js","assets/min-CAfJrdkg.js","assets/clone-CfBpi3MU.js","assets/cose-bilkent-S5V4N54A-DQSzPb7y.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-D4jQkzwx.js","assets/chunk-TZMSLE5B-CvlWEnXl.js","assets/flowDiagram-NV44I4VS-Cjp9Rt9t.js","assets/chunk-FMBD7UC4-l62jcBz-.js","assets/chunk-55IACEB6-CbmixuSI.js","assets/chunk-QN33PNHL-BXfKZUpE.js","assets/channel-CNJ5IKbI.js","assets/erDiagram-Q2GNP2WA-D3qVnFAh.js","assets/gitGraphDiagram-NY62KEGX-1I_zaTtz.js","assets/chunk-4BX2VUAB-Dzp3xxyo.js","assets/chunk-QZHKN3VN-BYB4VxWj.js","assets/treemap-KMMF4GRG-D3tvybuo.js","assets/ganttDiagram-JELNMOA3-D_hc66FC.js","assets/linear-DYXbzldi.js","assets/init-ZxktEp_H.js","assets/defaultLocale-DVr69WTU.js","assets/infoDiagram-WHAUD3N6-CqazW4ov.js","assets/pieDiagram-ADFJNKIX-DjKlsPYr.js","assets/arc-SobL0GO-.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-fcJtlyUO.js","assets/xychartDiagram-PRI3JC2R-kmwKLP3Y.js","assets/requirementDiagram-UZGBJVZJ-DmB9Ezaa.js","assets/sequenceDiagram-WL72ISMW-C-jiKkhi.js","assets/classDiagram-2ON5EDUG-x2kw_AQY.js","assets/chunk-B4BG7PRW-CdpmYjdb.js","assets/classDiagram-v2-WZHVMYZB-x2kw_AQY.js","assets/stateDiagram-FKZM4ZOC-M9808W5W.js","assets/chunk-DI55MBZ5-wBUIgR3h.js","assets/stateDiagram-v2-4FDKWEC3-JE0YQyVh.js","assets/journeyDiagram-XKPGCS4Q-CCwUViz2.js","assets/timeline-definition-IT6M3QCI-a2Rh8B62.js","assets/mindmap-definition-VGOIOE7T-CXWJYrd0.js","assets/kanban-definition-3W4ZIXB7-BKj9P06Z.js","assets/sankeyDiagram-TZEHDZUN-CdGDwaMo.js","assets/diagram-S2PKOQOG-BE6Nr1BM.js","assets/diagram-QEK2KX5R-x8XUGykE.js","assets/blockDiagram-VD42YOAC-BOsSirNK.js","assets/architectureDiagram-VXUJARFQ-MMDS1QOC.js","assets/diagram-PSM6KHXK-J2z13Z5A.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-C5DMaVj0.js","assets/graph-BBEAP9Z9.js","assets/_baseUniq-zV3pyJ-s.js","assets/layout-Ckbr6Zyz.js","assets/min-CeEvLc8D.js","assets/clone-CojsCkky.js","assets/cose-bilkent-S5V4N54A-BEtK3OcG.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-CSuskOyq.js","assets/chunk-TZMSLE5B-J-eTCnFj.js","assets/flowDiagram-NV44I4VS-2dalJoL3.js","assets/chunk-FMBD7UC4-DyM3IVWB.js","assets/chunk-55IACEB6-CeWj8Jm_.js","assets/chunk-QN33PNHL-DGU21aEB.js","assets/channel-Ym6U59Kh.js","assets/erDiagram-Q2GNP2WA-AKQItpVu.js","assets/gitGraphDiagram-NY62KEGX-DdwIFk8M.js","assets/chunk-4BX2VUAB-CqbVylSz.js","assets/chunk-QZHKN3VN-Cw9Hpt-y.js","assets/treemap-KMMF4GRG-C4D91awC.js","assets/ganttDiagram-JELNMOA3-DUw98Lbz.js","assets/linear-BrSsI51I.js","assets/init-ZxktEp_H.js","assets/defaultLocale-DVr69WTU.js","assets/infoDiagram-WHAUD3N6-Cep11ST9.js","assets/pieDiagram-ADFJNKIX-CqyILziW.js","assets/arc-Ctgmrh71.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-Byi_xYum.js","assets/xychartDiagram-PRI3JC2R-YvLKaPZ-.js","assets/requirementDiagram-UZGBJVZJ-Boj5vxiZ.js","assets/sequenceDiagram-WL72ISMW-BKKxpG1m.js","assets/classDiagram-2ON5EDUG-BvoDAd8E.js","assets/chunk-B4BG7PRW-BjxJkuhq.js","assets/classDiagram-v2-WZHVMYZB-BvoDAd8E.js","assets/stateDiagram-FKZM4ZOC-B-J7uRZT.js","assets/chunk-DI55MBZ5-9kxfXB4B.js","assets/stateDiagram-v2-4FDKWEC3-BOzmoUba.js","assets/journeyDiagram-XKPGCS4Q-Ba8wkBNB.js","assets/timeline-definition-IT6M3QCI-zu1Rojx9.js","assets/mindmap-definition-VGOIOE7T-7ctLd3o3.js","assets/kanban-definition-3W4ZIXB7-DhxNBORX.js","assets/sankeyDiagram-TZEHDZUN-DzoUAdfa.js","assets/diagram-S2PKOQOG-B3vObsYY.js","assets/diagram-QEK2KX5R-C4p2yibe.js","assets/blockDiagram-VD42YOAC-Djz6JdD2.js","assets/architectureDiagram-VXUJARFQ-CAH1Zinn.js","assets/diagram-PSM6KHXK-kVP0dZ6K.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);
@@ -140,7 +140,7 @@ function getUiStrings(language) {
140
140
  readOnlyDialogInputDisabled: "此对话已完成或已归档,输入已禁用。",
141
141
  deadDialogInputDisabled: "此支线对话已宣布卡死(不可逆),输入已禁用。",
142
142
  declareDeath: "宣布卡死",
143
- declareDeathConfirm: "宣布此支线对话“卡死”?此操作不可逆转;诉请方对话将收到系统反馈并不再等待该支线对话。",
143
+ declareDeathConfirm: "宣布此支线对话“卡死”?此操作不可逆转;诉请方对话将收到系统反馈并不再等待该支线对话。后续可重用相同 slug 发起全新支线,但此前上下文不再保留,诉请正文需提供最新完整上下文。",
144
144
  q4hNoPending: "暂无待处理问题",
145
145
  q4hPendingQuestions: "待处理问题",
146
146
  q4hInputPlaceholder: "输入你的回答…",
@@ -168,6 +168,19 @@ function getUiStrings(language) {
168
168
  invalidMessageFormatToast: "收到无效消息格式,请刷新页面。",
169
169
  linkCopiedToast: "链接已复制。",
170
170
  linkCopyFailedToast: "复制链接失败。",
171
+ toastDefaultNotice: "通知",
172
+ dialogCreatedToastPrefix: "已创建对话:",
173
+ dialogLoadedToast: "对话加载成功。",
174
+ deepLinkDialogNotFoundPrefix: "未找到深链对话:",
175
+ dialogDeleteFailedToast: "删除对话失败",
176
+ moveDialogsFailedToast: "移动对话失败",
177
+ movedDialogsToastPrefix: "已移动对话数量:",
178
+ toolsRegistryLoadFailedToast: "加载工具注册表失败",
179
+ reminderConnectionIssueToast: "检测到连接问题,提醒数据可能暂时不可用。",
180
+ reminderSyncIssueToast: "提醒同步出现问题。如问题持续,请刷新页面。",
181
+ unknownStreamErrorToast: "未知流错误",
182
+ teammateCallFailedToast: "队友调用失败",
183
+ unknownError: "未知错误",
171
184
  toastHistoryButtonTitle: "通知历史",
172
185
  toastHistoryTitle: "通知历史",
173
186
  toastHistoryClearTitle: "清空通知历史",
@@ -401,7 +414,7 @@ function getUiStrings(language) {
401
414
  readOnlyDialogInputDisabled: "This dialog is done or archived; input is disabled.",
402
415
  deadDialogInputDisabled: "This sideline dialog has been declared dead (irreversible); input is disabled.",
403
416
  declareDeath: "Declare Death",
404
- declareDeathConfirm: "Declare this sideline dialog as “dead”? This is irreversible; the upstream/requesting dialog will receive a system notice and stop waiting for it.",
417
+ declareDeathConfirm: "Declare this sideline dialog as “dead”? This is irreversible; the upstream/requesting dialog will receive a system notice and stop waiting for it. You may reuse the same slug to start a new sideline dialog, but prior context will be gone, so include the latest full context in the tellask body.",
405
418
  q4hNoPending: "No pending questions",
406
419
  q4hPendingQuestions: "Pending Questions",
407
420
  q4hInputPlaceholder: "Type your answer...",
@@ -429,6 +442,19 @@ function getUiStrings(language) {
429
442
  invalidMessageFormatToast: "Received invalid message format. Please refresh the page.",
430
443
  linkCopiedToast: "Link copied.",
431
444
  linkCopyFailedToast: "Failed to copy link.",
445
+ toastDefaultNotice: "Notice",
446
+ dialogCreatedToastPrefix: "Dialog created:",
447
+ dialogLoadedToast: "Dialog loaded successfully.",
448
+ deepLinkDialogNotFoundPrefix: "Deep link dialog not found:",
449
+ dialogDeleteFailedToast: "Failed to delete dialog",
450
+ moveDialogsFailedToast: "Failed to move dialogs",
451
+ movedDialogsToastPrefix: "Moved dialog(s): ",
452
+ toolsRegistryLoadFailedToast: "Failed to load tools registry",
453
+ reminderConnectionIssueToast: "Connection issue detected. Reminder data may be temporarily unavailable.",
454
+ reminderSyncIssueToast: "Reminder synchronization encountered an issue. Please refresh if problems persist.",
455
+ unknownStreamErrorToast: "Unknown stream error",
456
+ teammateCallFailedToast: "Teammate call failed",
457
+ unknownError: "Unknown error",
432
458
  toastHistoryButtonTitle: "Notification history",
433
459
  toastHistoryTitle: "Notification history",
434
460
  toastHistoryClearTitle: "Clear notification history",
@@ -1633,9 +1659,12 @@ const DILIGENCE_FALLBACK_TEXT = {
1633
1659
  "扪心自问时,自诉请正文需要包含对当前状况的完整事实性总结(但不要包含差遣牒已有内容);`!?@self` 发起后不要立即下最终行动决策,先等回贴再综合。综合完成后必须立刻执行已确定行动(工具调用/诉请队友),避免停留在“仅汇报决定”的状态。",
1634
1660
  "",
1635
1661
  "队友如果回复 “将要/可以” 做 XXX 的,你要审视祂所说是否符合整体/分项任务目标,是否值得继续:",
1636
- "",
1637
1662
  "- 如果祂建议的事情可做可不做,那么就可以忽略,不以琐碎小事安排工作。",
1638
- "- 如果值得继续,你可加以纠正或鼓励,并立即诉请其继续,不要留祂停在那里等待指令,这是不可接受的。"
1663
+ "- 如果值得继续,你可加以纠正或鼓励,并立即诉请其继续,不要留祂停在那里等待指令,这是不可接受的。",
1664
+ "",
1665
+ "系统会把“尚未收到反馈、仍在执行中的诉请”自动展示为提醒项;请以提醒项作为是否仍在执行中的唯一判断依据。",
1666
+ "",
1667
+ "凡是不在提醒项里的历史诉请,都不要继续等待(通常代表已回贴或已结束当前轮次)。若该工作线仍需推进,必须立即使用同一个 `!tellaskSession <slug>` 再次诉请对应队友,明确要求继续执行下一步。"
1639
1668
  ].join("\n"),
1640
1669
  en: [
1641
1670
  "Do a self-check (run one FBR): does the Taskdoc already contain a sufficiently clear goal definition?",
@@ -1657,9 +1686,12 @@ const DILIGENCE_FALLBACK_TEXT = {
1657
1686
  "When running FBR, the self-tellask body must include a complete factual summary of the current situation (but do not repeat information already present in the Taskdoc). After `!?@self`, do not finalize the next action immediately; wait for feedback first, then synthesize. Once synthesized, immediately execute the chosen action (tool call / teammate tellask), and avoid staying in a “decision report only” state.",
1658
1687
  "",
1659
1688
  "If a teammate replies that they “will/can do X”, examine whether it aligns with the overall/sub-task goals and is worth continuing:",
1660
- "",
1661
1689
  "- If it is optional and low impact, ignore it instead of assigning trivial work.",
1662
- "- If it is worth continuing, correct or encourage as needed and immediately tellask them to continue; leaving them idle and waiting for instructions is unacceptable."
1690
+ "- If it is worth continuing, correct or encourage as needed and immediately tellask them to continue; leaving them idle and waiting for instructions is unacceptable.",
1691
+ "",
1692
+ "The system automatically surfaces still-running tellasks (those without feedback yet) as reminder items; treat reminders as the single source of truth for whether a tellask is still in progress.",
1693
+ "",
1694
+ "For any historical tellask not listed in reminders, do not keep waiting (it usually means the previous round already replied or ended). If that workstream should continue, immediately re-tellask the same teammate with the same `!tellaskSession <slug>` and explicitly ask for the next step."
1663
1695
  ].join("\n")
1664
1696
  };
1665
1697
  function escapeHtml$2(text2) {
@@ -96453,12 +96485,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
96453
96485
  registerLayoutLoaders([
96454
96486
  {
96455
96487
  name: "dagre",
96456
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-BuBo_U3J.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
96488
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-C5DMaVj0.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
96457
96489
  },
96458
96490
  ...[
96459
96491
  {
96460
96492
  name: "cose-bilkent",
96461
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-DQSzPb7y.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
96493
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-BEtK3OcG.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
96462
96494
  }
96463
96495
  ]
96464
96496
  ]);
@@ -96898,7 +96930,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
96898
96930
  }, "detector");
96899
96931
  var loader = /* @__PURE__ */ __name(async () => {
96900
96932
  const { diagram: diagram2 } = await __vitePreload(async () => {
96901
- const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-D4jQkzwx.js");
96933
+ const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-CSuskOyq.js");
96902
96934
  return { diagram: diagram22 };
96903
96935
  }, true ? __vite__mapDeps([8,9]) : void 0);
96904
96936
  return { id, diagram: diagram2 };
@@ -96918,7 +96950,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
96918
96950
  }, "detector");
96919
96951
  var loader2 = /* @__PURE__ */ __name(async () => {
96920
96952
  const { diagram: diagram2 } = await __vitePreload(async () => {
96921
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-Cjp9Rt9t.js");
96953
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-2dalJoL3.js");
96922
96954
  return { diagram: diagram22 };
96923
96955
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
96924
96956
  return { id: id2, diagram: diagram2 };
@@ -96944,7 +96976,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
96944
96976
  }, "detector");
96945
96977
  var loader3 = /* @__PURE__ */ __name(async () => {
96946
96978
  const { diagram: diagram2 } = await __vitePreload(async () => {
96947
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-Cjp9Rt9t.js");
96979
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-2dalJoL3.js");
96948
96980
  return { diagram: diagram22 };
96949
96981
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
96950
96982
  return { id: id3, diagram: diagram2 };
@@ -96961,7 +96993,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
96961
96993
  }, "detector");
96962
96994
  var loader4 = /* @__PURE__ */ __name(async () => {
96963
96995
  const { diagram: diagram2 } = await __vitePreload(async () => {
96964
- const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-D3qVnFAh.js");
96996
+ const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-AKQItpVu.js");
96965
96997
  return { diagram: diagram22 };
96966
96998
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
96967
96999
  return { id: id4, diagram: diagram2 };
@@ -96978,7 +97010,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
96978
97010
  }, "detector");
96979
97011
  var loader5 = /* @__PURE__ */ __name(async () => {
96980
97012
  const { diagram: diagram2 } = await __vitePreload(async () => {
96981
- const { diagram: diagram22 } = await import("./gitGraphDiagram-NY62KEGX-1I_zaTtz.js");
97013
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-NY62KEGX-DdwIFk8M.js");
96982
97014
  return { diagram: diagram22 };
96983
97015
  }, true ? __vite__mapDeps([16,17,18,19,4,2]) : void 0);
96984
97016
  return { id: id5, diagram: diagram2 };
@@ -96995,7 +97027,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
96995
97027
  }, "detector");
96996
97028
  var loader6 = /* @__PURE__ */ __name(async () => {
96997
97029
  const { diagram: diagram2 } = await __vitePreload(async () => {
96998
- const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-D_hc66FC.js");
97030
+ const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-DUw98Lbz.js");
96999
97031
  return { diagram: diagram22 };
97000
97032
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
97001
97033
  return { id: id6, diagram: diagram2 };
@@ -97012,7 +97044,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
97012
97044
  }, "detector");
97013
97045
  var loader7 = /* @__PURE__ */ __name(async () => {
97014
97046
  const { diagram: diagram2 } = await __vitePreload(async () => {
97015
- const { diagram: diagram22 } = await import("./infoDiagram-WHAUD3N6-CqazW4ov.js");
97047
+ const { diagram: diagram22 } = await import("./infoDiagram-WHAUD3N6-Cep11ST9.js");
97016
97048
  return { diagram: diagram22 };
97017
97049
  }, true ? __vite__mapDeps([24,19,4,2]) : void 0);
97018
97050
  return { id: id7, diagram: diagram2 };
@@ -97028,7 +97060,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
97028
97060
  }, "detector");
97029
97061
  var loader8 = /* @__PURE__ */ __name(async () => {
97030
97062
  const { diagram: diagram2 } = await __vitePreload(async () => {
97031
- const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-DjKlsPYr.js");
97063
+ const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-CqyILziW.js");
97032
97064
  return { diagram: diagram22 };
97033
97065
  }, true ? __vite__mapDeps([25,17,19,4,2,26,27,22]) : void 0);
97034
97066
  return { id: id8, diagram: diagram2 };
@@ -97044,7 +97076,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
97044
97076
  }, "detector");
97045
97077
  var loader9 = /* @__PURE__ */ __name(async () => {
97046
97078
  const { diagram: diagram2 } = await __vitePreload(async () => {
97047
- const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-fcJtlyUO.js");
97079
+ const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-Byi_xYum.js");
97048
97080
  return { diagram: diagram22 };
97049
97081
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
97050
97082
  return { id: id9, diagram: diagram2 };
@@ -97061,7 +97093,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
97061
97093
  }, "detector");
97062
97094
  var loader10 = /* @__PURE__ */ __name(async () => {
97063
97095
  const { diagram: diagram2 } = await __vitePreload(async () => {
97064
- const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-kmwKLP3Y.js");
97096
+ const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-YvLKaPZ-.js");
97065
97097
  return { diagram: diagram22 };
97066
97098
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
97067
97099
  return { id: id10, diagram: diagram2 };
@@ -97078,7 +97110,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
97078
97110
  }, "detector");
97079
97111
  var loader11 = /* @__PURE__ */ __name(async () => {
97080
97112
  const { diagram: diagram2 } = await __vitePreload(async () => {
97081
- const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-DmB9Ezaa.js");
97113
+ const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-Boj5vxiZ.js");
97082
97114
  return { diagram: diagram22 };
97083
97115
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
97084
97116
  return { id: id11, diagram: diagram2 };
@@ -97095,7 +97127,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
97095
97127
  }, "detector");
97096
97128
  var loader12 = /* @__PURE__ */ __name(async () => {
97097
97129
  const { diagram: diagram2 } = await __vitePreload(async () => {
97098
- const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-C-jiKkhi.js");
97130
+ const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-BKKxpG1m.js");
97099
97131
  return { diagram: diagram22 };
97100
97132
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
97101
97133
  return { id: id12, diagram: diagram2 };
@@ -97115,7 +97147,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
97115
97147
  }, "detector");
97116
97148
  var loader13 = /* @__PURE__ */ __name(async () => {
97117
97149
  const { diagram: diagram2 } = await __vitePreload(async () => {
97118
- const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-x2kw_AQY.js");
97150
+ const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-BvoDAd8E.js");
97119
97151
  return { diagram: diagram22 };
97120
97152
  }, true ? __vite__mapDeps([32,33,11,12,13]) : void 0);
97121
97153
  return { id: id13, diagram: diagram2 };
@@ -97135,7 +97167,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
97135
97167
  }, "detector");
97136
97168
  var loader14 = /* @__PURE__ */ __name(async () => {
97137
97169
  const { diagram: diagram2 } = await __vitePreload(async () => {
97138
- const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-x2kw_AQY.js");
97170
+ const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-BvoDAd8E.js");
97139
97171
  return { diagram: diagram22 };
97140
97172
  }, true ? __vite__mapDeps([34,33,11,12,13]) : void 0);
97141
97173
  return { id: id14, diagram: diagram2 };
@@ -97155,7 +97187,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
97155
97187
  }, "detector");
97156
97188
  var loader15 = /* @__PURE__ */ __name(async () => {
97157
97189
  const { diagram: diagram2 } = await __vitePreload(async () => {
97158
- const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-M9808W5W.js");
97190
+ const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-B-J7uRZT.js");
97159
97191
  return { diagram: diagram22 };
97160
97192
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
97161
97193
  return { id: id15, diagram: diagram2 };
@@ -97178,7 +97210,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
97178
97210
  }, "detector");
97179
97211
  var loader16 = /* @__PURE__ */ __name(async () => {
97180
97212
  const { diagram: diagram2 } = await __vitePreload(async () => {
97181
- const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-JE0YQyVh.js");
97213
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-BOzmoUba.js");
97182
97214
  return { diagram: diagram22 };
97183
97215
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
97184
97216
  return { id: id16, diagram: diagram2 };
@@ -97195,7 +97227,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
97195
97227
  }, "detector");
97196
97228
  var loader17 = /* @__PURE__ */ __name(async () => {
97197
97229
  const { diagram: diagram2 } = await __vitePreload(async () => {
97198
- const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-CCwUViz2.js");
97230
+ const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-Ba8wkBNB.js");
97199
97231
  return { diagram: diagram22 };
97200
97232
  }, true ? __vite__mapDeps([38,9,11,26]) : void 0);
97201
97233
  return { id: id17, diagram: diagram2 };
@@ -97265,7 +97297,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
97265
97297
  }, "detector");
97266
97298
  var loader18 = /* @__PURE__ */ __name(async () => {
97267
97299
  const { diagram: diagram2 } = await __vitePreload(async () => {
97268
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-Cjp9Rt9t.js");
97300
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-2dalJoL3.js");
97269
97301
  return { diagram: diagram22 };
97270
97302
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97271
97303
  return { id: id18, diagram: diagram2 };
@@ -97282,7 +97314,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
97282
97314
  }, "detector");
97283
97315
  var loader19 = /* @__PURE__ */ __name(async () => {
97284
97316
  const { diagram: diagram2 } = await __vitePreload(async () => {
97285
- const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-a2Rh8B62.js");
97317
+ const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-zu1Rojx9.js");
97286
97318
  return { diagram: diagram22 };
97287
97319
  }, true ? __vite__mapDeps([39,26]) : void 0);
97288
97320
  return { id: id19, diagram: diagram2 };
@@ -97299,7 +97331,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
97299
97331
  }, "detector");
97300
97332
  var loader20 = /* @__PURE__ */ __name(async () => {
97301
97333
  const { diagram: diagram2 } = await __vitePreload(async () => {
97302
- const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-CXWJYrd0.js");
97334
+ const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-7ctLd3o3.js");
97303
97335
  return { diagram: diagram22 };
97304
97336
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
97305
97337
  return { id: id20, diagram: diagram2 };
@@ -97316,7 +97348,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
97316
97348
  }, "detector");
97317
97349
  var loader21 = /* @__PURE__ */ __name(async () => {
97318
97350
  const { diagram: diagram2 } = await __vitePreload(async () => {
97319
- const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-BKj9P06Z.js");
97351
+ const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-DhxNBORX.js");
97320
97352
  return { diagram: diagram22 };
97321
97353
  }, true ? __vite__mapDeps([41,11]) : void 0);
97322
97354
  return { id: id21, diagram: diagram2 };
@@ -97333,7 +97365,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
97333
97365
  }, "detector");
97334
97366
  var loader22 = /* @__PURE__ */ __name(async () => {
97335
97367
  const { diagram: diagram2 } = await __vitePreload(async () => {
97336
- const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-CdGDwaMo.js");
97368
+ const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DzoUAdfa.js");
97337
97369
  return { diagram: diagram22 };
97338
97370
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
97339
97371
  return { id: id22, diagram: diagram2 };
@@ -97350,7 +97382,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
97350
97382
  }, "detector");
97351
97383
  var loader23 = /* @__PURE__ */ __name(async () => {
97352
97384
  const { diagram: diagram2 } = await __vitePreload(async () => {
97353
- const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-BE6Nr1BM.js");
97385
+ const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-B3vObsYY.js");
97354
97386
  return { diagram: diagram22 };
97355
97387
  }, true ? __vite__mapDeps([43,17,19,4,2]) : void 0);
97356
97388
  return { id: id23, diagram: diagram2 };
@@ -97366,7 +97398,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
97366
97398
  }, "detector");
97367
97399
  var loader24 = /* @__PURE__ */ __name(async () => {
97368
97400
  const { diagram: diagram2 } = await __vitePreload(async () => {
97369
- const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-x8XUGykE.js");
97401
+ const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-C4p2yibe.js");
97370
97402
  return { diagram: diagram22 };
97371
97403
  }, true ? __vite__mapDeps([44,17,19,4,2]) : void 0);
97372
97404
  return { id: id24, diagram: diagram2 };
@@ -97382,7 +97414,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
97382
97414
  }, "detector");
97383
97415
  var loader25 = /* @__PURE__ */ __name(async () => {
97384
97416
  const { diagram: diagram2 } = await __vitePreload(async () => {
97385
- const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-BOsSirNK.js");
97417
+ const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-Djz6JdD2.js");
97386
97418
  return { diagram: diagram22 };
97387
97419
  }, true ? __vite__mapDeps([45,11,5,1,2,14]) : void 0);
97388
97420
  return { id: id25, diagram: diagram2 };
@@ -97399,7 +97431,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
97399
97431
  }, "detector");
97400
97432
  var loader26 = /* @__PURE__ */ __name(async () => {
97401
97433
  const { diagram: diagram2 } = await __vitePreload(async () => {
97402
- const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-MMDS1QOC.js");
97434
+ const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-CAH1Zinn.js");
97403
97435
  return { diagram: diagram22 };
97404
97436
  }, true ? __vite__mapDeps([46,17,19,4,2,7]) : void 0);
97405
97437
  return { id: id26, diagram: diagram2 };
@@ -97416,7 +97448,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
97416
97448
  }, "detector");
97417
97449
  var loader27 = /* @__PURE__ */ __name(async () => {
97418
97450
  const { diagram: diagram2 } = await __vitePreload(async () => {
97419
- const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-J2z13Z5A.js");
97451
+ const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-kVP0dZ6K.js");
97420
97452
  return { diagram: diagram22 };
97421
97453
  }, true ? __vite__mapDeps([47,13,17,19,4,2,23,27,22]) : void 0);
97422
97454
  return { id: id27, diagram: diagram2 };
@@ -98460,7 +98492,6 @@ class DomindsDialogContainer extends HTMLElement {
98460
98492
  this.callingSectionByCallId = /* @__PURE__ */ new Map();
98461
98493
  this.webSearchSectionByItemId = /* @__PURE__ */ new Map();
98462
98494
  this.webSearchSectionBySeq = /* @__PURE__ */ new Map();
98463
- this.pendingTeammateCallResponsesByCallId = /* @__PURE__ */ new Map();
98464
98495
  this.pendingScrollRequest = null;
98465
98496
  this.highlightSeq = 0;
98466
98497
  this.pendingHighlight = null;
@@ -98883,7 +98914,6 @@ class DomindsDialogContainer extends HTMLElement {
98883
98914
  this.callingSectionByCallId.clear();
98884
98915
  this.webSearchSectionByItemId.clear();
98885
98916
  this.webSearchSectionBySeq.clear();
98886
- this.pendingTeammateCallResponsesByCallId.clear();
98887
98917
  const messages = this.shadowRoot?.querySelector(".messages");
98888
98918
  if (messages) {
98889
98919
  messages.innerHTML = "";
@@ -98904,7 +98934,6 @@ class DomindsDialogContainer extends HTMLElement {
98904
98934
  this.callingSectionByCallId.clear();
98905
98935
  this.webSearchSectionByItemId.clear();
98906
98936
  this.webSearchSectionBySeq.clear();
98907
- this.pendingTeammateCallResponsesByCallId.clear();
98908
98937
  const messages = this.shadowRoot?.querySelector(".messages");
98909
98938
  if (messages) {
98910
98939
  messages.innerHTML = "";
@@ -99129,7 +99158,11 @@ class DomindsDialogContainer extends HTMLElement {
99129
99158
  case "stream_error_evt":
99130
99159
  if (!this.generationBubble) {
99131
99160
  const host = this.getRootNode()?.host;
99132
- const detail = { message: String(event.error || "Unknown stream error"), kind: "error" };
99161
+ const t2 = getUiStrings(this.uiLanguage);
99162
+ const detail = {
99163
+ message: String(event.error || t2.unknownStreamErrorToast),
99164
+ kind: "error"
99165
+ };
99133
99166
  host?.dispatchEvent(
99134
99167
  new CustomEvent("ui-toast", { detail, bubbles: true, composed: true })
99135
99168
  );
@@ -99584,14 +99617,6 @@ class DomindsDialogContainer extends HTMLElement {
99584
99617
  currentSection.classList.add("completed");
99585
99618
  this.callingSection = void 0;
99586
99619
  this.teammateCallingSectionBySeq.set(event.genseq, currentSection);
99587
- const pending = this.pendingTeammateCallResponsesByCallId.get(callId);
99588
- if (pending) {
99589
- const display = this.formatTeammateCallResultForSection(currentSection, pending);
99590
- if (typeof display === "string") {
99591
- this.pendingTeammateCallResponsesByCallId.delete(callId);
99592
- this.attachResultInline(currentSection, display, pending.status);
99593
- }
99594
- }
99595
99620
  }
99596
99621
  // === FUNCTION RESULTS ===
99597
99622
  handleFuncResult(event) {
@@ -99711,6 +99736,13 @@ ${event.content}`;
99711
99736
  // - Uses this handler (handleToolCallResponse)
99712
99737
  handleToolCallResponse(event) {
99713
99738
  if (typeof this.currentCourse === "number" && event.course !== this.currentCourse) {
99739
+ this.handleProtocolError(
99740
+ `teammate_call_response_evt course mismatch ${JSON.stringify({
99741
+ eventCourse: event.course,
99742
+ currentCourse: this.currentCourse,
99743
+ callId: event.callId
99744
+ })}`
99745
+ );
99714
99746
  return;
99715
99747
  }
99716
99748
  const callId = String(event.callId || "").trim();
@@ -99726,21 +99758,24 @@ ${event.content}`;
99726
99758
  }
99727
99759
  const callingSection = this.callingSectionByCallId.get(callId);
99728
99760
  if (!callingSection) {
99729
- this.pendingTeammateCallResponsesByCallId.set(callId, event);
99761
+ this.handleProtocolError(
99762
+ `teammate_call_response_evt received before teammate_call_finish_evt ${JSON.stringify({
99763
+ callId,
99764
+ course: event.course,
99765
+ calling_genseq: event.calling_genseq,
99766
+ responderId: event.responderId
99767
+ })}`
99768
+ );
99730
99769
  return;
99731
99770
  }
99732
99771
  const display = this.formatTeammateCallResultForSection(callingSection, event);
99733
- if (typeof display !== "string") {
99734
- this.pendingTeammateCallResponsesByCallId.set(callId, event);
99735
- return;
99736
- }
99737
99772
  this.attachResultInline(callingSection, display, event.status);
99738
- this.pendingTeammateCallResponsesByCallId.delete(callId);
99739
99773
  if (event.status === "failed") {
99740
99774
  const host = this.getRootNode()?.host;
99775
+ const t2 = getUiStrings(this.uiLanguage);
99741
99776
  host?.dispatchEvent(
99742
99777
  new CustomEvent("ui-toast", {
99743
- detail: { message: String(display || "Teammate call failed"), kind: "error" },
99778
+ detail: { message: String(display || t2.teammateCallFailedToast), kind: "error" },
99744
99779
  bubbles: true,
99745
99780
  composed: true
99746
99781
  })
@@ -99765,7 +99800,14 @@ ${event.content}`;
99765
99800
  if (!parsed) return rawResult;
99766
99801
  const bubbleLanguage = this.resolveBubbleLanguageForSection(section);
99767
99802
  if (!bubbleLanguage) {
99768
- return void 0;
99803
+ this.handleProtocolError(
99804
+ `teammate_call_response_evt missing bubble language ${JSON.stringify({
99805
+ callId: event.callId,
99806
+ course: event.course,
99807
+ calling_genseq: event.calling_genseq
99808
+ })}`
99809
+ );
99810
+ return rawResult;
99769
99811
  }
99770
99812
  return formatTeammateCallErrorInline({
99771
99813
  language: bubbleLanguage,
@@ -100164,7 +100206,6 @@ ${event.content}`;
100164
100206
  } else {
100165
100207
  bubble.removeAttribute("data-user-language-code");
100166
100208
  }
100167
- this.flushPendingTeammateCallResponsesForBubble(bubble);
100168
100209
  this.scrollToBottom();
100169
100210
  return;
100170
100211
  }
@@ -100188,24 +100229,8 @@ ${event.content}`;
100188
100229
  } else {
100189
100230
  bubble.removeAttribute("data-user-language-code");
100190
100231
  }
100191
- this.flushPendingTeammateCallResponsesForBubble(bubble);
100192
100232
  this.scrollToBottom();
100193
100233
  }
100194
- flushPendingTeammateCallResponsesForBubble(bubble) {
100195
- const sections = bubble.querySelectorAll(".calling-section[data-call-id]");
100196
- if (sections.length < 1) return;
100197
- for (const section of Array.from(sections)) {
100198
- if (!(section instanceof HTMLElement)) continue;
100199
- const callId = String(section.getAttribute("data-call-id") || "").trim();
100200
- if (!callId) continue;
100201
- const pending = this.pendingTeammateCallResponsesByCallId.get(callId);
100202
- if (!pending) continue;
100203
- const display = this.formatTeammateCallResultForSection(section, pending);
100204
- if (typeof display !== "string") continue;
100205
- this.pendingTeammateCallResponsesByCallId.delete(callId);
100206
- this.attachResultInline(section, display, pending.status);
100207
- }
100208
- }
100209
100234
  // Create thinking section (inside generation bubble)
100210
100235
  createThinkingSection() {
100211
100236
  const el = document.createElement("div");
@@ -102370,6 +102395,8 @@ const _DomindsQ4HInput = class _DomindsQ4HInput extends HTMLElement {
102370
102395
  if (!ok) return;
102371
102396
  const note2 = this.textInput ? this.textInput.value : "";
102372
102397
  this.wsManager.sendRaw({ type: "declare_subdialog_dead", dialog, note: note2 });
102398
+ this.recordInputHistoryEntry(note2);
102399
+ this.clear();
102373
102400
  }
102374
102401
  async handlePrimaryAction() {
102375
102402
  try {
@@ -104760,7 +104787,7 @@ class DomindsTeamMembers extends HTMLElement {
104760
104787
  document.body.removeChild(ta);
104761
104788
  this.emitToast(`${t2.teamMembersCopiedPrefix}${mention}`);
104762
104789
  } catch (error2) {
104763
- const msg = error2 instanceof Error ? error2.message : "Unknown error";
104790
+ const msg = error2 instanceof Error ? error2.message : t2.unknownError;
104764
104791
  this.emitToast(`${t2.teamMembersCopyFailedPrefix}${msg}`, "warning");
104765
104792
  }
104766
104793
  }
@@ -107348,6 +107375,7 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
107348
107375
  this.remindersWidgetX = 12;
107349
107376
  this.remindersWidgetY = 120;
107350
107377
  this.activityView = { kind: "running" };
107378
+ this.runControlRefreshLastScheduledAtMsByReason = /* @__PURE__ */ new Map();
107351
107379
  this.subdialogContainers = /* @__PURE__ */ new Map();
107352
107380
  this.subdialogHierarchyRefreshTokens = /* @__PURE__ */ new Map();
107353
107381
  this.authModal = null;
@@ -107512,7 +107540,8 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
107512
107540
  return { ok: true };
107513
107541
  }
107514
107542
  async handleCreateDialogSuccess(result) {
107515
- this.showSuccess(`Dialog created @${result.agentId} with task: ${result.taskDocPath}`);
107543
+ const t2 = getUiStrings(this.uiLanguage);
107544
+ this.showSuccess(`${t2.dialogCreatedToastPrefix} @${result.agentId} • ${result.taskDocPath}`);
107516
107545
  await this.loadDialogs();
107517
107546
  await this.selectDialog({
107518
107547
  selfId: result.selfId,
@@ -107597,6 +107626,7 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
107597
107626
  }
107598
107627
  resolveDiligenceStateFromReady(readyMsg) {
107599
107628
  const configuredMax = this.normalizeDiligenceMax(readyMsg.diligencePushMax);
107629
+ const defaultDisableDiligencePush = configuredMax !== null ? configuredMax <= 0 : false;
107600
107630
  const normalizedRemaining = this.normalizeDiligenceRemaining(
107601
107631
  readyMsg.diligencePushRemainingBudget
107602
107632
  );
@@ -107607,11 +107637,17 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
107607
107637
  remaining = Math.min(remaining, configuredMax);
107608
107638
  }
107609
107639
  return {
107610
- disableDiligencePush: readyMsg.disableDiligencePush ?? false,
107640
+ disableDiligencePush: readyMsg.disableDiligencePush ?? defaultDisableDiligencePush,
107611
107641
  configuredMax,
107612
107642
  remaining
107613
107643
  };
107614
107644
  }
107645
+ isDiligenceCheckboxChecked() {
107646
+ if (!this.isDiligenceApplicableToCurrentDialog()) {
107647
+ return false;
107648
+ }
107649
+ return !this.disableDiligencePush;
107650
+ }
107615
107651
  getDiligenceBudgetBadgeText() {
107616
107652
  if (!this.isDiligenceApplicableToCurrentDialog()) {
107617
107653
  return { text: "—", hasRemaining: false };
@@ -107661,7 +107697,7 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
107661
107697
  const checkbox = diligenceTab.querySelector("#diligence-toggle");
107662
107698
  if (checkbox) {
107663
107699
  const applicable = this.isDiligenceApplicableToCurrentDialog();
107664
- checkbox.checked = applicable ? !this.disableDiligencePush : false;
107700
+ checkbox.checked = applicable ? this.isDiligenceCheckboxChecked() : false;
107665
107701
  checkbox.disabled = !applicable;
107666
107702
  }
107667
107703
  const badges = diligenceTab.querySelectorAll(".bp-badge");
@@ -110765,7 +110801,7 @@ ${uiLanguageButtonTooltip}">
110765
110801
  class="bp-checkbox"
110766
110802
  type="checkbox"
110767
110803
  aria-label="${t2.keepGoingToggleAriaLabel}"
110768
- ${this.isDiligenceApplicableToCurrentDialog() ? this.disableDiligencePush ? "" : "checked" : ""}
110804
+ ${this.isDiligenceApplicableToCurrentDialog() && this.isDiligenceCheckboxChecked() ? "checked" : ""}
110769
110805
  ${this.isDiligenceApplicableToCurrentDialog() ? "" : "disabled"}
110770
110806
  />
110771
110807
  <span class="bp-label" data-bp-label="diligence">${t2.keepGoingTabTitle}</span>
@@ -110798,9 +110834,10 @@ ${uiLanguageButtonTooltip}">
110798
110834
  this.setupWebSocketEventHandlers();
110799
110835
  this.shadowRoot.addEventListener("ui-toast", (e2) => {
110800
110836
  const ce2 = e2;
110801
- const msg = ce2.detail?.message || "Notice";
110837
+ const t2 = getUiStrings(this.uiLanguage);
110838
+ const msg = ce2.detail?.message || t2.toastDefaultNotice;
110802
110839
  const kind = ce2.detail?.kind || "error";
110803
- this.showToast(msg, kind);
110840
+ this.showToast(msg, kind, { history: ce2.detail?.history ?? "default" });
110804
110841
  });
110805
110842
  this.shadowRoot.addEventListener("auth-required", () => {
110806
110843
  this.onAuthRejected("api");
@@ -111165,7 +111202,6 @@ ${content}`;
111165
111202
  if (!resumeAllIcon) return;
111166
111203
  if (this.resumableDialogsCount > 0) {
111167
111204
  this.wsManager.sendRaw({ type: "resume_all" });
111168
- this.scheduleRunControlRefresh("resume_all");
111169
111205
  }
111170
111206
  return;
111171
111207
  }
@@ -111185,7 +111221,22 @@ ${content}`;
111185
111221
  });
111186
111222
  }
111187
111223
  scheduleRunControlRefresh(reason) {
111188
- const delaysMs = reason === "resume_all" ? [350, 1500, 4200] : [650, 2400];
111224
+ const now2 = Date.now();
111225
+ const last = this.runControlRefreshLastScheduledAtMsByReason.get(reason) ?? 0;
111226
+ if (now2 - last < 200) return;
111227
+ this.runControlRefreshLastScheduledAtMsByReason.set(reason, now2);
111228
+ const delaysMs = (() => {
111229
+ switch (reason) {
111230
+ case "resume_all":
111231
+ return [250, 900, 1800, 3200, 4800];
111232
+ case "emergency_stop":
111233
+ return [250, 900, 1800, 3200];
111234
+ case "run_state_marker_interrupted":
111235
+ return [350, 1200, 2600, 4200];
111236
+ case "run_state_marker_resumed":
111237
+ return [650, 2400, 4200];
111238
+ }
111239
+ })();
111189
111240
  for (const delay of delaysMs) {
111190
111241
  const t2 = setTimeout(() => {
111191
111242
  void this.loadDialogs();
@@ -111816,6 +111867,7 @@ ${content}`;
111816
111867
  if (!intent) return;
111817
111868
  this.deepLinkInFlight = true;
111818
111869
  try {
111870
+ const t2 = getUiStrings(this.uiLanguage);
111819
111871
  if (intent.kind === "dialog") {
111820
111872
  let dialogInfo2 = this.buildDialogInfoForIds(intent.rootId, intent.selfId);
111821
111873
  if (!dialogInfo2) {
@@ -111823,7 +111875,7 @@ ${content}`;
111823
111875
  dialogInfo2 = this.buildDialogInfoForIds(intent.rootId, intent.selfId);
111824
111876
  }
111825
111877
  if (!dialogInfo2) {
111826
- this.showToast(`Deep link dialog not found: ${intent.selfId}`, "warning");
111878
+ this.showToast(`${t2.deepLinkDialogNotFoundPrefix} ${intent.selfId}`, "warning");
111827
111879
  this.pendingDeepLink = null;
111828
111880
  return;
111829
111881
  }
@@ -111839,7 +111891,7 @@ ${content}`;
111839
111891
  dialogInfo2 = this.buildDialogInfoForIds(intent.rootId, intent.selfId);
111840
111892
  }
111841
111893
  if (!dialogInfo2) {
111842
- this.showToast(`Deep link dialog not found: ${intent.selfId}`, "warning");
111894
+ this.showToast(`${t2.deepLinkDialogNotFoundPrefix} ${intent.selfId}`, "warning");
111843
111895
  this.pendingDeepLink = null;
111844
111896
  return;
111845
111897
  }
@@ -111868,7 +111920,7 @@ ${content}`;
111868
111920
  dialogInfo2 = this.buildDialogInfoForIds(intent.rootId, intent.selfId);
111869
111921
  }
111870
111922
  if (!dialogInfo2) {
111871
- this.showToast(`Deep link dialog not found: ${intent.selfId}`, "warning");
111923
+ this.showToast(`${t2.deepLinkDialogNotFoundPrefix} ${intent.selfId}`, "warning");
111872
111924
  this.pendingDeepLink = null;
111873
111925
  return;
111874
111926
  }
@@ -111905,7 +111957,7 @@ ${content}`;
111905
111957
  dialogInfo = this.buildDialogInfoForIds(rootId, selfId);
111906
111958
  }
111907
111959
  if (!dialogInfo) {
111908
- this.showToast(`Deep link dialog not found: ${selfId}`, "warning");
111960
+ this.showToast(`${t2.deepLinkDialogNotFoundPrefix} ${selfId}`, "warning");
111909
111961
  this.pendingDeepLink = null;
111910
111962
  return;
111911
111963
  }
@@ -112188,7 +112240,7 @@ ${content}`;
112188
112240
  this.onAuthRejected("api");
112189
112241
  return;
112190
112242
  }
112191
- this.showToast(resp.error || "Failed to delete dialog", "error");
112243
+ this.showToast(resp.error || t2.dialogDeleteFailedToast, "error");
112192
112244
  return;
112193
112245
  }
112194
112246
  this.showToast(t2.dialogDeletedToast, "info");
@@ -112204,6 +112256,7 @@ ${content}`;
112204
112256
  const toOk = toStatus === "running" || toStatus === "completed" || toStatus === "archived";
112205
112257
  if (!fromOk || !toOk) return;
112206
112258
  if (fromStatus === toStatus) return;
112259
+ const t2 = getUiStrings(this.uiLanguage);
112207
112260
  let request;
112208
112261
  if (kind === "root") {
112209
112262
  const rootId = detail.rootId;
@@ -112231,17 +112284,17 @@ ${content}`;
112231
112284
  this.onAuthRejected("api");
112232
112285
  return;
112233
112286
  }
112234
- this.showToast(resp.error || "Failed to move dialogs", "error");
112287
+ this.showToast(resp.error || t2.moveDialogsFailedToast, "error");
112235
112288
  return;
112236
112289
  }
112237
112290
  const payload = resp.data;
112238
112291
  if (!payload || !payload.success) {
112239
- const msg = payload && payload.error ? payload.error : "Failed to move dialogs";
112292
+ const msg = payload && payload.error ? payload.error : t2.moveDialogsFailedToast;
112240
112293
  this.showToast(msg, "error");
112241
112294
  return;
112242
112295
  }
112243
112296
  const movedCount = Array.isArray(payload.movedRootIds) ? payload.movedRootIds.length : 0;
112244
- this.showToast(`Moved ${movedCount} dialog(s).`, "info");
112297
+ this.showToast(`${t2.movedDialogsToastPrefix}${String(movedCount)}`, "info");
112245
112298
  const movedRootIds = Array.isArray(payload.movedRootIds) ? payload.movedRootIds : [];
112246
112299
  if (movedRootIds.length > 0) {
112247
112300
  const moved = new Set(movedRootIds);
@@ -112275,8 +112328,8 @@ ${content}`;
112275
112328
  this.updateInputPanelVisibility();
112276
112329
  this.updateQ4HComponent();
112277
112330
  } catch (error2) {
112278
- const message = error2 instanceof Error ? error2.message : "Unknown error";
112279
- this.showToast(`Failed to move dialogs: ${message}`, "error");
112331
+ const message = error2 instanceof Error ? error2.message : t2.unknownError;
112332
+ this.showToast(`${t2.moveDialogsFailedToast}: ${message}`, "error");
112280
112333
  }
112281
112334
  }
112282
112335
  async handleDialogCreateAction(detail) {
@@ -112668,7 +112721,8 @@ ${content}`;
112668
112721
  this.renderRemindersWidget();
112669
112722
  this.setupRemindersWidgetDrag();
112670
112723
  }
112671
- this.showSuccess("Dialog loaded successfully");
112724
+ const t2 = getUiStrings(this.uiLanguage);
112725
+ this.showSuccess(t2.dialogLoadedToast);
112672
112726
  } catch (error2) {
112673
112727
  const message = error2 instanceof Error ? error2.message : "Unknown error";
112674
112728
  this.showError(`Failed to load dialog: ${message}`, "error");
@@ -112853,10 +112907,18 @@ ${content}`;
112853
112907
  }
112854
112908
  }
112855
112909
  showSuccess(message) {
112856
- this.showToast(message, "info");
112910
+ this.showToast(message, "info", { history: "skip" });
112857
112911
  }
112858
- showToast(message, kind = "error") {
112859
- this.pushToastHistoryEntry({ message, kind });
112912
+ shouldPersistToastHistory(kind, options) {
112913
+ const policy = options?.history ?? "default";
112914
+ if (policy === "persist") return true;
112915
+ if (policy === "skip") return false;
112916
+ return kind === "error" || kind === "warning";
112917
+ }
112918
+ showToast(message, kind = "error", options) {
112919
+ if (this.shouldPersistToastHistory(kind, options)) {
112920
+ this.pushToastHistoryEntry({ message, kind });
112921
+ }
112860
112922
  if (!this.shadowRoot) return;
112861
112923
  const toast = document.createElement("div");
112862
112924
  const bg = kind === "error" ? "var(--dominds-danger-bg, #f8d7da)" : kind === "warning" ? "var(--dominds-warning-bg, #fff3cd)" : "var(--dominds-info-bg, #cce7ff)";
@@ -113180,7 +113242,8 @@ ${content}`;
113180
113242
  async loadToolsRegistry() {
113181
113243
  const res = await this.apiClient.getToolsRegistry();
113182
113244
  if (!res.success || !res.data) {
113183
- const message = res.error || "Failed to load tools registry";
113245
+ const t2 = getUiStrings(this.uiLanguage);
113246
+ const message = res.error || t2.toolsRegistryLoadFailedToast;
113184
113247
  this.showToast(message, "warning");
113185
113248
  return;
113186
113249
  }
@@ -113328,6 +113391,10 @@ ${content}`;
113328
113391
  void this.loadDialogs();
113329
113392
  return true;
113330
113393
  }
113394
+ case "run_control_refresh": {
113395
+ this.scheduleRunControlRefresh(message.reason);
113396
+ return true;
113397
+ }
113331
113398
  default: {
113332
113399
  if ("dialog" in message && message.dialog && typeof message.dialog === "object") {
113333
113400
  return false;
@@ -113561,9 +113628,10 @@ ${content}`;
113561
113628
  if (dialogContainer) {
113562
113629
  await dialogContainer.handleDialogEvent(message);
113563
113630
  }
113564
- const kind = message.kind;
113565
- if (kind === "resumed") {
113631
+ if (message.kind === "resumed") {
113566
113632
  this.scheduleRunControlRefresh("run_state_marker_resumed");
113633
+ } else {
113634
+ this.scheduleRunControlRefresh("run_state_marker_interrupted");
113567
113635
  }
113568
113636
  break;
113569
113637
  }
@@ -113602,6 +113670,7 @@ ${content}`;
113602
113670
  break;
113603
113671
  }
113604
113672
  } catch (error2) {
113673
+ const t2 = getUiStrings(this.uiLanguage);
113605
113674
  console.error("🔔 [ERROR] WebSocket event processing failed:", {
113606
113675
  messageType: message?.type || "unknown",
113607
113676
  error: error2 instanceof Error ? error2.message : String(error2),
@@ -113609,15 +113678,9 @@ ${content}`;
113609
113678
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
113610
113679
  });
113611
113680
  if (error2 instanceof Error && (error2.message.includes("Failed to fetch") || error2.message.includes("Network error") || error2.message.includes("connection"))) {
113612
- this.showToast(
113613
- "Connection issue detected. Reminder data may be temporarily unavailable.",
113614
- "error"
113615
- );
113681
+ this.showToast(t2.reminderConnectionIssueToast, "error");
113616
113682
  } else {
113617
- this.showToast(
113618
- "Reminder synchronization encountered an issue. Please refresh if problems persist.",
113619
- "error"
113620
- );
113683
+ this.showToast(t2.reminderSyncIssueToast, "error");
113621
113684
  }
113622
113685
  }
113623
113686
  }
@@ -113790,10 +113853,14 @@ ${t2.commandLabel}: ${commandStr}`;
113790
113853
  const q2 = event.question;
113791
113854
  const existingIndex = this.q4hQuestions.findIndex((eq2) => eq2.id === q2.id);
113792
113855
  if (existingIndex >= 0) {
113793
- this.q4hQuestions[existingIndex] = q2;
113794
- } else {
113795
- this.q4hQuestions.push(q2);
113856
+ const existing = this.q4hQuestions[existingIndex];
113857
+ const existingMeta = existing;
113858
+ const incomingMeta = q2;
113859
+ throw new Error(
113860
+ `Q4H duplicate delivery violation: questionId=${q2.id} existingDialog=${existingMeta.selfId ?? ""} incomingDialog=${incomingMeta.selfId ?? ""} existingCallId=${existingMeta.callId ?? ""} incomingCallId=${incomingMeta.callId ?? ""}`
113861
+ );
113796
113862
  }
113863
+ this.q4hQuestions.push(q2);
113797
113864
  this.updateQ4HComponent();
113798
113865
  this.applyPendingQ4HSelectionFromDeepLink();
113799
113866
  void this.applyPendingDeepLink();
@@ -113815,14 +113882,26 @@ ${t2.commandLabel}: ${commandStr}`;
113815
113882
  handleQ4HStateResponse(event) {
113816
113883
  const incomingById = /* @__PURE__ */ new Map();
113817
113884
  for (const q2 of event.questions) {
113818
- if (!q2 || typeof q2.id !== "string" || q2.id.trim() === "") continue;
113885
+ if (!q2 || typeof q2.id !== "string" || q2.id.trim() === "") {
113886
+ throw new Error("Q4H state snapshot violation: invalid question id");
113887
+ }
113888
+ if (incomingById.has(q2.id)) {
113889
+ throw new Error(
113890
+ `Q4H state snapshot violation: duplicate question id in snapshot (${q2.id})`
113891
+ );
113892
+ }
113819
113893
  incomingById.set(q2.id, q2);
113820
113894
  }
113821
113895
  const next2 = [];
113822
113896
  const seenIds = /* @__PURE__ */ new Set();
113823
113897
  for (const existing of this.q4hQuestions) {
113824
113898
  const id28 = typeof existing.id === "string" ? existing.id : "";
113825
- if (!id28 || seenIds.has(id28)) continue;
113899
+ if (!id28) {
113900
+ throw new Error("Q4H client cache violation: existing question has invalid id");
113901
+ }
113902
+ if (seenIds.has(id28)) {
113903
+ throw new Error(`Q4H client cache violation: duplicate cached question id (${id28})`);
113904
+ }
113826
113905
  seenIds.add(id28);
113827
113906
  const existingWithDialog = existing;
113828
113907
  const selfId = typeof existingWithDialog.selfId === "string" ? existingWithDialog.selfId : null;
@@ -113846,7 +113925,9 @@ ${t2.commandLabel}: ${commandStr}`;
113846
113925
  next2.push(existing);
113847
113926
  }
113848
113927
  for (const [id28, q2] of incomingById.entries()) {
113849
- if (seenIds.has(id28)) continue;
113928
+ if (seenIds.has(id28)) {
113929
+ throw new Error(`Q4H state merge violation: duplicate id during merge (${id28})`);
113930
+ }
113850
113931
  seenIds.add(id28);
113851
113932
  next2.push(q2);
113852
113933
  }
@@ -115821,4 +115902,4 @@ export {
115821
115902
  clear$2 as y,
115822
115903
  defaultConfig2 as z
115823
115904
  };
115824
- //# sourceMappingURL=index-RV1MEt3b.js.map
115905
+ //# sourceMappingURL=index-CqMOe9zt.js.map