dominds 1.20.2 → 1.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +4 -4
  2. package/README.zh.md +2 -2
  3. package/dist/access-control.js +2 -2
  4. package/dist/cli/webui.d.ts +1 -1
  5. package/dist/cli/webui.js +29 -9
  6. package/dist/docs/OEC-philosophy.md +1 -1
  7. package/dist/docs/cli-usage.md +2 -1
  8. package/dist/docs/cli-usage.zh.md +6 -3
  9. package/dist/docs/context-health.md +2 -2
  10. package/dist/docs/context-health.zh.md +2 -2
  11. package/dist/docs/design.md +3 -3
  12. package/dist/docs/design.zh.md +3 -3
  13. package/dist/docs/dialog-system.md +18 -10
  14. package/dist/docs/dialog-system.zh.md +18 -10
  15. package/dist/docs/dominds-terminology.md +4 -4
  16. package/dist/docs/encapsulated-taskdoc.md +17 -10
  17. package/dist/docs/encapsulated-taskdoc.zh.md +18 -11
  18. package/dist/minds/load.js +15 -4
  19. package/dist/minds/minds-i18n.js +2 -2
  20. package/dist/minds/system-prompt-parts.js +11 -11
  21. package/dist/runtime/driver-messages.js +8 -4
  22. package/dist/server/api-routes.js +65 -0
  23. package/dist/server/port-selection.d.ts +19 -0
  24. package/dist/server/port-selection.js +57 -0
  25. package/dist/server/server-core.d.ts +2 -2
  26. package/dist/server/server-core.js +21 -7
  27. package/dist/server/static-server.js +1 -0
  28. package/dist/server.d.ts +3 -0
  29. package/dist/server.js +109 -44
  30. package/dist/team.d.ts +2 -3
  31. package/dist/team.js +17 -4
  32. package/dist/tools/builtins.js +5 -0
  33. package/dist/tools/ctrl.d.ts +11 -7
  34. package/dist/tools/ctrl.js +248 -34
  35. package/dist/tools/prompts/control/en/errors.md +2 -2
  36. package/dist/tools/prompts/control/en/index.md +1 -1
  37. package/dist/tools/prompts/control/en/principles.md +14 -12
  38. package/dist/tools/prompts/control/en/tools.md +40 -6
  39. package/dist/tools/prompts/control/zh/errors.md +2 -2
  40. package/dist/tools/prompts/control/zh/index.md +1 -1
  41. package/dist/tools/prompts/control/zh/principles.md +14 -12
  42. package/dist/tools/prompts/control/zh/tools.md +40 -6
  43. package/dist/tools/prompts/personal_memory/en/principles.md +1 -1
  44. package/dist/tools/prompts/personal_memory/zh/principles.md +1 -1
  45. package/dist/tools/prompts/team_memory/en/principles.md +1 -1
  46. package/dist/tools/prompts/team_memory/zh/principles.md +1 -1
  47. package/dist/tools/registry.d.ts +6 -0
  48. package/dist/tools/team_mgmt.js +5 -5
  49. package/dist/utils/task-package.d.ts +24 -1
  50. package/dist/utils/task-package.js +80 -5
  51. package/dist/utils/taskdoc-search-worker-client.d.ts +12 -0
  52. package/dist/utils/taskdoc-search-worker-client.js +320 -0
  53. package/dist/utils/taskdoc-search-worker.d.ts +1 -0
  54. package/dist/utils/taskdoc-search-worker.js +42 -0
  55. package/dist/utils/taskdoc-search.d.ts +28 -7
  56. package/dist/utils/taskdoc-search.js +62 -15
  57. package/dist/utils/taskdoc.js +60 -22
  58. package/package.json +3 -3
  59. package/webapp/dist/assets/{_basePickBy-B7M9Q0Fa.js → _basePickBy-BrC49DPW.js} +3 -3
  60. package/webapp/dist/assets/{_basePickBy-B7M9Q0Fa.js.map → _basePickBy-BrC49DPW.js.map} +1 -1
  61. package/webapp/dist/assets/{_baseUniq-DAeYoL6j.js → _baseUniq-C_Wcx-_S.js} +2 -2
  62. package/webapp/dist/assets/{_baseUniq-DAeYoL6j.js.map → _baseUniq-C_Wcx-_S.js.map} +1 -1
  63. package/webapp/dist/assets/{arc-Bh4nDbNR.js → arc-X5iIdpx0.js} +2 -2
  64. package/webapp/dist/assets/{arc-Bh4nDbNR.js.map → arc-X5iIdpx0.js.map} +1 -1
  65. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CxqmdsIm.js → architectureDiagram-2XIMDMQ5-DFfhMGkT.js} +7 -7
  66. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CxqmdsIm.js.map → architectureDiagram-2XIMDMQ5-DFfhMGkT.js.map} +1 -1
  67. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-CxIWLtpt.js → blockDiagram-WCTKOSBZ-BAt4BaxZ.js} +7 -7
  68. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-CxIWLtpt.js.map → blockDiagram-WCTKOSBZ-BAt4BaxZ.js.map} +1 -1
  69. package/webapp/dist/assets/{c4Diagram-IC4MRINW-1qErOIgG.js → c4Diagram-IC4MRINW-BYxKH5AA.js} +3 -3
  70. package/webapp/dist/assets/{c4Diagram-IC4MRINW-1qErOIgG.js.map → c4Diagram-IC4MRINW-BYxKH5AA.js.map} +1 -1
  71. package/webapp/dist/assets/{channel-DkgZHNUe.js → channel-CuYhL59H.js} +2 -2
  72. package/webapp/dist/assets/{channel-DkgZHNUe.js.map → channel-CuYhL59H.js.map} +1 -1
  73. package/webapp/dist/assets/{chunk-4BX2VUAB-BmdMbU9v.js → chunk-4BX2VUAB-Ch1PfLiD.js} +2 -2
  74. package/webapp/dist/assets/{chunk-4BX2VUAB-BmdMbU9v.js.map → chunk-4BX2VUAB-Ch1PfLiD.js.map} +1 -1
  75. package/webapp/dist/assets/{chunk-55IACEB6-D6LDTDBy.js → chunk-55IACEB6-B3rzakPd.js} +2 -2
  76. package/webapp/dist/assets/{chunk-55IACEB6-D6LDTDBy.js.map → chunk-55IACEB6-B3rzakPd.js.map} +1 -1
  77. package/webapp/dist/assets/{chunk-FMBD7UC4-C-BdCe4C.js → chunk-FMBD7UC4-CCZWJRJ5.js} +2 -2
  78. package/webapp/dist/assets/{chunk-FMBD7UC4-C-BdCe4C.js.map → chunk-FMBD7UC4-CCZWJRJ5.js.map} +1 -1
  79. package/webapp/dist/assets/{chunk-JSJVCQXG-WA_BLIm9.js → chunk-JSJVCQXG-Dqd_MOPD.js} +2 -2
  80. package/webapp/dist/assets/{chunk-JSJVCQXG-WA_BLIm9.js.map → chunk-JSJVCQXG-Dqd_MOPD.js.map} +1 -1
  81. package/webapp/dist/assets/{chunk-KX2RTZJC-CA7sDJO5.js → chunk-KX2RTZJC-DOpPZD_q.js} +2 -2
  82. package/webapp/dist/assets/{chunk-KX2RTZJC-CA7sDJO5.js.map → chunk-KX2RTZJC-DOpPZD_q.js.map} +1 -1
  83. package/webapp/dist/assets/{chunk-NQ4KR5QH-wlvxalE3.js → chunk-NQ4KR5QH-CUj2LNV0.js} +4 -4
  84. package/webapp/dist/assets/{chunk-NQ4KR5QH-wlvxalE3.js.map → chunk-NQ4KR5QH-CUj2LNV0.js.map} +1 -1
  85. package/webapp/dist/assets/{chunk-QZHKN3VN-Bo1VMcph.js → chunk-QZHKN3VN-DXeWDyzh.js} +2 -2
  86. package/webapp/dist/assets/{chunk-QZHKN3VN-Bo1VMcph.js.map → chunk-QZHKN3VN-DXeWDyzh.js.map} +1 -1
  87. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Pk44be.js → chunk-WL4C6EOR-CqTowzs6.js} +6 -6
  88. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Pk44be.js.map → chunk-WL4C6EOR-CqTowzs6.js.map} +1 -1
  89. package/webapp/dist/assets/{classDiagram-VBA2DB6C-BqKuyb49.js → classDiagram-VBA2DB6C-CvsxEN3D.js} +7 -7
  90. package/webapp/dist/assets/{classDiagram-VBA2DB6C-BqKuyb49.js.map → classDiagram-VBA2DB6C-CvsxEN3D.js.map} +1 -1
  91. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-BqKuyb49.js → classDiagram-v2-RAHNMMFH-CvsxEN3D.js} +7 -7
  92. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-BqKuyb49.js.map → classDiagram-v2-RAHNMMFH-CvsxEN3D.js.map} +1 -1
  93. package/webapp/dist/assets/{clone-BX5z8WVZ.js → clone-PGWIYNYc.js} +2 -2
  94. package/webapp/dist/assets/{clone-BX5z8WVZ.js.map → clone-PGWIYNYc.js.map} +1 -1
  95. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-B-s11SgN.js → cose-bilkent-S5V4N54A-Cf8RR_8j.js} +2 -2
  96. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-B-s11SgN.js.map → cose-bilkent-S5V4N54A-Cf8RR_8j.js.map} +1 -1
  97. package/webapp/dist/assets/{dagre-KLK3FWXG-DmQFV2qK.js → dagre-KLK3FWXG-C1yQDg-6.js} +7 -7
  98. package/webapp/dist/assets/{dagre-KLK3FWXG-DmQFV2qK.js.map → dagre-KLK3FWXG-C1yQDg-6.js.map} +1 -1
  99. package/webapp/dist/assets/{diagram-E7M64L7V-QRaBfST8.js → diagram-E7M64L7V-CrT4qBJh.js} +8 -8
  100. package/webapp/dist/assets/{diagram-E7M64L7V-QRaBfST8.js.map → diagram-E7M64L7V-CrT4qBJh.js.map} +1 -1
  101. package/webapp/dist/assets/{diagram-IFDJBPK2-lrWn1Obo.js → diagram-IFDJBPK2-B8WaCOcr.js} +7 -7
  102. package/webapp/dist/assets/{diagram-IFDJBPK2-lrWn1Obo.js.map → diagram-IFDJBPK2-B8WaCOcr.js.map} +1 -1
  103. package/webapp/dist/assets/{diagram-P4PSJMXO-sTU7Hh-Y.js → diagram-P4PSJMXO-BCZeNfu_.js} +7 -7
  104. package/webapp/dist/assets/{diagram-P4PSJMXO-sTU7Hh-Y.js.map → diagram-P4PSJMXO-BCZeNfu_.js.map} +1 -1
  105. package/webapp/dist/assets/{erDiagram-INFDFZHY-Cx6jc9Wq.js → erDiagram-INFDFZHY-BrYt0-mW.js} +5 -5
  106. package/webapp/dist/assets/{erDiagram-INFDFZHY-Cx6jc9Wq.js.map → erDiagram-INFDFZHY-BrYt0-mW.js.map} +1 -1
  107. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-DfGI49Dz.js → flowDiagram-PKNHOUZH-8lZ5d5y-.js} +7 -7
  108. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-DfGI49Dz.js.map → flowDiagram-PKNHOUZH-8lZ5d5y-.js.map} +1 -1
  109. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-nrcHWWaM.js → ganttDiagram-A5KZAMGK-CQ8pOLf-.js} +3 -3
  110. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-nrcHWWaM.js.map → ganttDiagram-A5KZAMGK-CQ8pOLf-.js.map} +1 -1
  111. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js → gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js} +8 -8
  112. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js.map → gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js.map} +1 -1
  113. package/webapp/dist/assets/{graph-R5G-y8tB.js → graph-CyMR1egR.js} +3 -3
  114. package/webapp/dist/assets/{graph-R5G-y8tB.js.map → graph-CyMR1egR.js.map} +1 -1
  115. package/webapp/dist/assets/{index--fy89xGh.js → index-B9TTmMv-.js} +550 -134
  116. package/webapp/dist/assets/index-B9TTmMv-.js.map +1 -0
  117. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-PIoZHr7s.js → infoDiagram-LFFYTUFH-CXR9XjRe.js} +6 -6
  118. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-PIoZHr7s.js.map → infoDiagram-LFFYTUFH-CXR9XjRe.js.map} +1 -1
  119. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oCM-LYk1.js → ishikawaDiagram-PHBUUO56-zwe-cqRW.js} +2 -2
  120. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oCM-LYk1.js.map → ishikawaDiagram-PHBUUO56-zwe-cqRW.js.map} +1 -1
  121. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-C2qidjQ5.js → journeyDiagram-4ABVD52K-BV-8X5hz.js} +5 -5
  122. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-C2qidjQ5.js.map → journeyDiagram-4ABVD52K-BV-8X5hz.js.map} +1 -1
  123. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-Du0TC8WS.js → kanban-definition-K7BYSVSG-E3W-szUv.js} +3 -3
  124. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-Du0TC8WS.js.map → kanban-definition-K7BYSVSG-E3W-szUv.js.map} +1 -1
  125. package/webapp/dist/assets/{layout-VmEo1OEB.js → layout-DvIjuV8I.js} +5 -5
  126. package/webapp/dist/assets/{layout-VmEo1OEB.js.map → layout-DvIjuV8I.js.map} +1 -1
  127. package/webapp/dist/assets/{linear-B662YHAc.js → linear-C-SIS0ki.js} +2 -2
  128. package/webapp/dist/assets/{linear-B662YHAc.js.map → linear-C-SIS0ki.js.map} +1 -1
  129. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-D7arZj95.js → mindmap-definition-YRQLILUH-wigkPJ2B.js} +4 -4
  130. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-D7arZj95.js.map → mindmap-definition-YRQLILUH-wigkPJ2B.js.map} +1 -1
  131. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DvjPP4PA.js → pieDiagram-SKSYHLDU-BKrYJ0LE.js} +8 -8
  132. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DvjPP4PA.js.map → pieDiagram-SKSYHLDU-BKrYJ0LE.js.map} +1 -1
  133. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-B_JUGMj_.js → quadrantDiagram-337W2JSQ-fjwd0gVY.js} +3 -3
  134. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-B_JUGMj_.js.map → quadrantDiagram-337W2JSQ-fjwd0gVY.js.map} +1 -1
  135. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DF0mpvE3.js → requirementDiagram-Z7DCOOCP-vgTMObSA.js} +4 -4
  136. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DF0mpvE3.js.map → requirementDiagram-Z7DCOOCP-vgTMObSA.js.map} +1 -1
  137. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-CoXlxv00.js → sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js} +2 -2
  138. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-CoXlxv00.js.map → sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js.map} +1 -1
  139. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DYqT5Pg7.js → sequenceDiagram-2WXFIKYE-DPhZYHhW.js} +4 -4
  140. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DYqT5Pg7.js.map → sequenceDiagram-2WXFIKYE-DPhZYHhW.js.map} +1 -1
  141. package/webapp/dist/assets/{stateDiagram-RAJIS63D-D9b1mN8-.js → stateDiagram-RAJIS63D-DLsw3SC8.js} +9 -9
  142. package/webapp/dist/assets/{stateDiagram-RAJIS63D-D9b1mN8-.js.map → stateDiagram-RAJIS63D-DLsw3SC8.js.map} +1 -1
  143. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DNzgudL_.js → stateDiagram-v2-FVOUBMTO-DqXB3dNs.js} +5 -5
  144. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DNzgudL_.js.map → stateDiagram-v2-FVOUBMTO-DqXB3dNs.js.map} +1 -1
  145. package/webapp/dist/assets/{timeline-definition-YZTLITO2-CkyKUY7A.js → timeline-definition-YZTLITO2-BFSqlDfo.js} +3 -3
  146. package/webapp/dist/assets/{timeline-definition-YZTLITO2-CkyKUY7A.js.map → timeline-definition-YZTLITO2-BFSqlDfo.js.map} +1 -1
  147. package/webapp/dist/assets/{treemap-KZPCXAKY-CZd09kF-.js → treemap-KZPCXAKY-sdfq6mHG.js} +5 -5
  148. package/webapp/dist/assets/{treemap-KZPCXAKY-CZd09kF-.js.map → treemap-KZPCXAKY-sdfq6mHG.js.map} +1 -1
  149. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BxVF5Olo.js → vennDiagram-LZ73GAT5-D7Cioksz.js} +2 -2
  150. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BxVF5Olo.js.map → vennDiagram-LZ73GAT5-D7Cioksz.js.map} +1 -1
  151. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BRwRloPc.js → xychartDiagram-JWTSCODW-No65aXqH.js} +3 -3
  152. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BRwRloPc.js.map → xychartDiagram-JWTSCODW-No65aXqH.js.map} +1 -1
  153. package/webapp/dist/index.html +1 -1
  154. package/webapp/dist/assets/index--fy89xGh.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-DmQFV2qK.js","assets/graph-R5G-y8tB.js","assets/_baseUniq-DAeYoL6j.js","assets/layout-VmEo1OEB.js","assets/_basePickBy-B7M9Q0Fa.js","assets/clone-BX5z8WVZ.js","assets/cose-bilkent-S5V4N54A-B-s11SgN.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-1qErOIgG.js","assets/chunk-JSJVCQXG-WA_BLIm9.js","assets/flowDiagram-PKNHOUZH-DfGI49Dz.js","assets/chunk-FMBD7UC4-C-BdCe4C.js","assets/chunk-55IACEB6-D6LDTDBy.js","assets/chunk-KX2RTZJC-CA7sDJO5.js","assets/channel-DkgZHNUe.js","assets/erDiagram-INFDFZHY-Cx6jc9Wq.js","assets/gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js","assets/chunk-4BX2VUAB-BmdMbU9v.js","assets/chunk-QZHKN3VN-Bo1VMcph.js","assets/treemap-KZPCXAKY-CZd09kF-.js","assets/ganttDiagram-A5KZAMGK-nrcHWWaM.js","assets/linear-B662YHAc.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-PIoZHr7s.js","assets/pieDiagram-SKSYHLDU-DvjPP4PA.js","assets/arc-Bh4nDbNR.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-B_JUGMj_.js","assets/xychartDiagram-JWTSCODW-BRwRloPc.js","assets/requirementDiagram-Z7DCOOCP-DF0mpvE3.js","assets/sequenceDiagram-2WXFIKYE-DYqT5Pg7.js","assets/classDiagram-VBA2DB6C-BqKuyb49.js","assets/chunk-WL4C6EOR-B-Pk44be.js","assets/classDiagram-v2-RAHNMMFH-BqKuyb49.js","assets/stateDiagram-RAJIS63D-D9b1mN8-.js","assets/chunk-NQ4KR5QH-wlvxalE3.js","assets/stateDiagram-v2-FVOUBMTO-DNzgudL_.js","assets/journeyDiagram-4ABVD52K-C2qidjQ5.js","assets/timeline-definition-YZTLITO2-CkyKUY7A.js","assets/mindmap-definition-YRQLILUH-D7arZj95.js","assets/kanban-definition-K7BYSVSG-Du0TC8WS.js","assets/sankeyDiagram-WA2Y5GQK-CoXlxv00.js","assets/diagram-P4PSJMXO-sTU7Hh-Y.js","assets/diagram-IFDJBPK2-lrWn1Obo.js","assets/blockDiagram-WCTKOSBZ-CxIWLtpt.js","assets/architectureDiagram-2XIMDMQ5-CxqmdsIm.js","assets/diagram-E7M64L7V-QRaBfST8.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-C1yQDg-6.js","assets/graph-CyMR1egR.js","assets/_baseUniq-C_Wcx-_S.js","assets/layout-DvIjuV8I.js","assets/_basePickBy-BrC49DPW.js","assets/clone-PGWIYNYc.js","assets/cose-bilkent-S5V4N54A-Cf8RR_8j.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-BYxKH5AA.js","assets/chunk-JSJVCQXG-Dqd_MOPD.js","assets/flowDiagram-PKNHOUZH-8lZ5d5y-.js","assets/chunk-FMBD7UC4-CCZWJRJ5.js","assets/chunk-55IACEB6-B3rzakPd.js","assets/chunk-KX2RTZJC-DOpPZD_q.js","assets/channel-CuYhL59H.js","assets/erDiagram-INFDFZHY-BrYt0-mW.js","assets/gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js","assets/chunk-4BX2VUAB-Ch1PfLiD.js","assets/chunk-QZHKN3VN-DXeWDyzh.js","assets/treemap-KZPCXAKY-sdfq6mHG.js","assets/ganttDiagram-A5KZAMGK-CQ8pOLf-.js","assets/linear-C-SIS0ki.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-CXR9XjRe.js","assets/pieDiagram-SKSYHLDU-BKrYJ0LE.js","assets/arc-X5iIdpx0.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-fjwd0gVY.js","assets/xychartDiagram-JWTSCODW-No65aXqH.js","assets/requirementDiagram-Z7DCOOCP-vgTMObSA.js","assets/sequenceDiagram-2WXFIKYE-DPhZYHhW.js","assets/classDiagram-VBA2DB6C-CvsxEN3D.js","assets/chunk-WL4C6EOR-CqTowzs6.js","assets/classDiagram-v2-RAHNMMFH-CvsxEN3D.js","assets/stateDiagram-RAJIS63D-DLsw3SC8.js","assets/chunk-NQ4KR5QH-CUj2LNV0.js","assets/stateDiagram-v2-FVOUBMTO-DqXB3dNs.js","assets/journeyDiagram-4ABVD52K-BV-8X5hz.js","assets/timeline-definition-YZTLITO2-BFSqlDfo.js","assets/mindmap-definition-YRQLILUH-wigkPJ2B.js","assets/kanban-definition-K7BYSVSG-E3W-szUv.js","assets/sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js","assets/diagram-P4PSJMXO-BCZeNfu_.js","assets/diagram-IFDJBPK2-B8WaCOcr.js","assets/blockDiagram-WCTKOSBZ-BAt4BaxZ.js","assets/architectureDiagram-2XIMDMQ5-DFfhMGkT.js","assets/diagram-E7M64L7V-CrT4qBJh.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);
