dominds 1.23.0 → 1.23.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 (130) hide show
  1. package/dist/access-control.js +4 -4
  2. package/dist/cli/webui.js +8 -1
  3. package/dist/dialog-display-state.d.ts +1 -0
  4. package/dist/dialog-display-state.js +36 -4
  5. package/dist/docs/encapsulated-taskdoc.md +11 -8
  6. package/dist/docs/encapsulated-taskdoc.zh.md +12 -9
  7. package/dist/llm/defaults.yaml +3 -0
  8. package/dist/llm/gen/mock.js +3 -6
  9. package/dist/llm/kernel-driver/flow.js +11 -13
  10. package/dist/llm/kernel-driver/loop.js +3 -1
  11. package/dist/llm/kernel-driver/reply-guidance.js +3 -7
  12. package/dist/llm/kernel-driver/types.d.ts +1 -0
  13. package/dist/minds/minds-i18n.js +2 -2
  14. package/dist/minds/system-prompt-parts.js +8 -8
  15. package/dist/persistence.js +1 -0
  16. package/dist/recovery/proceeding-drive.d.ts +1 -0
  17. package/dist/recovery/proceeding-drive.js +89 -0
  18. package/dist/runtime/driver-messages.js +4 -4
  19. package/dist/runtime/reply-prompt-copy.d.ts +5 -1
  20. package/dist/runtime/reply-prompt-copy.js +13 -3
  21. package/dist/server.d.ts +1 -0
  22. package/dist/server.js +68 -14
  23. package/dist/tools/cmd-runner.js +76 -17
  24. package/dist/tools/ctrl.d.ts +1 -1
  25. package/dist/tools/ctrl.js +29 -27
  26. package/dist/tools/prompts/control/en/principles.md +2 -2
  27. package/dist/tools/prompts/control/en/scenarios.md +25 -4
  28. package/dist/tools/prompts/control/en/tools.md +17 -8
  29. package/dist/tools/prompts/control/zh/principles.md +2 -2
  30. package/dist/tools/prompts/control/zh/scenarios.md +25 -4
  31. package/dist/tools/prompts/control/zh/tools.md +17 -8
  32. package/dist/utils/task-package.d.ts +1 -1
  33. package/dist/utils/task-package.js +3 -4
  34. package/dist/utils/taskdoc.js +18 -23
  35. package/package.json +1 -1
  36. package/webapp/dist/assets/{_basePickBy-CGhMqD96.js → _basePickBy-C3SVVywm.js} +3 -3
  37. package/webapp/dist/assets/{_basePickBy-CGhMqD96.js.map → _basePickBy-C3SVVywm.js.map} +1 -1
  38. package/webapp/dist/assets/{_baseUniq-XCMW7z1Y.js → _baseUniq-egNq6cCa.js} +2 -2
  39. package/webapp/dist/assets/{_baseUniq-XCMW7z1Y.js.map → _baseUniq-egNq6cCa.js.map} +1 -1
  40. package/webapp/dist/assets/{arc-B6fzk0T5.js → arc-CASAlRvm.js} +2 -2
  41. package/webapp/dist/assets/{arc-B6fzk0T5.js.map → arc-CASAlRvm.js.map} +1 -1
  42. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DmSI_GUt.js → architectureDiagram-2XIMDMQ5-B6n5FQmS.js} +7 -7
  43. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DmSI_GUt.js.map → architectureDiagram-2XIMDMQ5-B6n5FQmS.js.map} +1 -1
  44. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-Bp0nb8IZ.js → blockDiagram-WCTKOSBZ-D2UGGjic.js} +7 -7
  45. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-Bp0nb8IZ.js.map → blockDiagram-WCTKOSBZ-D2UGGjic.js.map} +1 -1
  46. package/webapp/dist/assets/{c4Diagram-IC4MRINW-gYpylqGb.js → c4Diagram-IC4MRINW-BOY_bQFP.js} +3 -3
  47. package/webapp/dist/assets/{c4Diagram-IC4MRINW-gYpylqGb.js.map → c4Diagram-IC4MRINW-BOY_bQFP.js.map} +1 -1
  48. package/webapp/dist/assets/{channel-BmQ3YyUn.js → channel-CZ_X09H1.js} +2 -2
  49. package/webapp/dist/assets/{channel-BmQ3YyUn.js.map → channel-CZ_X09H1.js.map} +1 -1
  50. package/webapp/dist/assets/{chunk-4BX2VUAB-B5pwFRwA.js → chunk-4BX2VUAB-BIwyAzZQ.js} +2 -2
  51. package/webapp/dist/assets/{chunk-4BX2VUAB-B5pwFRwA.js.map → chunk-4BX2VUAB-BIwyAzZQ.js.map} +1 -1
  52. package/webapp/dist/assets/{chunk-55IACEB6-CZf6oMWM.js → chunk-55IACEB6-zSjTFoCX.js} +2 -2
  53. package/webapp/dist/assets/{chunk-55IACEB6-CZf6oMWM.js.map → chunk-55IACEB6-zSjTFoCX.js.map} +1 -1
  54. package/webapp/dist/assets/{chunk-FMBD7UC4-yZWCDzVz.js → chunk-FMBD7UC4-CTpuRfdB.js} +2 -2
  55. package/webapp/dist/assets/{chunk-FMBD7UC4-yZWCDzVz.js.map → chunk-FMBD7UC4-CTpuRfdB.js.map} +1 -1
  56. package/webapp/dist/assets/{chunk-JSJVCQXG-Cg1ST73M.js → chunk-JSJVCQXG-CJ3DM4in.js} +2 -2
  57. package/webapp/dist/assets/{chunk-JSJVCQXG-Cg1ST73M.js.map → chunk-JSJVCQXG-CJ3DM4in.js.map} +1 -1
  58. package/webapp/dist/assets/{chunk-KX2RTZJC-ByGtlX9q.js → chunk-KX2RTZJC-B97EakhO.js} +2 -2
  59. package/webapp/dist/assets/{chunk-KX2RTZJC-ByGtlX9q.js.map → chunk-KX2RTZJC-B97EakhO.js.map} +1 -1
  60. package/webapp/dist/assets/{chunk-NQ4KR5QH-DoXvfhSY.js → chunk-NQ4KR5QH-5o1o5x0z.js} +4 -4
  61. package/webapp/dist/assets/{chunk-NQ4KR5QH-DoXvfhSY.js.map → chunk-NQ4KR5QH-5o1o5x0z.js.map} +1 -1
  62. package/webapp/dist/assets/{chunk-QZHKN3VN-2gX2qsHB.js → chunk-QZHKN3VN-D33FSIEb.js} +2 -2
  63. package/webapp/dist/assets/{chunk-QZHKN3VN-2gX2qsHB.js.map → chunk-QZHKN3VN-D33FSIEb.js.map} +1 -1
  64. package/webapp/dist/assets/{chunk-WL4C6EOR-L-9bPNxS.js → chunk-WL4C6EOR-C2InqFin.js} +6 -6
  65. package/webapp/dist/assets/{chunk-WL4C6EOR-L-9bPNxS.js.map → chunk-WL4C6EOR-C2InqFin.js.map} +1 -1
  66. package/webapp/dist/assets/{classDiagram-VBA2DB6C-B79Oe3Df.js → classDiagram-VBA2DB6C-BfLZmK48.js} +7 -7
  67. package/webapp/dist/assets/{classDiagram-VBA2DB6C-B79Oe3Df.js.map → classDiagram-VBA2DB6C-BfLZmK48.js.map} +1 -1
  68. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-B79Oe3Df.js → classDiagram-v2-RAHNMMFH-BfLZmK48.js} +7 -7
  69. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-B79Oe3Df.js.map → classDiagram-v2-RAHNMMFH-BfLZmK48.js.map} +1 -1
  70. package/webapp/dist/assets/{clone-DvlY9Sdn.js → clone-BSCHnHfl.js} +2 -2
  71. package/webapp/dist/assets/{clone-DvlY9Sdn.js.map → clone-BSCHnHfl.js.map} +1 -1
  72. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CtkGd0W6.js → cose-bilkent-S5V4N54A-CeQ1jAJJ.js} +2 -2
  73. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CtkGd0W6.js.map → cose-bilkent-S5V4N54A-CeQ1jAJJ.js.map} +1 -1
  74. package/webapp/dist/assets/{dagre-KLK3FWXG-B3W6QTXQ.js → dagre-KLK3FWXG-WUuNYzcK.js} +7 -7
  75. package/webapp/dist/assets/{dagre-KLK3FWXG-B3W6QTXQ.js.map → dagre-KLK3FWXG-WUuNYzcK.js.map} +1 -1
  76. package/webapp/dist/assets/{diagram-E7M64L7V-B6-J_E5Q.js → diagram-E7M64L7V-jOVCIExP.js} +8 -8
  77. package/webapp/dist/assets/{diagram-E7M64L7V-B6-J_E5Q.js.map → diagram-E7M64L7V-jOVCIExP.js.map} +1 -1
  78. package/webapp/dist/assets/{diagram-IFDJBPK2-C-PH_Yx3.js → diagram-IFDJBPK2-cCeQqotA.js} +7 -7
  79. package/webapp/dist/assets/{diagram-IFDJBPK2-C-PH_Yx3.js.map → diagram-IFDJBPK2-cCeQqotA.js.map} +1 -1
  80. package/webapp/dist/assets/{diagram-P4PSJMXO-CB5xXDup.js → diagram-P4PSJMXO-DjAYFRLv.js} +7 -7
  81. package/webapp/dist/assets/{diagram-P4PSJMXO-CB5xXDup.js.map → diagram-P4PSJMXO-DjAYFRLv.js.map} +1 -1
  82. package/webapp/dist/assets/{erDiagram-INFDFZHY-CuAhTGVU.js → erDiagram-INFDFZHY-Dl_6U5fV.js} +5 -5
  83. package/webapp/dist/assets/{erDiagram-INFDFZHY-CuAhTGVU.js.map → erDiagram-INFDFZHY-Dl_6U5fV.js.map} +1 -1
  84. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-D3cIOfGj.js → flowDiagram-PKNHOUZH-D80nrZ3S.js} +7 -7
  85. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-D3cIOfGj.js.map → flowDiagram-PKNHOUZH-D80nrZ3S.js.map} +1 -1
  86. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CSFhVYXV.js → ganttDiagram-A5KZAMGK-T3WdMrgj.js} +3 -3
  87. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CSFhVYXV.js.map → ganttDiagram-A5KZAMGK-T3WdMrgj.js.map} +1 -1
  88. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CiEaxACG.js → gitGraphDiagram-K3NZZRJ6-ifV-jkKL.js} +8 -8
  89. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CiEaxACG.js.map → gitGraphDiagram-K3NZZRJ6-ifV-jkKL.js.map} +1 -1
  90. package/webapp/dist/assets/{graph-CYGALRuy.js → graph-D5jmnb35.js} +3 -3
  91. package/webapp/dist/assets/{graph-CYGALRuy.js.map → graph-D5jmnb35.js.map} +1 -1
  92. package/webapp/dist/assets/{index-BTazqQrV.js → index-CGbZlct2.js} +503 -142
  93. package/webapp/dist/assets/{index-BTazqQrV.js.map → index-CGbZlct2.js.map} +1 -1
  94. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CiWJjQyU.js → infoDiagram-LFFYTUFH-C340CY5x.js} +6 -6
  95. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CiWJjQyU.js.map → infoDiagram-LFFYTUFH-C340CY5x.js.map} +1 -1
  96. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-MlIIUO7o.js → ishikawaDiagram-PHBUUO56-Bu4RsELK.js} +2 -2
  97. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-MlIIUO7o.js.map → ishikawaDiagram-PHBUUO56-Bu4RsELK.js.map} +1 -1
  98. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BBqwkA3d.js → journeyDiagram-4ABVD52K-Dvv3ypKA.js} +5 -5
  99. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-BBqwkA3d.js.map → journeyDiagram-4ABVD52K-Dvv3ypKA.js.map} +1 -1
  100. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BS4GzDbo.js → kanban-definition-K7BYSVSG-D_rsetjW.js} +3 -3
  101. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BS4GzDbo.js.map → kanban-definition-K7BYSVSG-D_rsetjW.js.map} +1 -1
  102. package/webapp/dist/assets/{layout-DaJO-1DW.js → layout-CLmOfwnS.js} +5 -5
  103. package/webapp/dist/assets/{layout-DaJO-1DW.js.map → layout-CLmOfwnS.js.map} +1 -1
  104. package/webapp/dist/assets/{linear-SWy2Cl7G.js → linear-DFAmViqi.js} +2 -2
  105. package/webapp/dist/assets/{linear-SWy2Cl7G.js.map → linear-DFAmViqi.js.map} +1 -1
  106. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-B_gNrT3l.js → mindmap-definition-YRQLILUH-Ce3_czeS.js} +4 -4
  107. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-B_gNrT3l.js.map → mindmap-definition-YRQLILUH-Ce3_czeS.js.map} +1 -1
  108. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-CVh3lLBA.js → pieDiagram-SKSYHLDU-U6_un5Sc.js} +8 -8
  109. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-CVh3lLBA.js.map → pieDiagram-SKSYHLDU-U6_un5Sc.js.map} +1 -1
  110. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D0zAkVD7.js → quadrantDiagram-337W2JSQ-DmVJQItS.js} +3 -3
  111. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-D0zAkVD7.js.map → quadrantDiagram-337W2JSQ-DmVJQItS.js.map} +1 -1
  112. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP--CTFD60w.js → requirementDiagram-Z7DCOOCP-BkNhSY-g.js} +4 -4
  113. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP--CTFD60w.js.map → requirementDiagram-Z7DCOOCP-BkNhSY-g.js.map} +1 -1
  114. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-XZnViaAX.js → sankeyDiagram-WA2Y5GQK-E3UEy5SX.js} +2 -2
  115. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-XZnViaAX.js.map → sankeyDiagram-WA2Y5GQK-E3UEy5SX.js.map} +1 -1
  116. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-BWAMhn_x.js → sequenceDiagram-2WXFIKYE-k0w9WKAO.js} +4 -4
  117. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-BWAMhn_x.js.map → sequenceDiagram-2WXFIKYE-k0w9WKAO.js.map} +1 -1
  118. package/webapp/dist/assets/{stateDiagram-RAJIS63D--jsLD0Dg.js → stateDiagram-RAJIS63D-DRgdJrlx.js} +9 -9
  119. package/webapp/dist/assets/{stateDiagram-RAJIS63D--jsLD0Dg.js.map → stateDiagram-RAJIS63D-DRgdJrlx.js.map} +1 -1
  120. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DUG9vyI5.js → stateDiagram-v2-FVOUBMTO-edtkX9x6.js} +5 -5
  121. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DUG9vyI5.js.map → stateDiagram-v2-FVOUBMTO-edtkX9x6.js.map} +1 -1
  122. package/webapp/dist/assets/{timeline-definition-YZTLITO2-BROLp1hL.js → timeline-definition-YZTLITO2-D0zyXyNL.js} +3 -3
  123. package/webapp/dist/assets/{timeline-definition-YZTLITO2-BROLp1hL.js.map → timeline-definition-YZTLITO2-D0zyXyNL.js.map} +1 -1
  124. package/webapp/dist/assets/{treemap-KZPCXAKY-BXuIlbYo.js → treemap-KZPCXAKY-CglsYqbQ.js} +5 -5
  125. package/webapp/dist/assets/{treemap-KZPCXAKY-BXuIlbYo.js.map → treemap-KZPCXAKY-CglsYqbQ.js.map} +1 -1
  126. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BXWd8gBB.js → vennDiagram-LZ73GAT5-DsUizzvt.js} +2 -2
  127. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-BXWd8gBB.js.map → vennDiagram-LZ73GAT5-DsUizzvt.js.map} +1 -1
  128. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DR5z9o6h.js → xychartDiagram-JWTSCODW-DvYQ4zKY.js} +3 -3
  129. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DR5z9o6h.js.map → xychartDiagram-JWTSCODW-DvYQ4zKY.js.map} +1 -1
  130. package/webapp/dist/index.html +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-B3W6QTXQ.js","assets/graph-CYGALRuy.js","assets/_baseUniq-XCMW7z1Y.js","assets/layout-DaJO-1DW.js","assets/_basePickBy-CGhMqD96.js","assets/clone-DvlY9Sdn.js","assets/cose-bilkent-S5V4N54A-CtkGd0W6.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-gYpylqGb.js","assets/chunk-JSJVCQXG-Cg1ST73M.js","assets/flowDiagram-PKNHOUZH-D3cIOfGj.js","assets/chunk-FMBD7UC4-yZWCDzVz.js","assets/chunk-55IACEB6-CZf6oMWM.js","assets/chunk-KX2RTZJC-ByGtlX9q.js","assets/channel-BmQ3YyUn.js","assets/erDiagram-INFDFZHY-CuAhTGVU.js","assets/gitGraphDiagram-K3NZZRJ6-CiEaxACG.js","assets/chunk-4BX2VUAB-B5pwFRwA.js","assets/chunk-QZHKN3VN-2gX2qsHB.js","assets/treemap-KZPCXAKY-BXuIlbYo.js","assets/ganttDiagram-A5KZAMGK-CSFhVYXV.js","assets/linear-SWy2Cl7G.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-CiWJjQyU.js","assets/pieDiagram-SKSYHLDU-CVh3lLBA.js","assets/arc-B6fzk0T5.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-D0zAkVD7.js","assets/xychartDiagram-JWTSCODW-DR5z9o6h.js","assets/requirementDiagram-Z7DCOOCP--CTFD60w.js","assets/sequenceDiagram-2WXFIKYE-BWAMhn_x.js","assets/classDiagram-VBA2DB6C-B79Oe3Df.js","assets/chunk-WL4C6EOR-L-9bPNxS.js","assets/classDiagram-v2-RAHNMMFH-B79Oe3Df.js","assets/stateDiagram-RAJIS63D--jsLD0Dg.js","assets/chunk-NQ4KR5QH-DoXvfhSY.js","assets/stateDiagram-v2-FVOUBMTO-DUG9vyI5.js","assets/journeyDiagram-4ABVD52K-BBqwkA3d.js","assets/timeline-definition-YZTLITO2-BROLp1hL.js","assets/mindmap-definition-YRQLILUH-B_gNrT3l.js","assets/kanban-definition-K7BYSVSG-BS4GzDbo.js","assets/sankeyDiagram-WA2Y5GQK-XZnViaAX.js","assets/diagram-P4PSJMXO-CB5xXDup.js","assets/diagram-IFDJBPK2-C-PH_Yx3.js","assets/blockDiagram-WCTKOSBZ-Bp0nb8IZ.js","assets/architectureDiagram-2XIMDMQ5-DmSI_GUt.js","assets/diagram-E7M64L7V-B6-J_E5Q.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-WUuNYzcK.js","assets/graph-D5jmnb35.js","assets/_baseUniq-egNq6cCa.js","assets/layout-CLmOfwnS.js","assets/_basePickBy-C3SVVywm.js","assets/clone-BSCHnHfl.js","assets/cose-bilkent-S5V4N54A-CeQ1jAJJ.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-BOY_bQFP.js","assets/chunk-JSJVCQXG-CJ3DM4in.js","assets/flowDiagram-PKNHOUZH-D80nrZ3S.js","assets/chunk-FMBD7UC4-CTpuRfdB.js","assets/chunk-55IACEB6-zSjTFoCX.js","assets/chunk-KX2RTZJC-B97EakhO.js","assets/channel-CZ_X09H1.js","assets/erDiagram-INFDFZHY-Dl_6U5fV.js","assets/gitGraphDiagram-K3NZZRJ6-ifV-jkKL.js","assets/chunk-4BX2VUAB-BIwyAzZQ.js","assets/chunk-QZHKN3VN-D33FSIEb.js","assets/treemap-KZPCXAKY-CglsYqbQ.js","assets/ganttDiagram-A5KZAMGK-T3WdMrgj.js","assets/linear-DFAmViqi.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-C340CY5x.js","assets/pieDiagram-SKSYHLDU-U6_un5Sc.js","assets/arc-CASAlRvm.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-DmVJQItS.js","assets/xychartDiagram-JWTSCODW-DvYQ4zKY.js","assets/requirementDiagram-Z7DCOOCP-BkNhSY-g.js","assets/sequenceDiagram-2WXFIKYE-k0w9WKAO.js","assets/classDiagram-VBA2DB6C-BfLZmK48.js","assets/chunk-WL4C6EOR-C2InqFin.js","assets/classDiagram-v2-RAHNMMFH-BfLZmK48.js","assets/stateDiagram-RAJIS63D-DRgdJrlx.js","assets/chunk-NQ4KR5QH-5o1o5x0z.js","assets/stateDiagram-v2-FVOUBMTO-edtkX9x6.js","assets/journeyDiagram-4ABVD52K-Dvv3ypKA.js","assets/timeline-definition-YZTLITO2-D0zyXyNL.js","assets/mindmap-definition-YRQLILUH-Ce3_czeS.js","assets/kanban-definition-K7BYSVSG-D_rsetjW.js","assets/sankeyDiagram-WA2Y5GQK-E3UEy5SX.js","assets/diagram-P4PSJMXO-DjAYFRLv.js","assets/diagram-IFDJBPK2-cCeQqotA.js","assets/blockDiagram-WCTKOSBZ-D2UGGjic.js","assets/architectureDiagram-2XIMDMQ5-B6n5FQmS.js","assets/diagram-E7M64L7V-jOVCIExP.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);
