dominds 1.4.2 → 1.5.2

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 (174) hide show
  1. package/README.md +24 -0
  2. package/README.zh.md +24 -0
  3. package/dist/apps/app-json.js +38 -3
  4. package/dist/apps/dialog-run-controls.js +4 -0
  5. package/dist/apps/enabled-apps.js +8 -1
  6. package/dist/apps/installed-file.js +207 -0
  7. package/dist/apps/run-app-json.js +6 -6
  8. package/dist/apps/runtime-port.js +91 -0
  9. package/dist/apps/runtime.js +316 -68
  10. package/dist/apps-host/client.js +153 -3
  11. package/dist/apps-host/host.js +339 -2
  12. package/dist/apps-host/ipc-types.js +215 -30
  13. package/dist/cli/install.js +21 -1
  14. package/dist/dialog-fork.js +609 -0
  15. package/dist/dialog.js +2 -2
  16. package/dist/docs/agent-priming.md +38 -0
  17. package/dist/docs/agent-priming.zh.md +34 -0
  18. package/dist/docs/app-constitution.md +153 -2
  19. package/dist/docs/app-constitution.zh.md +153 -2
  20. package/dist/docs/dialog-persistence.md +31 -0
  21. package/dist/docs/dialog-persistence.zh.md +31 -0
  22. package/dist/docs/dialog-system.md +29 -0
  23. package/dist/docs/dialog-system.zh.md +29 -0
  24. package/dist/docs/kernel-app-architecture.md +286 -0
  25. package/dist/docs/kernel-app-architecture.zh.md +285 -0
  26. package/dist/llm/defaults.yaml +16 -0
  27. package/dist/llm/driver-entry.js +28 -0
  28. package/dist/llm/driver-v2/context-health.js +121 -0
  29. package/dist/llm/driver-v2/context.js +56 -0
  30. package/dist/llm/driver-v2/core.js +1545 -0
  31. package/dist/llm/driver-v2/index.js +26 -0
  32. package/dist/llm/driver-v2/orchestrator.js +158 -0
  33. package/dist/llm/driver-v2/policy.js +129 -0
  34. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  35. package/dist/llm/driver-v2/round.js +366 -0
  36. package/dist/llm/driver-v2/runtime-utils.js +365 -0
  37. package/dist/llm/driver-v2/saying-events.js +20 -0
  38. package/dist/llm/driver-v2/subdialog-txn.js +42 -0
  39. package/dist/llm/driver-v2/supdialog-response.js +400 -0
  40. package/dist/llm/driver-v2/tellask-bridge.js +1148 -0
  41. package/dist/llm/driver-v2/types.js +10 -0
  42. package/dist/llm/driver-v2-ref-only/context-health.js +121 -0
  43. package/dist/llm/driver-v2-ref-only/context.js +17 -0
  44. package/dist/llm/driver-v2-ref-only/core.js +1710 -0
  45. package/dist/llm/driver-v2-ref-only/index.js +26 -0
  46. package/dist/llm/driver-v2-ref-only/orchestrator.js +158 -0
  47. package/dist/llm/driver-v2-ref-only/policy.js +129 -0
  48. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +73 -0
  49. package/dist/llm/driver-v2-ref-only/round.js +366 -0
  50. package/dist/llm/driver-v2-ref-only/runtime-utils.js +473 -0
  51. package/dist/llm/driver-v2-ref-only/saying-events.js +18 -0
  52. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +42 -0
  53. package/dist/llm/driver-v2-ref-only/supdialog-response.js +453 -0
  54. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +1178 -0
  55. package/dist/llm/driver-v2-ref-only/types.js +10 -0
  56. package/dist/llm/gen/anthropic.js +68 -15
  57. package/dist/llm/gen/codex.js +59 -10
  58. package/dist/llm/gen/openai-compatible.js +38 -9
  59. package/dist/llm/gen/openai.js +58 -11
  60. package/dist/llm/gen/tool-output-limit.js +50 -0
  61. package/dist/llm/kernel-driver/subdialog.js +23 -12
  62. package/dist/llm/kernel-driver/tellask-special.js +20 -4
  63. package/dist/minds/load.js +7 -0
  64. package/dist/persistence.js +216 -30
  65. package/dist/priming.js +171 -18
  66. package/dist/server/api-routes.js +82 -0
  67. package/dist/server/setup-routes.js +15 -0
  68. package/dist/shared/types/storage.js +77 -0
  69. package/dist/static/assets/{_basePickBy-B2o4z1Hf.js → _basePickBy-B-A5XrWM.js} +3 -3
  70. package/dist/static/assets/{_basePickBy-B2o4z1Hf.js.map → _basePickBy-B-A5XrWM.js.map} +1 -1
  71. package/dist/static/assets/{_baseUniq-CLmcxjdl.js → _baseUniq-BANLb0cu.js} +2 -2
  72. package/dist/static/assets/{_baseUniq-CLmcxjdl.js.map → _baseUniq-BANLb0cu.js.map} +1 -1
  73. package/dist/static/assets/{arc-CymD_KN7.js → arc-CYZYnojf.js} +2 -2
  74. package/dist/static/assets/{arc-CymD_KN7.js.map → arc-CYZYnojf.js.map} +1 -1
  75. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js → architectureDiagram-VXUJARFQ-Cxf4pmYG.js} +7 -7
  76. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js.map → architectureDiagram-VXUJARFQ-Cxf4pmYG.js.map} +1 -1
  77. package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js → blockDiagram-VD42YOAC-wvs0G30c.js} +7 -7
  78. package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js.map → blockDiagram-VD42YOAC-wvs0G30c.js.map} +1 -1
  79. package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js → c4Diagram-YG6GDRKO-BKFNexn4.js} +3 -3
  80. package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js.map → c4Diagram-YG6GDRKO-BKFNexn4.js.map} +1 -1
  81. package/dist/static/assets/{channel-CX9BlKil.js → channel-_1qpxJWy.js} +2 -2
  82. package/dist/static/assets/{channel-CX9BlKil.js.map → channel-_1qpxJWy.js.map} +1 -1
  83. package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js → chunk-4BX2VUAB-BIdC0phm.js} +2 -2
  84. package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js.map → chunk-4BX2VUAB-BIdC0phm.js.map} +1 -1
  85. package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js → chunk-55IACEB6-BNvGenQ9.js} +2 -2
  86. package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js.map → chunk-55IACEB6-BNvGenQ9.js.map} +1 -1
  87. package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js → chunk-B4BG7PRW-jmf-1Wv7.js} +5 -5
  88. package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js.map → chunk-B4BG7PRW-jmf-1Wv7.js.map} +1 -1
  89. package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js → chunk-DI55MBZ5-nmEmcikR.js} +4 -4
  90. package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js.map → chunk-DI55MBZ5-nmEmcikR.js.map} +1 -1
  91. package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js → chunk-FMBD7UC4-kGysaq_j.js} +2 -2
  92. package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js.map → chunk-FMBD7UC4-kGysaq_j.js.map} +1 -1
  93. package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js → chunk-QN33PNHL-8JwMLFIJ.js} +2 -2
  94. package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js.map → chunk-QN33PNHL-8JwMLFIJ.js.map} +1 -1
  95. package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js → chunk-QZHKN3VN-DZleEj00.js} +2 -2
  96. package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js.map → chunk-QZHKN3VN-DZleEj00.js.map} +1 -1
  97. package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js → chunk-TZMSLE5B-CXxl_uqH.js} +2 -2
  98. package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js.map → chunk-TZMSLE5B-CXxl_uqH.js.map} +1 -1
  99. package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js → classDiagram-2ON5EDUG-C-7R0QB6.js} +6 -6
  100. package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js.map → classDiagram-2ON5EDUG-C-7R0QB6.js.map} +1 -1
  101. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js → classDiagram-v2-WZHVMYZB-C-7R0QB6.js} +6 -6
  102. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map → classDiagram-v2-WZHVMYZB-C-7R0QB6.js.map} +1 -1
  103. package/dist/static/assets/{clone-BlI81KqZ.js → clone-BwOKYSj8.js} +2 -2
  104. package/dist/static/assets/{clone-BlI81KqZ.js.map → clone-BwOKYSj8.js.map} +1 -1
  105. package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js → cose-bilkent-S5V4N54A-BCBalM7p.js} +2 -2
  106. package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js.map → cose-bilkent-S5V4N54A-BCBalM7p.js.map} +1 -1
  107. package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js → dagre-6UL2VRFP-uV2ekQoj.js} +7 -7
  108. package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js.map → dagre-6UL2VRFP-uV2ekQoj.js.map} +1 -1
  109. package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js → diagram-PSM6KHXK-D-ZMog1-.js} +8 -8
  110. package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js.map → diagram-PSM6KHXK-D-ZMog1-.js.map} +1 -1
  111. package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js → diagram-QEK2KX5R-BThSELUH.js} +7 -7
  112. package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js.map → diagram-QEK2KX5R-BThSELUH.js.map} +1 -1
  113. package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js → diagram-S2PKOQOG-Di-YN5cd.js} +7 -7
  114. package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js.map → diagram-S2PKOQOG-Di-YN5cd.js.map} +1 -1
  115. package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js → erDiagram-Q2GNP2WA-lBZ9DITn.js} +5 -5
  116. package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js.map → erDiagram-Q2GNP2WA-lBZ9DITn.js.map} +1 -1
  117. package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js → flowDiagram-NV44I4VS-C_60PNQR.js} +6 -6
  118. package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js.map → flowDiagram-NV44I4VS-C_60PNQR.js.map} +1 -1
  119. package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js → ganttDiagram-JELNMOA3-Dvqq-VHJ.js} +3 -3
  120. package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js.map → ganttDiagram-JELNMOA3-Dvqq-VHJ.js.map} +1 -1
  121. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js → gitGraphDiagram-V2S2FVAM-BTj8orRe.js} +8 -8
  122. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map → gitGraphDiagram-V2S2FVAM-BTj8orRe.js.map} +1 -1
  123. package/dist/static/assets/{graph-DbzWiBNK.js → graph-BqCzR2Nl.js} +3 -3
  124. package/dist/static/assets/{graph-DbzWiBNK.js.map → graph-BqCzR2Nl.js.map} +1 -1
  125. package/dist/static/assets/{index-B-8J28g7.js → index-DrTqAfFy.js} +386 -201
  126. package/dist/static/assets/index-DrTqAfFy.js.map +1 -0
  127. package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js → infoDiagram-HS3SLOUP-DlC6wsrv.js} +6 -6
  128. package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js.map → infoDiagram-HS3SLOUP-DlC6wsrv.js.map} +1 -1
  129. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js → journeyDiagram-XKPGCS4Q-Dg_RgtQX.js} +5 -5
  130. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map → journeyDiagram-XKPGCS4Q-Dg_RgtQX.js.map} +1 -1
  131. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js → kanban-definition-3W4ZIXB7-DuGS3lId.js} +3 -3
  132. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js.map → kanban-definition-3W4ZIXB7-DuGS3lId.js.map} +1 -1
  133. package/dist/static/assets/{layout-C5B58szc.js → layout-FDz2bstZ.js} +5 -5
  134. package/dist/static/assets/{layout-C5B58szc.js.map → layout-FDz2bstZ.js.map} +1 -1
  135. package/dist/static/assets/{linear-_32fut6G.js → linear-CzsdvPGb.js} +2 -2
  136. package/dist/static/assets/{linear-_32fut6G.js.map → linear-CzsdvPGb.js.map} +1 -1
  137. package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js → mindmap-definition-VGOIOE7T-WsAF5UNp.js} +4 -4
  138. package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js.map → mindmap-definition-VGOIOE7T-WsAF5UNp.js.map} +1 -1
  139. package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js → pieDiagram-ADFJNKIX-DJpRJ5ei.js} +8 -8
  140. package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js.map → pieDiagram-ADFJNKIX-DJpRJ5ei.js.map} +1 -1
  141. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js → quadrantDiagram-AYHSOK5B-CMyIzTkY.js} +3 -3
  142. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js.map → quadrantDiagram-AYHSOK5B-CMyIzTkY.js.map} +1 -1
  143. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js → requirementDiagram-UZGBJVZJ-D_yqVXGu.js} +4 -4
  144. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map → requirementDiagram-UZGBJVZJ-D_yqVXGu.js.map} +1 -1
  145. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js → sankeyDiagram-TZEHDZUN-D4-cF724.js} +2 -2
  146. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js.map → sankeyDiagram-TZEHDZUN-D4-cF724.js.map} +1 -1
  147. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js → sequenceDiagram-WL72ISMW-B7J3gWYN.js} +4 -4
  148. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js.map → sequenceDiagram-WL72ISMW-B7J3gWYN.js.map} +1 -1
  149. package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js → stateDiagram-FKZM4ZOC-DwEYYCcu.js} +9 -9
  150. package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js.map → stateDiagram-FKZM4ZOC-DwEYYCcu.js.map} +1 -1
  151. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js → stateDiagram-v2-4FDKWEC3-D4LOOQV5.js} +5 -5
  152. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map → stateDiagram-v2-4FDKWEC3-D4LOOQV5.js.map} +1 -1
  153. package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js → timeline-definition-IT6M3QCI-CyG-TJ_A.js} +3 -3
  154. package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js.map → timeline-definition-IT6M3QCI-CyG-TJ_A.js.map} +1 -1
  155. package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js → treemap-GDKQZRPO-yY4GiKmU.js} +5 -5
  156. package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js.map → treemap-GDKQZRPO-yY4GiKmU.js.map} +1 -1
  157. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js → xychartDiagram-PRI3JC2R-5TYN_q15.js} +3 -3
  158. package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js.map → xychartDiagram-PRI3JC2R-5TYN_q15.js.map} +1 -1
  159. package/dist/static/index.html +1 -1
  160. package/dist/team.js +33 -4
  161. package/dist/tools/app-reminders.js +280 -0
  162. package/dist/tools/prompts/memory/en/errors.md +155 -0
  163. package/dist/tools/prompts/memory/en/index.md +47 -0
  164. package/dist/tools/prompts/memory/en/principles.md +79 -0
  165. package/dist/tools/prompts/memory/en/scenarios.md +174 -0
  166. package/dist/tools/prompts/memory/en/tools.md +154 -0
  167. package/dist/tools/prompts/memory/zh/errors.md +155 -0
  168. package/dist/tools/prompts/memory/zh/index.md +47 -0
  169. package/dist/tools/prompts/memory/zh/principles.md +79 -0
  170. package/dist/tools/prompts/memory/zh/scenarios.md +174 -0
  171. package/dist/tools/prompts/memory/zh/tools.md +154 -0
  172. package/dist/tools/ripgrep.js +197 -63
  173. package/package.json +2 -2
  174. package/dist/static/assets/index-B-8J28g7.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-BcweuZHt.js","assets/graph-DbzWiBNK.js","assets/_baseUniq-CLmcxjdl.js","assets/layout-C5B58szc.js","assets/_basePickBy-B2o4z1Hf.js","assets/clone-BlI81KqZ.js","assets/cose-bilkent-S5V4N54A-yM7S2atz.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-B0WnCfAT.js","assets/chunk-TZMSLE5B-DyKOlPTY.js","assets/flowDiagram-NV44I4VS-BsBhWukh.js","assets/chunk-FMBD7UC4-5uefwCjI.js","assets/chunk-55IACEB6-CdqwynH9.js","assets/chunk-QN33PNHL-DzWVcvpI.js","assets/channel-CX9BlKil.js","assets/erDiagram-Q2GNP2WA-DLKmthuw.js","assets/gitGraphDiagram-V2S2FVAM-BnAPFBGR.js","assets/chunk-4BX2VUAB-lXArRj3o.js","assets/chunk-QZHKN3VN-BrrvAZdP.js","assets/treemap-GDKQZRPO-d0AbKEc4.js","assets/ganttDiagram-JELNMOA3-Debz-J-C.js","assets/linear-_32fut6G.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-CZ5hWoxV.js","assets/pieDiagram-ADFJNKIX-BQ2n0cOB.js","assets/arc-CymD_KN7.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-BLg7_neg.js","assets/xychartDiagram-PRI3JC2R-CmSQMxUh.js","assets/requirementDiagram-UZGBJVZJ-DwkJt0zi.js","assets/sequenceDiagram-WL72ISMW-KHU_eApU.js","assets/classDiagram-2ON5EDUG-FCrnlCWC.js","assets/chunk-B4BG7PRW-Y-uXcJst.js","assets/classDiagram-v2-WZHVMYZB-FCrnlCWC.js","assets/stateDiagram-FKZM4ZOC-B3DBCxAL.js","assets/chunk-DI55MBZ5-C5xSbRST.js","assets/stateDiagram-v2-4FDKWEC3-C-uIk7gh.js","assets/journeyDiagram-XKPGCS4Q-CKN3oSxk.js","assets/timeline-definition-IT6M3QCI-SysEcQCC.js","assets/mindmap-definition-VGOIOE7T-C_goMzjx.js","assets/kanban-definition-3W4ZIXB7-BQCMklfJ.js","assets/sankeyDiagram-TZEHDZUN-DmxmatUB.js","assets/diagram-S2PKOQOG-pB6N6Tq_.js","assets/diagram-QEK2KX5R-BVbuejJn.js","assets/blockDiagram-VD42YOAC-pHVz60D0.js","assets/architectureDiagram-VXUJARFQ-DJQfSJUH.js","assets/diagram-PSM6KHXK-D4-QwLW1.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-uV2ekQoj.js","assets/graph-BqCzR2Nl.js","assets/_baseUniq-BANLb0cu.js","assets/layout-FDz2bstZ.js","assets/_basePickBy-B-A5XrWM.js","assets/clone-BwOKYSj8.js","assets/cose-bilkent-S5V4N54A-BCBalM7p.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-BKFNexn4.js","assets/chunk-TZMSLE5B-CXxl_uqH.js","assets/flowDiagram-NV44I4VS-C_60PNQR.js","assets/chunk-FMBD7UC4-kGysaq_j.js","assets/chunk-55IACEB6-BNvGenQ9.js","assets/chunk-QN33PNHL-8JwMLFIJ.js","assets/channel-_1qpxJWy.js","assets/erDiagram-Q2GNP2WA-lBZ9DITn.js","assets/gitGraphDiagram-V2S2FVAM-BTj8orRe.js","assets/chunk-4BX2VUAB-BIdC0phm.js","assets/chunk-QZHKN3VN-DZleEj00.js","assets/treemap-GDKQZRPO-yY4GiKmU.js","assets/ganttDiagram-JELNMOA3-Dvqq-VHJ.js","assets/linear-CzsdvPGb.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-DlC6wsrv.js","assets/pieDiagram-ADFJNKIX-DJpRJ5ei.js","assets/arc-CYZYnojf.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-CMyIzTkY.js","assets/xychartDiagram-PRI3JC2R-5TYN_q15.js","assets/requirementDiagram-UZGBJVZJ-D_yqVXGu.js","assets/sequenceDiagram-WL72ISMW-B7J3gWYN.js","assets/classDiagram-2ON5EDUG-C-7R0QB6.js","assets/chunk-B4BG7PRW-jmf-1Wv7.js","assets/classDiagram-v2-WZHVMYZB-C-7R0QB6.js","assets/stateDiagram-FKZM4ZOC-DwEYYCcu.js","assets/chunk-DI55MBZ5-nmEmcikR.js","assets/stateDiagram-v2-4FDKWEC3-D4LOOQV5.js","assets/journeyDiagram-XKPGCS4Q-Dg_RgtQX.js","assets/timeline-definition-IT6M3QCI-CyG-TJ_A.js","assets/mindmap-definition-VGOIOE7T-WsAF5UNp.js","assets/kanban-definition-3W4ZIXB7-DuGS3lId.js","assets/sankeyDiagram-TZEHDZUN-D4-cF724.js","assets/diagram-S2PKOQOG-Di-YN5cd.js","assets/diagram-QEK2KX5R-BThSELUH.js","assets/blockDiagram-VD42YOAC-wvs0G30c.js","assets/architectureDiagram-VXUJARFQ-Cxf4pmYG.js","assets/diagram-PSM6KHXK-D-ZMog1-.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);