@@ -302,6 +302,7 @@ function getUiStrings(language2) {
302
302
  taskDocumentPlaceholder: "输入以搜索差遣牒(留空则默认 socializing.tsk)…",
303
303
  taskDocumentHelp: "从已有文档中选择,或输入自定义路径。留空则默认 socializing.tsk。Tab 补全公共前缀;Enter 选择高亮项。",
304
304
  taskDocumentNoMatches: "没有匹配的差遣牒",
305
+ taskDocumentSuggestionLoadFailedPrefix: "加载差遣牒候选失败:",
305
306
  teammateLabel: "队友:",
306
307
  shadowMembersOption: "影子成员…",
307
308
  shadowMembersLabel: "影子成员:",
@@ -664,6 +665,7 @@ function getUiStrings(language2) {
664
665
  taskDocumentPlaceholder: "Type to search Taskdocs (leave blank for socializing.tsk)…",
665
666
  taskDocumentHelp: "Select from existing Taskdocs or enter a custom path. Leave blank to use socializing.tsk. Tab completes common prefix; Enter selects highlighted item.",
666
667
  taskDocumentNoMatches: "No matching Taskdocs found",
668
+ taskDocumentSuggestionLoadFailedPrefix: "Failed to load Taskdoc suggestions: ",
667
669
  teammateLabel: "Teammate:",
668
670
  shadowMembersOption: "Shadow Members…",
669
671
  shadowMembersLabel: "Shadow Members:",
@@ -1133,6 +1135,26 @@ Work language is not known yet (connect first).`;
1133
1135
  }
1134
1136
  }
1135
1137
  }
1138
+ function mergeAbortSignals(signals) {
1139
+ if (typeof AbortSignal.any === "function") return AbortSignal.any(signals);
1140
+ if (signals.some((signal) => signal.aborted)) {
1141
+ const controller2 = new AbortController();
1142
+ controller2.abort();
1143
+ return controller2.signal;
1144
+ }
1145
+ if (signals.length === 1) return signals[0];
1146
+ const controller = new AbortController();
1147
+ for (const signal of signals) {
1148
+ signal.addEventListener(
1149
+ "abort",
1150
+ () => {
1151
+ if (!controller.signal.aborted) controller.abort();
1152
+ },
1153
+ { once: true }
1154
+ );
1155
+ }
1156
+ return controller.signal;
1157
+ }
1136
1158
  function isApiErrorPayload(value) {
1137
1159
  if (typeof value !== "object" || value === null) return false;
1138
1160
  const record = value;
@@ -1195,7 +1217,7 @@ class ApiClient {
1195
1217
  * Make an HTTP request
1196
1218
  */
1197
1219
  async request(endpoint, options = {}) {
1198
- const { method = "GET", headers = {}, body, timeout: timeout2 = this.timeout } = options;
1220
+ const { method = "GET", headers = {}, body, timeout: timeout2 = this.timeout, signal } = options;
1199
1221
  const url = `${this.baseURL}${endpoint}`;
1200
1222
  const isFormData = typeof FormData !== "undefined" && body instanceof FormData;
1201
1223
  const mergedHeaders = {
@@ -1213,7 +1235,9 @@ class ApiClient {
1213
1235
  // The WebUI relies on backend-pushed events and fresh API reads for multi-tab convergence.
1214
1236
  // Avoid browser caching (can break run-control count freshness and other UX gates).
1215
1237
  cache: "no-store",
1216
- signal: AbortSignal.timeout(timeout2)
1238
+ signal: mergeAbortSignals(
1239
+ signal ? [signal, AbortSignal.timeout(timeout2)] : [AbortSignal.timeout(timeout2)]
1240
+ )
1217
1241
  };
1218
1242
  if (body && method !== "GET") {
1219
1243
  if (isFormData) {
@@ -1252,6 +1276,13 @@ class ApiClient {
1252
1276
  timeoutError.code = "TIMEOUT";
1253
1277
  throw timeoutError;
1254
1278
  }
1279
+ if (error2 instanceof Error && error2.name === "AbortError") {
1280
+ return {
1281
+ success: false,
1282
+ error: "Request aborted",
1283
+ timestamp: timeExports.formatUnifiedTimestamp(/* @__PURE__ */ new Date())
1284
+ };
1285
+ }
1255
1286
  const apiError = error2 instanceof Error ? error2 : new Error("Unknown error");
1256
1287
  console.error("API request failed", {
1257
1288
  method,
@@ -1588,6 +1619,12 @@ class ApiClient {
1588
1619
  async getTaskDocuments() {
1589
1620
  return this.request("/api/task-documents");
1590
1621
  }
1622
+ async searchTaskDocumentSuggestions(query, options) {
1623
+ const params = new URLSearchParams({ q: query });
1624
+ return this.request(`/api/task-documents/suggestions?${params.toString()}`, {
1625
+ signal: options?.signal
1626
+ });
1627
+ }
1591
1628
  async getToolAvailability(options) {
1592
1629
  const params = new URLSearchParams({ ts: String(Date.now()) });
1593
1630
  if (typeof options?.agentId === "string" && options.agentId.trim() !== "") {
@@ -2195,6 +2232,14 @@ function requireStorage() {
2195
2232
  }
2196
2233
  return storage;
2197
2234
  }
2235
+ var taskdoc = {};
2236
+ var hasRequiredTaskdoc;
2237
+ function requireTaskdoc() {
2238
+ if (hasRequiredTaskdoc) return taskdoc;
2239
+ hasRequiredTaskdoc = 1;
2240
+ Object.defineProperty(taskdoc, "__esModule", { value: true });
2241
+ return taskdoc;
2242
+ }
2198
2243
  var toolsRegistry = {};
2199
2244
  var hasRequiredToolsRegistry;
2200
2245
  function requireToolsRegistry() {
@@ -2260,6 +2305,7 @@ function requireTypes() {
2260
2305
  __exportStar(requireSetup(), exports$1);
2261
2306
  __exportStar(requireSnippets(), exports$1);
2262
2307
  __exportStar(requireStorage(), exports$1);
2308
+ __exportStar(requireTaskdoc(), exports$1);
2263
2309
  __exportStar(requireToolsRegistry(), exports$1);
2264
2310
  __exportStar(requireWire(), exports$1);
2265
2311
  })(types);
@@ -4452,9 +4498,6 @@ class CreateDialogFlowController {
4452
4498
  return;
4453
4499
  }
4454
4500
  const strings = () => getUiStrings(this.deps.getLanguage());
4455
- const stripTaskdocSuffixForMatch = (value) => {
4456
- return value.endsWith(".tsk") ? value.slice(0, -4) : value;
4457
- };
4458
4501
  let createInFlight = false;
4459
4502
  let selectedSuggestionIndex = -1;
4460
4503
  let currentSuggestions = [];
@@ -4471,14 +4514,14 @@ class CreateDialogFlowController {
4471
4514
  let primingBoundAgentId = "";
4472
4515
  let taskdocSuggestionTimer = null;
4473
4516
  let pendingTaskdocSuggestionQuery = null;
4517
+ let taskdocSuggestionSeq = 0;
4518
+ let taskdocSuggestionLoading = false;
4519
+ let activeTaskdocSuggestionRequestKey = null;
4520
+ let taskdocSuggestionAbortController = null;
4521
+ let taskdocSuggestionFailureNotified = false;
4474
4522
  const isRecord = (value) => {
4475
4523
  return typeof value === "object" && value !== null && !Array.isArray(value);
4476
4524
  };
4477
- const searchableTaskDocuments = this.deps.getTaskDocuments().map((doc) => ({
4478
- ...doc,
4479
- normalizedRelativePathForMatch: stripTaskdocSuffixForMatch(doc.relativePath.toLowerCase()),
4480
- normalizedNameForMatch: stripTaskdocSuffixForMatch(doc.name.toLowerCase())
4481
- }));
4482
4525
  const normalizePreference = (value) => {
4483
4526
  if (!isRecord(value)) return null;
4484
4527
  const scriptRefsRaw = value["scriptRefs"];
@@ -4807,13 +4850,23 @@ class CreateDialogFlowController {
4807
4850
  }
4808
4851
  };
4809
4852
  const hideSuggestions = () => {
4853
+ taskdocSuggestionSeq += 1;
4854
+ taskdocSuggestionLoading = false;
4855
+ activeTaskdocSuggestionRequestKey = null;
4856
+ taskdocSuggestionAbortController?.abort();
4857
+ taskdocSuggestionAbortController = null;
4810
4858
  suggestions.innerHTML = "";
4811
4859
  suggestions.style.display = "none";
4812
4860
  selectedSuggestionIndex = -1;
4861
+ currentSuggestions = [];
4813
4862
  };
4814
4863
  const hasVisibleSuggestions = () => {
4815
4864
  return suggestions.style.display !== "none" && suggestions.innerHTML.trim() !== "";
4816
4865
  };
4866
+ const normalizeTaskdocSuggestionRequestKey = (query) => {
4867
+ const normalized = query.trim().toLowerCase();
4868
+ return normalized.endsWith(".tsk") ? normalized.slice(0, -4) : normalized;
4869
+ };
4817
4870
  const closeModal = () => {
4818
4871
  if (createInFlight) return;
4819
4872
  this.close();
@@ -4941,51 +4994,66 @@ class CreateDialogFlowController {
4941
4994
  setSelectedPrimingScript(scriptRef);
4942
4995
  setPrimingMoreVisible(false);
4943
4996
  });
4944
- const updateSuggestions = (query) => {
4945
- const normalizedRaw = query.trim().toLowerCase();
4997
+ const renderNoTaskdocSuggestions = () => {
4998
+ const t2 = strings();
4999
+ suggestions.innerHTML = `<div class="no-suggestions">${htmlExports.escapeHtml(t2.taskDocumentNoMatches)}</div>`;
5000
+ suggestions.style.display = "block";
5001
+ selectedSuggestionIndex = -1;
5002
+ currentSuggestions = [];
5003
+ };
5004
+ const updateSuggestions = async (query) => {
5005
+ const normalizedRaw = query.trim();
5006
+ const requestSeq = taskdocSuggestionSeq + 1;
5007
+ taskdocSuggestionSeq = requestSeq;
4946
5008
  if (!normalizedRaw) {
4947
5009
  hideSuggestions();
4948
5010
  return;
4949
5011
  }
4950
- const normalized = stripTaskdocSuffixForMatch(normalizedRaw);
4951
- if (!normalized) {
4952
- hideSuggestions();
4953
- return;
4954
- }
4955
- currentSuggestions = searchableTaskDocuments.filter((doc) => {
4956
- return doc.normalizedRelativePathForMatch.includes(normalized) || doc.normalizedNameForMatch.includes(normalized);
4957
- }).map((doc) => ({
4958
- ...doc,
4959
- _score: (() => {
4960
- return this.calculateSortScore(
4961
- doc.normalizedNameForMatch.includes(normalized),
4962
- doc.normalizedRelativePathForMatch.includes(normalized),
4963
- doc.normalizedNameForMatch.startsWith(normalized),
4964
- doc.normalizedRelativePathForMatch.startsWith(normalized),
4965
- doc.normalizedNameForMatch === normalized
5012
+ const requestKey = normalizeTaskdocSuggestionRequestKey(normalizedRaw);
5013
+ activeTaskdocSuggestionRequestKey = requestKey;
5014
+ taskdocSuggestionLoading = true;
5015
+ taskdocSuggestionAbortController?.abort();
5016
+ const abortController = new AbortController();
5017
+ taskdocSuggestionAbortController = abortController;
5018
+ try {
5019
+ const result = await this.deps.searchTaskDocumentSuggestions(normalizedRaw, {
5020
+ signal: abortController.signal
5021
+ });
5022
+ if (requestSeq !== taskdocSuggestionSeq) return;
5023
+ if (result.requestKey !== activeTaskdocSuggestionRequestKey) {
5024
+ throw new Error(
5025
+ `Taskdoc suggestion request key mismatch: expected ${String(
5026
+ activeTaskdocSuggestionRequestKey
5027
+ )}, got ${result.requestKey}`
4966
5028
  );
4967
- })()
4968
- })).sort((a2, b2) => {
4969
- if (a2._score !== b2._score) return b2._score - a2._score;
4970
- if (a2.name.length !== b2.name.length) return a2.name.length - b2.name.length;
4971
- return a2.name.localeCompare(b2.name);
4972
- }).slice(0, 50).map(({ _score, normalizedRelativePathForMatch, normalizedNameForMatch, ...doc }) => doc);
4973
- if (currentSuggestions.length === 0) {
4974
- const t2 = strings();
4975
- suggestions.innerHTML = `<div class="no-suggestions">${htmlExports.escapeHtml(t2.taskDocumentNoMatches)}</div>`;
5029
+ }
5030
+ taskdocSuggestionLoading = false;
5031
+ taskdocSuggestionAbortController = null;
5032
+ taskdocSuggestionFailureNotified = false;
5033
+ currentSuggestions = result.suggestions;
5034
+ if (currentSuggestions.length === 0) {
5035
+ renderNoTaskdocSuggestions();
5036
+ return;
5037
+ }
5038
+ suggestions.innerHTML = result.html;
4976
5039
  suggestions.style.display = "block";
4977
5040
  selectedSuggestionIndex = -1;
5041
+ } catch (error2) {
5042
+ if (requestSeq !== taskdocSuggestionSeq) return;
5043
+ taskdocSuggestionLoading = false;
5044
+ taskdocSuggestionAbortController = null;
5045
+ currentSuggestions = [];
5046
+ suggestions.style.display = "none";
5047
+ suggestions.innerHTML = "";
5048
+ console.error("Failed to load Taskdoc suggestions:", error2);
5049
+ if (!taskdocSuggestionFailureNotified) {
5050
+ taskdocSuggestionFailureNotified = true;
5051
+ const t2 = strings();
5052
+ const reason = error2 instanceof Error ? error2.message : t2.unknownError;
5053
+ this.deps.onToast(`${t2.taskDocumentSuggestionLoadFailedPrefix}${reason}`, "warning");
5054
+ }
4978
5055
  return;
4979
5056
  }
4980
- suggestions.innerHTML = currentSuggestions.map((doc, index) => {
4981
- const showName = doc.name.trim() !== "" && doc.name !== doc.relativePath;
4982
- const nameHtml = showName ? `<div class="suggestion-name">${htmlExports.escapeHtml(doc.name)}</div>` : "";
4983
- return `<div class="suggestion ${index === selectedSuggestionIndex ? "selected" : ""}" data-index="${String(index)}"><div class="suggestion-path">${htmlExports.escapeHtml(
4984
- doc.relativePath
4985
- )}</div>${nameHtml}</div>`;
4986
- }).join("");
4987
- suggestions.style.display = "block";
4988
- selectedSuggestionIndex = -1;
4989
5057
  };
4990
5058
  const flushPendingTaskdocSuggestions = () => {
4991
5059
  clearTaskdocSuggestionTimer();
@@ -4994,7 +5062,7 @@ class CreateDialogFlowController {
4994
5062
  }
4995
5063
  const query = pendingTaskdocSuggestionQuery;
4996
5064
  pendingTaskdocSuggestionQuery = null;
4997
- updateSuggestions(query);
5065
+ void updateSuggestions(query);
4998
5066
  };
4999
5067
  const scheduleTaskdocSuggestions = (query) => {
5000
5068
  pendingTaskdocSuggestionQuery = query;
@@ -5023,6 +5091,15 @@ class CreateDialogFlowController {
5023
5091
  });
5024
5092
  taskInput.addEventListener("keydown", (e2) => {
5025
5093
  if (e2.key === "ArrowDown" || e2.key === "ArrowUp" || e2.key === "Tab" || e2.key === "Enter") {
5094
+ if (pendingTaskdocSuggestionQuery !== null) {
5095
+ e2.preventDefault();
5096
+ flushPendingTaskdocSuggestions();
5097
+ return;
5098
+ }
5099
+ if (taskdocSuggestionLoading) {
5100
+ e2.preventDefault();
5101
+ return;
5102
+ }
5026
5103
  flushPendingTaskdocSuggestions();
5027
5104
  }
5028
5105
  if (e2.key === "Escape") {
@@ -5171,6 +5248,9 @@ class CreateDialogFlowController {
5171
5248
  this.teardownModalInteractions = () => {
5172
5249
  clearTaskdocSuggestionTimer();
5173
5250
  pendingTaskdocSuggestionQuery = null;
5251
+ activeTaskdocSuggestionRequestKey = null;
5252
+ taskdocSuggestionAbortController?.abort();
5253
+ taskdocSuggestionAbortController = null;
5174
5254
  };
5175
5255
  }
5176
5256
  normalizeTaskDocPath(raw) {
@@ -5189,14 +5269,6 @@ class CreateDialogFlowController {
5189
5269
  if (typeof icon2 === "string" && icon2 !== "") return icon2;
5190
5270
  return "🛠";
5191
5271
  }
5192
- calculateSortScore(nameMatch, pathMatch, nameStartsWith, pathStartsWith, nameExactMatch) {
5193
- if (nameExactMatch) return 100;
5194
- if (nameStartsWith) return 90;
5195
- if (pathStartsWith) return 80;
5196
- if (nameMatch) return 70;
5197
- if (pathMatch) return 60;
5198
- return 0;
5199
- }
5200
5272
  calculateCommonPrefix(strings) {
5201
5273
  if (strings.length === 0) return "";
5202
5274
  if (strings.length === 1) return strings[0];
@@ -98568,12 +98640,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
98568
98640
  registerLayoutLoaders([
98569
98641
  {
98570
98642
  name: "dagre",
98571
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-DmQFV2qK.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98643
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-C1yQDg-6.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98572
98644
  },
98573
98645
  ...[
98574
98646
  {
98575
98647
  name: "cose-bilkent",
98576
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-B-s11SgN.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98648
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-Cf8RR_8j.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98577
98649
  }
98578
98650
  ]
98579
98651
  ]);
@@ -99013,7 +99085,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
99013
99085
  }, "detector");
99014
99086
  var loader = /* @__PURE__ */ __name(async () => {
99015
99087
  const { diagram: diagram2 } = await __vitePreload(async () => {
99016
- const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-1qErOIgG.js");
99088
+ const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-BYxKH5AA.js");
99017
99089
  return { diagram: diagram22 };
99018
99090
  }, true ? __vite__mapDeps([8,9]) : void 0);
99019
99091
  return { id: id$1, diagram: diagram2 };
@@ -99033,7 +99105,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
99033
99105
  }, "detector");
99034
99106
  var loader2 = /* @__PURE__ */ __name(async () => {
99035
99107
  const { diagram: diagram2 } = await __vitePreload(async () => {
99036
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DfGI49Dz.js");
99108
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-8lZ5d5y-.js");
99037
99109
  return { diagram: diagram22 };
99038
99110
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99039
99111
  return { id: id2, diagram: diagram2 };
@@ -99059,7 +99131,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
99059
99131
  }, "detector");
99060
99132
  var loader3 = /* @__PURE__ */ __name(async () => {
99061
99133
  const { diagram: diagram2 } = await __vitePreload(async () => {
99062
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DfGI49Dz.js");
99134
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-8lZ5d5y-.js");
99063
99135
  return { diagram: diagram22 };
99064
99136
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99065
99137
  return { id: id3, diagram: diagram2 };
@@ -99076,7 +99148,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
99076
99148
  }, "detector");
99077
99149
  var loader4 = /* @__PURE__ */ __name(async () => {
99078
99150
  const { diagram: diagram2 } = await __vitePreload(async () => {
99079
- const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-Cx6jc9Wq.js");
99151
+ const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-BrYt0-mW.js");
99080
99152
  return { diagram: diagram22 };
99081
99153
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
99082
99154
  return { id: id4, diagram: diagram2 };
@@ -99093,7 +99165,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
99093
99165
  }, "detector");
99094
99166
  var loader5 = /* @__PURE__ */ __name(async () => {
99095
99167
  const { diagram: diagram2 } = await __vitePreload(async () => {
99096
- const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js");
99168
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-aOTOe0HP.js");
99097
99169
  return { diagram: diagram22 };
99098
99170
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
99099
99171
  return { id: id5, diagram: diagram2 };
@@ -99110,7 +99182,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
99110
99182
  }, "detector");
99111
99183
  var loader6 = /* @__PURE__ */ __name(async () => {
99112
99184
  const { diagram: diagram2 } = await __vitePreload(async () => {
99113
- const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-nrcHWWaM.js");
99185
+ const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-CQ8pOLf-.js");
99114
99186
  return { diagram: diagram22 };
99115
99187
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
99116
99188
  return { id: id6, diagram: diagram2 };
@@ -99127,7 +99199,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
99127
99199
  }, "detector");
99128
99200
  var loader7 = /* @__PURE__ */ __name(async () => {
99129
99201
  const { diagram: diagram2 } = await __vitePreload(async () => {
99130
- const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-PIoZHr7s.js");
99202
+ const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-CXR9XjRe.js");
99131
99203
  return { diagram: diagram22 };
99132
99204
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
99133
99205
  return { id: id7, diagram: diagram2 };
@@ -99143,7 +99215,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
99143
99215
  }, "detector");
99144
99216
  var loader8 = /* @__PURE__ */ __name(async () => {
99145
99217
  const { diagram: diagram2 } = await __vitePreload(async () => {
99146
- const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-DvjPP4PA.js");
99218
+ const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-BKrYJ0LE.js");
99147
99219
  return { diagram: diagram22 };
99148
99220
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
99149
99221
  return { id: id8, diagram: diagram2 };
@@ -99159,7 +99231,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
99159
99231
  }, "detector");
99160
99232
  var loader9 = /* @__PURE__ */ __name(async () => {
99161
99233
  const { diagram: diagram2 } = await __vitePreload(async () => {
99162
- const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-B_JUGMj_.js");
99234
+ const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-fjwd0gVY.js");
99163
99235
  return { diagram: diagram22 };
99164
99236
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
99165
99237
  return { id: id9, diagram: diagram2 };
@@ -99176,7 +99248,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
99176
99248
  }, "detector");
99177
99249
  var loader10 = /* @__PURE__ */ __name(async () => {
99178
99250
  const { diagram: diagram2 } = await __vitePreload(async () => {
99179
- const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-BRwRloPc.js");
99251
+ const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-No65aXqH.js");
99180
99252
  return { diagram: diagram22 };
99181
99253
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
99182
99254
  return { id: id10, diagram: diagram2 };
@@ -99193,7 +99265,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
99193
99265
  }, "detector");
99194
99266
  var loader11 = /* @__PURE__ */ __name(async () => {
99195
99267
  const { diagram: diagram2 } = await __vitePreload(async () => {
99196
- const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-DF0mpvE3.js");
99268
+ const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-vgTMObSA.js");
99197
99269
  return { diagram: diagram22 };
99198
99270
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
99199
99271
  return { id: id11, diagram: diagram2 };
@@ -99210,7 +99282,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
99210
99282
  }, "detector");
99211
99283
  var loader12 = /* @__PURE__ */ __name(async () => {
99212
99284
  const { diagram: diagram2 } = await __vitePreload(async () => {
99213
- const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-DYqT5Pg7.js");
99285
+ const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-DPhZYHhW.js");
99214
99286
  return { diagram: diagram22 };
99215
99287
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
99216
99288
  return { id: id12, diagram: diagram2 };
@@ -99230,7 +99302,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
99230
99302
  }, "detector");
99231
99303
  var loader13 = /* @__PURE__ */ __name(async () => {
99232
99304
  const { diagram: diagram2 } = await __vitePreload(async () => {
99233
- const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-BqKuyb49.js");
99305
+ const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-CvsxEN3D.js");
99234
99306
  return { diagram: diagram22 };
99235
99307
  }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
99236
99308
  return { id: id13, diagram: diagram2 };
@@ -99250,7 +99322,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
99250
99322
  }, "detector");
99251
99323
  var loader14 = /* @__PURE__ */ __name(async () => {
99252
99324
  const { diagram: diagram2 } = await __vitePreload(async () => {
99253
- const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-BqKuyb49.js");
99325
+ const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-CvsxEN3D.js");
99254
99326
  return { diagram: diagram22 };
99255
99327
  }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
99256
99328
  return { id: id14, diagram: diagram2 };
@@ -99270,7 +99342,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
99270
99342
  }, "detector");
99271
99343
  var loader15 = /* @__PURE__ */ __name(async () => {
99272
99344
  const { diagram: diagram2 } = await __vitePreload(async () => {
99273
- const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-D9b1mN8-.js");
99345
+ const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-DLsw3SC8.js");
99274
99346
  return { diagram: diagram22 };
99275
99347
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
99276
99348
  return { id: id15, diagram: diagram2 };
@@ -99293,7 +99365,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
99293
99365
  }, "detector");
99294
99366
  var loader16 = /* @__PURE__ */ __name(async () => {
99295
99367
  const { diagram: diagram2 } = await __vitePreload(async () => {
99296
- const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-DNzgudL_.js");
99368
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-DqXB3dNs.js");
99297
99369
  return { diagram: diagram22 };
99298
99370
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
99299
99371
  return { id: id16, diagram: diagram2 };
@@ -99310,7 +99382,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
99310
99382
  }, "detector");
99311
99383
  var loader17 = /* @__PURE__ */ __name(async () => {
99312
99384
  const { diagram: diagram2 } = await __vitePreload(async () => {
99313
- const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-C2qidjQ5.js");
99385
+ const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-BV-8X5hz.js");
99314
99386
  return { diagram: diagram22 };
99315
99387
  }, true ? __vite__mapDeps([38,11,9,26]) : void 0);
99316
99388
  return { id: id17, diagram: diagram2 };
@@ -99380,7 +99452,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
99380
99452
  }, "detector");
99381
99453
  var loader18 = /* @__PURE__ */ __name(async () => {
99382
99454
  const { diagram: diagram2 } = await __vitePreload(async () => {
99383
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-DfGI49Dz.js");
99455
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-8lZ5d5y-.js");
99384
99456
  return { diagram: diagram22 };
99385
99457
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99386
99458
  return { id: id18, diagram: diagram2 };
@@ -99397,7 +99469,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
99397
99469
  }, "detector");
99398
99470
  var loader19 = /* @__PURE__ */ __name(async () => {
99399
99471
  const { diagram: diagram2 } = await __vitePreload(async () => {
99400
- const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-CkyKUY7A.js");
99472
+ const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-BFSqlDfo.js");
99401
99473
  return { diagram: diagram22 };
99402
99474
  }, true ? __vite__mapDeps([39,26]) : void 0);
99403
99475
  return { id: id19, diagram: diagram2 };
@@ -99414,7 +99486,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
99414
99486
  }, "detector");
99415
99487
  var loader20 = /* @__PURE__ */ __name(async () => {
99416
99488
  const { diagram: diagram2 } = await __vitePreload(async () => {
99417
- const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-D7arZj95.js");
99489
+ const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-wigkPJ2B.js");
99418
99490
  return { diagram: diagram22 };
99419
99491
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
99420
99492
  return { id: id20, diagram: diagram2 };
@@ -99431,7 +99503,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
99431
99503
  }, "detector");
99432
99504
  var loader21 = /* @__PURE__ */ __name(async () => {
99433
99505
  const { diagram: diagram2 } = await __vitePreload(async () => {
99434
- const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-Du0TC8WS.js");
99506
+ const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-E3W-szUv.js");
99435
99507
  return { diagram: diagram22 };
99436
99508
  }, true ? __vite__mapDeps([41,11]) : void 0);
99437
99509
  return { id: id21, diagram: diagram2 };
@@ -99448,7 +99520,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
99448
99520
  }, "detector");
99449
99521
  var loader22 = /* @__PURE__ */ __name(async () => {
99450
99522
  const { diagram: diagram2 } = await __vitePreload(async () => {
99451
- const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-CoXlxv00.js");
99523
+ const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-B-ZV3LF7.js");
99452
99524
  return { diagram: diagram22 };
99453
99525
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
99454
99526
  return { id: id22, diagram: diagram2 };
@@ -99465,7 +99537,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
99465
99537
  }, "detector");
99466
99538
  var loader23 = /* @__PURE__ */ __name(async () => {
99467
99539
  const { diagram: diagram2 } = await __vitePreload(async () => {
99468
- const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-sTU7Hh-Y.js");
99540
+ const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-BCZeNfu_.js");
99469
99541
  return { diagram: diagram22 };
99470
99542
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
99471
99543
  return { id: id23, diagram: diagram2 };
@@ -99481,7 +99553,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
99481
99553
  }, "detector");
99482
99554
  var loader24 = /* @__PURE__ */ __name(async () => {
99483
99555
  const { diagram: diagram2 } = await __vitePreload(async () => {
99484
- const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-lrWn1Obo.js");
99556
+ const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-B8WaCOcr.js");
99485
99557
  return { diagram: diagram22 };
99486
99558
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
99487
99559
  return { id: id24, diagram: diagram2 };
@@ -99497,7 +99569,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
99497
99569
  }, "detector");
99498
99570
  var loader25 = /* @__PURE__ */ __name(async () => {
99499
99571
  const { diagram: diagram2 } = await __vitePreload(async () => {
99500
- const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-CxIWLtpt.js");
99572
+ const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-BAt4BaxZ.js");
99501
99573
  return { diagram: diagram22 };
99502
99574
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
99503
99575
  return { id: id25, diagram: diagram2 };
@@ -99514,7 +99586,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
99514
99586
  }, "detector");
99515
99587
  var loader26 = /* @__PURE__ */ __name(async () => {
99516
99588
  const { diagram: diagram2 } = await __vitePreload(async () => {
99517
- const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-CxqmdsIm.js");
99589
+ const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-DFfhMGkT.js");
99518
99590
  return { diagram: diagram22 };
99519
99591
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
99520
99592
  return { id: id26, diagram: diagram2 };
@@ -99531,7 +99603,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
99531
99603
  }, "detector");
99532
99604
  var loader27 = /* @__PURE__ */ __name(async () => {
99533
99605
  const { diagram: diagram2 } = await __vitePreload(async () => {
99534
- const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-oCM-LYk1.js");
99606
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-zwe-cqRW.js");
99535
99607
  return { diagram: diagram22 };
99536
99608
  }, true ? [] : void 0);
99537
99609
  return { id: id27, diagram: diagram2 };
@@ -99547,7 +99619,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
99547
99619
  }, "detector");
99548
99620
  var loader28 = /* @__PURE__ */ __name(async () => {
99549
99621
  const { diagram: diagram2 } = await __vitePreload(async () => {
99550
- const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-BxVF5Olo.js");
99622
+ const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-D7Cioksz.js");
99551
99623
  return { diagram: diagram22 };
99552
99624
  }, true ? [] : void 0);
99553
99625
  return { id: id28, diagram: diagram2 };
@@ -99564,7 +99636,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
99564
99636
  }, "detector");
99565
99637
  var loader29 = /* @__PURE__ */ __name(async () => {
99566
99638
  const { diagram: diagram2 } = await __vitePreload(async () => {
99567
- const { diagram: diagram22 } = await import("./diagram-E7M64L7V-QRaBfST8.js");
99639
+ const { diagram: diagram22 } = await import("./diagram-E7M64L7V-CrT4qBJh.js");
99568
99640
  return { diagram: diagram22 };
99569
99641
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
99570
99642
  return { id: id29, diagram: diagram2 };
@@ -101260,6 +101332,7 @@ class DomindsDialogContainer extends HTMLElement {
101260
101332
  this.userImageStatusByKey = /* @__PURE__ */ new Map();
101261
101333
  this.userImageStatusElByKey = /* @__PURE__ */ new Map();
101262
101334
  this.pendingTellaskCallAnchorByGenseq = /* @__PURE__ */ new Map();
101335
+ this.pendingCalleeAssignmentLinkByCallId = /* @__PURE__ */ new Map();
101263
101336
  this.progressiveExpandCleanupByTarget = /* @__PURE__ */ new Map();
101264
101337
  this.viewportPanelState = { kind: "hidden" };
101265
101338
  this.pendingScrollRequest = null;
@@ -101471,6 +101544,32 @@ class DomindsDialogContainer extends HTMLElement {
101471
101544
  });
101472
101545
  return;
101473
101546
  }
101547
+ const callingExternalBtn = target.closest(
101548
+ ".calling-open-external-btn"
101549
+ );
101550
+ if (callingExternalBtn) {
101551
+ e2.preventDefault();
101552
+ e2.stopPropagation();
101553
+ const section = callingExternalBtn.closest(".calling-section");
101554
+ if (!section) return;
101555
+ const target2 = this.readCallingSectionCalleeDeepLinkTarget(section);
101556
+ if (!target2) return;
101557
+ this.openCalleeDeepLinkInNewTab(target2);
101558
+ return;
101559
+ }
101560
+ const callingShareBtn = target.closest(
101561
+ ".calling-share-link-btn"
101562
+ );
101563
+ if (callingShareBtn) {
101564
+ e2.preventDefault();
101565
+ e2.stopPropagation();
101566
+ const section = callingShareBtn.closest(".calling-section");
101567
+ if (!section) return;
101568
+ const target2 = this.readCallingSectionCalleeDeepLinkTarget(section);
101569
+ if (!target2) return;
101570
+ await this.copyCalleeDeepLinkToClipboard(target2);
101571
+ return;
101572
+ }
101474
101573
  const userAnswerCallsiteBtn = target.closest(
101475
101574
  ".user-answer-callsite-link-btn"
101476
101575
  );
@@ -102014,6 +102113,7 @@ class DomindsDialogContainer extends HTMLElement {
102014
102113
  this.userImageStatusByKey.clear();
102015
102114
  this.userImageStatusElByKey.clear();
102016
102115
  this.pendingTellaskCallAnchorByGenseq.clear();
102116
+ this.pendingCalleeAssignmentLinkByCallId.clear();
102017
102117
  const messages = this.shadowRoot?.querySelector(".messages");
102018
102118
  if (messages) {
102019
102119
  messages.innerHTML = "";
@@ -102051,6 +102151,7 @@ class DomindsDialogContainer extends HTMLElement {
102051
102151
  this.userImageStatusByKey.clear();
102052
102152
  this.userImageStatusElByKey.clear();
102053
102153
  this.pendingTellaskCallAnchorByGenseq.clear();
102154
+ this.pendingCalleeAssignmentLinkByCallId.clear();
102054
102155
  const messages = this.shadowRoot?.querySelector(".messages");
102055
102156
  if (messages) {
102056
102157
  messages.innerHTML = "";
@@ -102192,9 +102293,13 @@ class DomindsDialogContainer extends HTMLElement {
102192
102293
  }
102193
102294
  async handleDialogEvent(event) {
102194
102295
  if (event.dialog) {
102195
- const isCurrentDialog = this.currentDialog && event.dialog.selfId === this.currentDialog.selfId && event.dialog.rootId === this.currentDialog.rootId;
102196
- const isPreviousDialog = this.previousDialog && event.dialog.selfId === this.previousDialog.selfId && event.dialog.rootId === this.previousDialog.rootId;
102296
+ const eventDialog = event.type === "sideDialog_created_evt" ? event.parentDialog : event.dialog;
102297
+ const isCurrentDialog = this.currentDialog && eventDialog.selfId === this.currentDialog.selfId && eventDialog.rootId === this.currentDialog.rootId;
102298
+ const isPreviousDialog = this.previousDialog && eventDialog.selfId === this.previousDialog.selfId && eventDialog.rootId === this.previousDialog.rootId;
102197
102299
  if (!isCurrentDialog && !isPreviousDialog) {
102300
+ if (this.tryHandleCrossDialogAssignmentAnchor(event)) {
102301
+ return;
102302
+ }
102198
102303
  return;
102199
102304
  }
102200
102305
  }
@@ -103584,6 +103689,7 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
103584
103689
  this.tellaskCallingSectionBySeq.set(genseq, callingSection);
103585
103690
  this.callingSectionByCallId.set(event.callId, callingSection);
103586
103691
  this.markCallSitePending(event.callId, callingSection, startedAtMs);
103692
+ this.applyPendingCalleeAssignmentLink(event.callId);
103587
103693
  this.scrollToBottom();
103588
103694
  }
103589
103695
  makeToolResultImageStatusKey(genseq, toolCallId, relPath) {
@@ -103873,6 +103979,54 @@ ${event.content}`;
103873
103979
  }
103874
103980
  this.pendingTellaskCallAnchorByGenseq.set(genseq, anchorMeta);
103875
103981
  }