@@ -460,6 +460,9 @@ function getUiStrings(language2) {
460
460
  snippetsSave: "保存",
461
461
  snippetsSaveFailed: "保存提示词模板失败",
462
462
  snippetsLoadFailed: "加载提示词模板失败",
463
+ snippetsMcpPreviewLoading: "正在加载 MCP 提示词预览…",
464
+ snippetsMcpPreviewFailed: "加载 MCP 提示词预览失败",
465
+ snippetsMcpPreviewMissingArgs: "填写必填参数后即可预览:",
463
466
  unauthorized: "未认证",
464
467
  save: "保存",
465
468
  send: "发送",
@@ -832,6 +835,9 @@ function getUiStrings(language2) {
832
835
  snippetsSave: "Save",
833
836
  snippetsSaveFailed: "Failed to save snippet",
834
837
  snippetsLoadFailed: "Failed to load snippets",
838
+ snippetsMcpPreviewLoading: "Loading MCP prompt preview...",
839
+ snippetsMcpPreviewFailed: "Failed to load MCP prompt preview",
840
+ snippetsMcpPreviewMissingArgs: "Fill required arguments to preview:",
835
841
  unauthorized: "Unauthorized",
836
842
  save: "Save",
837
843
  send: "Send",
@@ -98724,12 +98730,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
98724
98730
  registerLayoutLoaders([
98725
98731
  {
98726
98732
  name: "dagre",
98727
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-B3W6QTXQ.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98733
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-WUuNYzcK.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
98728
98734
  },
98729
98735
  ...[
98730
98736
  {
98731
98737
  name: "cose-bilkent",
98732
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-CtkGd0W6.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98738
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-CeQ1jAJJ.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
98733
98739
  }
98734
98740
  ]
98735
98741
  ]);
@@ -99169,7 +99175,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
99169
99175
  }, "detector");