@@ -180,6 +180,7 @@ function getUiStrings(language) {
180
180
  q4hAnswerCallSitesLabel: "本次回答对应提问点:",
181
181
  q4hOpenInNewTabTitle: "新标签打开",
182
182
  q4hCopyLinkTitle: "复制链接",
183
+ forkDialogTitle: "Fork 对话",
183
184
  q4hInvalidDialogToast: "对话标识无效:selfId/rootId 必须是字符串。",
184
185
  q4hDeclareDeadOnlySidelineToast: "只有支线对话支持“宣布卡死”。",
185
186
  q4hDeclareDeadOnlyInterruptedToast: "只有已中断的对话支持“宣布卡死”。",
@@ -211,6 +212,7 @@ function getUiStrings(language) {
211
212
  invalidMessageFormatToast: "收到无效消息格式,请刷新页面。",
212
213
  linkCopiedToast: "链接已复制。",
213
214
  linkCopyFailedToast: "复制链接失败。",
215
+ forkDialogFailedToast: "Fork 对话失败。",
214
216
  toastDefaultNotice: "通知",
215
217
  dialogCreatedToastPrefix: "已创建对话:",
216
218
  dialogLoadedToast: "对话加载成功。",
@@ -500,6 +502,7 @@ function getUiStrings(language) {
500
502
  q4hAnswerCallSitesLabel: "Answer applies to call sites:",
501
503
  q4hOpenInNewTabTitle: "Open in new tab",
502
504
  q4hCopyLinkTitle: "Copy link",
505
+ forkDialogTitle: "Fork dialog",
503
506
  q4hInvalidDialogToast: "Invalid dialog id: selfId/rootId must be strings.",
504
507
  q4hDeclareDeadOnlySidelineToast: "Declare dead is available only for sideline dialogs.",
505
508
  q4hDeclareDeadOnlyInterruptedToast: "Declare dead is available only when the dialog is interrupted.",
@@ -531,6 +534,7 @@ function getUiStrings(language) {
531
534
  invalidMessageFormatToast: "Received invalid message format. Please refresh the page.",
532
535
  linkCopiedToast: "Link copied.",
533
536
  linkCopyFailedToast: "Failed to copy link.",
537
+ forkDialogFailedToast: "Failed to fork dialog.",
534
538
  toastDefaultNotice: "Notice",
535
539
  dialogCreatedToastPrefix: "Dialog created:",
536
540
  dialogLoadedToast: "Dialog loaded successfully.",
@@ -1107,6 +1111,12 @@ class ApiClient {
1107
1111
  body: request
1108
1112
  });
1109
1113
  }
1114
+ async forkDialog(rootDialogId, request) {
1115
+ return this.request(`/api/dialogs/${encodeURIComponent(rootDialogId)}/fork`, {
1116
+ method: "POST",
1117
+ body: request
1118
+ });
1119
+ }
1110
1120
  async listPrimingScripts(agentId) {
1111
1121
  const query = new URLSearchParams({
1112
1122
  agentId,
@@ -1879,6 +1889,9 @@ const ICON_MASK_URLS = {
1879
1889
  copy: asMaskUrl(
1880
1890
  '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'
1881
1891
  ),
1892
+ fork: asMaskUrl(
1893
+ '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 10 16"><path d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1ZM2 4.2C1.34 4.2.8 3.65.8 3 .8 2.35 1.35 1.8 2 1.8c.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2Zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2Zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2Z"/></svg>'
1894
+ ),
1882
1895
  play: asMaskUrl(
1883
1896
  '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.5 3v18l15.5-9z"/></svg>'
1884
1897
  ),
@@ -4220,6 +4233,30 @@ class CreateDialogFlowController {
4220
4233
  }
4221
4234
  }
4222
4235
  const mannedToolIcon = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20122.88%20120.92'%20style='enable-background:new%200%200%20122.88%20120.92'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0{fill-rule:evenodd;clip-rule:evenodd;}%3c/style%3e%3cg%20transform='scale(0.8)%20translate(15,%2015)'%3e%3cpath%20class='st0'%20d='M117.32,101.23c0.8-2.32,1.23-4.81,1.23-7.39c0-6.28-2.55-11.97-6.67-16.09c-4.12-4.12-9.81-6.66-16.09-6.66%20c-6.28,0-11.97,2.55-16.09,6.66c-4.12,4.12-6.66,9.81-6.66,16.09c0,6.28,2.55,11.97,6.66,16.09c4.12,4.12,9.81,6.66,16.09,6.66%20c5.75,0,11-2.13,15.01-5.65C113.74,108.36,116.05,104.93,117.32,101.23L117.32,101.23z%20M86.36,96.38%20c-2.05,0.37-4.05,1.07-5.14,3.79c-0.71,1.76-0.54,3.89,0.35,5.82c2.42-7.38,10.92-3.02,5.45,3.34c4,0.2,6.53-2.6,6.93-6.37%20c0.19-1.78,0.34-2.74,0.73-3.51c0.21-0.42,0.5-0.78,0.89-1.2c1.31-1.44,2.77-2.7,4.2-4.19c2.69-2.81,8.42-0.22,10.61-5.72%20c0.71-1.76,0.54-3.89-0.35-5.82c-2.42,7.38-10.92,3.02-5.45-3.34c-4-0.2-6.53,2.6-6.93,6.37c-0.17,1.66,0.12,3.07-1.72,4.96%20c-1.29,1.29-2.66,2.61-3.99,3.87c-0.52,0.51-0.9,0.81-1.35,1.03c-0.8,0.4-1.78,0.52-4.22,0.95L86.36,96.38L86.36,96.38z%20M86.25,23.86l-0.03,0.09c-6.47-1.21-15.81-1.84-25.66-1.72c-9.96,0.11-20.49,0.98-29.17,2.76l-0.01-0.04%20C23.81-10.65,96.24-5.56,86.25,23.86L86.25,23.86z%20M44.15,62.42c-4.4,3.08-8.99,4.22-13.47,5.05l6.41,18.16h32.89%20c-0.82,2.59-1.27,5.35-1.27,8.21c0,7.48,3.03,14.25,7.93,19.15c4.9,4.9,11.67,7.93,19.15,7.93c7.48,0,14.25-3.03,19.15-7.93%20c5.15-5.15,7.93-11.84,7.93-19.15c0-7.48-3.03-14.25-7.93-19.15c-4.9-4.9-11.67-7.93-19.15-7.93c-2.32,0-4.57,0.29-6.72,0.84%20c-3.97-0.4-8.09-0.72-11.02-2.24c-1.34-0.83-2.51-1.99-3.59-3.46l-0.19-3c1.04-0.85,2.04-1.85,2.89-2.96%20c1.93-2.41,2.67-4.89,3.59-8.04c0.19-0.67,0.37-1.33,0.59-2c1.82-0.19,3.41-2.22,4.37-4.74c0.52-1.41,0.93-3,1.04-4.41%20c0.15-1.48,0-2.85-0.52-3.78c-0.41-0.74-1.04-1.22-1.89-1.3c-0.06-0.74,0.27-2.31,0.72-3.98c-6.13-1.1-15.03-1.67-24.5-1.56%20c-9.72,0.11-19.99,0.95-28.4,2.69l0.82,3.93c-0.63,1.04-0.78,2.67-0.59,4.41c0.19,1.7,0.7,3.48,1.45,4.97%20c0.96,1.89,2.33,3.22,3.93,3.22c0.15,0.44,0.33,0.93,0.48,1.41c1.3,3.82,2.26,6.71,4.59,9.45c0.67,0.82,1.41,1.56,2.19,2.22%20l-0.19,3.37C44.63,62,44.39,62.21,44.15,62.42L44.15,62.42z%20M71.94,60.07c-4.18,2.79-6.73,4.32-12.14,4.19%20c-5.26-0.08-8.01-1.86-12.22-4.52C47.26,77.31,72.37,78.36,71.94,60.07L71.94,60.07z%20M78.21,47.33c0.22-0.78,0.48-1.59,0.78-2.56%20c0.11-0.41,0.52-0.7,0.93-0.63c1.22,0.22,2.45-1.56,3.3-3.71c0.48-1.3,0.85-2.7,0.96-3.96c0.11-1.19,0-2.22-0.33-2.85%20c-0.33-0.61-1.25-0.26-1.93-0.85c-3.51,9.31-34.11,13.52-46.63,0.7c-0.44,0.7-0.52,1.96-0.37,3.37c0.19,1.48,0.63,3.11,1.3,4.41%20c0.78,1.52,1.78,2.56,2.78,2.3c0.41-0.11,0.85,0.11,1,0.52c0.3,0.82,0.48,1.45,0.7,2.07C47.18,65.2,71.84,66.69,78.21,47.33%20L78.21,47.33z%20M28.14,91.38c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63c-1.45,0-2.63-1.18-2.63-2.63%20C25.52,92.56,26.69,91.38,28.14,91.38L28.14,91.38z%20M23.25,68.84C14.98,70.72,7.71,74.8,3.63,92.75L0,106.64h19.67V89.45%20c0-2.11,1.72-3.83,3.83-3.83h4.09C27.42,78.97,24.1,71.99,23.25,68.84L23.25,68.84z'/%3e%3c/g%3e%3c/svg%3e";
4236
+ function toAssignmentCourseNumber(value) {
4237
+ if (!Number.isFinite(value) || value <= 0) {
4238
+ throw new Error(`Invalid assignment course number: ${String(value)}`);
4239
+ }
4240
+ return Math.floor(value);
4241
+ }
4242
+ function toAssignmentGenerationSeqNumber(value) {
4243
+ if (!Number.isFinite(value) || value < 0) {
4244
+ throw new Error(`Invalid assignment generation sequence number: ${String(value)}`);
4245
+ }
4246
+ return Math.floor(value);
4247
+ }
4248
+ function toCallerCourseNumber(value) {
4249
+ if (!Number.isFinite(value) || value <= 0) {
4250
+ throw new Error(`Invalid caller course number: ${String(value)}`);
4251
+ }
4252
+ return Math.floor(value);
4253
+ }
4254
+ function toCalleeCourseNumber(value) {
4255
+ if (!Number.isFinite(value) || value <= 0) {
4256
+ throw new Error(`Invalid callee course number: ${String(value)}`);
4257
+ }
4258
+ return Math.floor(value);
4259
+ }
4223
4260
  const {
4224
4261
  entries,
4225
4262
  setPrototypeOf,
@@ -97231,12 +97268,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
97231
97268
  registerLayoutLoaders([
97232
97269
  {
97233
97270
  name: "dagre",
97234
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-BcweuZHt.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97271
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-uV2ekQoj.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
97235
97272
  },
97236
97273
  ...[
97237
97274
  {
97238
97275
  name: "cose-bilkent",
97239
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-yM7S2atz.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97276
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-BCBalM7p.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
97240
97277
  }
97241
97278
  ]
97242
97279
  ]);
@@ -97676,7 +97713,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
97676
97713
  }, "detector");
97677
97714
  var loader = /* @__PURE__ */ __name(async () => {
97678
97715
  const { diagram: diagram2 } = await __vitePreload(async () => {
97679
- const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-B0WnCfAT.js");
97716
+ const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-BKFNexn4.js");
97680
97717
  return { diagram: diagram22 };
97681
97718
  }, true ? __vite__mapDeps([8,9]) : void 0);
97682
97719
  return { id, diagram: diagram2 };
@@ -97696,7 +97733,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
97696
97733
  }, "detector");
97697
97734
  var loader2 = /* @__PURE__ */ __name(async () => {
97698
97735
  const { diagram: diagram2 } = await __vitePreload(async () => {
97699
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
97736
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-C_60PNQR.js");
97700
97737
  return { diagram: diagram22 };
97701
97738
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97702
97739
  return { id: id2, diagram: diagram2 };
@@ -97722,7 +97759,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
97722
97759
  }, "detector");
97723
97760
  var loader3 = /* @__PURE__ */ __name(async () => {
97724
97761
  const { diagram: diagram2 } = await __vitePreload(async () => {
97725
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
97762
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-C_60PNQR.js");
97726
97763
  return { diagram: diagram22 };
97727
97764
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
97728
97765
  return { id: id3, diagram: diagram2 };
@@ -97739,7 +97776,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
97739
97776
  }, "detector");
97740
97777
  var loader4 = /* @__PURE__ */ __name(async () => {
97741
97778
  const { diagram: diagram2 } = await __vitePreload(async () => {
97742
- const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-DLKmthuw.js");
97779
+ const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-lBZ9DITn.js");
97743
97780
  return { diagram: diagram22 };
97744
97781
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
97745
97782
  return { id: id4, diagram: diagram2 };
@@ -97756,7 +97793,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
97756
97793
  }, "detector");
97757
97794
  var loader5 = /* @__PURE__ */ __name(async () => {
97758
97795
  const { diagram: diagram2 } = await __vitePreload(async () => {
97759
- const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-BnAPFBGR.js");
97796
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-BTj8orRe.js");
97760
97797
  return { diagram: diagram22 };
97761
97798
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
97762
97799
  return { id: id5, diagram: diagram2 };
@@ -97773,7 +97810,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
97773
97810
  }, "detector");
97774
97811
  var loader6 = /* @__PURE__ */ __name(async () => {
97775
97812
  const { diagram: diagram2 } = await __vitePreload(async () => {
97776
- const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-Debz-J-C.js");
97813
+ const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-Dvqq-VHJ.js");
97777
97814
  return { diagram: diagram22 };
97778
97815
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
97779
97816
  return { id: id6, diagram: diagram2 };
@@ -97790,7 +97827,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
97790
97827
  }, "detector");
97791
97828
  var loader7 = /* @__PURE__ */ __name(async () => {
97792
97829
  const { diagram: diagram2 } = await __vitePreload(async () => {
97793
- const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-CZ5hWoxV.js");
97830
+ const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-DlC6wsrv.js");
97794
97831
  return { diagram: diagram22 };
97795
97832
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
97796
97833
  return { id: id7, diagram: diagram2 };
@@ -97806,7 +97843,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
97806
97843
  }, "detector");
97807
97844
  var loader8 = /* @__PURE__ */ __name(async () => {
97808
97845
  const { diagram: diagram2 } = await __vitePreload(async () => {
97809
- const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-BQ2n0cOB.js");
97846
+ const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX-DJpRJ5ei.js");
97810
97847
  return { diagram: diagram22 };
97811
97848
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
97812
97849
  return { id: id8, diagram: diagram2 };
@@ -97822,7 +97859,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
97822
97859
  }, "detector");
97823
97860
  var loader9 = /* @__PURE__ */ __name(async () => {
97824
97861
  const { diagram: diagram2 } = await __vitePreload(async () => {
97825
- const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-BLg7_neg.js");
97862
+ const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-CMyIzTkY.js");
97826
97863
  return { diagram: diagram22 };
97827
97864
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
97828
97865
  return { id: id9, diagram: diagram2 };
@@ -97839,7 +97876,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
97839
97876
  }, "detector");
97840
97877
  var loader10 = /* @__PURE__ */ __name(async () => {
97841
97878
  const { diagram: diagram2 } = await __vitePreload(async () => {
97842
- const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-CmSQMxUh.js");
97879
+ const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-5TYN_q15.js");
97843
97880
  return { diagram: diagram22 };
97844
97881
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
97845
97882
  return { id: id10, diagram: diagram2 };
@@ -97856,7 +97893,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
97856
97893
  }, "detector");
97857
97894
  var loader11 = /* @__PURE__ */ __name(async () => {
97858
97895
  const { diagram: diagram2 } = await __vitePreload(async () => {
97859
- const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-DwkJt0zi.js");
97896
+ const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-D_yqVXGu.js");
97860
97897
  return { diagram: diagram22 };
97861
97898
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
97862
97899
  return { id: id11, diagram: diagram2 };
@@ -97873,7 +97910,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
97873
97910
  }, "detector");
97874
97911
  var loader12 = /* @__PURE__ */ __name(async () => {
97875
97912
  const { diagram: diagram2 } = await __vitePreload(async () => {
97876
- const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-KHU_eApU.js");
97913
+ const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-B7J3gWYN.js");
97877
97914
  return { diagram: diagram22 };
97878
97915
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
97879
97916
  return { id: id12, diagram: diagram2 };
@@ -97893,7 +97930,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
97893
97930
  }, "detector");
97894
97931
  var loader13 = /* @__PURE__ */ __name(async () => {
97895
97932
  const { diagram: diagram2 } = await __vitePreload(async () => {
97896
- const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-FCrnlCWC.js");
97933
+ const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-C-7R0QB6.js");
97897
97934
  return { diagram: diagram22 };
97898
97935
  }, true ? __vite__mapDeps([32,33,11,12,13]) : void 0);
97899
97936
  return { id: id13, diagram: diagram2 };
@@ -97913,7 +97950,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
97913
97950
  }, "detector");
97914
97951
  var loader14 = /* @__PURE__ */ __name(async () => {
97915
97952
  const { diagram: diagram2 } = await __vitePreload(async () => {
97916
- const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-FCrnlCWC.js");
97953
+ const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-C-7R0QB6.js");
97917
97954
  return { diagram: diagram22 };
97918
97955
  }, true ? __vite__mapDeps([34,33,11,12,13]) : void 0);
97919
97956
  return { id: id14, diagram: diagram2 };
@@ -97933,7 +97970,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
97933
97970
  }, "detector");
97934
97971
  var loader15 = /* @__PURE__ */ __name(async () => {
97935
97972
  const { diagram: diagram2 } = await __vitePreload(async () => {
97936
- const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-B3DBCxAL.js");
97973
+ const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-DwEYYCcu.js");
97937
97974
  return { diagram: diagram22 };
97938
97975
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
97939
97976
  return { id: id15, diagram: diagram2 };
@@ -97956,7 +97993,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
97956
97993
  }, "detector");
97957
97994
  var loader16 = /* @__PURE__ */ __name(async () => {
97958
97995
  const { diagram: diagram2 } = await __vitePreload(async () => {
97959
- const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-C-uIk7gh.js");
97996
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3-D4LOOQV5.js");
97960
97997
  return { diagram: diagram22 };
97961
97998
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
97962
97999
  return { id: id16, diagram: diagram2 };
@@ -97973,7 +98010,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
97973
98010
  }, "detector");
97974
98011
  var loader17 = /* @__PURE__ */ __name(async () => {
97975
98012
  const { diagram: diagram2 } = await __vitePreload(async () => {
97976
- const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-CKN3oSxk.js");
98013
+ const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-Dg_RgtQX.js");
97977
98014
  return { diagram: diagram22 };
97978
98015
  }, true ? __vite__mapDeps([38,9,11,26]) : void 0);
97979
98016
  return { id: id17, diagram: diagram2 };
@@ -98043,7 +98080,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
98043
98080
  }, "detector");
98044
98081
  var loader18 = /* @__PURE__ */ __name(async () => {
98045
98082
  const { diagram: diagram2 } = await __vitePreload(async () => {
98046
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-BsBhWukh.js");
98083
+ const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-C_60PNQR.js");
98047
98084
  return { diagram: diagram22 };
98048
98085
  }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
98049
98086
  return { id: id18, diagram: diagram2 };
@@ -98060,7 +98097,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
98060
98097
  }, "detector");
98061
98098
  var loader19 = /* @__PURE__ */ __name(async () => {
98062
98099
  const { diagram: diagram2 } = await __vitePreload(async () => {
98063
- const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-SysEcQCC.js");
98100
+ const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-CyG-TJ_A.js");
98064
98101
  return { diagram: diagram22 };
98065
98102
  }, true ? __vite__mapDeps([39,26]) : void 0);
98066
98103
  return { id: id19, diagram: diagram2 };
@@ -98077,7 +98114,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
98077
98114
  }, "detector");
98078
98115
  var loader20 = /* @__PURE__ */ __name(async () => {
98079
98116
  const { diagram: diagram2 } = await __vitePreload(async () => {
98080
- const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-C_goMzjx.js");
98117
+ const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-WsAF5UNp.js");
98081
98118
  return { diagram: diagram22 };
98082
98119
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
98083
98120
  return { id: id20, diagram: diagram2 };
@@ -98094,7 +98131,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
98094
98131
  }, "detector");
98095
98132
  var loader21 = /* @__PURE__ */ __name(async () => {
98096
98133
  const { diagram: diagram2 } = await __vitePreload(async () => {
98097
- const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-BQCMklfJ.js");
98134
+ const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-DuGS3lId.js");
98098
98135
  return { diagram: diagram22 };
98099
98136
  }, true ? __vite__mapDeps([41,11]) : void 0);
98100
98137
  return { id: id21, diagram: diagram2 };
@@ -98111,7 +98148,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
98111
98148
  }, "detector");
98112
98149
  var loader22 = /* @__PURE__ */ __name(async () => {
98113
98150
  const { diagram: diagram2 } = await __vitePreload(async () => {
98114
- const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DmxmatUB.js");
98151
+ const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-D4-cF724.js");
98115
98152
  return { diagram: diagram22 };
98116
98153
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
98117
98154
  return { id: id22, diagram: diagram2 };
@@ -98128,7 +98165,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
98128
98165
  }, "detector");
98129
98166
  var loader23 = /* @__PURE__ */ __name(async () => {
98130
98167
  const { diagram: diagram2 } = await __vitePreload(async () => {
98131
- const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-pB6N6Tq_.js");
98168
+ const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-Di-YN5cd.js");
98132
98169
  return { diagram: diagram22 };
98133
98170
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
98134
98171
  return { id: id23, diagram: diagram2 };
@@ -98144,7 +98181,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
98144
98181
  }, "detector");
98145
98182
  var loader24 = /* @__PURE__ */ __name(async () => {
98146
98183
  const { diagram: diagram2 } = await __vitePreload(async () => {
98147
- const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-BVbuejJn.js");
98184
+ const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-BThSELUH.js");
98148
98185
  return { diagram: diagram22 };
98149
98186
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
98150
98187
  return { id: id24, diagram: diagram2 };
@@ -98160,7 +98197,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
98160
98197
  }, "detector");
98161
98198
  var loader25 = /* @__PURE__ */ __name(async () => {
98162
98199
  const { diagram: diagram2 } = await __vitePreload(async () => {
98163
- const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-pHVz60D0.js");
98200
+ const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-wvs0G30c.js");
98164
98201
  return { diagram: diagram22 };
98165
98202
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
98166
98203
  return { id: id25, diagram: diagram2 };
@@ -98177,7 +98214,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
98177
98214
  }, "detector");
98178
98215
  var loader26 = /* @__PURE__ */ __name(async () => {
98179
98216
  const { diagram: diagram2 } = await __vitePreload(async () => {
98180
- const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-DJQfSJUH.js");
98217
+ const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-Cxf4pmYG.js");
98181
98218
  return { diagram: diagram22 };
98182
98219
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
98183
98220
  return { id: id26, diagram: diagram2 };
@@ -98194,7 +98231,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
98194
98231
  }, "detector");
98195
98232
  var loader27 = /* @__PURE__ */ __name(async () => {
98196
98233
  const { diagram: diagram2 } = await __vitePreload(async () => {
98197
- const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-D4-QwLW1.js");
98234
+ const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-D-ZMog1-.js");
98198
98235
  return { diagram: diagram22 };
98199
98236
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
98200
98237
  return { id: id27, diagram: diagram2 };
@@ -99433,6 +99470,40 @@ class DomindsMarkdownSection extends HTMLElement {
99433
99470
  if (!customElements.get("dominds-markdown-section")) {
99434
99471
  customElements.define("dominds-markdown-section", DomindsMarkdownSection);
99435
99472
  }
99473
+ function isObjectRecord$1(value) {
99474
+ return typeof value === "object" && value !== null;
99475
+ }
99476
+ function parsePositiveIntField(value) {
99477
+ const parsed = typeof value === "number" ? value : typeof value === "string" ? Number.parseInt(value, 10) : Number.NaN;
99478
+ if (!Number.isFinite(parsed) || parsed <= 0) return null;
99479
+ return Math.floor(parsed);
99480
+ }
99481
+ function readScrollToCallIdDetail(value) {
99482
+ if (!isObjectRecord$1(value)) return null;
99483
+ const course = parsePositiveIntField(value["course"]);
99484
+ const callId = typeof value["callId"] === "string" ? value["callId"].trim() : "";
99485
+ if (course === null || callId === "") return null;
99486
+ return { course, callId };
99487
+ }
99488
+ function readScrollToGenseqDetail(value) {
99489
+ if (!isObjectRecord$1(value)) return null;
99490
+ const course = parsePositiveIntField(value["course"]);
99491
+ const genseq = parsePositiveIntField(value["genseq"]);
99492
+ if (course === null || genseq === null) return null;
99493
+ return { course, genseq };
99494
+ }
99495
+ function readScrollToCallSiteDetail(value) {
99496
+ if (!isObjectRecord$1(value)) return null;
99497
+ const course = parsePositiveIntField(value["course"]);
99498
+ if (course === null) return null;
99499
+ const callId = typeof value["callId"] === "string" ? value["callId"].trim() : "";
99500
+ if (callId !== "") {
99501
+ return { course, callId };
99502
+ }
99503
+ const messageIndex = parsePositiveIntField(value["messageIndex"]);
99504
+ if (messageIndex === null) return null;
99505
+ return { course, messageIndex };
99506
+ }
99436
99507
  const CALLING_CONTENT_INITIAL_MAX_HEIGHT_PX = 120;
99437
99508
  const CALLING_EXPAND_STEP_VIEWPORT_RATIO = 1 / 3;
99438
99509
  const AUTO_SCROLL_FOLLOW_THRESHOLD_PX = 32;
@@ -99477,55 +99548,40 @@ class DomindsDialogContainer extends HTMLElement {
99477
99548
  this.teamConfiguration = null;
99478
99549
  this.onScrollToCallSite = (event) => {
99479
99550
  const ce2 = event;
99480
- const detail = ce2.detail;
99481
- if (!detail || typeof detail !== "object") return;
99482
- const d2 = detail;
99483
- const courseRaw = d2["course"];
99484
- const course = typeof courseRaw === "number" ? courseRaw : typeof courseRaw === "string" ? Number.parseInt(courseRaw, 10) : Number.NaN;
99485
- if (!Number.isFinite(course)) return;
99486
- const callIdRaw = d2["callId"];
99487
- const callId = typeof callIdRaw === "string" ? callIdRaw.trim() : "";
99488
- if (callId !== "") {
99489
- this.pendingScrollRequest = { kind: "by_call_id", course: Math.floor(course), callId };
99551
+ const detail = readScrollToCallSiteDetail(ce2.detail);
99552
+ if (!detail) return;
99553
+ if (detail.callId !== void 0) {
99554
+ this.pendingScrollRequest = {
99555
+ kind: "by_call_id",
99556
+ course: detail.course,
99557
+ callId: detail.callId
99558
+ };
99490
99559
  this.maybeApplyPendingScrollRequest();
99491
99560
  return;
99492
99561
  }
99493
- const messageIndexRaw = d2["messageIndex"];
99494
- const messageIndex = typeof messageIndexRaw === "number" ? messageIndexRaw : typeof messageIndexRaw === "string" ? Number.parseInt(messageIndexRaw, 10) : Number.NaN;
99495
- if (!Number.isFinite(messageIndex)) return;
99496
99562
  this.pendingScrollRequest = {
99497
99563
  kind: "by_message_index",
99498
- course: Math.floor(course),
99499
- messageIndex: Math.floor(messageIndex)
99564
+ course: detail.course,
99565
+ messageIndex: detail.messageIndex
99500
99566
  };
99501
99567
  this.maybeApplyPendingScrollRequest();
99502
99568
  };
99503
99569
  this.onScrollToCallId = (event) => {
99504
99570
  const ce2 = event;
99505
- const detail = ce2.detail;
99506
- if (!detail || typeof detail !== "object") return;
99507
- const d2 = detail;
99508
- const courseRaw = d2["course"];
99509
- const course = typeof courseRaw === "number" ? courseRaw : typeof courseRaw === "string" ? Number.parseInt(courseRaw, 10) : Number.NaN;
99510
- if (!Number.isFinite(course)) return;
99511
- const callIdRaw = d2["callId"];
99512
- const callId = typeof callIdRaw === "string" ? callIdRaw.trim() : "";
99513
- if (callId === "") return;
99514
- this.pendingScrollRequest = { kind: "by_call_id", course: Math.floor(course), callId };
99571
+ const detail = readScrollToCallIdDetail(ce2.detail);
99572
+ if (!detail) return;
99573
+ this.pendingScrollRequest = {
99574
+ kind: "by_call_id",
99575
+ course: detail.course,
99576
+ callId: detail.callId
99577
+ };
99515
99578
  this.maybeApplyPendingScrollRequest();
99516
99579
  };
99517
99580
  this.onScrollToGenSeq = (event) => {
99518
99581
  const ce2 = event;
99519
- const detail = ce2.detail;
99520
- if (!detail || typeof detail !== "object") return;
99521
- const d2 = detail;
99522
- const courseRaw = d2["course"];
99523
- const course = typeof courseRaw === "number" ? courseRaw : typeof courseRaw === "string" ? Number.parseInt(courseRaw, 10) : Number.NaN;
99524
- if (!Number.isFinite(course)) return;
99525
- const genseqRaw = d2["genseq"];
99526
- const genseq = typeof genseqRaw === "number" ? genseqRaw : typeof genseqRaw === "string" ? Number.parseInt(genseqRaw, 10) : Number.NaN;
99527
- if (!Number.isFinite(genseq)) return;
99528
- this.pendingScrollRequest = { kind: "by_genseq", course: Math.floor(course), genseq };
99582
+ const detail = readScrollToGenseqDetail(ce2.detail);
99583
+ if (!detail) return;
99584
+ this.pendingScrollRequest = { kind: "by_genseq", course: detail.course, genseq: detail.genseq };
99529
99585
  this.maybeApplyPendingScrollRequest();
99530
99586
  };
99531
99587
  this.attachShadow({ mode: "open" });
@@ -99655,10 +99711,10 @@ class DomindsDialogContainer extends HTMLElement {
99655
99711
  );
99656
99712
  if (!Number.isFinite(assignmentCourseRaw) || assignmentCourseRaw <= 0) return;
99657
99713
  if (!Number.isFinite(assignmentGenseqRaw) || assignmentGenseqRaw <= 0) return;
99658
- this.navigateToGenerationBubbleInApp(
99659
- Math.floor(assignmentCourseRaw),
99660
- Math.floor(assignmentGenseqRaw)
99661
- );
99714
+ this.navigateToGenerationBubbleInApp({
99715
+ course: toAssignmentCourseNumber(assignmentCourseRaw),
99716
+ genseq: toAssignmentGenerationSeqNumber(assignmentGenseqRaw)
99717
+ });
99662
99718
  return;
99663
99719
  }
99664
99720
  const requesterCallsiteBtn = target.closest(
@@ -99679,7 +99735,7 @@ class DomindsDialogContainer extends HTMLElement {
99679
99735
  if (!Number.isFinite(callerCourseRaw) || callerCourseRaw <= 0) return;
99680
99736
  this.openCallSiteDeepLinkInNewTab(callId, {
99681
99737
  selfId: callerDialogId,
99682
- course: Math.floor(callerCourseRaw)
99738
+ course: toCallerCourseNumber(callerCourseRaw)
99683
99739
  });
99684
99740
  return;
99685
99741
  }
@@ -99705,6 +99761,32 @@ class DomindsDialogContainer extends HTMLElement {
99705
99761
  await this.copyGenerationBubbleDeepLinkToClipboard(seq2);
99706
99762
  return;
99707
99763
  }
99764
+ const forkBtn = target.closest(".bubble-fork-btn");
99765
+ if (forkBtn) {
99766
+ e2.preventDefault();
99767
+ e2.stopPropagation();
99768
+ const bubble = forkBtn.closest(".generation-bubble");
99769
+ const dialog = this.currentDialog;
99770
+ if (!bubble || !dialog) return;
99771
+ const courseRaw = Number.parseInt(bubble.getAttribute("data-course") ?? "", 10);
99772
+ const seqRaw = Number.parseInt(bubble.getAttribute("data-seq") ?? "", 10);
99773
+ if (!Number.isFinite(courseRaw) || courseRaw <= 0) return;
99774
+ if (!Number.isFinite(seqRaw) || seqRaw <= 0) return;
99775
+ this.dispatchEvent(
99776
+ new CustomEvent("fork-dialog-request", {
99777
+ detail: {
99778
+ rootId: dialog.rootId,
99779
+ selfId: dialog.selfId,
99780
+ status: dialog.status ?? "running",
99781
+ course: Math.floor(courseRaw),
99782
+ genseq: Math.floor(seqRaw)
99783
+ },
99784
+ bubbles: true,
99785
+ composed: true
99786
+ })
99787
+ );
99788
+ return;
99789
+ }
99708
99790
  const btn = target.closest(".codeblock-action");
99709
99791
  if (btn) {
99710
99792
  const section = btn.closest(".codeblock-section");
@@ -100361,6 +100443,9 @@ class DomindsDialogContainer extends HTMLElement {
100361
100443
  timestamp2,
100362
100444
  queuedMsgId
100363
100445
  );
100446
+ if (typeof this.currentCourse === "number") {
100447
+ bubble2.setAttribute("data-course", String(this.currentCourse));
100448
+ }
100364
100449
  applyPendingCallAnchor(bubble2);
100365
100450
  this.generationBubble = bubble2;
100366
100451
  this.startAutoScrollObservation(bubble2);
@@ -100373,6 +100458,9 @@ class DomindsDialogContainer extends HTMLElement {
100373
100458
  existingBubble.classList.add("generating");
100374
100459
  existingBubble.setAttribute("data-finalized", "false");
100375
100460
  this.setBubbleTimestamp(existingBubble, timestamp2);
100461
+ if (typeof this.currentCourse === "number") {
100462
+ existingBubble.setAttribute("data-course", String(this.currentCourse));
100463
+ }
100376
100464
  this.activeGenSeq = seq2;
100377
100465
  applyPendingCallAnchor(existingBubble);
100378
100466
  this.startAutoScrollObservation(existingBubble);
@@ -100384,6 +100472,9 @@ class DomindsDialogContainer extends HTMLElement {
100384
100472
  this.activeGenSeq = seq2;
100385
100473
  const container = this.shadowRoot?.querySelector(".messages");
100386
100474
  const bubble = this.createGenerationBubble(timestamp2);
100475
+ if (typeof this.currentCourse === "number") {
100476
+ bubble.setAttribute("data-course", String(this.currentCourse));
100477
+ }
100387
100478
  bubble.setAttribute("data-seq", String(seq2));
100388
100479
  applyPendingCallAnchor(bubble);
100389
100480
  bubble.classList.add("generating");
@@ -100499,6 +100590,9 @@ class DomindsDialogContainer extends HTMLElement {
100499
100590
  const queuedContentEl = queuedBubble.querySelector(".user-message");
100500
100591
  const queuedRawContent = queuedContentEl?.textContent ?? "";
100501
100592
  const bubble = this.createGenerationBubble(timestamp2);
100593
+ if (typeof this.currentCourse === "number") {
100594
+ bubble.setAttribute("data-course", String(this.currentCourse));
100595
+ }
100502
100596
  bubble.setAttribute("data-seq", String(seq2));
100503
100597
  bubble.classList.add("generating");
100504
100598
  bubble.setAttribute("data-finalized", "false");
@@ -101376,10 +101470,10 @@ ${event.content}`;
101376
101470
  const anchorMeta = {
101377
101471
  callId: rawCallId,
101378
101472
  anchorRole: rawAnchorRole,
101379
- assignmentCourse,
101380
- assignmentGenseq,
101473
+ assignmentCourse: assignmentCourse !== void 0 ? toAssignmentCourseNumber(assignmentCourse) : void 0,
101474
+ assignmentGenseq: assignmentGenseq !== void 0 ? toAssignmentGenerationSeqNumber(assignmentGenseq) : void 0,
101381
101475
  callerDialogId,
101382
- callerCourse
101476
+ callerCourse: callerCourse !== void 0 ? toCallerCourseNumber(callerCourse) : void 0
101383
101477
  };
101384
101478
  const genseq = Math.floor(event.genseq);
101385
101479
  const messages = this.shadowRoot?.querySelector(".messages");
@@ -101462,7 +101556,7 @@ ${event.content}`;
101462
101556
  event.callName,
101463
101557
  event.timestamp,
101464
101558
  sessionSlug,
101465
- typeof event.calleeCourse === "number" && Number.isFinite(event.calleeCourse) ? Math.floor(event.calleeCourse) : void 0
101559
+ typeof event.calleeCourse === "number" && Number.isFinite(event.calleeCourse) ? toCalleeCourseNumber(event.calleeCourse) : void 0
101466
101560
  );
101467
101561
  const container = this.shadowRoot?.querySelector(".messages");
101468
101562
  if (container) {
@@ -101618,11 +101712,9 @@ ${event.content}`;
101618
101712
  return;
101619
101713
  }
101620
101714
  }
101621
- navigateToGenerationBubbleInApp(course, genseq) {
101622
- if (!Number.isFinite(course) || course <= 0) return;
101623
- if (!Number.isFinite(genseq) || genseq <= 0) return;
101624
- const normalizedCourse = Math.floor(course);
101625
- const normalizedGenseq = Math.floor(genseq);
101715
+ navigateToGenerationBubbleInApp(target) {
101716
+ const normalizedCourse = Math.floor(target.course);
101717
+ const normalizedGenseq = Math.floor(target.genseq);
101626
101718
  const dialog = this.currentDialog;
101627
101719
  if (!dialog) return;
101628
101720
  if (this.currentCourse === normalizedCourse) {
@@ -101770,6 +101862,11 @@ ${event.content}`;
101770
101862
  }
101771
101863
  return "Assistant";
101772
101864
  }
101865
+ canForkCurrentDialog() {
101866
+ const dialog = this.currentDialog;
101867
+ if (!dialog) return false;
101868
+ return dialog.selfId === dialog.rootId;
101869
+ }
101773
101870
  upsertGenerationBubbleAnchorActions(bubble) {
101774
101871
  const headerRight = bubble.querySelector(".bubble-header-right");
101775
101872
  if (!headerRight) {
@@ -101832,6 +101929,11 @@ ${event.content}`;
101832
101929
  const authorLabel = this.getAuthorLabel("assistant");
101833
101930
  const safeAuthorLabel = this.escapeHtml(authorLabel);
101834
101931
  const safeTimestamp = this.escapeHtml(timestamp2);
101932
+ const forkButton = this.canForkCurrentDialog() ? `
101933
+ <button type="button" class="bubble-fork-btn" aria-label="${this.escapeHtml(t2.forkDialogTitle)}" title="${this.escapeHtml(t2.forkDialogTitle)}">
101934
+ <span class="icon-mask dc-icon-fork" aria-hidden="true"></span>
101935
+ </button>
101936
+ ` : "";
101835
101937
  return `
101836
101938
  <div class="bubble-header">
101837
101939
  <div class="bubble-title">
@@ -101842,6 +101944,7 @@ ${event.content}`;
101842
101944
  </div>
101843
101945
  <div class="bubble-header-right">
101844
101946
  <div class="bubble-anchor-actions"></div>
101947
+ ${forkButton}
101845
101948
  <button type="button" class="bubble-share-link-btn" aria-label="${this.escapeHtml(t2.q4hCopyLinkTitle)}" title="${this.escapeHtml(t2.q4hCopyLinkTitle)}">
101846
101949
  <span class="icon-mask dc-icon-link" aria-hidden="true"></span>
101847
101950
  </button>
@@ -102656,7 +102759,8 @@ ${event.content}`;
102656
102759
  display: none;
102657
102760
  }
102658
102761
 
102659
- .bubble-share-link-btn {
102762
+ .bubble-share-link-btn,
102763
+ .bubble-fork-btn {
102660
102764
  width: 22px;
102661
102765
  height: 22px;
102662
102766
  padding: 0;
@@ -102671,13 +102775,15 @@ ${event.content}`;
102671
102775
  transition: all 0.15s ease;
102672
102776
  }
102673
102777
 
102674
- .bubble-share-link-btn:hover {
102778
+ .bubble-share-link-btn:hover,
102779
+ .bubble-fork-btn:hover {
102675
102780
  background: var(--dominds-hover, var(--color-bg-tertiary, #e2e8f0));
102676
102781
  border-color: var(--dominds-border, var(--color-border-primary, #e2e8f0));
102677
102782
  color: var(--dominds-fg, var(--color-fg-primary, #333));
102678
102783
  }
102679
102784
 
102680
- .bubble-share-link-btn:focus-visible {
102785
+ .bubble-share-link-btn:focus-visible,
102786
+ .bubble-fork-btn:focus-visible {
102681
102787
  outline: 2px solid color-mix(in srgb, var(--dominds-primary, #007acc) 55%, transparent);
102682
102788
  outline-offset: 2px;
102683
102789
  }
@@ -102796,6 +102902,7 @@ ${event.content}`;
102796
102902
  }
102797
102903
 
102798
102904
  .bubble-share-link-btn .icon-mask,
102905
+ .bubble-fork-btn .icon-mask,
102799
102906
  .bubble-anchor-assignment-btn .icon-mask,
102800
102907
  .bubble-anchor-caller-callsite-btn .icon-mask,
102801
102908
  .callsite-icon-btn .icon-mask {
@@ -103329,6 +103436,10 @@ ${event.content}`;
103329
103436
  --icon-mask: ${ICON_MASK_URLS.copy};
103330
103437
  }
103331
103438
 
103439
+ .dc-icon-fork {
103440
+ --icon-mask: ${ICON_MASK_URLS.fork};
103441
+ }
103442
+
103332
103443
  .dc-icon-check-circle {
103333
103444
  --icon-mask: ${ICON_MASK_URLS.checkCircle};
103334
103445
  }
@@ -110927,6 +111038,68 @@ let RunningDialogList = _RunningDialogList;
110927
111038
  if (!customElements.get("running-dialog-list")) {
110928
111039
  customElements.define("running-dialog-list", RunningDialogList);
110929
111040
  }
111041
+ function isObjectRecord(value) {
111042
+ return typeof value === "object" && value !== null;
111043
+ }
111044
+ function readDialogDeepLinkEventDetail(value) {
111045
+ if (!isObjectRecord(value)) return null;
111046
+ const rootId = typeof value["rootId"] === "string" ? value["rootId"].trim() : "";
111047
+ if (rootId === "") return null;
111048
+ const selfRaw = typeof value["selfId"] === "string" ? value["selfId"].trim() : "";
111049
+ return {
111050
+ rootId,
111051
+ selfId: selfRaw === "" ? rootId : selfRaw
111052
+ };
111053
+ }
111054
+ function readQ4HCallSiteNavigation(value) {
111055
+ if (!isObjectRecord(value)) return null;
111056
+ const questionId = typeof value["questionId"] === "string" ? value["questionId"].trim() : "";
111057
+ const dialogId = typeof value["dialogId"] === "string" ? value["dialogId"].trim() : "";
111058
+ const rootId = typeof value["rootId"] === "string" ? value["rootId"].trim() : "";
111059
+ const course = typeof value["course"] === "number" ? value["course"] : Number.NaN;
111060
+ const messageIndex = typeof value["messageIndex"] === "number" ? value["messageIndex"] : Number.NaN;
111061
+ const callIdRaw = typeof value["callId"] === "string" ? value["callId"].trim() : "";
111062
+ if (questionId === "" || dialogId === "" || rootId === "") return null;
111063
+ if (!Number.isFinite(course) || !Number.isFinite(messageIndex)) return null;
111064
+ return {
111065
+ questionId,
111066
+ dialogId,
111067
+ rootId,
111068
+ course: Math.floor(course),
111069
+ messageIndex: Math.floor(messageIndex),
111070
+ callId: callIdRaw === "" ? void 0 : callIdRaw
111071
+ };
111072
+ }
111073
+ function readNavigateGenseqEventDetail(value) {
111074
+ if (!isObjectRecord(value)) return null;
111075
+ const rootId = typeof value["rootId"] === "string" ? value["rootId"].trim() : "";
111076
+ const selfId = typeof value["selfId"] === "string" ? value["selfId"].trim() : "";
111077
+ const course = typeof value["course"] === "number" ? value["course"] : Number.NaN;
111078
+ const genseq = typeof value["genseq"] === "number" ? value["genseq"] : Number.NaN;
111079
+ if (rootId === "" || selfId === "") return null;
111080
+ if (!Number.isFinite(course) || !Number.isFinite(genseq)) return null;
111081
+ return {
111082
+ rootId,
111083
+ selfId,
111084
+ course: Math.floor(course),
111085
+ genseq: Math.floor(genseq)
111086
+ };
111087
+ }
111088
+ function readNavigateCallsiteEventDetail(value) {
111089
+ if (!isObjectRecord(value)) return null;
111090
+ const rootId = typeof value["rootId"] === "string" ? value["rootId"].trim() : "";
111091
+ const selfId = typeof value["selfId"] === "string" ? value["selfId"].trim() : "";
111092
+ const callId = typeof value["callId"] === "string" ? value["callId"].trim() : "";
111093
+ const course = typeof value["course"] === "number" ? value["course"] : Number.NaN;
111094
+ if (rootId === "" || selfId === "" || callId === "") return null;
111095
+ if (!Number.isFinite(course)) return null;
111096
+ return {
111097
+ rootId,
111098
+ selfId,
111099
+ course: Math.floor(course),
111100
+ callId
111101
+ };
111102
+ }
110930
111103
  const _DomindsApp = class _DomindsApp extends HTMLElement {
110931
111104
  constructor() {
110932
111105
  super();
@@ -115752,95 +115925,54 @@ ${content}`;
115752
115925
  }));
115753
115926
  this.shadowRoot.addEventListener("dialog-open-external", (event) => {
115754
115927
  const ce2 = event;
115755
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
115928
+ const detail = readDialogDeepLinkEventDetail(ce2.detail);
115756
115929
  if (!detail) return;
115757
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"].trim() : "";
115758
- const selfRaw = typeof detail["selfId"] === "string" ? detail["selfId"].trim() : "";
115759
- if (!rootId) return;
115760
- const selfId = selfRaw === "" ? rootId : selfRaw;
115761
- const url = this.buildDialogDeepLinkUrl(rootId, selfId);
115930
+ const url = this.buildDialogDeepLinkUrl(detail);
115762
115931
  const urlStr = url.toString();
115763
115932
  const w2 = window.open(urlStr, "_blank", "noopener,noreferrer");
115764
115933
  if (w2) w2.opener = null;
115765
115934
  });
115766
115935
  this.shadowRoot.addEventListener("dialog-share-link", (event) => {
115767
115936
  const ce2 = event;
115768
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
115937
+ const detail = readDialogDeepLinkEventDetail(ce2.detail);
115769
115938
  if (!detail) return;
115770
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"].trim() : "";
115771
- const selfRaw = typeof detail["selfId"] === "string" ? detail["selfId"].trim() : "";
115772
- if (!rootId) return;
115773
- const selfId = selfRaw === "" ? rootId : selfRaw;
115774
- const url = this.buildDialogDeepLinkUrl(rootId, selfId);
115939
+ const url = this.buildDialogDeepLinkUrl(detail);
115775
115940
  void this.copyLinkToClipboardWithToast(url.toString());
115776
115941
  });
115777
115942
  this.shadowRoot.addEventListener("q4h-navigate-call-site", (event) => {
115778
115943
  const ce2 = event;
115779
- const { questionId, dialogId, rootId, course, messageIndex, callId } = ce2.detail || {};
115780
- if (questionId && dialogId && rootId) {
115781
- this.navigateToQ4HCallSite(questionId, dialogId, rootId, course, messageIndex, callId);
115782
- }
115944
+ const detail = readQ4HCallSiteNavigation(ce2.detail);
115945
+ if (!detail) return;
115946
+ this.navigateToQ4HCallSite(detail);
115783
115947
  });
115784
115948
  this.shadowRoot.addEventListener("q4h-open-external", (event) => {
115785
115949
  const ce2 = event;
115786
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
115950
+ const detail = readQ4HCallSiteNavigation(ce2.detail);
115787
115951
  if (!detail) return;
115788
- const questionId = typeof detail["questionId"] === "string" ? detail["questionId"] : "";
115789
- const dialogId = typeof detail["dialogId"] === "string" ? detail["dialogId"] : "";
115790
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"] : "";
115791
- const course = typeof detail["course"] === "number" ? detail["course"] : Number.NaN;
115792
- const messageIndex = typeof detail["messageIndex"] === "number" ? detail["messageIndex"] : Number.NaN;
115793
- const callId = typeof detail["callId"] === "string" ? detail["callId"] : "";
115794
- if (!questionId || !dialogId || !rootId) return;
115795
- if (!Number.isFinite(course) || !Number.isFinite(messageIndex)) return;
115796
- const url = new URL(window.location.href);
115797
- url.searchParams.delete("rootId");
115798
- url.searchParams.delete("selfId");
115799
- url.searchParams.delete("course");
115800
- url.searchParams.delete("msg");
115801
- url.searchParams.delete("callId");
115802
- url.searchParams.delete("genseq");
115803
- url.searchParams.delete("qid");
115804
- url.hash = "";
115805
- url.pathname = `/dl/q4h`;
115806
- url.searchParams.set("qid", questionId);
115807
- url.searchParams.set("rootId", rootId);
115808
- url.searchParams.set("selfId", dialogId);
115809
- url.searchParams.set("course", String(Math.floor(course)));
115810
- url.searchParams.set("msg", String(Math.floor(messageIndex)));
115811
- if (callId.trim() !== "") url.searchParams.set("callId", callId.trim());
115952
+ const url = this.buildQ4HDeepLinkUrl({
115953
+ questionId: detail.questionId,
115954
+ rootId: detail.rootId,
115955
+ selfId: detail.dialogId,
115956
+ course: detail.course,
115957
+ messageIndex: detail.messageIndex,
115958
+ callId: detail.callId
115959
+ });
115812
115960
  const urlStr = url.toString();
115813
115961
  const w2 = window.open(urlStr, "_blank", "noopener,noreferrer");
115814
115962
  if (w2) w2.opener = null;
115815
115963
  });
115816
115964
  this.shadowRoot.addEventListener("q4h-share-link", (event) => {
115817
115965
  const ce2 = event;
115818
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
115966
+ const detail = readQ4HCallSiteNavigation(ce2.detail);
115819
115967
  if (!detail) return;
115820
- const questionId = typeof detail["questionId"] === "string" ? detail["questionId"] : "";
115821
- const dialogId = typeof detail["dialogId"] === "string" ? detail["dialogId"] : "";
115822
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"] : "";
115823
- const course = typeof detail["course"] === "number" ? detail["course"] : Number.NaN;
115824
- const messageIndex = typeof detail["messageIndex"] === "number" ? detail["messageIndex"] : Number.NaN;
115825
- const callId = typeof detail["callId"] === "string" ? detail["callId"] : "";
115826
- if (!questionId || !dialogId || !rootId) return;
115827
- if (!Number.isFinite(course) || !Number.isFinite(messageIndex)) return;
115828
- const url = new URL(window.location.href);
115829
- url.searchParams.delete("rootId");
115830
- url.searchParams.delete("selfId");
115831
- url.searchParams.delete("course");
115832
- url.searchParams.delete("msg");
115833
- url.searchParams.delete("callId");
115834
- url.searchParams.delete("genseq");
115835
- url.searchParams.delete("qid");
115836
- url.hash = "";
115837
- url.pathname = `/dl/q4h`;
115838
- url.searchParams.set("qid", questionId);
115839
- url.searchParams.set("rootId", rootId);
115840
- url.searchParams.set("selfId", dialogId);
115841
- url.searchParams.set("course", String(Math.floor(course)));
115842
- url.searchParams.set("msg", String(Math.floor(messageIndex)));
115843
- if (callId.trim() !== "") url.searchParams.set("callId", callId.trim());
115968
+ const url = this.buildQ4HDeepLinkUrl({
115969
+ questionId: detail.questionId,
115970
+ rootId: detail.rootId,
115971
+ selfId: detail.dialogId,
115972
+ course: detail.course,
115973
+ messageIndex: detail.messageIndex,
115974
+ callId: detail.callId
115975
+ });
115844
115976
  void this.copyLinkToClipboardWithToast(url.toString());
115845
115977
  });
115846
115978
  this.shadowRoot.addEventListener("q4h-select-question", (event) => {
@@ -115868,42 +116000,36 @@ ${content}`;
115868
116000
  });
115869
116001
  this.shadowRoot.addEventListener("navigate-genseq", (event) => {
115870
116002
  const ce2 = event;
115871
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
116003
+ const detail = readNavigateGenseqEventDetail(ce2.detail);
115872
116004
  if (!detail) return;
115873
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"] : "";
115874
- const selfId = typeof detail["selfId"] === "string" ? detail["selfId"] : "";
115875
- const course = typeof detail["course"] === "number" ? detail["course"] : Number.NaN;
115876
- const genseq = typeof detail["genseq"] === "number" ? detail["genseq"] : Number.NaN;
115877
- if (!rootId || !selfId) return;
115878
- if (!Number.isFinite(course) || !Number.isFinite(genseq)) return;
115879
116005
  this.pendingDeepLink = {
115880
116006
  kind: "genseq",
115881
- rootId: rootId.trim(),
115882
- selfId: selfId.trim(),
115883
- course: Math.floor(course),
115884
- genseq: Math.floor(genseq)
116007
+ rootId: detail.rootId,
116008
+ selfId: detail.selfId,
116009
+ course: detail.course,
116010
+ genseq: detail.genseq
115885
116011
  };
115886
116012
  void this.applyPendingDeepLink();
115887
116013
  });
115888
116014
  this.shadowRoot.addEventListener("navigate-callsite", (event) => {
115889
116015
  const ce2 = event;
115890
- const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
116016
+ const detail = readNavigateCallsiteEventDetail(ce2.detail);
115891
116017
  if (!detail) return;
115892
- const rootId = typeof detail["rootId"] === "string" ? detail["rootId"] : "";
115893
- const selfId = typeof detail["selfId"] === "string" ? detail["selfId"] : "";
115894
- const callId = typeof detail["callId"] === "string" ? detail["callId"] : "";
115895
- const course = typeof detail["course"] === "number" ? detail["course"] : Number.NaN;
115896
- if (!rootId || !selfId || !callId) return;
115897
- if (!Number.isFinite(course)) return;
115898
116018
  this.pendingDeepLink = {
115899
116019
  kind: "callsite",
115900
- rootId: rootId.trim(),
115901
- selfId: selfId.trim(),
115902
- course: Math.floor(course),
115903
- callId: callId.trim()
116020
+ rootId: detail.rootId,
116021
+ selfId: detail.selfId,
116022
+ course: detail.course,
116023
+ callId: detail.callId
115904
116024
  };
115905
116025
  void this.applyPendingDeepLink();
115906
116026
  });
116027
+ this.shadowRoot.addEventListener("fork-dialog-request", (event) => {
116028
+ const ce2 = event;
116029
+ const detail = ce2.detail && typeof ce2.detail === "object" ? ce2.detail : null;
116030
+ if (!detail) return;
116031
+ void this.handleForkDialogRequest(detail);
116032
+ });
115907
116033
  this.shadowRoot.addEventListener("keydown", (evt) => {
115908
116034
  if (!(evt instanceof KeyboardEvent)) return;
115909
116035
  if (evt.key !== "Enter" && evt.key !== " " && evt.key !== "Spacebar") return;
@@ -116741,7 +116867,7 @@ ${content}`;
116741
116867
  status: rootMatch.status
116742
116868
  };
116743
116869
  }
116744
- buildDialogDeepLinkUrl(rootId, selfId, course) {
116870
+ buildDialogDeepLinkUrl(params) {
116745
116871
  const url = new URL(window.location.href);
116746
116872
  url.searchParams.delete("rootId");
116747
116873
  url.searchParams.delete("selfId");
@@ -116752,29 +116878,38 @@ ${content}`;
116752
116878
  url.searchParams.delete("qid");
116753
116879
  url.hash = "";
116754
116880
  url.pathname = "/dl/dialog";
116755
- url.searchParams.set("rootId", rootId);
116756
- url.searchParams.set("selfId", selfId);
116757
- if (typeof course === "number") {
116758
- url.searchParams.set("course", String(Math.floor(course)));
116881
+ url.searchParams.set("rootId", params.rootId);
116882
+ url.searchParams.set("selfId", params.selfId);
116883
+ if (typeof params.course === "number") {
116884
+ url.searchParams.set("course", String(Math.floor(params.course)));
116759
116885
  }
116760
116886
  return url;
116761
116887
  }
116762
- buildCallsiteDeepLinkUrl(rootId, selfId, course, callId) {
116763
- const url = this.buildDialogDeepLinkUrl(rootId, selfId);
116888
+ buildCallsiteDeepLinkUrl(params) {
116889
+ const url = this.buildDialogDeepLinkUrl({
116890
+ rootId: params.rootId,
116891
+ selfId: params.selfId
116892
+ });
116764
116893
  url.pathname = "/dl/callsite";
116765
- url.searchParams.set("course", String(Math.floor(course)));
116766
- url.searchParams.set("callId", callId);
116894
+ url.searchParams.set("course", String(Math.floor(params.course)));
116895
+ url.searchParams.set("callId", params.callId);
116767
116896
  return url;
116768
116897
  }
116769
- buildGenseqDeepLinkUrl(rootId, selfId, course, genseq) {
116770
- const url = this.buildDialogDeepLinkUrl(rootId, selfId);
116898
+ buildGenseqDeepLinkUrl(params) {
116899
+ const url = this.buildDialogDeepLinkUrl({
116900
+ rootId: params.rootId,
116901
+ selfId: params.selfId
116902
+ });
116771
116903
  url.pathname = "/dl/genseq";
116772
- url.searchParams.set("course", String(Math.floor(course)));
116773
- url.searchParams.set("genseq", String(Math.floor(genseq)));
116904
+ url.searchParams.set("course", String(Math.floor(params.course)));
116905
+ url.searchParams.set("genseq", String(Math.floor(params.genseq)));
116774
116906
  return url;
116775
116907
  }
116776
116908
  buildQ4HDeepLinkUrl(params) {
116777
- const url = this.buildDialogDeepLinkUrl(params.rootId, params.selfId);
116909
+ const url = this.buildDialogDeepLinkUrl({
116910
+ rootId: params.rootId,
116911
+ selfId: params.selfId
116912
+ });
116778
116913
  url.pathname = "/dl/q4h";
116779
116914
  url.searchParams.set("qid", params.questionId);
116780
116915
  if (typeof params.course === "number") {
@@ -116797,7 +116932,7 @@ ${content}`;
116797
116932
  const rootId = dialog.rootId.trim();
116798
116933
  const selfId = dialog.selfId.trim();
116799
116934
  if (!rootId || !selfId) return;
116800
- const target = this.buildDialogDeepLinkUrl(rootId, selfId);
116935
+ const target = this.buildDialogDeepLinkUrl({ rootId, selfId });
116801
116936
  const current = new URL(window.location.href);
116802
116937
  if (current.pathname === target.pathname && current.search === target.search && current.hash === target.hash) {
116803
116938
  return;
@@ -116807,21 +116942,25 @@ ${content}`;
116807
116942
  syncAddressBarToDeepLink(intent) {
116808
116943
  let target = null;
116809
116944
  if (intent.kind === "dialog") {
116810
- target = this.buildDialogDeepLinkUrl(intent.rootId, intent.selfId, intent.course);
116945
+ target = this.buildDialogDeepLinkUrl({
116946
+ rootId: intent.rootId,
116947
+ selfId: intent.selfId,
116948
+ course: intent.course
116949
+ });
116811
116950
  } else if (intent.kind === "callsite") {
116812
- target = this.buildCallsiteDeepLinkUrl(
116813
- intent.rootId,
116814
- intent.selfId,
116815
- intent.course,
116816
- intent.callId
116817
- );
116951
+ target = this.buildCallsiteDeepLinkUrl({
116952
+ rootId: intent.rootId,
116953
+ selfId: intent.selfId,
116954
+ course: intent.course,
116955
+ callId: intent.callId
116956
+ });
116818
116957
  } else if (intent.kind === "genseq") {
116819
- target = this.buildGenseqDeepLinkUrl(
116820
- intent.rootId,
116821
- intent.selfId,
116822
- intent.course,
116823
- intent.genseq
116824
- );
116958
+ target = this.buildGenseqDeepLinkUrl({
116959
+ rootId: intent.rootId,
116960
+ selfId: intent.selfId,
116961
+ course: intent.course,
116962
+ genseq: intent.genseq
116963
+ });
116825
116964
  } else if (intent.kind === "q4h") {
116826
116965
  const rootId = intent.rootId?.trim() ?? "";
116827
116966
  const selfId = intent.selfId?.trim() ?? "";
@@ -117959,6 +118098,50 @@ ${content}`;
117959
118098
  async selectDialog(dialog) {
117960
118099
  await this.applyDialogSelection(dialog, { syncAddressBar: true, showLoadedToast: true });
117961
118100
  }
118101
+ async handleForkDialogRequest(detail) {
118102
+ const rootId = typeof detail["rootId"] === "string" ? detail["rootId"].trim() : "";
118103
+ const selfId = typeof detail["selfId"] === "string" ? detail["selfId"].trim() : "";
118104
+ const statusRaw = detail["status"];
118105
+ const course = typeof detail["course"] === "number" ? Math.floor(detail["course"]) : 0;
118106
+ const genseq = typeof detail["genseq"] === "number" ? Math.floor(detail["genseq"]) : 0;
118107
+ const status = statusRaw === "completed" || statusRaw === "archived" ? statusRaw : "running";
118108
+ const t2 = getUiStrings(this.uiLanguage);
118109
+ if (rootId === "" || selfId === "" || rootId !== selfId || course <= 0 || genseq <= 0) {
118110
+ this.showToast(t2.forkDialogFailedToast, "warning");
118111
+ return;
118112
+ }
118113
+ const api = getApiClient();
118114
+ const response = await api.forkDialog(rootId, { course, genseq, status });
118115
+ const payload = response.data;
118116
+ if (!response.success || !payload?.success || !payload.dialog || !payload.action) {
118117
+ this.showToast(payload?.error || response.error || t2.forkDialogFailedToast, "warning");
118118
+ return;
118119
+ }
118120
+ const forkedDialog = payload.dialog;
118121
+ await this.selectDialog(forkedDialog);
118122
+ const currentInput = this.q4hInput;
118123
+ if (!currentInput) {
118124
+ return;
118125
+ }
118126
+ if (payload.action.kind === "draft_user_text") {
118127
+ currentInput.setValue(payload.action.userText);
118128
+ currentInput.focusInput();
118129
+ return;
118130
+ }
118131
+ if (payload.action.kind === "restore_pending") {
118132
+ if (payload.action.pendingQ4H) {
118133
+ currentInput.focusInput();
118134
+ }
118135
+ return;
118136
+ }
118137
+ this.wsManager.sendRaw({
118138
+ type: "resume_dialog",
118139
+ dialog: {
118140
+ selfId: forkedDialog.selfId,
118141
+ rootId: forkedDialog.rootId
118142
+ }
118143
+ });
118144
+ }
117962
118145
  async restoreDialogFromDeepLink(dialog) {
117963
118146
  const selfId = dialog.selfId || dialog.rootId;
117964
118147
  const rootId = dialog.rootId || dialog.selfId;
@@ -119471,7 +119654,8 @@ ${t2.commandLabel}: ${commandStr}`;
119471
119654
  /**
119472
119655
  * Navigate to a Q4H call site in the conversation
119473
119656
  */
119474
- navigateToQ4HCallSite(questionId, dialogId, rootId, course, messageIndex, callId) {
119657
+ navigateToQ4HCallSite(args) {
119658
+ const { questionId, dialogId, rootId, course, messageIndex, callId } = args;
119475
119659
  if (this.currentDialog?.selfId !== dialogId) {
119476
119660
  const dialogInfo = this.findDisplayedDialogByAnyId(dialogId);
119477
119661
  if (dialogInfo) {
@@ -120809,7 +120993,8 @@ class DomindsSetup extends HTMLElement {
120809
120993
  const selected = (typeof stored === "string" && stored !== "" ? stored : void 0) ?? p2.defaultValue ?? p2.values[0] ?? "";
120810
120994
  const options = p2.values.map((v2) => {
120811
120995
  const sel = selected === v2 ? "selected" : "";
120812
- return `<option value="${escapeHtmlAttr(v2)}" ${sel}>${escapeHtml(v2)}</option>`;
120996
+ const label = p2.valueLabels?.[v2] ?? v2;
120997
+ return `<option value="${escapeHtmlAttr(v2)}" ${sel}>${escapeHtml(label)}</option>`;
120813
120998
  }).join("");
120814
120999
  return `
120815
121000
  <div class="param-row">
@@ -121435,4 +121620,4 @@ export {
121435
121620
  clear$2 as y,
121436
121621
  defaultConfig2 as z
121437
121622
  };
121438
- //# sourceMappingURL=index-B-8J28g7.js.map
121623
+ //# sourceMappingURL=index-DrTqAfFy.js.map