103982
+ tryHandleCrossDialogAssignmentAnchor(event) {
103983
+ if (event.type !== "tellask_call_anchor_evt" || event.anchorRole !== "assignment") {
103984
+ return false;
103985
+ }
103986
+ const currentDialog = this.currentDialog;
103987
+ if (!currentDialog) {
103988
+ return false;
103989
+ }
103990
+ if (event.dialog.rootId !== currentDialog.rootId || event.dialog.selfId === currentDialog.selfId) {
103991
+ return false;
103992
+ }
103993
+ const callId = typeof event.callId === "string" ? event.callId.trim() : "";
103994
+ if (callId === "") {
103995
+ return false;
103996
+ }
103997
+ if (!Number.isFinite(event.course) || event.course <= 0) {
103998
+ this.handleProtocolError(
103999
+ `tellask_call_anchor_evt invalid cross-dialog assignment course ${JSON.stringify({
104000
+ course: event.course,
104001
+ genseq: event.genseq,
104002
+ callId,
104003
+ rootId: event.dialog.rootId,
104004
+ selfId: event.dialog.selfId
104005
+ })}`
104006
+ );
104007
+ return true;
104008
+ }
104009
+ if (!Number.isFinite(event.genseq) || event.genseq <= 0) {
104010
+ this.handleProtocolError(
104011
+ `tellask_call_anchor_evt invalid cross-dialog assignment genseq ${JSON.stringify({
104012
+ course: event.course,
104013
+ genseq: event.genseq,
104014
+ callId,
104015
+ rootId: event.dialog.rootId,
104016
+ selfId: event.dialog.selfId
104017
+ })}`
104018
+ );
104019
+ return true;
104020
+ }
104021
+ const link2 = {
104022
+ rootId: event.dialog.rootId,
104023
+ selfId: event.dialog.selfId,
104024
+ course: event.course,
104025
+ genseq: event.genseq
104026
+ };
104027
+ this.upsertOrPendCallingSectionCalleeAssignmentLink({ callId, ...link2 });
104028
+ return true;
104029
+ }
103876
104030
  // === TELLASK CALL RESULT HANDLER ===