99170
99176
  var loader = /* @__PURE__ */ __name(async () => {
99171
99177
  const { diagram: diagram2 } = await __vitePreload(async () => {
99172
- const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-gYpylqGb.js");
99178
+ const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-BOY_bQFP.js");
99173
99179
  return { diagram: diagram22 };
99174
99180
  }, true ? __vite__mapDeps([8,9]) : void 0);
99175
99181
  return { id: id$1, diagram: diagram2 };
@@ -99189,7 +99195,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
99189
99195
  }, "detector");
99190
99196
  var loader2 = /* @__PURE__ */ __name(async () => {
99191
99197
  const { diagram: diagram2 } = await __vitePreload(async () => {
99192
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D3cIOfGj.js");
99198
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D80nrZ3S.js");
99193
99199
  return { diagram: diagram22 };
99194
99200
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99195
99201
  return { id: id2, diagram: diagram2 };
@@ -99215,7 +99221,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
99215
99221
  }, "detector");
99216
99222
  var loader3 = /* @__PURE__ */ __name(async () => {
99217
99223
  const { diagram: diagram2 } = await __vitePreload(async () => {
99218
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D3cIOfGj.js");
99224
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D80nrZ3S.js");
99219
99225
  return { diagram: diagram22 };
99220
99226
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99221
99227
  return { id: id3, diagram: diagram2 };
@@ -99232,7 +99238,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
99232
99238
  }, "detector");
99233
99239
  var loader4 = /* @__PURE__ */ __name(async () => {
99234
99240
  const { diagram: diagram2 } = await __vitePreload(async () => {
99235
- const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-CuAhTGVU.js");
99241
+ const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-Dl_6U5fV.js");
99236
99242
  return { diagram: diagram22 };
99237
99243
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
99238
99244
  return { id: id4, diagram: diagram2 };
@@ -99249,7 +99255,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
99249
99255
  }, "detector");
99250
99256
  var loader5 = /* @__PURE__ */ __name(async () => {
99251
99257
  const { diagram: diagram2 } = await __vitePreload(async () => {
99252
- const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-CiEaxACG.js");
99258
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-ifV-jkKL.js");
99253
99259
  return { diagram: diagram22 };
99254
99260
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
99255
99261
  return { id: id5, diagram: diagram2 };
@@ -99266,7 +99272,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
99266
99272
  }, "detector");
99267
99273
  var loader6 = /* @__PURE__ */ __name(async () => {
99268
99274
  const { diagram: diagram2 } = await __vitePreload(async () => {
99269
- const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-CSFhVYXV.js");
99275
+ const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-T3WdMrgj.js");
99270
99276
  return { diagram: diagram22 };
99271
99277
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
99272
99278
  return { id: id6, diagram: diagram2 };
@@ -99283,7 +99289,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
99283
99289
  }, "detector");
99284
99290
  var loader7 = /* @__PURE__ */ __name(async () => {
99285
99291
  const { diagram: diagram2 } = await __vitePreload(async () => {
99286
- const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-CiWJjQyU.js");
99292
+ const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-C340CY5x.js");
99287
99293
  return { diagram: diagram22 };
99288
99294
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
99289
99295
  return { id: id7, diagram: diagram2 };
@@ -99299,7 +99305,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
99299
99305
  }, "detector");
99300
99306
  var loader8 = /* @__PURE__ */ __name(async () => {
99301
99307
  const { diagram: diagram2 } = await __vitePreload(async () => {
99302
- const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-CVh3lLBA.js");
99308
+ const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-U6_un5Sc.js");
99303
99309
  return { diagram: diagram22 };
99304
99310
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
99305
99311
  return { id: id8, diagram: diagram2 };
@@ -99315,7 +99321,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
99315
99321
  }, "detector");
99316
99322
  var loader9 = /* @__PURE__ */ __name(async () => {
99317
99323
  const { diagram: diagram2 } = await __vitePreload(async () => {
99318
- const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-D0zAkVD7.js");
99324
+ const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-DmVJQItS.js");
99319
99325
  return { diagram: diagram22 };
99320
99326
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
99321
99327
  return { id: id9, diagram: diagram2 };
@@ -99332,7 +99338,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
99332
99338
  }, "detector");
99333
99339
  var loader10 = /* @__PURE__ */ __name(async () => {
99334
99340
  const { diagram: diagram2 } = await __vitePreload(async () => {
99335
- const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-DR5z9o6h.js");
99341
+ const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-DvYQ4zKY.js");
99336
99342
  return { diagram: diagram22 };
99337
99343
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
99338
99344
  return { id: id10, diagram: diagram2 };
@@ -99349,7 +99355,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
99349
99355
  }, "detector");
99350
99356
  var loader11 = /* @__PURE__ */ __name(async () => {
99351
99357
  const { diagram: diagram2 } = await __vitePreload(async () => {
99352
- const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP--CTFD60w.js");
99358
+ const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-BkNhSY-g.js");
99353
99359
  return { diagram: diagram22 };
99354
99360
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
99355
99361
  return { id: id11, diagram: diagram2 };
@@ -99366,7 +99372,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
99366
99372
  }, "detector");
99367
99373
  var loader12 = /* @__PURE__ */ __name(async () => {
99368
99374
  const { diagram: diagram2 } = await __vitePreload(async () => {
99369
- const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-BWAMhn_x.js");
99375
+ const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-k0w9WKAO.js");
99370
99376
  return { diagram: diagram22 };
99371
99377
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
99372
99378
  return { id: id12, diagram: diagram2 };
@@ -99386,7 +99392,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
99386
99392
  }, "detector");
99387
99393
  var loader13 = /* @__PURE__ */ __name(async () => {
99388
99394
  const { diagram: diagram2 } = await __vitePreload(async () => {
99389
- const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-B79Oe3Df.js");
99395
+ const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-BfLZmK48.js");
99390
99396
  return { diagram: diagram22 };
99391
99397
  }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
99392
99398
  return { id: id13, diagram: diagram2 };
@@ -99406,7 +99412,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
99406
99412
  }, "detector");
99407
99413
  var loader14 = /* @__PURE__ */ __name(async () => {
99408
99414
  const { diagram: diagram2 } = await __vitePreload(async () => {
99409
- const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-B79Oe3Df.js");
99415
+ const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-BfLZmK48.js");
99410
99416
  return { diagram: diagram22 };
99411
99417
  }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
99412
99418
  return { id: id14, diagram: diagram2 };
@@ -99426,7 +99432,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
99426
99432
  }, "detector");
99427
99433
  var loader15 = /* @__PURE__ */ __name(async () => {
99428
99434
  const { diagram: diagram2 } = await __vitePreload(async () => {
99429
- const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D--jsLD0Dg.js");
99435
+ const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-DRgdJrlx.js");
99430
99436
  return { diagram: diagram22 };
99431
99437
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
99432
99438
  return { id: id15, diagram: diagram2 };
@@ -99449,7 +99455,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
99449
99455
  }, "detector");
99450
99456
  var loader16 = /* @__PURE__ */ __name(async () => {
99451
99457
  const { diagram: diagram2 } = await __vitePreload(async () => {
99452
- const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-DUG9vyI5.js");
99458
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-edtkX9x6.js");
99453
99459
  return { diagram: diagram22 };
99454
99460
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
99455
99461
  return { id: id16, diagram: diagram2 };
@@ -99466,7 +99472,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
99466
99472
  }, "detector");
99467
99473
  var loader17 = /* @__PURE__ */ __name(async () => {
99468
99474
  const { diagram: diagram2 } = await __vitePreload(async () => {
99469
- const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-BBqwkA3d.js");
99475
+ const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-Dvv3ypKA.js");
99470
99476
  return { diagram: diagram22 };
99471
99477
  }, true ? __vite__mapDeps([38,11,9,26]) : void 0);
99472
99478
  return { id: id17, diagram: diagram2 };
@@ -99536,7 +99542,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
99536
99542
  }, "detector");
99537
99543
  var loader18 = /* @__PURE__ */ __name(async () => {
99538
99544
  const { diagram: diagram2 } = await __vitePreload(async () => {
99539
- const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D3cIOfGj.js");
99545
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D80nrZ3S.js");
99540
99546
  return { diagram: diagram22 };
99541
99547
  }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99542
99548
  return { id: id18, diagram: diagram2 };
@@ -99553,7 +99559,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
99553
99559
  }, "detector");
99554
99560
  var loader19 = /* @__PURE__ */ __name(async () => {
99555
99561
  const { diagram: diagram2 } = await __vitePreload(async () => {
99556
- const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-BROLp1hL.js");
99562
+ const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-D0zyXyNL.js");
99557
99563
  return { diagram: diagram22 };
99558
99564
  }, true ? __vite__mapDeps([39,26]) : void 0);
99559
99565
  return { id: id19, diagram: diagram2 };
@@ -99570,7 +99576,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
99570
99576
  }, "detector");
99571
99577
  var loader20 = /* @__PURE__ */ __name(async () => {
99572
99578
  const { diagram: diagram2 } = await __vitePreload(async () => {
99573
- const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-B_gNrT3l.js");
99579
+ const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-Ce3_czeS.js");
99574
99580
  return { diagram: diagram22 };
99575
99581
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
99576
99582
  return { id: id20, diagram: diagram2 };
@@ -99587,7 +99593,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
99587
99593
  }, "detector");
99588
99594
  var loader21 = /* @__PURE__ */ __name(async () => {
99589
99595
  const { diagram: diagram2 } = await __vitePreload(async () => {
99590
- const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-BS4GzDbo.js");
99596
+ const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-D_rsetjW.js");
99591
99597
  return { diagram: diagram22 };
99592
99598
  }, true ? __vite__mapDeps([41,11]) : void 0);
99593
99599
  return { id: id21, diagram: diagram2 };
@@ -99604,7 +99610,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
99604
99610
  }, "detector");
99605
99611
  var loader22 = /* @__PURE__ */ __name(async () => {
99606
99612
  const { diagram: diagram2 } = await __vitePreload(async () => {
99607
- const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-XZnViaAX.js");
99613
+ const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-E3UEy5SX.js");
99608
99614
  return { diagram: diagram22 };
99609
99615
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
99610
99616
  return { id: id22, diagram: diagram2 };
@@ -99621,7 +99627,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
99621
99627
  }, "detector");
99622
99628
  var loader23 = /* @__PURE__ */ __name(async () => {
99623
99629
  const { diagram: diagram2 } = await __vitePreload(async () => {
99624
- const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-CB5xXDup.js");
99630
+ const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-DjAYFRLv.js");
99625
99631
  return { diagram: diagram22 };
99626
99632
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
99627
99633
  return { id: id23, diagram: diagram2 };
@@ -99637,7 +99643,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
99637
99643
  }, "detector");
99638
99644
  var loader24 = /* @__PURE__ */ __name(async () => {
99639
99645
  const { diagram: diagram2 } = await __vitePreload(async () => {
99640
- const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-C-PH_Yx3.js");
99646
+ const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-cCeQqotA.js");
99641
99647
  return { diagram: diagram22 };
99642
99648
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
99643
99649
  return { id: id24, diagram: diagram2 };
@@ -99653,7 +99659,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
99653
99659
  }, "detector");
99654
99660
  var loader25 = /* @__PURE__ */ __name(async () => {
99655
99661
  const { diagram: diagram2 } = await __vitePreload(async () => {
99656
- const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-Bp0nb8IZ.js");
99662
+ const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-D2UGGjic.js");
99657
99663
  return { diagram: diagram22 };
99658
99664
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
99659
99665
  return { id: id25, diagram: diagram2 };
@@ -99670,7 +99676,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
99670
99676
  }, "detector");
99671
99677
  var loader26 = /* @__PURE__ */ __name(async () => {
99672
99678
  const { diagram: diagram2 } = await __vitePreload(async () => {
99673
- const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-DmSI_GUt.js");
99679
+ const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-B6n5FQmS.js");
99674
99680
  return { diagram: diagram22 };
99675
99681
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
99676
99682
  return { id: id26, diagram: diagram2 };
@@ -99687,7 +99693,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
99687
99693
  }, "detector");
99688
99694
  var loader27 = /* @__PURE__ */ __name(async () => {
99689
99695
  const { diagram: diagram2 } = await __vitePreload(async () => {
99690
- const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-MlIIUO7o.js");
99696
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-Bu4RsELK.js");
99691
99697
  return { diagram: diagram22 };
99692
99698
  }, true ? [] : void 0);
99693
99699
  return { id: id27, diagram: diagram2 };
@@ -99703,7 +99709,7 @@ var detector28 = /* @__PURE__ */ __name((txt) => {
99703
99709
  }, "detector");
99704
99710
  var loader28 = /* @__PURE__ */ __name(async () => {
99705
99711
  const { diagram: diagram2 } = await __vitePreload(async () => {
99706
- const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-BXWd8gBB.js");
99712
+ const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-DsUizzvt.js");
99707
99713
  return { diagram: diagram22 };
99708
99714
  }, true ? [] : void 0);
99709
99715
  return { id: id28, diagram: diagram2 };
@@ -99720,7 +99726,7 @@ var detector29 = /* @__PURE__ */ __name((txt) => {
99720
99726
  }, "detector");
99721
99727
  var loader29 = /* @__PURE__ */ __name(async () => {
99722
99728
  const { diagram: diagram2 } = await __vitePreload(async () => {
99723
- const { diagram: diagram22 } = await import("./diagram-E7M64L7V-B6-J_E5Q.js");
99729
+ const { diagram: diagram22 } = await import("./diagram-E7M64L7V-jOVCIExP.js");
99724
99730
  return { diagram: diagram22 };
99725
99731
  }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
99726
99732
  return { id: id29, diagram: diagram2 };
@@ -110157,24 +110163,39 @@ class DomindsSnippetsPanel extends HTMLElement {
110157
110163
  this.draftContent = "";
110158
110164
  this.selectedSnippetReadonly = false;
110159
110165
  this.mcpPromptArgDrafts = {};
110166
+ this.snippetScrollTops = {};
110167
+ this.loadSeq = 0;
110168
+ this.mcpPreviewSeq = 0;
110169
+ this.mcpPreviewTimer = null;
110170
+ this.mcpPreviewState = { kind: "idle" };
110160
110171
  this.attachShadow({ mode: "open" });
110161
110172
  }
110162
110173
  connectedCallback() {
110163
- this.render();
110164
110174
  void this.load();
110165
110175
  }
110176
+ disconnectedCallback() {
110177
+ this.loadSeq += 1;
110178
+ this.mcpPreviewSeq += 1;
110179
+ this.clearMcpPreviewTimer();
110180
+ }
110166
110181
  setUiLanguage(language2) {
110182
+ if (this.uiLanguage === language2) return;
110167
110183
  this.uiLanguage = language2;
110168
- this.render();
110169
110184
  void this.load();
110170
110185
  }
110171
110186
  async load() {
110172
110187
  const t2 = getUiStrings(this.uiLanguage);
110188
+ const seq2 = this.loadSeq + 1;
110189
+ this.loadSeq = seq2;
110190
+ this.clearMcpPreviewTimer();
110191
+ this.mcpPreviewSeq += 1;
110192
+ this.mcpPreviewState = { kind: "idle" };
110173
110193
  this.state = { kind: "loading" };
110174
110194
  this.render();
110175
110195
  try {
110176
110196
  const api = getApiClient();
110177
110197
  const catalogResp = await api.getSnippetCatalog(this.uiLanguage);
110198
+ if (this.loadSeq !== seq2) return;
110178
110199
  if (!catalogResp.success && catalogResp.status === 401) {
110179
110200
  dispatchDomindsEvent(
110180
110201
  this,
@@ -110207,8 +110228,13 @@ class DomindsSnippetsPanel extends HTMLElement {
110207
110228
  return;
110208
110229
  }
110209
110230
  this.state = { kind: "ready", groups, selectedGroupKey: desiredKey };
110231
+ this.reconcileSelectionAfterCatalogLoad();
110210
110232
  this.render();
110233
+ if (this.getSelectedSnippet()?.source === "mcp_prompt") {
110234
+ void this.refreshMcpPromptPreview();
110235
+ }
110211
110236
  } catch (error2) {
110237
+ if (this.loadSeq !== seq2) return;
110212
110238
  this.state = {
110213
110239
  kind: "error",
110214
110240
  message: error2 instanceof Error ? error2.message : t2.snippetsLoadFailed
@@ -110216,6 +110242,44 @@ class DomindsSnippetsPanel extends HTMLElement {
110216
110242
  this.render();
110217
110243
  }
110218
110244
  }
110245
+ reconcileSelectionAfterCatalogLoad() {
110246
+ if (this.selectedSnippetId === null) return;
110247
+ const selected = this.getSelectedSnippet();
110248
+ if (!selected) {
110249
+ this.clearSelectedSnippetDraft();
110250
+ return;
110251
+ }
110252
+ this.selectedSnippetPath = typeof selected.path === "string" ? selected.path : null;
110253
+ this.selectedSnippetReadonly = selected.readonly === true || selected.source === "mcp_prompt";
110254
+ this.draftName = selected.name;
110255
+ this.draftFileName = this.deriveFileNameForEditing(selected);
110256
+ this.draftDescription = typeof selected.description === "string" ? selected.description : "";
110257
+ this.draftContent = selected.content;
110258
+ const promptArgs = {};
110259
+ for (const arg of selected.mcpPrompt?.arguments ?? []) {
110260
+ promptArgs[arg.name] = this.mcpPromptArgDrafts[arg.name] ?? "";
110261
+ }
110262
+ this.mcpPromptArgDrafts = promptArgs;
110263
+ this.mcpPreviewState = { kind: "idle" };
110264
+ }
110265
+ clearMcpPreviewTimer() {
110266
+ if (this.mcpPreviewTimer === null) return;
110267
+ window.clearTimeout(this.mcpPreviewTimer);
110268
+ this.mcpPreviewTimer = null;
110269
+ }
110270
+ clearSelectedSnippetDraft() {
110271
+ this.clearMcpPreviewTimer();
110272
+ this.mcpPreviewSeq += 1;
110273
+ this.selectedSnippetId = null;
110274
+ this.selectedSnippetPath = null;
110275
+ this.draftName = "";
110276
+ this.draftFileName = "";
110277
+ this.draftDescription = "";
110278
+ this.draftContent = "";
110279
+ this.selectedSnippetReadonly = false;
110280
+ this.mcpPromptArgDrafts = {};
110281
+ this.mcpPreviewState = { kind: "idle" };
110282
+ }
110219
110283
  emitInsertContent(content) {
110220
110284
  const normalized = typeof content === "string" ? content : "";
110221
110285
  if (normalized.trim() === "") return;
@@ -110240,18 +110304,22 @@ class DomindsSnippetsPanel extends HTMLElement {
110240
110304
  this.emitInsertContent(this.draftContent);
110241
110305
  return;
110242
110306
  }
110243
- const promptArguments = {};
110244
- for (const arg of selected.mcpPrompt.arguments ?? []) {
110245
- const value = this.mcpPromptArgDrafts[arg.name]?.trim() ?? "";
110246
- if (value !== "" || arg.required) {
110247
- promptArguments[arg.name] = value;
110248
- }
110307
+ const args = this.buildMcpPromptArgumentPayload(selected);
110308
+ if (args.kind === "blocked") {
110309
+ this.mcpPreviewState = {
110310
+ kind: "blocked",
110311
+ promptId: selected.mcpPrompt.promptId,
110312
+ missingArgs: args.missingArgs
110313
+ };
110314
+ this.draftContent = this.renderMcpPromptBlockedPreview(selected, args.missingArgs);
110315
+ this.patchPreviewDom();
110316
+ return;
110249
110317
  }
110250
110318
  try {
110251
110319
  const api = getApiClient();
110252
110320
  const resp = await api.renderMcpPromptSnippet({
110253
110321
  promptId: selected.mcpPrompt.promptId,
110254
- arguments: promptArguments
110322
+ arguments: args.arguments
110255
110323
  });
110256
110324
  if (!resp.success || !resp.data) {
110257
110325
  const message = resp.error ?? getUiStrings(this.uiLanguage).snippetsLoadFailed;
@@ -110274,19 +110342,110 @@ class DomindsSnippetsPanel extends HTMLElement {
110274
110342
  );
110275
110343
  }
110276
110344
  }
110345
+ buildMcpPromptArgumentPayload(snippet2) {
110346
+ const promptArguments = {};
110347
+ const missingArgs = [];
110348
+ for (const arg of snippet2.mcpPrompt?.arguments ?? []) {
110349
+ const value = this.mcpPromptArgDrafts[arg.name]?.trim() ?? "";
110350
+ if (value === "") {
110351
+ if (arg.required) missingArgs.push(arg.name);
110352
+ continue;
110353
+ }
110354
+ promptArguments[arg.name] = value;
110355
+ }
110356
+ if (missingArgs.length > 0) return { kind: "blocked", missingArgs };
110357
+ return { kind: "ready", arguments: promptArguments };
110358
+ }
110359
+ renderMcpPromptBlockedPreview(snippet2, missingArgs) {
110360
+ const t2 = getUiStrings(this.uiLanguage);
110361
+ const parts = [];
110362
+ if (typeof snippet2.description === "string" && snippet2.description.trim() !== "") {
110363
+ parts.push(`<!-- ${snippet2.description.trim()} -->`);
110364
+ }
110365
+ parts.push(`${t2.snippetsMcpPreviewMissingArgs} ${missingArgs.join(", ")}`);
110366
+ return parts.join("\n\n");
110367
+ }
110368
+ renderMcpPromptLoadingPreview(snippet2) {
110369
+ const t2 = getUiStrings(this.uiLanguage);
110370
+ const parts = [];
110371
+ if (typeof snippet2.description === "string" && snippet2.description.trim() !== "") {
110372
+ parts.push(`<!-- ${snippet2.description.trim()} -->`);
110373
+ }
110374
+ parts.push(t2.snippetsMcpPreviewLoading);
110375
+ return parts.join("\n\n");
110376
+ }
110377
+ renderMcpPromptErrorPreview(snippet2, message) {
110378
+ const t2 = getUiStrings(this.uiLanguage);
110379
+ const parts = [];
110380
+ if (typeof snippet2.description === "string" && snippet2.description.trim() !== "") {
110381
+ parts.push(`<!-- ${snippet2.description.trim()} -->`);
110382
+ }
110383
+ parts.push(`${t2.snippetsMcpPreviewFailed}: ${message}`);
110384
+ return parts.join("\n\n");
110385
+ }
110386
+ scheduleMcpPromptPreview() {
110387
+ this.clearMcpPreviewTimer();
110388
+ this.mcpPreviewTimer = window.setTimeout(() => {
110389
+ this.mcpPreviewTimer = null;
110390
+ void this.refreshMcpPromptPreview();
110391
+ }, 250);
110392
+ }
110393
+ async refreshMcpPromptPreview() {
110394
+ const selected = this.getSelectedSnippet();
110395
+ if (selected?.source !== "mcp_prompt" || !selected.mcpPrompt) {
110396
+ this.mcpPreviewState = { kind: "idle" };
110397
+ return;
110398
+ }
110399
+ const promptId = selected.mcpPrompt.promptId;
110400
+ const seq2 = this.mcpPreviewSeq + 1;
110401
+ this.mcpPreviewSeq = seq2;
110402
+ const args = this.buildMcpPromptArgumentPayload(selected);
110403
+ if (args.kind === "blocked") {
110404
+ this.mcpPreviewState = { kind: "blocked", promptId, missingArgs: args.missingArgs };
110405
+ this.draftContent = this.renderMcpPromptBlockedPreview(selected, args.missingArgs);
110406
+ this.patchPreviewDom();
110407
+ return;
110408
+ }
110409
+ this.mcpPreviewState = { kind: "loading", promptId, seq: seq2 };
110410
+ this.draftContent = this.renderMcpPromptLoadingPreview(selected);
110411
+ this.patchPreviewDom();
110412
+ try {
110413
+ const api = getApiClient();
110414
+ const resp = await api.renderMcpPromptSnippet({
110415
+ promptId,
110416
+ arguments: args.arguments
110417
+ });
110418
+ if (!resp.success || !resp.data) {
110419
+ const message = resp.error ?? getUiStrings(this.uiLanguage).snippetsMcpPreviewFailed;
110420
+ throw new Error(message);
110421
+ }
110422
+ if (!resp.data.success) {
110423
+ throw new Error(resp.data.error);
110424
+ }
110425
+ if (this.selectedSnippetId !== selected.id || this.mcpPreviewSeq !== seq2) return;
110426
+ this.mcpPreviewState = { kind: "ready", promptId, seq: seq2 };
110427
+ this.draftContent = resp.data.content;
110428
+ this.patchPreviewDom();
110429
+ } catch (error2) {
110430
+ if (this.selectedSnippetId !== selected.id || this.mcpPreviewSeq !== seq2) return;
110431
+ const message = error2 instanceof Error ? error2.message : getUiStrings(this.uiLanguage).snippetsMcpPreviewFailed;
110432
+ this.mcpPreviewState = { kind: "error", promptId, seq: seq2, message };
110433
+ this.draftContent = this.renderMcpPromptErrorPreview(selected, message);
110434
+ this.patchPreviewDom();
110435
+ }
110436
+ }
110277
110437
  selectSnippet(snippet2) {
110278
110438
  if (!snippet2) {
110279
- this.selectedSnippetId = null;
110280
- this.selectedSnippetPath = null;
110281
- this.draftName = "";
110282
- this.draftFileName = "";
110283
- this.draftDescription = "";
110284
- this.draftContent = "";
110285
- this.selectedSnippetReadonly = false;
110286
- this.mcpPromptArgDrafts = {};
110287
- this.render();
110439
+ const previousSnippetId2 = this.selectedSnippetId;
110440
+ this.clearSelectedSnippetDraft();
110441
+ this.patchSelectedSnippetDom(previousSnippetId2, null);
110442
+ this.patchEditorDom();
110288
110443
  return;
110289
110444
  }
110445
+ if (this.selectedSnippetId === snippet2.id) return;
110446
+ this.clearMcpPreviewTimer();
110447
+ this.mcpPreviewSeq += 1;
110448
+ const previousSnippetId = this.selectedSnippetId;
110290
110449
  this.selectedSnippetId = snippet2.id;
110291
110450
  this.selectedSnippetPath = typeof snippet2.path === "string" ? snippet2.path : null;
110292
110451
  this.selectedSnippetReadonly = snippet2.readonly === true || snippet2.source === "mcp_prompt";
@@ -110299,7 +110458,12 @@ class DomindsSnippetsPanel extends HTMLElement {
110299
110458
  promptArgs[arg.name] = "";
110300
110459
  }
110301
110460
  this.mcpPromptArgDrafts = promptArgs;
110302
- this.render();
110461
+ this.mcpPreviewState = { kind: "idle" };
110462
+ this.patchSelectedSnippetDom(previousSnippetId, snippet2.id);
110463
+ this.patchEditorDom();
110464
+ if (snippet2.source === "mcp_prompt") {
110465
+ void this.refreshMcpPromptPreview();
110466
+ }
110303
110467
  }
110304
110468
  deriveFileNameForEditing(snippet2) {
110305
110469
  const p2 = typeof snippet2.path === "string" ? snippet2.path : "";
@@ -110339,49 +110503,47 @@ class DomindsSnippetsPanel extends HTMLElement {
110339
110503
  if (!resp.data.success) {
110340
110504
  throw new Error(resp.data.error);
110341
110505
  }
110342
- this.selectedSnippetId = null;
110343
- this.selectedSnippetPath = null;
110344
- this.draftName = "";
110345
- this.draftFileName = "";
110346
- this.draftDescription = "";
110347
- this.draftContent = "";
110348
- this.selectedSnippetReadonly = false;
110349
- this.mcpPromptArgDrafts = {};
110506
+ this.clearSelectedSnippetDraft();
110350
110507
  await this.load();
110351
110508
  } catch (error2) {
110352
110509
  const msg = error2 instanceof Error ? error2.message : t2.snippetsSaveFailed;
110353
- this.state = { kind: "error", message: msg };
110354
- this.render();
110510
+ dispatchDomindsEvent(
110511
+ this,
110512
+ "ui-toast",
110513
+ { message: msg, kind: "error" },
110514
+ {
110515
+ bubbles: true,
110516
+ composed: true
110517
+ }
110518
+ );
110355
110519
  }
110356
110520
  }
110357
110521
  onSelectGroup(key) {
110358
110522
  const state2 = this.state;
110359
110523
  if (state2.kind !== "ready") return;
110360
110524
  if (key === state2.selectedGroupKey) return;
110525
+ const previousKey = state2.selectedGroupKey;
110526
+ this.captureSnippetScroll();
110361
110527
  this.lastSelectedGroupKey = key;
110362
110528
  this.state = { ...state2, selectedGroupKey: key };
110363
- this.selectedSnippetId = null;
110364
- this.selectedSnippetPath = null;
110365
- this.draftName = "";
110366
- this.draftFileName = "";
110367
- this.draftDescription = "";
110368
- this.draftContent = "";
110369
- this.selectedSnippetReadonly = false;
110370
- this.mcpPromptArgDrafts = {};
110371
- this.render();
110529
+ this.clearSelectedSnippetDraft();
110530
+ this.patchSelectedGroupDom(previousKey, key);
110531
+ this.patchSnippetListDom();
110532
+ this.patchEditorDom();
110372
110533
  }
110373
110534
  startCreateGroup() {
110535
+ if (this.creatingGroup) return;
110374
110536
  this.creatingGroup = true;
110375
110537
  this.newGroupDraftTitle = "";
110376
110538
  this.newGroupPendingFocus = true;
110377
- this.render();
110539
+ this.patchCreateGroupInputDom();
110378
110540
  }
110379
110541
  cancelCreateGroup() {
110380
110542
  if (!this.creatingGroup) return;
110381
110543
  this.creatingGroup = false;
110382
110544
  this.newGroupDraftTitle = "";
110383
110545
  this.newGroupPendingFocus = false;
110384
- this.render();
110546
+ this.patchCreateGroupInputDom();
110385
110547
  }
110386
110548
  async confirmCreateGroup() {
110387
110549
  const title = this.newGroupDraftTitle.trim();
@@ -110404,14 +110566,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110404
110566
  this.newGroupDraftTitle = "";
110405
110567
  this.newGroupPendingFocus = false;
110406
110568
  this.lastSelectedGroupKey = payload.groupKey;
110407
- this.selectedSnippetId = null;
110408
- this.selectedSnippetPath = null;
110409
- this.draftName = "";
110410
- this.draftFileName = "";
110411
- this.draftDescription = "";
110412
- this.draftContent = "";
110413
- this.selectedSnippetReadonly = false;
110414
- this.mcpPromptArgDrafts = {};
110569
+ this.clearSelectedSnippetDraft();
110415
110570
  await this.load();
110416
110571
  } catch (error2) {
110417
110572
  const message = error2 instanceof Error ? error2.message : t2.snippetsLoadFailed;
@@ -110425,7 +110580,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110425
110580
  }
110426
110581
  );
110427
110582
  this.newGroupPendingFocus = true;
110428
- this.render();
110583
+ this.patchCreateGroupInputDom();
110429
110584
  }
110430
110585
  }
110431
110586
  getSelectedGroupSnippets() {
@@ -110482,6 +110637,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110482
110637
  render() {
110483
110638
  const root2 = this.shadowRoot;
110484
110639
  if (!root2) return;
110640
+ this.captureSnippetScroll();
110485
110641
  const t2 = getUiStrings(this.uiLanguage);
110486
110642
  const state2 = this.state;
110487
110643
  let bodyHtml = "";
@@ -110495,27 +110651,21 @@ class DomindsSnippetsPanel extends HTMLElement {
110495
110651
  const editorTitle = this.selectedSnippetId === null ? t2.snippetsNewTitle : t2.snippetsEditorTitle;
110496
110652
  const selectedSnippet = this.getSelectedSnippet();
110497
110653
  const mcpPromptArgs = selectedSnippet?.mcpPrompt?.arguments ?? [];
110498
- const mcpPromptArgsHtml = selectedSnippet?.source === "mcp_prompt" && mcpPromptArgs.length > 0 ? `<div class="form-row args-row">
110499
- ${mcpPromptArgs.map((arg) => {
110500
- const value = this.mcpPromptArgDrafts[arg.name] ?? "";
110501
- const required = arg.required ? " *" : "";
110502
- return `<label class="label arg">
110503
- <div class="label-text">${this.escapeHtml(arg.name + required)}</div>
110504
- <input class="input mcp-arg" data-arg="${this.escapeHtml(arg.name)}" type="text" value="${this.escapeHtml(value)}" />
110505
- </label>`;
110506
- }).join("")}
110507
- </div>` : "";
110654
+ const mcpPromptArgsHtml = selectedSnippet?.source === "mcp_prompt" && mcpPromptArgs.length > 0 ? this.renderMcpPromptArgsHtml(mcpPromptArgs) : "";
110655
+ const hasPromptArgs = mcpPromptArgsHtml !== "";
110656
+ const previewBusy = this.mcpPreviewState.kind === "loading";
110508
110657
  bodyHtml = `
110509
110658
  ${this.renderGroupTabs()}
110510
110659
  <div class="layout">
110511
110660
  <div class="pane left" aria-label="${this.escapeHtml(groupTitle)}">
110512
- <div class="pane-scroll">
110661
+ <div class="pane-scroll" data-scroll-group="${this.escapeHtml(state2.selectedGroupKey)}">
110513
110662
  <div class="section section-snippets">${this.renderSnippets(snippets2)}</div>
110514
110663
  </div>
110515
110664
  </div>
110516
110665
  <div class="pane right">
110517
- <div class="section section-editor">
110518
- <textarea id="snippet-content" class="textarea" spellcheck="false" ${this.selectedSnippetReadonly ? "readonly" : ""}>${this.escapeHtml(this.draftContent)}</textarea>
110666
+ <div class="section section-editor ${hasPromptArgs ? "with-args" : ""}">
110667
+ ${mcpPromptArgsHtml}
110668
+ <textarea id="snippet-content" class="textarea ${previewBusy ? "loading" : ""}" spellcheck="false" ${this.selectedSnippetReadonly ? "readonly" : ""}>${this.escapeHtml(this.draftContent)}</textarea>
110519
110669
  <div class="actions">
110520
110670
  <div class="actions-left">
110521
110671
  <span class="section-title section-title-inline">${this.escapeHtml(editorTitle)}</span>
@@ -110541,9 +110691,8 @@ class DomindsSnippetsPanel extends HTMLElement {
110541
110691
  <label class="label description">
110542
110692
  <div class="label-text">${this.escapeHtml(t2.snippetsDescriptionLabel)}</div>
110543
110693
  <input id="new-description" class="input" type="text" value="${this.escapeHtml(this.draftDescription)}" />
110544
- </label>
110545
- </div>
110546
- ${mcpPromptArgsHtml}
110694
+ </label>
110695
+ </div>
110547
110696
  </div>
110548
110697
  </div>
110549
110698
  </div>
@@ -110563,20 +110712,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110563
110712
  }
110564
110713
  const newGroupInput = root2.querySelector("#new-group-input");
110565
110714
  if (newGroupInput instanceof HTMLInputElement) {
110566
- newGroupInput.addEventListener("input", () => {
110567
- this.newGroupDraftTitle = newGroupInput.value;
110568
- });
110569
- newGroupInput.addEventListener("keydown", (e2) => {
110570
- if (e2.key === "Escape") {
110571
- e2.preventDefault();
110572
- this.cancelCreateGroup();
110573
- return;
110574
- }
110575
- if (e2.key === "Enter") {
110576
- e2.preventDefault();
110577
- void this.confirmCreateGroup();
110578
- }
110579
- });
110715
+ this.bindNewGroupInput(newGroupInput);
110580
110716
  }
110581
110717
  if (this.newGroupPendingFocus && newGroupInput instanceof HTMLInputElement) {
110582
110718
  this.newGroupPendingFocus = false;
@@ -110585,28 +110721,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110585
110721
  newGroupInput.select();
110586
110722
  });
110587
110723
  }
110588
- root2.querySelectorAll(".snippet[data-id]").forEach((card2) => {
110589
- card2.addEventListener("click", (e2) => {
110590
- const target = e2.target;
110591
- if (target instanceof Element && target.closest("button")) return;
110592
- if (this.state.kind !== "ready") return;
110593
- const id30 = card2.getAttribute("data-id");
110594
- if (typeof id30 !== "string" || id30 === "") return;
110595
- const all = this.state.groups.flatMap((g2) => g2.templates);
110596
- const snippet2 = all.find((x2) => x2.id === id30);
110597
- this.selectSnippet(snippet2 ?? null);
110598
- });
110599
- card2.addEventListener("keydown", (e2) => {
110600
- if (e2.key !== "Enter" && e2.key !== " ") return;
110601
- e2.preventDefault();
110602
- if (this.state.kind !== "ready") return;
110603
- const id30 = card2.getAttribute("data-id");
110604
- if (typeof id30 !== "string" || id30 === "") return;
110605
- const all = this.state.groups.flatMap((g2) => g2.templates);
110606
- const snippet2 = all.find((x2) => x2.id === id30);
110607
- this.selectSnippet(snippet2 ?? null);
110608
- });
110609
- });
110724
+ this.bindSnippetCards();
110610
110725
  root2.querySelectorAll("button.group").forEach((btn) => {
110611
110726
  btn.addEventListener("click", () => {
110612
110727
  const key = btn.dataset.group;
@@ -110635,14 +110750,7 @@ class DomindsSnippetsPanel extends HTMLElement {
110635
110750
  this.updateActionButtons();
110636
110751
  });
110637
110752
  }
110638
- root2.querySelectorAll("input.mcp-arg").forEach((input) => {
110639
- input.addEventListener("input", () => {
110640
- const argName = input.dataset.arg;
110641
- if (typeof argName !== "string" || argName === "") return;
110642
- this.mcpPromptArgDrafts = { ...this.mcpPromptArgDrafts, [argName]: input.value };
110643
- this.updateActionButtons();
110644
- });
110645
- });
110753
+ this.bindMcpArgInputs();
110646
110754
  const contentInput = root2.querySelector("#snippet-content");
110647
110755
  if (contentInput instanceof HTMLTextAreaElement) {
110648
110756
  contentInput.addEventListener("input", () => {
@@ -110663,6 +110771,257 @@ class DomindsSnippetsPanel extends HTMLElement {
110663
110771
  });
110664
110772
  }
110665
110773
  this.updateActionButtons();
110774
+ this.restoreSnippetScroll();
110775
+ }
110776
+ patchPreviewDom() {
110777
+ const root2 = this.shadowRoot;
110778
+ if (!root2) return;
110779
+ const textarea = root2.querySelector("#snippet-content");
110780
+ if (textarea instanceof HTMLTextAreaElement && textarea.value !== this.draftContent) {
110781
+ textarea.value = this.draftContent;
110782
+ }
110783
+ if (textarea instanceof HTMLTextAreaElement) {
110784
+ textarea.classList.toggle("loading", this.mcpPreviewState.kind === "loading");
110785
+ }
110786
+ this.updateActionButtons();
110787
+ }
110788
+ patchSelectedSnippetDom(previousId, nextId) {
110789
+ const root2 = this.shadowRoot;
110790
+ if (!root2) return;
110791
+ if (previousId !== null) {
110792
+ const previous = root2.querySelector(
110793
+ `.snippet[data-id="${CSS.escape(previousId)}"]`
110794
+ );
110795
+ if (previous instanceof HTMLElement) previous.classList.remove("selected");
110796
+ }
110797
+ if (nextId !== null) {
110798
+ const next2 = root2.querySelector(`.snippet[data-id="${CSS.escape(nextId)}"]`);
110799
+ if (next2 instanceof HTMLElement) next2.classList.add("selected");
110800
+ }
110801
+ }
110802
+ patchSelectedGroupDom(previousKey, nextKey) {
110803
+ const root2 = this.shadowRoot;
110804
+ if (!root2) return;
110805
+ const previous = root2.querySelector(
110806
+ `button.group[data-group="${CSS.escape(previousKey)}"]`
110807
+ );
110808
+ if (previous instanceof HTMLButtonElement) previous.classList.remove("active");
110809
+ const next2 = root2.querySelector(
110810
+ `button.group[data-group="${CSS.escape(nextKey)}"]`
110811
+ );
110812
+ if (next2 instanceof HTMLButtonElement) next2.classList.add("active");
110813
+ }
110814
+ patchSnippetListDom() {
110815
+ const root2 = this.shadowRoot;
110816
+ if (!root2) return;
110817
+ const pane = root2.querySelector(".pane.left");
110818
+ const scroll = root2.querySelector(".pane-scroll");
110819
+ const section = root2.querySelector(".section-snippets");
110820
+ if (!(pane instanceof HTMLElement) || !(scroll instanceof HTMLElement) || !(section instanceof HTMLElement) || this.state.kind !== "ready") {
110821
+ this.render();
110822
+ return;
110823
+ }
110824
+ const state2 = this.state;
110825
+ const groupTitle = state2.groups.find((g2) => g2.key === state2.selectedGroupKey)?.titleI18n[this.uiLanguage] ?? state2.selectedGroupKey;
110826
+ pane.setAttribute("aria-label", groupTitle);
110827
+ scroll.dataset.scrollGroup = state2.selectedGroupKey;
110828
+ section.innerHTML = this.renderSnippets(this.getSelectedGroupSnippets());
110829
+ this.bindSnippetCards();
110830
+ this.restoreSnippetScroll();
110831
+ }
110832
+ patchEditorDom() {
110833
+ const root2 = this.shadowRoot;
110834
+ if (!root2) return;
110835
+ const editor = root2.querySelector(".section-editor");
110836
+ if (!(editor instanceof HTMLElement)) {
110837
+ this.render();
110838
+ return;
110839
+ }
110840
+ const selectedSnippet = this.getSelectedSnippet();
110841
+ const mcpPromptArgs = selectedSnippet?.mcpPrompt?.arguments ?? [];
110842
+ const hasPromptArgs = selectedSnippet?.source === "mcp_prompt" && mcpPromptArgs.length > 0;
110843
+ editor.classList.toggle("with-args", hasPromptArgs);
110844
+ const existingArgs = editor.querySelector(".args-row");
110845
+ const nextArgsSignature = hasPromptArgs ? this.getMcpPromptArgsSignature(mcpPromptArgs) : "";
110846
+ const argsHtml = hasPromptArgs ? this.renderMcpPromptArgsHtml(mcpPromptArgs) : "";
110847
+ if (existingArgs instanceof HTMLElement) {
110848
+ if (argsHtml === "") {
110849
+ existingArgs.remove();
110850
+ } else if (existingArgs.dataset.argsSignature === nextArgsSignature) {
110851
+ this.patchMcpPromptArgValues(existingArgs);
110852
+ } else {
110853
+ existingArgs.outerHTML = argsHtml;
110854
+ }
110855
+ } else if (argsHtml !== "") {
110856
+ editor.insertAdjacentHTML("afterbegin", argsHtml);
110857
+ }
110858
+ this.bindMcpArgInputs();
110859
+ const textarea = root2.querySelector("#snippet-content");
110860
+ if (textarea instanceof HTMLTextAreaElement) {
110861
+ textarea.readOnly = this.selectedSnippetReadonly;
110862
+ textarea.value = this.draftContent;
110863
+ textarea.classList.toggle("loading", this.mcpPreviewState.kind === "loading");
110864
+ }
110865
+ const title = root2.querySelector(".section-title-inline");
110866
+ if (title instanceof HTMLElement) {
110867
+ title.textContent = this.selectedSnippetId === null ? getUiStrings(this.uiLanguage).snippetsNewTitle : getUiStrings(this.uiLanguage).snippetsEditorTitle;
110868
+ }
110869
+ const fileNameInput = root2.querySelector("#new-filename");
110870
+ if (fileNameInput instanceof HTMLInputElement) fileNameInput.value = this.draftFileName;
110871
+ const nameInput = root2.querySelector("#new-name");
110872
+ if (nameInput instanceof HTMLInputElement) nameInput.value = this.draftName;
110873
+ const descInput = root2.querySelector("#new-description");
110874
+ if (descInput instanceof HTMLInputElement) descInput.value = this.draftDescription;
110875
+ this.updateActionButtons();
110876
+ }
110877
+ patchCreateGroupInputDom() {
110878
+ const root2 = this.shadowRoot;
110879
+ if (!root2) return;
110880
+ const buttons = root2.querySelector(".groups-buttons");
110881
+ if (!(buttons instanceof HTMLElement)) {
110882
+ this.render();
110883
+ return;
110884
+ }
110885
+ const existing = root2.querySelector("#new-group-input");
110886
+ if (!this.creatingGroup) {
110887
+ const wrapper = existing?.closest(".group-input");
110888
+ if (wrapper instanceof HTMLElement) wrapper.remove();
110889
+ return;
110890
+ }
110891
+ if (!(existing instanceof HTMLInputElement)) {
110892
+ const addGroupBtn = root2.querySelector("#add-group");
110893
+ const inputHtml = `<span class="group group-input" aria-label="new-group">
110894
+ <input id="new-group-input" class="group-input-el" type="text" value="${this.escapeHtml(
110895
+ this.newGroupDraftTitle
110896
+ )}" />
110897
+ </span>`;
110898
+ if (addGroupBtn instanceof HTMLButtonElement) {
110899
+ addGroupBtn.insertAdjacentHTML("beforebegin", inputHtml);
110900
+ } else {
110901
+ buttons.insertAdjacentHTML("beforeend", inputHtml);
110902
+ }
110903
+ }
110904
+ const input = root2.querySelector("#new-group-input");
110905
+ if (!(input instanceof HTMLInputElement)) return;
110906
+ this.bindNewGroupInput(input);
110907
+ if (!this.newGroupPendingFocus) return;
110908
+ this.newGroupPendingFocus = false;
110909
+ queueMicrotask(() => {
110910
+ input.focus();
110911
+ input.select();
110912
+ });
110913
+ }
110914
+ renderMcpPromptArgsHtml(mcpPromptArgs) {
110915
+ if (!mcpPromptArgs || mcpPromptArgs.length === 0) return "";
110916
+ return `<div class="form-row args-row" data-args-signature="${this.escapeHtml(
110917
+ this.getMcpPromptArgsSignature(mcpPromptArgs)
110918
+ )}">
110919
+ ${this.getOrderedMcpPromptArgs(mcpPromptArgs).map((arg) => {
110920
+ const value = this.mcpPromptArgDrafts[arg.name] ?? "";
110921
+ const required = arg.required ? " *" : "";
110922
+ const description = typeof arg.description === "string" && arg.description.trim() !== "" ? arg.description : "";
110923
+ return `<label class="label arg">
110924
+ <div class="label-text">${this.escapeHtml(arg.name + required)}</div>
110925
+ <input class="input mcp-arg" data-arg="${this.escapeHtml(arg.name)}" type="text" value="${this.escapeHtml(value)}" ${description ? `placeholder="${this.escapeHtml(description)}" title="${this.escapeHtml(description)}"` : ""} />
110926
+ </label>`;
110927
+ }).join("")}
110928
+ </div>`;
110929
+ }
110930
+ getOrderedMcpPromptArgs(mcpPromptArgs) {
110931
+ return [...mcpPromptArgs].sort((left, right) => {
110932
+ if (left.required === right.required) return 0;
110933
+ return left.required ? -1 : 1;
110934
+ });
110935
+ }
110936
+ getMcpPromptArgsSignature(mcpPromptArgs) {
110937
+ return this.getOrderedMcpPromptArgs(mcpPromptArgs).map((arg) => {
110938
+ const description = typeof arg.description === "string" && arg.description.trim() !== "" ? arg.description : "";
110939
+ return [arg.name, arg.required === true, description];
110940
+ }).map((entry) => JSON.stringify(entry)).join("|");
110941
+ }
110942
+ patchMcpPromptArgValues(argsRow) {
110943
+ argsRow.querySelectorAll("input.mcp-arg").forEach((input) => {
110944
+ const argName = input.dataset.arg;
110945
+ if (typeof argName !== "string" || argName === "") return;
110946
+ const nextValue = this.mcpPromptArgDrafts[argName] ?? "";
110947
+ if (input.value !== nextValue) input.value = nextValue;
110948
+ });
110949
+ }
110950
+ bindMcpArgInputs() {
110951
+ const root2 = this.shadowRoot;
110952
+ if (!root2) return;
110953
+ root2.querySelectorAll("input.mcp-arg").forEach((input) => {
110954
+ if (input.dataset.bound === "true") return;
110955
+ input.dataset.bound = "true";
110956
+ input.addEventListener("input", () => {
110957
+ const argName = input.dataset.arg;
110958
+ if (typeof argName !== "string" || argName === "") return;
110959
+ this.mcpPromptArgDrafts = { ...this.mcpPromptArgDrafts, [argName]: input.value };
110960
+ this.updateActionButtons();
110961
+ this.scheduleMcpPromptPreview();
110962
+ });
110963
+ });
110964
+ }
110965
+ bindNewGroupInput(input) {
110966
+ if (input.dataset.bound === "true") return;
110967
+ input.dataset.bound = "true";
110968
+ input.addEventListener("input", () => {
110969
+ this.newGroupDraftTitle = input.value;
110970
+ });
110971
+ input.addEventListener("keydown", (e2) => {
110972
+ if (e2.key === "Escape") {
110973
+ e2.preventDefault();
110974
+ this.cancelCreateGroup();
110975
+ return;
110976
+ }
110977
+ if (e2.key === "Enter") {
110978
+ e2.preventDefault();
110979
+ void this.confirmCreateGroup();
110980
+ }
110981
+ });
110982
+ }
110983
+ bindSnippetCards() {
110984
+ const root2 = this.shadowRoot;
110985
+ if (!root2) return;
110986
+ root2.querySelectorAll(".snippet[data-id]").forEach((card2) => {
110987
+ if (card2.dataset.bound === "true") return;
110988
+ card2.dataset.bound = "true";
110989
+ card2.addEventListener("click", (e2) => {
110990
+ const target = e2.target;
110991
+ if (target instanceof Element && target.closest("button")) return;
110992
+ this.selectSnippetFromCard(card2);
110993
+ });
110994
+ card2.addEventListener("keydown", (e2) => {
110995
+ if (e2.key !== "Enter" && e2.key !== " ") return;
110996
+ e2.preventDefault();
110997
+ this.selectSnippetFromCard(card2);
110998
+ });
110999
+ });
111000
+ }
111001
+ selectSnippetFromCard(card2) {
111002
+ if (this.state.kind !== "ready") return;
111003
+ const id30 = card2.getAttribute("data-id");
111004
+ if (typeof id30 !== "string" || id30 === "") return;
111005
+ const all = this.state.groups.flatMap((g2) => g2.templates);
111006
+ const snippet2 = all.find((x2) => x2.id === id30);
111007
+ this.selectSnippet(snippet2 ?? null);
111008
+ }
111009
+ captureSnippetScroll() {
111010
+ const root2 = this.shadowRoot;
111011
+ if (!root2) return;
111012
+ const scroll = root2.querySelector(".pane-scroll");
111013
+ if (!(scroll instanceof HTMLElement)) return;
111014
+ const groupKey = scroll.dataset.scrollGroup;
111015
+ if (typeof groupKey !== "string" || groupKey === "") return;
111016
+ this.snippetScrollTops = { ...this.snippetScrollTops, [groupKey]: scroll.scrollTop };
111017
+ }
111018
+ restoreSnippetScroll() {
111019
+ const root2 = this.shadowRoot;
111020
+ if (!root2 || this.state.kind !== "ready") return;
111021
+ const scroll = root2.querySelector(".pane-scroll");
111022
+ if (!(scroll instanceof HTMLElement)) return;
111023
+ const saved = this.snippetScrollTops[this.state.selectedGroupKey];
111024
+ scroll.scrollTop = typeof saved === "number" ? saved : 0;
110666
111025
  }
110667
111026
  updateActionButtons() {
110668
111027
  const root2 = this.shadowRoot;
@@ -110731,7 +111090,9 @@ class DomindsSnippetsPanel extends HTMLElement {
110731
111090
  .input{border:1px solid var(--color-border-primary,#e2e8f0);border-radius:6px;padding:2px 8px;font-size: var(--dominds-font-size-sm, 12px);background:var(--dominds-bg,#fff);color:var(--dominds-fg,#0f172a);}
110732
111091
  .form-row .input{width:100%;box-sizing:border-box;}
110733
111092
  .textarea{border:1px solid var(--color-border-primary,#e2e8f0);border-radius:6px;padding:3px 8px;font-size:12px;min-height:120px;height:100%;width:100%;box-sizing:border-box;resize:vertical;background:var(--dominds-bg,#fff);color:var(--dominds-fg,#0f172a);font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;}
111093
+ .textarea.loading{color:var(--color-fg-tertiary,#64748b);}
110734
111094
  .section-editor{padding:6px 8px;display:grid;grid-template-rows:minmax(120px,1fr) auto auto;gap:6px;flex:1;min-height:0;}
111095
+ .section-editor.with-args{grid-template-rows:auto minmax(120px,1fr) auto auto;}
110735
111096
  .actions{display:flex;align-items:center;justify-content:space-between;gap:6px;}
110736
111097
  .actions-left,.actions-right{display:flex;align-items:center;gap:6px;}
110737
111098
  .btn{appearance:none;border:1px solid var(--color-border-primary,#e2e8f0);background:var(--dominds-bg,#fff);color:var(--color-fg-secondary,#475569);border-radius:999px;padding:2px 8px;font-size: var(--dominds-font-size-sm, 12px);cursor:pointer;}
@@ -128700,4 +129061,4 @@ export {
128700
129061
  purify as y,
128701
129062
  clear$2 as z
128702
129063
  };
128703
- //# sourceMappingURL=index-BTazqQrV.js.map
129064
+ //# sourceMappingURL=index-CGbZlct2.js.map