103877
104031
  // Final response body is shown in a separate teammate bubble.
103878
104032
  // Call site only tracks lifecycle status/timing.
@@ -103940,6 +104094,35 @@ ${event.content}`;
103940
104094
  const tellaskerId = event.responder.originMemberId;
103941
104095
  const sessionSlug = event.callName === "tellask" ? event.call.sessionSlug : void 0;
103942
104096
  const calleeDialogId = event.route?.calleeDialogId;
104097
+ const dialog2 = this.currentDialog;
104098
+ const routeCalleeCourse = this.parseOptionalPositiveInt(event.route?.calleeCourse);
104099
+ const routeCalleeGenseq = this.parseOptionalPositiveInt(event.route?.calleeGenseq);
104100
+ if (calleeDialogId && dialog2) {
104101
+ if (routeCalleeCourse !== void 0 && routeCalleeGenseq !== void 0) {
104102
+ this.upsertOrPendCallingSectionCalleeAssignmentLink({
104103
+ callId,
104104
+ rootId: dialog2.rootId,
104105
+ selfId: calleeDialogId,
104106
+ course: routeCalleeCourse,
104107
+ genseq: routeCalleeGenseq
104108
+ });
104109
+ } else if (routeCalleeGenseq !== void 0) {
104110
+ this.handleProtocolError(
104111
+ `tellask_result_evt has incomplete callee generation route ${JSON.stringify({
104112
+ callId,
104113
+ calleeDialogId,
104114
+ calleeCourse: event.route?.calleeCourse,
104115
+ calleeGenseq: event.route?.calleeGenseq
104116
+ })}`
104117
+ );
104118
+ } else if (!isSupersededNotice) {
104119
+ this.upsertCallingSectionCalleeDialogLink({
104120
+ callId,
104121
+ rootId: dialog2.rootId,
104122
+ selfId: calleeDialogId
104123
+ });
104124
+ }
104125
+ }
103943
104126
  const messageEl = this.createTellaskResponseBubble(
103944
104127
  calleeDialogId,
103945
104128
  agentId,
@@ -104001,6 +104184,22 @@ ${event.content}`;
104001
104184
  return;
104002
104185
  }
104003
104186
  const calleeDialogId = sideDialog.selfId;
104187
+ const assignment = sideDialogEvent.sideDialogNode.assignmentFromAsker;
104188
+ if (!assignment) {
104189
+ this.handleProtocolError(
104190
+ `sideDialog_created_evt missing assignmentFromAsker ${JSON.stringify({
104191
+ rootId: sideDialog.rootId,
104192
+ selfId: sideDialog.selfId,
104193
+ callName: sideDialogEvent.callName
104194
+ })}`
104195
+ );
104196
+ return;
104197
+ }
104198
+ this.upsertCallingSectionCalleeDialogLink({
104199
+ callId: assignment.callId,
104200
+ rootId: sideDialog.rootId,
104201
+ selfId: calleeDialogId
104202
+ });
104004
104203
  const host = this.getRootNode()?.host;
104005
104204
  if (host) {
104006
104205
  dispatchDomindsEvent(
@@ -104339,12 +104538,7 @@ ${event.content}`;
104339
104538
  const resolvedCourse = typeof course === "number" && Number.isFinite(course) ? course : this.currentCourse;
104340
104539
  if (typeof resolvedCourse !== "number" || !Number.isFinite(resolvedCourse)) return;
104341
104540
  const url = new URL(window.location.href);
104342
- url.searchParams.delete("rootId");
104343
- url.searchParams.delete("selfId");
104344
- url.searchParams.delete("course");
104345
- url.searchParams.delete("msg");
104346
- url.searchParams.delete("callId");
104347
- url.searchParams.delete("genseq");
104541
+ this.clearDeepLinkSearchParams(url);
104348
104542
  url.hash = "";
104349
104543
  url.pathname = `/dl/callsite`;
104350
104544
  url.searchParams.set("rootId", dialog2.rootId);
@@ -104355,6 +104549,49 @@ ${event.content}`;
104355
104549
  const w2 = window.open(urlStr, "_blank", "noopener,noreferrer");
104356
104550
  if (w2) w2.opener = null;
104357
104551
  }
104552
+ buildDialogDeepLinkUrl(params) {
104553
+ const url = new URL(window.location.href);
104554
+ this.clearDeepLinkSearchParams(url);
104555
+ url.hash = "";
104556
+ url.pathname = `/dl/dialog`;
104557
+ url.searchParams.set("rootId", params.rootId);
104558
+ url.searchParams.set("selfId", params.selfId);
104559
+ if (typeof params.course === "number" && Number.isFinite(params.course)) {
104560
+ url.searchParams.set("course", String(Math.floor(params.course)));
104561
+ }
104562
+ return url;
104563
+ }
104564
+ buildGenseqDeepLinkUrl(params) {
104565
+ const url = new URL(window.location.href);
104566
+ this.clearDeepLinkSearchParams(url);
104567
+ url.hash = "";
104568
+ url.pathname = `/dl/genseq`;
104569
+ url.searchParams.set("rootId", params.rootId);
104570
+ url.searchParams.set("selfId", params.selfId);
104571
+ url.searchParams.set("course", String(Math.floor(params.course)));
104572
+ url.searchParams.set("genseq", String(Math.floor(params.genseq)));
104573
+ return url;
104574
+ }
104575
+ buildCalleeDeepLinkUrl(params) {
104576
+ if (typeof params.course === "number" && Number.isFinite(params.course) && params.course > 0 && typeof params.genseq === "number" && Number.isFinite(params.genseq) && params.genseq > 0) {
104577
+ return this.buildGenseqDeepLinkUrl({
104578
+ rootId: params.rootId,
104579
+ selfId: params.selfId,
104580
+ course: params.course,
104581
+ genseq: params.genseq
104582
+ });
104583
+ }
104584
+ return this.buildDialogDeepLinkUrl(params);
104585
+ }
104586
+ openCalleeDeepLinkInNewTab(params) {
104587
+ const url = this.buildCalleeDeepLinkUrl(params);
104588
+ const w2 = window.open(url.toString(), "_blank", "noopener,noreferrer");
104589
+ if (w2) w2.opener = null;
104590
+ }
104591
+ async copyCalleeDeepLinkToClipboard(params) {
104592
+ const url = this.buildCalleeDeepLinkUrl(params);
104593
+ await this.copyLinkToClipboardWithToast(url.toString());
104594
+ }
104358
104595
  async copyCallSiteDeepLinkToClipboard(callId, target) {
104359
104596
  const dialog2 = this.currentDialog;
104360
104597
  if (!dialog2) return;
@@ -104364,12 +104601,7 @@ ${event.content}`;
104364
104601
  const resolvedCourse = typeof course === "number" && Number.isFinite(course) ? course : this.currentCourse;
104365
104602
  if (typeof resolvedCourse !== "number" || !Number.isFinite(resolvedCourse)) return;
104366
104603
  const url = new URL(window.location.href);
104367
- url.searchParams.delete("rootId");
104368
- url.searchParams.delete("selfId");
104369
- url.searchParams.delete("course");
104370
- url.searchParams.delete("msg");
104371
- url.searchParams.delete("callId");
104372
- url.searchParams.delete("genseq");
104604
+ this.clearDeepLinkSearchParams(url);
104373
104605
  url.hash = "";
104374
104606
  url.pathname = `/dl/callsite`;
104375
104607
  url.searchParams.set("rootId", dialog2.rootId);
@@ -104384,12 +104616,7 @@ ${event.content}`;
104384
104616
  if (!dialog2 || typeof course !== "number") return;
104385
104617
  if (!Number.isFinite(genseq) || genseq <= 0) return;
104386
104618
  const url = new URL(window.location.href);
104387
- url.searchParams.delete("rootId");
104388
- url.searchParams.delete("selfId");
104389
- url.searchParams.delete("course");
104390
- url.searchParams.delete("msg");
104391
- url.searchParams.delete("callId");
104392
- url.searchParams.delete("genseq");
104619
+ this.clearDeepLinkSearchParams(url);
104393
104620
  url.hash = "";
104394
104621
  url.pathname = `/dl/genseq`;
104395
104622
  url.searchParams.set("rootId", dialog2.rootId);
@@ -104398,6 +104625,15 @@ ${event.content}`;
104398
104625
  url.searchParams.set("genseq", String(Math.floor(genseq)));
104399
104626
  await this.copyLinkToClipboardWithToast(url.toString());
104400
104627
  }
104628
+ clearDeepLinkSearchParams(url) {
104629
+ url.searchParams.delete("rootId");
104630
+ url.searchParams.delete("selfId");
104631
+ url.searchParams.delete("course");
104632
+ url.searchParams.delete("msg");
104633
+ url.searchParams.delete("callId");
104634
+ url.searchParams.delete("genseq");
104635
+ url.searchParams.delete("qid");
104636
+ }
104401
104637
  emitToast(message, kind = "info") {
104402
104638
  dispatchDomindsEvent(this, "ui-toast", { message, kind }, { bubbles: true, composed: true });
104403
104639
  }
@@ -104517,6 +104753,133 @@ ${event.content}`;
104517
104753
  headerRight.appendChild(actions);
104518
104754
  }
104519
104755
  }
104756
+ findCallingSectionByCallId(callId) {
104757
+ const normalizedCallId = callId.trim();
104758
+ if (normalizedCallId === "") {
104759
+ return null;
104760
+ }
104761
+ const fromCache = this.callingSectionByCallId.get(normalizedCallId);
104762
+ const fromDom = this.shadowRoot ? this.shadowRoot.querySelector(
104763
+ `.calling-section[data-call-id="${CSS.escape(normalizedCallId)}"]`
104764
+ ) : null;
104765
+ return fromCache ?? fromDom;
104766
+ }
104767
+ applyPendingCalleeAssignmentLink(callId) {
104768
+ const normalizedCallId = callId.trim();
104769
+ if (normalizedCallId === "") {
104770
+ return;
104771
+ }
104772
+ const link2 = this.pendingCalleeAssignmentLinkByCallId.get(normalizedCallId);
104773
+ if (!link2) {
104774
+ return;
104775
+ }
104776
+ if (!this.findCallingSectionByCallId(normalizedCallId)) {
104777
+ return;
104778
+ }
104779
+ this.pendingCalleeAssignmentLinkByCallId.delete(normalizedCallId);
104780
+ this.upsertCallingSectionCalleeAssignmentLink({
104781
+ callId: normalizedCallId,
104782
+ ...link2
104783
+ });
104784
+ }
104785
+ readCallingSectionCalleeDeepLinkTarget(section) {
104786
+ const rootId = (section.getAttribute("data-callee-root-id") ?? "").trim();
104787
+ const selfId = (section.getAttribute("data-callee-dialog-id") ?? "").trim();
104788
+ if (rootId === "" || selfId === "") {
104789
+ return null;
104790
+ }
104791
+ const courseRaw = Number.parseInt(section.getAttribute("data-callee-course") ?? "", 10);
104792
+ const genseqRaw = Number.parseInt(section.getAttribute("data-callee-genseq") ?? "", 10);
104793
+ const hasCourse = Number.isFinite(courseRaw) && courseRaw > 0;
104794
+ const hasGenseq = Number.isFinite(genseqRaw) && genseqRaw > 0;
104795
+ if (hasCourse !== hasGenseq) {
104796
+ this.handleProtocolError(
104797
+ `calling-section has incomplete callee generation link ${JSON.stringify({
104798
+ callId: section.getAttribute("data-call-id"),
104799
+ rootId,
104800
+ selfId,
104801
+ course: section.getAttribute("data-callee-course"),
104802
+ genseq: section.getAttribute("data-callee-genseq")
104803
+ })}`
104804
+ );
104805
+ return null;
104806
+ }
104807
+ return {
104808
+ rootId,
104809
+ selfId,
104810
+ ...hasCourse && hasGenseq ? {
104811
+ course: courseRaw,
104812
+ genseq: genseqRaw
104813
+ } : {}
104814
+ };
104815
+ }
104816
+ upsertCallingSectionCalleeDialogLink(args) {
104817
+ const callId = args.callId.trim();
104818
+ const rootId = args.rootId.trim();
104819
+ const selfId = args.selfId.trim();
104820
+ if (callId === "" || rootId === "" || selfId === "") {
104821
+ this.handleProtocolError(
104822
+ `sideDialog_created_evt invalid callee dialog link ${JSON.stringify(args)}`
104823
+ );
104824
+ return;
104825
+ }
104826
+ const section = this.findCallingSectionByCallId(callId);
104827
+ if (!section) {
104828
+ this.handleProtocolError(
104829
+ `sideDialog_created_evt has no matching call site bubble ${JSON.stringify(args)}`
104830
+ );
104831
+ return;
104832
+ }
104833
+ section.setAttribute("data-callee-root-id", rootId);
104834
+ section.setAttribute("data-callee-dialog-id", selfId);
104835
+ section.querySelectorAll(".calling-actions button").forEach((button) => {
104836
+ button.disabled = false;
104837
+ });
104838
+ }
104839
+ upsertOrPendCallingSectionCalleeAssignmentLink(args) {
104840
+ const callId = args.callId.trim();
104841
+ const rootId = args.rootId.trim();
104842
+ const selfId = args.selfId.trim();
104843
+ const course = Math.floor(args.course);
104844
+ const genseq = Math.floor(args.genseq);
104845
+ if (callId !== "" && rootId !== "" && selfId !== "" && Number.isFinite(course) && course > 0 && Number.isFinite(genseq) && genseq > 0 && !this.findCallingSectionByCallId(callId)) {
104846
+ this.pendingCalleeAssignmentLinkByCallId.set(callId, {
104847
+ rootId,
104848
+ selfId,
104849
+ course,
104850
+ genseq
104851
+ });
104852
+ return;
104853
+ }
104854
+ this.upsertCallingSectionCalleeAssignmentLink(args);
104855
+ }
104856
+ upsertCallingSectionCalleeAssignmentLink(args) {
104857
+ const callId = args.callId.trim();
104858
+ const rootId = args.rootId.trim();
104859
+ const selfId = args.selfId.trim();
104860
+ const course = Math.floor(args.course);
104861
+ const genseq = Math.floor(args.genseq);
104862
+ if (callId === "" || rootId === "" || selfId === "" || !Number.isFinite(course) || course <= 0 || !Number.isFinite(genseq) || genseq <= 0) {
104863
+ this.handleProtocolError(
104864
+ `tellask_call_anchor_evt invalid callee assignment link ${JSON.stringify(args)}`
104865
+ );
104866
+ return;
104867
+ }
104868
+ const section = this.findCallingSectionByCallId(callId);
104869
+ if (!section) {
104870
+ this.handleProtocolError(
104871
+ `tellask_call_anchor_evt has no matching call site bubble ${JSON.stringify(args)}`
104872
+ );
104873
+ return;
104874
+ }
104875
+ section.setAttribute("data-callee-root-id", rootId);
104876
+ section.setAttribute("data-callee-dialog-id", selfId);
104877
+ section.setAttribute("data-callee-course", String(course));
104878
+ section.setAttribute("data-callee-genseq", String(genseq));
104879
+ section.querySelectorAll(".calling-actions button").forEach((button) => {
104880
+ button.disabled = false;
104881
+ });
104882
+ }
104520
104883
  buildGenerationBubbleHeaderHtml(timestamp2) {
104521
104884
  const t2 = getUiStrings(this.uiLanguage);
104522
104885
  const authorLabel = this.getAuthorLabel("assistant");
@@ -104853,7 +105216,9 @@ ${event.content}`;
104853
105216
  }
104854
105217
  // Create calling section (inside markdown section) - streaming mode for tellask call blocks
104855
105218
  createCallingSection(callName, firstMention) {
105219
+ const t2 = getUiStrings(this.uiLanguage);
104856
105220
  const isFbr = callName === "freshBootsReasoning";
105221
+ const isSideDialogCall = callName === "tellask" || callName === "tellaskSessionless" || callName === "freshBootsReasoning";
104857
105222
  const el = document.createElement("div");
104858
105223
  el.className = isFbr ? "calling-section fbr" : "calling-section";
104859
105224
  el.setAttribute("data-first-mention", firstMention);
@@ -104867,6 +105232,14 @@ ${event.content}`;
104867
105232
  <span class="calling-headline"></span>
104868
105233
  <span class="calling-timing"></span>
104869
105234
  </div>
105235
+ ${isSideDialogCall ? `<div class="calling-actions">
105236
+ <button type="button" class="callsite-icon-btn calling-open-external-btn" aria-label="${this.escapeHtml(t2.q4hOpenInNewTabTitle)}" title="${this.escapeHtml(t2.q4hOpenInNewTabTitle)}" disabled>
105237
+ <span class="icon-mask dc-icon-external" aria-hidden="true"></span>
105238
+ </button>
105239
+ <button type="button" class="callsite-icon-btn calling-share-link-btn" aria-label="${this.escapeHtml(t2.q4hCopyLinkTitle)}" title="${this.escapeHtml(t2.q4hCopyLinkTitle)}" disabled>
105240
+ <span class="icon-mask dc-icon-link" aria-hidden="true"></span>
105241
+ </button>
105242
+ </div>` : ""}
104870
105243
  </div>
104871
105244
  <div class="calling-content">
104872
105245
  <div class="calling-body"></div>
@@ -105544,6 +105917,17 @@ ${event.content}`;
105544
105917
  color: var(--dominds-fg, var(--color-fg-primary, #333));
105545
105918
  }
105546
105919
 
105920
+ .callsite-icon-btn:disabled {
105921
+ cursor: default;
105922
+ opacity: 0.45;
105923
+ }
105924
+
105925
+ .callsite-icon-btn:disabled:hover {
105926
+ background: transparent;
105927
+ border-color: transparent;
105928
+ color: var(--dominds-muted, var(--color-fg-tertiary, #64748b));
105929
+ }
105930
+
105547
105931
  .callsite-icon-btn:focus-visible {
105548
105932
  outline: 2px solid color-mix(in srgb, var(--dominds-primary, #007acc) 55%, transparent);
105549
105933
  outline-offset: 2px;
@@ -105885,6 +106269,15 @@ ${event.content}`;
105885
106269
  flex-direction: column;
105886
106270
  gap: 2px;
105887
106271
  min-width: 0;
106272
+ flex: 1 1 auto;
106273
+ }
106274
+
106275
+ .calling-actions {
106276
+ display: inline-flex;
106277
+ align-items: center;
106278
+ gap: 5px;
106279
+ margin-left: auto;
106280
+ flex-shrink: 0;
105888
106281
  }
105889
106282
 
105890
106283
  .calling-icon {
@@ -115216,7 +115609,6 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
115216
115609
  this.retryCountdownTimer = null;
115217
115610
  this.teamMembers = [];
115218
115611
  this.defaultResponder = null;
115219
- this.taskDocuments = [];
115220
115612
  this.currentTheme = this.getCurrentTheme();
115221
115613
  this.backendRtws = "";
115222
115614
  this.backendVersion = "";
@@ -115243,7 +115635,28 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
115243
115635
  getLanguage: () => this.uiLanguage,
115244
115636
  getTeamMembers: () => this.teamMembers,
115245
115637
  getDefaultResponder: () => this.defaultResponder,
115246
- getTaskDocuments: () => this.taskDocuments,
115638
+ searchTaskDocumentSuggestions: async (query, options) => {
115639
+ const api = getApiClient();
115640
+ const resp = await api.searchTaskDocumentSuggestions(query, { signal: options?.signal });
115641
+ if (!resp.success) {
115642
+ if (resp.status === 401) {
115643
+ this.onAuthRejected("api");
115644
+ throw new Error("Authentication required");
115645
+ }
115646
+ throw new Error(resp.error || "Failed to load Taskdoc suggestions");
115647
+ }
115648
+ const payload = resp.data;
115649
+ if (!payload || !payload.success) {
115650
+ throw new Error(
115651
+ payload && !payload.success ? payload.error : "Invalid Taskdoc suggestion payload"
115652
+ );
115653
+ }
115654
+ return {
115655
+ requestKey: payload.requestKey,
115656
+ suggestions: payload.suggestions,
115657
+ html: payload.html
115658
+ };
115659
+ },
115247
115660
  listPrimingScripts: async (agentId) => {
115248
115661
  const api = getApiClient();
115249
115662
  const resp = await api.listPrimingScripts(agentId);
@@ -121984,7 +122397,7 @@ ${content}`;
121984
122397
  this.teamMembersLoadState = { kind: "loading" };
121985
122398
  this.updateNewDialogButtonState();
121986
122399
  }
121987
- await Promise.all([this.loadDialogs(), this.loadTeamMembers(), this.loadTaskDocuments()]);
122400
+ await Promise.all([this.loadDialogs(), this.loadTeamMembers()]);
121988
122401
  this.continuePendingDeepLink();
121989
122402
  }
121990
122403
  parseDeepLinkFromUrl() {
@@ -123213,29 +123626,6 @@ ${content}`;
123213
123626
  this.updateNewDialogButtonState();
123214
123627
  }
123215
123628
  }
123216
- async loadTaskDocuments() {
123217
- try {
123218
- const api = getApiClient();
123219
- const resp = await api.getTaskDocuments();
123220
- if (!resp.success) {
123221
- if (resp.status === 401) {
123222
- this.onAuthRejected("api");
123223
- return;
123224
- }
123225
- return;
123226
- }
123227
- const data = resp.data;
123228
- if (data && data.success && data.taskDocuments) {
123229
- this.taskDocuments = data.taskDocuments.map((doc) => ({
123230
- path: doc.path,
123231
- relativePath: doc.relativePath,
123232
- name: doc.name
123233
- }));
123234
- }
123235
- } catch (error2) {
123236
- console.error("Failed to load Taskdocs:", error2);
123237
- }
123238
- }
123239
123629
  validateDialogTaskDocPaths(dialogs) {
123240
123630
  dialogs.forEach((dialog2, index) => {
123241
123631
  if (!dialog2.taskDocPath || dialog2.taskDocPath.trim() === "") {
@@ -125090,6 +125480,12 @@ ${content}`;
125090
125480
  node2.lastModified || message.timestamp,
125091
125481
  node2.status === "running" ? { suppressRender: true } : void 0
125092
125482
  );
125483
+ const dialogContainer = this.shadowRoot?.querySelector(
125484
+ "#dialog-container"
125485
+ );
125486
+ if (dialogContainer) {
125487
+ await dialogContainer.handleDialogEvent(message);
125488
+ }
125093
125489
  break;
125094
125490
  }
125095
125491
  case "new_q4h_asked": {
@@ -125126,6 +125522,26 @@ ${content}`;
125126
125522
  );
125127
125523
  break;
125128
125524
  }
125525
+ case "tellask_call_anchor_evt": {
125526
+ const activeDialogContainer = this.shadowRoot?.querySelector(
125527
+ "#dialog-container"
125528
+ );
125529
+ if (activeDialogContainer) {
125530
+ await activeDialogContainer.handleDialogEvent(message);
125531
+ }
125532
+ const routedDialogContainer = this.getDialogContainerForEvent(message);
125533
+ if (routedDialogContainer && routedDialogContainer !== activeDialogContainer) {
125534
+ await routedDialogContainer.handleDialogEvent(message);
125535
+ }
125536
+ const ts2 = message.timestamp;
125537
+ const status2 = this.lookupVisibleDialogStatusByIds(dialog2.rootId, dialog2.selfId);
125538
+ this.bumpDialogLastModified(
125539
+ { rootId: dialog2.rootId, selfId: dialog2.selfId },
125540
+ typeof ts2 === "string" ? ts2 : void 0,
125541
+ status2 === "running" ? { suppressRender: true } : void 0
125542
+ );
125543
+ break;
125544
+ }
125129
125545
  case "tellask_result_evt":
125130
125546
  case "tellask_carryover_evt": {
125131
125547
  const dialogContainer = this.shadowRoot?.querySelector(
@@ -127979,4 +128395,4 @@ export {
127979
128395
  purify as y,
127980
128396
  clear$2 as z
127981
128397
  };
127982
- //# sourceMappingURL=index--fy89xGh.js.map
128398
+ //# sourceMappingURL=index-B9TTmMv-.js.map