@museagent/cli 1.0.40 → 1.0.42

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 (600) hide show
  1. package/README.md +625 -38
  2. package/bin/stt/requirements.txt +7 -19
  3. package/bin/stt/stt_server.py +18 -93
  4. package/install.cjs +156 -2
  5. package/llms.txt +34 -7
  6. package/package.json +9 -9
  7. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +1 -0
  8. package/web/dist/assets/AutomationView-CO-jVhee.js +3 -0
  9. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +8 -0
  10. package/web/dist/assets/ChartsView-CAc37Sam.js +1 -0
  11. package/web/dist/assets/ConnectorsView-DP4bbh58.js +1 -0
  12. package/web/dist/assets/FileTreeView-DwsYfssO.js +1 -0
  13. package/web/dist/assets/HookConfigView-uFsqieii.js +2 -0
  14. package/web/dist/assets/InputArea-BY8quOiH.js +14 -0
  15. package/web/dist/assets/MemoryView-Bgd_lcTf.js +1 -0
  16. package/web/dist/assets/MessageBubble-CCTRbIMZ.css +1 -0
  17. package/web/dist/assets/MessageBubble-CVGXupVH.js +453 -0
  18. package/web/dist/assets/ModelsView-B271UV9L.js +1 -0
  19. package/web/dist/assets/PluginsView-Dz4fqQR1.js +2 -0
  20. package/web/dist/assets/ProjectsView-DF-YCV8y.js +1 -0
  21. package/web/dist/assets/SessionGrid-BIREstN2.js +4 -0
  22. package/web/dist/assets/SessionGrid-Bk5CAXEn.css +1 -0
  23. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +4 -0
  24. package/web/dist/assets/SkillsView-CH2ghYL2.js +1 -0
  25. package/web/dist/assets/TemplatesTab-BGe7_67s.js +1 -0
  26. package/web/dist/assets/ThreadsView-XditIHZ4.js +2 -0
  27. package/web/dist/assets/ToolsView-BBzsFdVZ.js +1 -0
  28. package/web/dist/assets/abnfDiagram-WEYOIA3C-DGUPHfRO.js +1 -0
  29. package/web/dist/assets/agentIconSet-B5GUQwel.js +1 -0
  30. package/web/dist/assets/api-plEYhRn0.js +1 -0
  31. package/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  32. package/web/dist/assets/architecture-WOLXFQ4H-BUERx_-B.js +1 -0
  33. package/web/dist/assets/architectureDiagram-ZHVYKT53-BPsQL7O5.js +36 -0
  34. package/web/dist/assets/array-BifhSqXX.js +1 -0
  35. package/web/dist/assets/blockDiagram-RJAE7QA3-pB7EXp6p.js +140 -0
  36. package/web/dist/assets/c4Diagram-XDPPPE54-BnPeCq_L.js +38 -0
  37. package/web/dist/assets/channel-CSrLW66f.js +1 -0
  38. package/web/dist/assets/channelMeta-BGQXQxgj.js +1 -0
  39. package/web/dist/assets/chunk-2E7WHVMD-xX282MrC.js +88 -0
  40. package/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  41. package/web/dist/assets/chunk-4EMNKR2T-BAQDLVqt.js +1 -0
  42. package/web/dist/assets/chunk-55XCU76K-BwAE3Eqq.js +1 -0
  43. package/web/dist/assets/{chunk-5VM5RSS4-CYl9mwa-.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  44. package/web/dist/assets/chunk-7S6XSTFO-DwwaClMo.js +2 -0
  45. package/web/dist/assets/chunk-AQDTSKZB-DHG5Km_p.js +72 -0
  46. package/web/dist/assets/chunk-DSNLSHJZ-a6-B52h-.js +129 -0
  47. package/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  48. package/web/dist/assets/chunk-HAGFOTED-DZMcAj3o.js +62 -0
  49. package/web/dist/assets/chunk-HNE4Q36P-gl_4xI6B.js +1 -0
  50. package/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  51. package/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  52. package/web/dist/assets/chunk-NGNAAXSQ-Bw6tHVuc.js +136 -0
  53. package/web/dist/assets/chunk-NQOKRVIF-B8Q-YmhL.js +213 -0
  54. package/web/dist/assets/chunk-UHW7PFBP-isP5lYMB.js +1 -0
  55. package/web/dist/assets/chunk-VQ5W62QI-Bn68syIc.js +1 -0
  56. package/web/dist/assets/chunk-WQQL4CDK-CdZpmEYA.js +10 -0
  57. package/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  58. package/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  59. package/web/dist/assets/chunk-YZO67HFG-DX9GhJkR.js +1 -0
  60. package/web/dist/assets/chunk-ZAUX2LTX-Ki22UlYp.js +1 -0
  61. package/web/dist/assets/chunk-ZCHMQSOR-BVj0Zx6L.js +2 -0
  62. package/web/dist/assets/classDiagram-v2-4MYWR3UA-C7PV1veb.js +217 -0
  63. package/web/dist/assets/common-Bbatsa0-.js +192 -0
  64. package/web/dist/assets/cose-bilkent-JH36ORCC-DHFtpmij.js +1 -0
  65. package/web/dist/assets/cynefin-EF2NZ3EQ-1rI2T0cc.js +1 -0
  66. package/web/dist/assets/cynefinDiagram-WF24UDRP-C8O_v8xU.js +62 -0
  67. package/web/dist/assets/cytoscape.esm-BY277UBX.js +321 -0
  68. package/web/dist/assets/dagre-NK4GIZVX-BWGoHIUd.js +4 -0
  69. package/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  70. package/web/dist/assets/diagram-CBK3MWTC-kf9v35RN.js +24 -0
  71. package/web/dist/assets/diagram-I5XIIV2D-Ro-ig56_.js +24 -0
  72. package/web/dist/assets/diagram-ODIL2UCW-CtGga01G.js +30 -0
  73. package/web/dist/assets/diagram-PFBEJUXE-C14lcR-6.js +3 -0
  74. package/web/dist/assets/diagram-RJA3I4VV-BBbqaSKU.js +41 -0
  75. package/web/dist/assets/diagram-TYUNFSNR-BynvjQsr.js +200 -0
  76. package/web/dist/assets/dist-CumnGVmJ.js +1 -0
  77. package/web/dist/assets/ebnfDiagram-V4P3TTPT-BdqUCZnk.js +1 -0
  78. package/web/dist/assets/elk-QONTBCTQ-CYCP_9Jy.js +27 -0
  79. package/web/dist/assets/erDiagram-KYQIGQAA-C3L55l_F.js +99 -0
  80. package/web/dist/assets/eventmodeling-K75KTNOO-CTQdA_1v.js +1 -0
  81. package/web/dist/assets/flowDiagram-IUGLLWBU-COLKOzBg.js +1 -0
  82. package/web/dist/assets/ganttDiagram-R7GPNTJY-Be4Qk8Hx.js +292 -0
  83. package/web/dist/assets/gitGraph-VSP46ZUC-B59HXvj1.js +1 -0
  84. package/web/dist/assets/gitGraphDiagram-PDYL7XHY-C2A0VA6q.js +106 -0
  85. package/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  86. package/web/dist/assets/icons-CYDRRPKW.js +1 -0
  87. package/web/dist/assets/index-CTbLW314.js +133 -0
  88. package/web/dist/assets/index-DdzVrZye.css +1 -0
  89. package/web/dist/assets/info-OHQRW6UA-DWlkKvmi.js +1 -0
  90. package/web/dist/assets/infoDiagram-MVDRKAX5-B8e6dTjN.js +2 -0
  91. package/web/dist/assets/init-C-OQMol4.js +1 -0
  92. package/web/dist/assets/ishikawaDiagram-HPEHV2GE-udXPYi9H.js +70 -0
  93. package/web/dist/assets/journeyDiagram-BOSHW7O7-DTyDkf5d.js +139 -0
  94. package/web/dist/assets/kanban-definition-FNSA4HC5-BXgV20qe.js +89 -0
  95. package/web/dist/assets/katex-B940_AAO.js +257 -0
  96. package/web/dist/assets/line-DVabuQAu.js +1 -0
  97. package/web/dist/assets/linear-gLkGxN9m.js +1 -0
  98. package/web/dist/assets/markdown-N5__3T-w.js +14 -0
  99. package/web/dist/assets/mermaid-parser.core-BrXnuEs7.js +7 -0
  100. package/web/dist/assets/mermaid.core-BGbz3k1k.js +44 -0
  101. package/web/dist/assets/mindmap-definition-6OY57UG3-DbtP-bmk.js +98 -0
  102. package/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  103. package/web/dist/assets/packet-JDAUHWVQ-iW8w3JF5.js +1 -0
  104. package/web/dist/assets/panels-CIPgN61N.js +1 -0
  105. package/web/dist/assets/path-fybaL0A-.js +1 -0
  106. package/web/dist/assets/pegDiagram-ECIUJNBX-rBWJbaq4.js +1 -0
  107. package/web/dist/assets/pie-XZMESJXO-KHXEq-Yx.js +1 -0
  108. package/web/dist/assets/pieDiagram-GNMPY74T-DsW7yHm0.js +39 -0
  109. package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  110. package/web/dist/assets/profileChange-xrd7jkii.js +1 -0
  111. package/web/dist/assets/quadrantDiagram-D57K4MC3-DF_pwNhM.js +7 -0
  112. package/web/dist/assets/radar-ABXABTNO-BkAUJ_Zd.js +1 -0
  113. package/web/dist/assets/railroad-I3PHUGI6-BdnWRdGt.js +1 -0
  114. package/web/dist/assets/railroad-abnf-LNEFI6M7-C8K36-8b.js +1 -0
  115. package/web/dist/assets/railroad-ebnf-DWYD2UWJ-BlS25T3f.js +1 -0
  116. package/web/dist/assets/railroad-peg-JR7BVNR7-CBKGDi75.js +1 -0
  117. package/web/dist/assets/railroadDiagram-Y72NRBL7-DmrlMIvv.js +1 -0
  118. package/web/dist/assets/react-vendor-CB4cLN-6.js +19 -0
  119. package/web/dist/assets/requirementDiagram-EQYSW5RA-cvUq9H3I.js +84 -0
  120. package/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  121. package/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  122. package/web/dist/assets/sankeyDiagram-SY24JHO5-BdxXAbER.js +40 -0
  123. package/web/dist/assets/sequenceDiagram-BLEHNHQU-Druumi0k.js +169 -0
  124. package/web/dist/assets/settingsStore-Xqln0d91.js +1 -0
  125. package/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  126. package/web/dist/assets/src-49LUQhkG.js +1 -0
  127. package/web/dist/assets/src-BWF7jMDv.js +1 -0
  128. package/web/dist/assets/state-CSZ50keL.js +1 -0
  129. package/web/dist/assets/stateDiagram-v2-A6IESKWZ-Jgh6qlrr.js +291 -0
  130. package/web/dist/assets/sttLanguages-CSNMgUTz.js +2 -0
  131. package/web/dist/assets/swimlanes-B3ENRKFQ-4xKumvXQ.js +1 -0
  132. package/web/dist/assets/swimlanesDiagram-AYQRV4AK-bHcLKL3d.js +8 -0
  133. package/web/dist/assets/timeline-definition-JXYKGLGB-BYKhga9x.js +120 -0
  134. package/web/dist/assets/treeView-D4JQ5SDB-6-eTVUuH.js +1 -0
  135. package/web/dist/assets/treemap-SAJKECNS-Dxl8yCLE.js +1 -0
  136. package/web/dist/assets/ttsSettings-BwXYpDnk.js +2 -0
  137. package/web/dist/assets/types-JssxRFJn.js +1 -0
  138. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +1 -0
  139. package/web/dist/assets/useTranslation-B-mfApCn.js +1 -0
  140. package/web/dist/assets/usecaseDiagram-WPOLBNNX-BaQ8nAv9.js +328 -0
  141. package/web/dist/assets/vennDiagram-Q3Y3IDCW-DkPvfmfT.js +34 -0
  142. package/web/dist/assets/wardley-7MLQ67FV-CZtI22aa.js +1 -0
  143. package/web/dist/assets/wardleyDiagram-IVAIDKWA-Dgi2OWQ4.js +78 -0
  144. package/web/dist/assets/websocket-BnDwh01e.js +1 -0
  145. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +1 -0
  146. package/web/dist/assets/workspaceSemantics-RaIRer76.js +3 -0
  147. package/web/dist/assets/xychartDiagram-4URNHDU4-Ch96dep-.js +7 -0
  148. package/web/dist/favicon.svg +18 -39
  149. package/web/dist/icons/icon-1024.png +0 -0
  150. package/web/dist/icons/icon-180.png +0 -0
  151. package/web/dist/icons/icon-192.png +0 -0
  152. package/web/dist/icons/icon-512.png +0 -0
  153. package/web/dist/icons/icon-maskable-512.png +0 -0
  154. package/web/dist/index.html +46 -12
  155. package/web/dist/logo.svg +25 -39
  156. package/web/dist/manifest.webmanifest +2 -2
  157. package/web/dist/vendor/MANIFEST.json +24 -0
  158. package/web/dist/vendor/d3.min.js +2 -0
  159. package/web/dist/vendor/echarts.min.js +45 -0
  160. package/web/dist/assets/AssistantsView-BiUiWjhF.js +0 -1
  161. package/web/dist/assets/AutomationView-Dcf_yNaI.js +0 -1
  162. package/web/dist/assets/ChannelConfigView-BLnxsMGm.js +0 -8
  163. package/web/dist/assets/ConnectorsView-CX3E6X6c.js +0 -1
  164. package/web/dist/assets/DesignSystemView--x-P-lpD.js +0 -1
  165. package/web/dist/assets/Drawer-CjAgqH3B.js +0 -1
  166. package/web/dist/assets/FileTreeView-Chb_fzTK.js +0 -11
  167. package/web/dist/assets/HookConfigView-EafYlWdN.js +0 -1
  168. package/web/dist/assets/InputArea-BbHslX7b.js +0 -50
  169. package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  170. package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  171. package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  172. package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  173. package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  174. package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  175. package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  176. package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  177. package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  178. package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  179. package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  180. package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  181. package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  182. package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  183. package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  184. package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  185. package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  186. package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  187. package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  188. package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  189. package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  190. package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  191. package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  192. package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  193. package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  194. package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  195. package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  196. package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  197. package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  198. package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  199. package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  200. package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  201. package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  202. package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  203. package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  204. package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  205. package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  206. package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  207. package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  208. package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  209. package/web/dist/assets/ModelsView-CGN5Nljr.js +0 -1
  210. package/web/dist/assets/PluginsView-CDiJgvI8.js +0 -2
  211. package/web/dist/assets/ProjectsView-C5Usmwqy.js +0 -1
  212. package/web/dist/assets/SessionGrid-BGpz0-op.css +0 -1
  213. package/web/dist/assets/SessionGrid-Drxg0r_u.js +0 -4
  214. package/web/dist/assets/SettingsModal-Cmts6aBG.js +0 -10
  215. package/web/dist/assets/Skeleton-Dsk6B0U3.js +0 -1
  216. package/web/dist/assets/SkillsView-TEDR_3XX.js +0 -1
  217. package/web/dist/assets/TemplatesTab-DtN5Kdgh.js +0 -1
  218. package/web/dist/assets/ToolsView-VukZnIt1.js +0 -1
  219. package/web/dist/assets/VizCardsSkeleton-C_GaEfXd.js +0 -1
  220. package/web/dist/assets/abap-BdImnpbu.js +0 -1
  221. package/web/dist/assets/abnfDiagram-YUKMZFIV-BIFw6B_N.js +0 -1
  222. package/web/dist/assets/actionscript-3-B3316cI-.js +0 -1
  223. package/web/dist/assets/ada-bCR0ucgS.js +0 -1
  224. package/web/dist/assets/ahk-CsyLZFj1.js +0 -1
  225. package/web/dist/assets/ahk2-8Zs4aa1G.js +0 -1
  226. package/web/dist/assets/andromeeda-C4gqWexZ.js +0 -1
  227. package/web/dist/assets/angular-html-DA-rfuFy.js +0 -1
  228. package/web/dist/assets/angular-ts-BrjP3tb8.js +0 -1
  229. package/web/dist/assets/apache-Pmp26Uib.js +0 -1
  230. package/web/dist/assets/apex-DhZFqWV2.js +0 -1
  231. package/web/dist/assets/apl-CORt7UWP.js +0 -1
  232. package/web/dist/assets/applescript-Co6uUVPk.js +0 -1
  233. package/web/dist/assets/ara-BRHolxvo.js +0 -1
  234. package/web/dist/assets/arc-BZQ951h9.js +0 -1
  235. package/web/dist/assets/architectureDiagram-47P4ROYG-BP5qiXzf.js +0 -36
  236. package/web/dist/assets/asciidoc-CSVQ5wI8.js +0 -1
  237. package/web/dist/assets/asm-D_Q5rh1f.js +0 -1
  238. package/web/dist/assets/astro-HNnZUWAn.js +0 -1
  239. package/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -1
  240. package/web/dist/assets/awk-DMzUqQB5.js +0 -1
  241. package/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -1
  242. package/web/dist/assets/ayu-light-BA47KaF1.js +0 -1
  243. package/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -1
  244. package/web/dist/assets/ballerina-BFfxhgS-.js +0 -1
  245. package/web/dist/assets/bat-CickPsom.js +0 -1
  246. package/web/dist/assets/beancount-k_qm7-4y.js +0 -1
  247. package/web/dist/assets/berry-uYugtg8r.js +0 -1
  248. package/web/dist/assets/bibtex-CHM0blh-.js +0 -1
  249. package/web/dist/assets/bicep-Bmn6On1c.js +0 -1
  250. package/web/dist/assets/bird2-Bx8U0n9b.js +0 -1
  251. package/web/dist/assets/blade-2xfisSek.js +0 -1
  252. package/web/dist/assets/blockDiagram-E7TT5TSB-DtRpcE7F.js +0 -140
  253. package/web/dist/assets/bsl-DlhNcFeZ.js +0 -1
  254. package/web/dist/assets/c-BIGW1oBm.js +0 -1
  255. package/web/dist/assets/c3-Dp5svz6Z.js +0 -1
  256. package/web/dist/assets/c4Diagram-CRA5TL53-Gdzn8UBh.js +0 -38
  257. package/web/dist/assets/cadence-Bv_4Rxtq.js +0 -1
  258. package/web/dist/assets/cairo-KRGpt6FW.js +0 -1
  259. package/web/dist/assets/catppuccin-frappe-CZL1YF0i.js +0 -1
  260. package/web/dist/assets/catppuccin-latte-DH-8KZSZ.js +0 -1
  261. package/web/dist/assets/catppuccin-macchiato-B7yYVSCf.js +0 -1
  262. package/web/dist/assets/catppuccin-mocha-Ct7hS0mc.js +0 -1
  263. package/web/dist/assets/channel-BND6_KSH.js +0 -1
  264. package/web/dist/assets/chapel-DTp_pixX.js +0 -1
  265. package/web/dist/assets/chunk-2Q5K7J3B-3U6HMlsm.js +0 -1
  266. package/web/dist/assets/chunk-7TKQ45FW-Dn6ktcY5.js +0 -1
  267. package/web/dist/assets/chunk-AW2ZBBNX-De0QX6p1.js +0 -88
  268. package/web/dist/assets/chunk-FVRAUYC3-CpXDfvz4.js +0 -2
  269. package/web/dist/assets/chunk-HTAEGDNF-D1KDvcDd.js +0 -1
  270. package/web/dist/assets/chunk-JWPE2WC7-umm4A-fq.js +0 -1
  271. package/web/dist/assets/chunk-KQW6MTUR-JYH94hpE.js +0 -1
  272. package/web/dist/assets/chunk-XXDRQBXY-CSlCFByc.js +0 -1
  273. package/web/dist/assets/clarity-Dn5IMItf.js +0 -1
  274. package/web/dist/assets/classDiagram-v2-K4WV4PDN-DnFwS0qN.js +0 -217
  275. package/web/dist/assets/clojure-P80f7IUj.js +0 -1
  276. package/web/dist/assets/cmake-D1j8_8rp.js +0 -1
  277. package/web/dist/assets/cobol-nBiQ_Alo.js +0 -1
  278. package/web/dist/assets/codeowners-Bp6g37R7.js +0 -1
  279. package/web/dist/assets/codeql-DsOJ9woJ.js +0 -1
  280. package/web/dist/assets/coffee-Ch7k5sss.js +0 -1
  281. package/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -1
  282. package/web/dist/assets/coq-C7JzOVbR.js +0 -1
  283. package/web/dist/assets/cose-bilkent-JH36ORCC-BxUTUyep.js +0 -1
  284. package/web/dist/assets/cpp-BMRokrvK.js +0 -1
  285. package/web/dist/assets/crystal-DGywbUpC.js +0 -1
  286. package/web/dist/assets/csharp-DSvCPggb.js +0 -1
  287. package/web/dist/assets/css-CLj8gQPS.js +0 -1
  288. package/web/dist/assets/csv-fuZLfV_i.js +0 -1
  289. package/web/dist/assets/cue-D82EKSYY.js +0 -1
  290. package/web/dist/assets/cynefin-EF2NZ3EQ-CiMvulJr.js +0 -141
  291. package/web/dist/assets/cynefinDiagram-3GCD6N5R-DuXFORdW.js +0 -62
  292. package/web/dist/assets/cypher-COkxafJQ.js +0 -1
  293. package/web/dist/assets/cytoscape.esm-Ix0LnXOy.js +0 -331
  294. package/web/dist/assets/d-85-TOEBH.js +0 -1
  295. package/web/dist/assets/dagre-W4DXFKR2-DzMZHXci.js +0 -4
  296. package/web/dist/assets/dark-plus-C3mMm8J8.js +0 -1
  297. package/web/dist/assets/dart-bE4Kk8sk.js +0 -1
  298. package/web/dist/assets/dax-CEL-wOlO.js +0 -1
  299. package/web/dist/assets/defaultLocale-DX6XiGOO.js +0 -1
  300. package/web/dist/assets/desktop-BmXAJ9_W.js +0 -1
  301. package/web/dist/assets/diagram-2UJZ2QOL-B6tO5G1v.js +0 -200
  302. package/web/dist/assets/diagram-OVF4WLC6-DRZt8tGc.js +0 -24
  303. package/web/dist/assets/diagram-PFPMY2P6-DGh6IecR.js +0 -30
  304. package/web/dist/assets/diagram-UMYRVEAY-BLbnt0yT.js +0 -24
  305. package/web/dist/assets/diagram-YEKJPTXX-C-S5DVhj.js +0 -41
  306. package/web/dist/assets/diagram-ZIFT7M5P-JrGHTWbo.js +0 -3
  307. package/web/dist/assets/diff-D97Zzqfu.js +0 -1
  308. package/web/dist/assets/docker-BcOcwvcX.js +0 -1
  309. package/web/dist/assets/dotenv-Da5cRb03.js +0 -1
  310. package/web/dist/assets/dracula-BzJJZx-M.js +0 -1
  311. package/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -1
  312. package/web/dist/assets/dream-maker-BtqSS_iP.js +0 -1
  313. package/web/dist/assets/ebnfDiagram-VR2GEFS7-DPXA-YOi.js +0 -1
  314. package/web/dist/assets/edge-FbVlp4U3.js +0 -1
  315. package/web/dist/assets/elixir-CkH2-t6x.js +0 -1
  316. package/web/dist/assets/elk-IJKZMXRS-CINeWt2W.js +0 -27
  317. package/web/dist/assets/elm-DbKCFpqz.js +0 -1
  318. package/web/dist/assets/emacs-lisp-C_m_b--Z.js +0 -1
  319. package/web/dist/assets/erDiagram-O2IAPWRE-PPaHmqA1.js +0 -99
  320. package/web/dist/assets/erb-DXfck5VN.js +0 -1
  321. package/web/dist/assets/erlang-DsQrWhSR.js +0 -1
  322. package/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -1
  323. package/web/dist/assets/everforest-light-C8M2exoo.js +0 -1
  324. package/web/dist/assets/fennel-BYunw83y.js +0 -1
  325. package/web/dist/assets/fish-BvzEVeQv.js +0 -1
  326. package/web/dist/assets/flowDiagram-OXPTDLAJ-t-u0QXEA.js +0 -213
  327. package/web/dist/assets/fluent-C4IJs8-o.js +0 -1
  328. package/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  329. package/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
  330. package/web/dist/assets/fsharp-CXgrBDvD.js +0 -1
  331. package/web/dist/assets/ganttDiagram-R7TSEDQI-Bw49ZD_b.js +0 -292
  332. package/web/dist/assets/gdresource-TyuKm33G.js +0 -1
  333. package/web/dist/assets/gdscript-DqcFQ5yU.js +0 -1
  334. package/web/dist/assets/gdshader-DkwncUOv.js +0 -1
  335. package/web/dist/assets/genie-D0YGMca9.js +0 -1
  336. package/web/dist/assets/gherkin-DyxjwDmM.js +0 -1
  337. package/web/dist/assets/git-commit-F4YmCXRG.js +0 -1
  338. package/web/dist/assets/git-rebase-r7XF79zn.js +0 -1
  339. package/web/dist/assets/gitGraphDiagram-XJZIOB7I-BAfOqeeg.js +0 -106
  340. package/web/dist/assets/github-dark-DHJKELXO.js +0 -1
  341. package/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
  342. package/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  343. package/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  344. package/web/dist/assets/github-light-DAi9KRSo.js +0 -1
  345. package/web/dist/assets/github-light-default-D7oLnXFd.js +0 -1
  346. package/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  347. package/web/dist/assets/gleam-BspZqrRM.js +0 -1
  348. package/web/dist/assets/glimmer-js-ByusRIyA.js +0 -1
  349. package/web/dist/assets/glimmer-ts-BfAWNZQY.js +0 -1
  350. package/web/dist/assets/glsl-DplSGwfg.js +0 -1
  351. package/web/dist/assets/gn-n2N0HUVH.js +0 -1
  352. package/web/dist/assets/gnuplot-DdkO51Og.js +0 -1
  353. package/web/dist/assets/go-C27-OAKa.js +0 -1
  354. package/web/dist/assets/graph-Bn3Yngep.js +0 -1
  355. package/web/dist/assets/graphql-ChdNCCLP.js +0 -1
  356. package/web/dist/assets/groovy-gcz8RCvz.js +0 -1
  357. package/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  358. package/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  359. package/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  360. package/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  361. package/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  362. package/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  363. package/web/dist/assets/hack-BWmVpMyf.js +0 -1
  364. package/web/dist/assets/haml-D5jkg6IW.js +0 -1
  365. package/web/dist/assets/handlebars-BpdQsYii.js +0 -1
  366. package/web/dist/assets/haskell-Df6bDoY_.js +0 -1
  367. package/web/dist/assets/haxe-CfZj7gIn.js +0 -1
  368. package/web/dist/assets/hcl-BWvSN4gD.js +0 -1
  369. package/web/dist/assets/hjson-D5-asLiD.js +0 -1
  370. package/web/dist/assets/hlsl-D3lLCCz7.js +0 -1
  371. package/web/dist/assets/horizon-BUw7H-hv.js +0 -1
  372. package/web/dist/assets/horizon-bright-CUuTKBJd.js +0 -1
  373. package/web/dist/assets/houston-DnULxvSX.js +0 -1
  374. package/web/dist/assets/html-derivative-DlHx6ybY.js +0 -1
  375. package/web/dist/assets/html-pp8916En.js +0 -1
  376. package/web/dist/assets/http-jrhK8wxY.js +0 -1
  377. package/web/dist/assets/hurl-irOxFIW8.js +0 -1
  378. package/web/dist/assets/hxml-2-FPmUDs.js +0 -1
  379. package/web/dist/assets/hy-DFXneXwc.js +0 -1
  380. package/web/dist/assets/icons-Bm_ZzSAy.js +0 -964
  381. package/web/dist/assets/imba-DGztddWO.js +0 -1
  382. package/web/dist/assets/index-CeeLdENM.js +0 -677
  383. package/web/dist/assets/index-Ceez9lYk.css +0 -1
  384. package/web/dist/assets/infoDiagram-5W2HQ5XZ-Bv4RBxYW.js +0 -2
  385. package/web/dist/assets/ini-BEwlwnbL.js +0 -1
  386. package/web/dist/assets/init-Gi6I4Gst.js +0 -1
  387. package/web/dist/assets/ishikawaDiagram-K3B6WC7H-DEpj0bRp.js +0 -70
  388. package/web/dist/assets/java-CylS5w8V.js +0 -1
  389. package/web/dist/assets/javascript-wDzz0qaB.js +0 -1
  390. package/web/dist/assets/jinja-f2NsQr07.js +0 -1
  391. package/web/dist/assets/jison-wvAkD_A8.js +0 -1
  392. package/web/dist/assets/journeyDiagram-COXZFDF6-MJu84Iiz.js +0 -139
  393. package/web/dist/assets/json-Cp-IABpG.js +0 -1
  394. package/web/dist/assets/json5-C9tS-k6U.js +0 -1
  395. package/web/dist/assets/jsonc-Des-eS-w.js +0 -1
  396. package/web/dist/assets/jsonl-DcaNXYhu.js +0 -1
  397. package/web/dist/assets/jsonnet-DFQXde-d.js +0 -1
  398. package/web/dist/assets/jssm-C2t-YnRu.js +0 -1
  399. package/web/dist/assets/jsx-g9-lgVsj.js +0 -1
  400. package/web/dist/assets/julia-5Bft2YPA.js +0 -1
  401. package/web/dist/assets/just-Cwhn7H3k.js +0 -1
  402. package/web/dist/assets/kanagawa-dragon-BuwD2xS4.js +0 -1
  403. package/web/dist/assets/kanagawa-lotus-C3DzagqV.js +0 -1
  404. package/web/dist/assets/kanagawa-wave-DFGoQZhC.js +0 -1
  405. package/web/dist/assets/kanban-definition-P3RFRI5V-mlYSRALK.js +0 -89
  406. package/web/dist/assets/kdl-DV7GczEv.js +0 -1
  407. package/web/dist/assets/kotlin-BdnUsdx6.js +0 -1
  408. package/web/dist/assets/kusto-wEQ09or8.js +0 -1
  409. package/web/dist/assets/laserwave-DUszq2jm.js +0 -1
  410. package/web/dist/assets/latex-D5pSuvFb.js +0 -1
  411. package/web/dist/assets/lean-BZvkOJ9d.js +0 -1
  412. package/web/dist/assets/less-B1dDrJ26.js +0 -1
  413. package/web/dist/assets/light-plus-B7mTdjB0.js +0 -1
  414. package/web/dist/assets/linear-5j9gt8MV.js +0 -1
  415. package/web/dist/assets/liquid-C0sCDyMI.js +0 -1
  416. package/web/dist/assets/llvm-BZoOZj88.js +0 -1
  417. package/web/dist/assets/log-2UxHyX5q.js +0 -1
  418. package/web/dist/assets/logo-BtOb2qkB.js +0 -1
  419. package/web/dist/assets/lua-BaeVxFsk.js +0 -1
  420. package/web/dist/assets/luau-BnpPk5vE.js +0 -1
  421. package/web/dist/assets/make-CHLpvVh8.js +0 -1
  422. package/web/dist/assets/markdown-BWXjRrSw.js +0 -30
  423. package/web/dist/assets/markdown-Cvjx9yec.js +0 -1
  424. package/web/dist/assets/marko-DjSrsDqO.js +0 -1
  425. package/web/dist/assets/material-theme-D5KoaKCx.js +0 -1
  426. package/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
  427. package/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  428. package/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -1
  429. package/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  430. package/web/dist/assets/matlab-D7o27uSR.js +0 -1
  431. package/web/dist/assets/mdc-D1_yUvq7.js +0 -1
  432. package/web/dist/assets/mdx-Cmh6b_Ma.js +0 -1
  433. package/web/dist/assets/mermaid-CQcHuHx7.js +0 -1
  434. package/web/dist/assets/mermaid.core-DLb6eAON.js +0 -314
  435. package/web/dist/assets/min-dark-CafNBF8u.js +0 -1
  436. package/web/dist/assets/min-light-CTRr51gU.js +0 -1
  437. package/web/dist/assets/mindmap-definition-LZFPQGKD-C9v_57Ex.js +0 -96
  438. package/web/dist/assets/mipsasm-CKIfxQSi.js +0 -1
  439. package/web/dist/assets/mojo-DJz3ZmWd.js +0 -1
  440. package/web/dist/assets/monokai-BRVnQi9A.js +0 -1
  441. package/web/dist/assets/moonbit-CHtswR0a.js +0 -1
  442. package/web/dist/assets/move-el3G9tDJ.js +0 -1
  443. package/web/dist/assets/narrat-DRg8JJMk.js +0 -1
  444. package/web/dist/assets/nextflow-C-mBbutL.js +0 -1
  445. package/web/dist/assets/nextflow-groovy-vE_lwT2v.js +0 -1
  446. package/web/dist/assets/nginx-BpAMiNFr.js +0 -1
  447. package/web/dist/assets/night-owl-C39BiMTA.js +0 -1
  448. package/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -1
  449. package/web/dist/assets/nim-BIad80T-.js +0 -1
  450. package/web/dist/assets/nix-CwoSXNpI.js +0 -1
  451. package/web/dist/assets/nord-Ddv68eIx.js +0 -1
  452. package/web/dist/assets/nsis-BlV79W_Q.js +0 -1
  453. package/web/dist/assets/nushell-D3jzshHO.js +0 -1
  454. package/web/dist/assets/objective-c-DXmwc3jG.js +0 -1
  455. package/web/dist/assets/objective-cpp-CLxacb5B.js +0 -1
  456. package/web/dist/assets/ocaml-C0hk2d4L.js +0 -1
  457. package/web/dist/assets/odin-BBf5iR-q.js +0 -1
  458. package/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  459. package/web/dist/assets/one-light-C3Wv6jpd.js +0 -1
  460. package/web/dist/assets/openscad-C4EeE6gA.js +0 -1
  461. package/web/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  462. package/web/dist/assets/org-DM6o9KBp.js +0 -1
  463. package/web/dist/assets/panels-BQOvnbWH.js +0 -1
  464. package/web/dist/assets/pascal-D93ZcfNL.js +0 -1
  465. package/web/dist/assets/pegDiagram-BGZESJAR-KQP26s3-.js +0 -1
  466. package/web/dist/assets/perl-B9cMNwum.js +0 -1
  467. package/web/dist/assets/php-Csjmro_R.js +0 -1
  468. package/web/dist/assets/pieDiagram-CAPJLFHJ-DN3RQ_ih.js +0 -39
  469. package/web/dist/assets/pkl-u5AG7uiY.js +0 -1
  470. package/web/dist/assets/plastic-3e1v2bzS.js +0 -1
  471. package/web/dist/assets/plsql-ChMvpjG-.js +0 -1
  472. package/web/dist/assets/po-BTJTHyun.js +0 -1
  473. package/web/dist/assets/poimandres-CS3Unz2-.js +0 -1
  474. package/web/dist/assets/polar-C0HS_06l.js +0 -1
  475. package/web/dist/assets/postcss-CXtECtnM.js +0 -1
  476. package/web/dist/assets/powerquery-CEu0bR-o.js +0 -1
  477. package/web/dist/assets/powershell-BmBUJMz7.js +0 -1
  478. package/web/dist/assets/prisma-Vru482bI.js +0 -1
  479. package/web/dist/assets/profileChange-B7TaQ18u.js +0 -1
  480. package/web/dist/assets/prolog-CbFg5uaA.js +0 -1
  481. package/web/dist/assets/proto-C7zT0LnQ.js +0 -1
  482. package/web/dist/assets/pug-DKIMFp6K.js +0 -1
  483. package/web/dist/assets/puppet-BMWR74SV.js +0 -1
  484. package/web/dist/assets/purescript-CklMAg4u.js +0 -1
  485. package/web/dist/assets/python-B6aJPvgy.js +0 -1
  486. package/web/dist/assets/qml-3beO22l8.js +0 -1
  487. package/web/dist/assets/qmldir-C8lEn-DE.js +0 -1
  488. package/web/dist/assets/qss-IeuSbFQv.js +0 -1
  489. package/web/dist/assets/quadrantDiagram-GDMTTRAM-BpL_ZL76.js +0 -7
  490. package/web/dist/assets/r-Cf5RLm7j.js +0 -1
  491. package/web/dist/assets/racket-BqYA7rlc.js +0 -1
  492. package/web/dist/assets/railroadDiagram-SM67HX2B-DZ-fPU85.js +0 -1
  493. package/web/dist/assets/raku-DXvB9xmW.js +0 -1
  494. package/web/dist/assets/razor-BjBPvh-w.js +0 -1
  495. package/web/dist/assets/rbs-CpoqiR4B.js +0 -1
  496. package/web/dist/assets/react-vendor-C0HIWSpf.js +0 -9
  497. package/web/dist/assets/red-hvxz__6c.js +0 -1
  498. package/web/dist/assets/reg-C-SQnVFl.js +0 -1
  499. package/web/dist/assets/regexp-CDVJQ6XC.js +0 -1
  500. package/web/dist/assets/rel-C3B-1QV4.js +0 -1
  501. package/web/dist/assets/requirementDiagram-X7JNWC4A-mKPGj64L.js +0 -84
  502. package/web/dist/assets/riscv-BM1_JUlF.js +0 -1
  503. package/web/dist/assets/ron-D8l8udqQ.js +0 -1
  504. package/web/dist/assets/rose-pine-5qJOZa0Y.js +0 -1
  505. package/web/dist/assets/rose-pine-dawn-zx0QlTCp.js +0 -1
  506. package/web/dist/assets/rose-pine-moon-C9pEdX9L.js +0 -1
  507. package/web/dist/assets/rosmsg-BJDFO7_C.js +0 -1
  508. package/web/dist/assets/rst-bs7f0vWN.js +0 -1
  509. package/web/dist/assets/ruby-C0TQ7zu5.js +0 -1
  510. package/web/dist/assets/rust-B1yitclQ.js +0 -1
  511. package/web/dist/assets/sankeyDiagram-UM26HJRW-Bs4xfjQP.js +0 -40
  512. package/web/dist/assets/sas-DEy46yEz.js +0 -1
  513. package/web/dist/assets/sass-Cj5Yp3dK.js +0 -1
  514. package/web/dist/assets/scala-CqE71os6.js +0 -1
  515. package/web/dist/assets/scheme-C98Dy4si.js +0 -1
  516. package/web/dist/assets/scss-D5BDwBP9.js +0 -1
  517. package/web/dist/assets/sdbl-DVxCFoDh.js +0 -1
  518. package/web/dist/assets/sequenceDiagram-ZO4K6R2Y-BjUmzZaO.js +0 -169
  519. package/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
  520. package/web/dist/assets/shellscript-Yzrsuije.js +0 -1
  521. package/web/dist/assets/shellsession-BADoaaVG.js +0 -1
  522. package/web/dist/assets/sizeCapture-INFHLROL-BXBM3j_Q.js +0 -1
  523. package/web/dist/assets/slack-dark-BthQWCQV.js +0 -1
  524. package/web/dist/assets/slack-ochin-DqwNpetd.js +0 -1
  525. package/web/dist/assets/smalltalk-BOQMe2GC.js +0 -1
  526. package/web/dist/assets/smithy-cds9vsN8.js +0 -1
  527. package/web/dist/assets/snazzy-light-Bw305WKR.js +0 -1
  528. package/web/dist/assets/solarized-dark-CpvCGNkr.js +0 -1
  529. package/web/dist/assets/solarized-light-Dlz6yCKv.js +0 -1
  530. package/web/dist/assets/solidity-DijEV5ha.js +0 -1
  531. package/web/dist/assets/soy-8wufbnw4.js +0 -1
  532. package/web/dist/assets/sparql-rVzFXLq3.js +0 -1
  533. package/web/dist/assets/splunk-BtCnVYZw.js +0 -1
  534. package/web/dist/assets/sql-CRqJ_cUM.js +0 -1
  535. package/web/dist/assets/ssh-config-_ykCGR6B.js +0 -1
  536. package/web/dist/assets/stata-DI20mbqo.js +0 -1
  537. package/web/dist/assets/state-Kfon1nTr.js +0 -17
  538. package/web/dist/assets/stateDiagram-v2-TBUQTH76-FGgFDGUU.js +0 -291
  539. package/web/dist/assets/sttLanguages-C7kVulzY.js +0 -1
  540. package/web/dist/assets/stylus-BEDo0Tqx.js +0 -1
  541. package/web/dist/assets/surrealql-Cjom0U5J.js +0 -1
  542. package/web/dist/assets/svelte-Cy7k_4gC.js +0 -1
  543. package/web/dist/assets/swift-C2oV4EkX.js +0 -1
  544. package/web/dist/assets/swimlanes-N4OXWK64-wkd_n4HU.js +0 -1
  545. package/web/dist/assets/swimlanesDiagram-K3J5GTZL-CKnwEuq_.js +0 -8
  546. package/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -1
  547. package/web/dist/assets/system-verilog-0hqHdDBg.js +0 -1
  548. package/web/dist/assets/systemd-4A_iFExJ.js +0 -1
  549. package/web/dist/assets/talonscript-CkByrt1z.js +0 -1
  550. package/web/dist/assets/tasl-QIJgUcNo.js +0 -1
  551. package/web/dist/assets/tcl-dwOrl1Do.js +0 -1
  552. package/web/dist/assets/templ-DhtptRzy.js +0 -1
  553. package/web/dist/assets/terraform-BETggiCN.js +0 -1
  554. package/web/dist/assets/tex-D96PA37w.js +0 -1
  555. package/web/dist/assets/timeline-definition-YOQAKGHF-DyBln1jw.js +0 -120
  556. package/web/dist/assets/tokyo-night-hegEt444.js +0 -1
  557. package/web/dist/assets/toml-vGWfd6FD.js +0 -1
  558. package/web/dist/assets/ts-tags-D351s5mN.js +0 -1
  559. package/web/dist/assets/tsv-B_m7g4N7.js +0 -1
  560. package/web/dist/assets/tsx-COt5Ahok.js +0 -1
  561. package/web/dist/assets/turtle-BsS91CYL.js +0 -1
  562. package/web/dist/assets/twig-27uCiNez.js +0 -1
  563. package/web/dist/assets/typescript-BPQ3VLAy.js +0 -1
  564. package/web/dist/assets/typespec-CAFt9gP4.js +0 -1
  565. package/web/dist/assets/typst-BUadGCkm.js +0 -1
  566. package/web/dist/assets/usecaseDiagram-VIAY4XPW-Cqis3XHX.js +0 -370
  567. package/web/dist/assets/v-BGw2Nkan.js +0 -1
  568. package/web/dist/assets/vala-CsfeWuGM.js +0 -1
  569. package/web/dist/assets/vb-Cu-pLBUe.js +0 -1
  570. package/web/dist/assets/vennDiagram-BLWOH2XV-BaiFLOVS.js +0 -34
  571. package/web/dist/assets/verilog-nZwndyjY.js +0 -1
  572. package/web/dist/assets/vesper-DRje8inN.js +0 -1
  573. package/web/dist/assets/vhdl-CeAyd5Ju.js +0 -1
  574. package/web/dist/assets/viml-CJc9bBzg.js +0 -1
  575. package/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
  576. package/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
  577. package/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  578. package/web/dist/assets/vue-BqiEGhQt.js +0 -1
  579. package/web/dist/assets/vue-html-AaS7Mt5G.js +0 -1
  580. package/web/dist/assets/vue-vine-BoDAl6tE.js +0 -1
  581. package/web/dist/assets/vyper-CDx5xZoG.js +0 -1
  582. package/web/dist/assets/wardleyDiagram-YMQ3BMBF-C4CzpJto.js +0 -78
  583. package/web/dist/assets/wasm-CG6Dc4jp.js +0 -1
  584. package/web/dist/assets/wasm-MzD3tlZU.js +0 -1
  585. package/web/dist/assets/wenyan-BV7otONQ.js +0 -1
  586. package/web/dist/assets/wgsl-Dx-B1_4e.js +0 -1
  587. package/web/dist/assets/wikitext-BhOHFoWU.js +0 -1
  588. package/web/dist/assets/wit-5i3qLPDT.js +0 -1
  589. package/web/dist/assets/wolfram-lXgVvXCa.js +0 -1
  590. package/web/dist/assets/xml-sdJ4AIDG.js +0 -1
  591. package/web/dist/assets/xsl-CtQFsRM5.js +0 -1
  592. package/web/dist/assets/xychartDiagram-TAQBALBS-Dp1hfe3-.js +0 -7
  593. package/web/dist/assets/yaml-Buea-lGh.js +0 -1
  594. package/web/dist/assets/zenscript-DVFEvuxE.js +0 -1
  595. package/web/dist/assets/zig-VOosw3JB.js +0 -1
  596. package/web/dist/figma-demo/product-1.jpg +0 -0
  597. package/web/dist/figma-demo/product-2.jpg +0 -0
  598. package/web/dist/figma-demo/trail-1.jpg +0 -0
  599. package/web/dist/figma-demo/trail-2.jpg +0 -0
  600. package/web/dist/figma-demo/trail-3.jpg +0 -0
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Ar as t,Jn as n,Kr as r,Lr as i,Or as a,R as o,Rr as s,Sr as c,Ut as l,Wt as u,_ as d,cn as f,dt as p,h as m,ht as h,i as g,k as _,kr as v,lt as y,n as b,nt as ee,pr as te,rr as ne,st as x,ut as re,vn as ie,x as ae,xn as oe,xr as se,yt as ce}from"./icons-CYDRRPKW.js";import{r as le}from"./react-vendor-CB4cLN-6.js";import{t as S}from"./useTranslation-B-mfApCn.js";import{a as ue,c as C,o as de,t as fe}from"./useConfirm-Da8iQ_DZ.js";import{t as w}from"./api-plEYhRn0.js";import{I as pe}from"./markdown-N5__3T-w.js";import"./common-Bbatsa0-.js";import{h as me}from"./index-CTbLW314.js";var he=6048e5,ge=864e5,_e=Symbol.for(`constructDateFrom`);function T(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&_e in e?e[_e](t):e instanceof Date?new e.constructor(t):new Date(t)}function E(e,t){return T(t||e,e)}function ve(e,t,n){let r=E(e,n?.in);return isNaN(t)?T(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function ye(e,t,n){let r=E(e,n?.in);if(isNaN(t))return T(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=T(n?.in||e,r.getTime());return a.setMonth(r.getMonth()+t+1,0),i>=a.getDate()?a:(r.setFullYear(a.getFullYear(),a.getMonth(),i),r)}var be={};function D(){return be}function O(e,t){let n=D(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=E(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function k(e,t){return O(e,{...t,weekStartsOn:1})}function xe(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=T(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=k(i),o=T(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=k(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function Se(e){let t=E(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-n}function A(e,...t){let n=T.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function j(e,t){let n=E(e,t?.in);return n.setHours(0,0,0,0),n}function Ce(e,t,n){let[r,i]=A(n?.in,e,t),a=j(r),o=j(i),s=+a-Se(a),c=+o-Se(o);return Math.round((s-c)/ge)}function we(e,t){let n=xe(e,t),r=T(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),k(r)}function Te(e,t,n){return ve(e,t*7,n)}function Ee(e){return T(e,Date.now())}function M(e,t,n){let[r,i]=A(n?.in,e,t);return+j(r)==+j(i)}function De(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function Oe(e){return!(!De(e)&&typeof e!=`number`||isNaN(+E(e)))}function ke(e,t){let n=E(e,t?.in);return n.setHours(23,59,59,999),n}function N(e,t){let[n,r]=A(e,t.start,t.end);return{start:n,end:r}}function Ae(e,t){let{start:n,end:r}=N(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(T(n,o)),o.setDate(o.getDate()+s),o.setHours(0,0,0,0);return i?c.reverse():c}function P(e,t){let n=E(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function je(e,t){let n=E(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var F={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},Me=(e,t,n)=>{let r,i=F[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function Ne(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var Pe={date:Ne({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:Ne({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:Ne({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},I={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Fe=(e,t,n,r)=>I[e];function L(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var Ie={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:L({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:L({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:L({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:L({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:L({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function R(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?Re(s,e=>e.test(o)):Le(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function Le(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Re(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function ze(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var Be={code:`en-US`,formatDistance:Me,formatLong:Pe,formatRelative:Fe,localize:Ie,match:{ordinalNumber:ze({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:R({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:R({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:R({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:R({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:R({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ve(e,t){let n=E(e,t?.in);return Ce(n,je(n))+1}function He(e,t){let n=E(e,t?.in),r=+k(n)-we(n);return Math.round(r/he)+1}function Ue(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=D(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=T(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=O(o,t),c=T(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=O(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function We(e,t){let n=D(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Ue(e,t),a=T(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),O(a,t)}function Ge(e,t){let n=E(e,t?.in),r=+O(n,t)-We(n,t);return Math.round(r/he)+1}function z(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var B={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return z(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):z(n+1,2)},d(e,t){return z(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return z(e.getHours()%12||12,t.length)},H(e,t){return z(e.getHours(),t.length)},m(e,t){return z(e.getMinutes(),t.length)},s(e,t){return z(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return z(Math.trunc(r*10**(n-3)),t.length)}},V={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Ke={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return B.y(e,t)},Y:function(e,t,n,r){let i=Ue(e,r),a=i>0?i:1-i;return t===`YY`?z(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):z(a,t.length)},R:function(e,t){return z(xe(e),t.length)},u:function(e,t){return z(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return z(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return z(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return B.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return z(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=Ge(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):z(i,t.length)},I:function(e,t,n){let r=He(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):z(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):B.d(e,t)},D:function(e,t,n){let r=Ve(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):z(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return z(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return z(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return z(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?V.noon:r===0?V.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?V.evening:r>=12?V.afternoon:r>=4?V.morning:V.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return B.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):B.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):z(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):z(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):B.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):B.s(e,t)},S:function(e,t){return B.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return Je(r);case`XXXX`:case`XX`:return H(r);default:return H(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return Je(r);case`xxxx`:case`xx`:return H(r);default:return H(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+qe(r,`:`);default:return`GMT`+H(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+qe(r,`:`);default:return`GMT`+H(r,`:`)}},t:function(e,t,n){return z(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return z(+e,t.length)}};function qe(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+z(a,2)}function Je(e,t){return e%60==0?(e>0?`-`:`+`)+z(Math.abs(e)/60,2):H(e,t)}function H(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=z(Math.trunc(r/60),2),a=z(r%60,2);return n+i+t+a}var Ye=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},Xe=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},Ze={p:Xe,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return Ye(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`})}return a.replace(`{{date}}`,Ye(r,t)).replace(`{{time}}`,Xe(i,t))}},Qe=/^D+$/,$e=/^Y+$/,U=[`D`,`DD`,`YY`,`YYYY`];function W(e){return Qe.test(e)}function et(e){return $e.test(e)}function G(e,t,n){let r=tt(e,t,n);if(console.warn(r),U.includes(e))throw RangeError(r)}function tt(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var nt=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,rt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,it=/^'([^]*?)'?$/,at=/''/g,ot=/[a-zA-Z]/;function K(e,t,n){let r=D(),i=n?.locale??r.locale??Be,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=E(e,n?.in);if(!Oe(s))throw RangeError(`Invalid time value`);let c=t.match(rt).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=Ze[t];return n(e,i.formatLong)}return e}).join(``).match(nt).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:st(e)};if(Ke[t])return{isToken:!0,value:e};if(t.match(ot))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&et(a)||!n?.useAdditionalDayOfYearTokens&&W(a))&&G(a,t,String(e));let o=Ke[a[0]];return o(s,a,i.localize,l)}).join(``)}function st(e){let t=e.match(it);return t?t[1].replace(at,`'`):e}function ct(e,t,n){let[r,i]=A(n?.in,e,t);return+O(r,n)==+O(i,n)}function lt(e,t,n){let[r,i]=A(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function ut(e,t){return M(T(t?.in||e,e),Ee(t?.in||e))}var q=e(r(),1),dt=le(),ft=2e3;function pt(e){return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}function J(e,t,n){return Number.isInteger(e)&&e>=t&&e<=n}function Y(e,t,n){let r=e.trim();if(!r)return null;let i=new Set;for(let e of r.split(`,`)){let r=e.trim();if(!r)return null;if(r===`*`||r===`?`){for(let e=t;e<=n;e++)i.add(e);continue}let a=r.match(/^(\*|\d+|\d+-\d+)\/(\d+)$/);if(a){let e=parseInt(a[2]??``,10);if(!J(e,1,n))return null;let r=a[1]??``,o,s;if(r===`*`)o=t,s=n;else if(r.includes(`-`)){let[e,t]=r.split(`-`).map(Number);o=e??NaN,s=t??NaN}else o=Number(r),s=n;if(!J(o,t,n)||!J(s,t,n)||o>s)return null;for(let t=o;t<=s;t+=e)i.add(t);continue}let o=r.match(/^(\d+)-(\d+)$/);if(o){let e=parseInt(o[1]??``,10),r=parseInt(o[2]??``,10);if(!J(e,t,n)||!J(r,t,n)||e>r)return null;for(let t=e;t<=r;t++)i.add(t);continue}let s=Number(r);if(!J(s,t,n))return null;i.add(s)}return i.size>0?[...i].sort((e,t)=>e-t):null}function mt(e){let t=e.trim().split(/\s+/);if(t.length!==5)return null;let n=Y(t[0]??``,0,59),r=Y(t[1]??``,0,23),i=Y(t[2]??``,1,31),a=Y(t[3]??``,1,12),o=Y(t[4]??``,0,7);return!n||!r||!i||!a||!o?null:{minutes:n,hours:r,daysOfMonth:i,months:a,daysOfWeek:[...new Set(o.map(e=>e===7?0:e))].sort((e,t)=>e-t)}}function ht(e,t){return e.months.includes(t.getMonth()+1)&&e.daysOfMonth.includes(t.getDate())&&e.daysOfWeek.includes(t.getDay())}function gt(e,t){if(e.kind===`once`){if(!e.fireAt)return[];let n=new Date(e.fireAt);return Number.isNaN(n.getTime())?[]:M(n,t)?[n]:[]}let n=mt(e.cron??``);if(!n||!ht(n,t))return[];let r=[];for(let e of n.hours)for(let i of n.minutes)r.push(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,i,0,0));return r}function _t(e,t,n){let r=j(t),i=ke(n);if(r.getTime()>i.getTime())return[];let a=[],o=Ae({start:r,end:i});for(let t of e){let e=0;for(let n of o){if(e>=ft)break;for(let o of gt(t.schedule,n))if(!(o.getTime()<r.getTime()||o.getTime()>i.getTime())&&(a.push({key:`${t.id}@${o.toISOString()}`,automationId:t.id,at:o,automation:t}),e+=1,e>=ft))break}}return a.sort((e,t)=>e.at.getTime()-t.at.getTime()||e.automation.name.localeCompare(t.automation.name)),a}var vt=e=>e===`*`||e===`?`;function yt(e,t){let n=e.schedule;if(n.kind===`once`){let e=n.fireAt?new Date(n.fireAt):null;if(!e||Number.isNaN(e.getTime()))return{ok:!1,reason:`unparsable`};if(M(e,t))return{ok:!1,reason:`noop-day`};let r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e.getHours(),e.getMinutes(),0,0);return{ok:!0,schedule:{...n,kind:`once`,fireAt:r.toISOString()}}}let r=(n.cron??``).trim().split(/\s+/);if(r.length!==5)return{ok:!1,reason:`unparsable`};let i=r[2]??``,a=r[3]??``,o=r[4]??``;if(!vt(i)||!vt(a))return{ok:!1,reason:`locked-cron`};let s=t.getDay();if(!vt(o)){if(/^\d+$/.test(o)){if(Number(o)%7===s)return{ok:!1,reason:`noop-day`}}else if(o===`1-5`){if(s>=1&&s<=5)return{ok:!1,reason:`noop-day`}}else return{ok:!1,reason:`locked-cron`}}let c=[...r];return c[4]=String(s),{ok:!0,schedule:{...n,kind:`cron`,cron:c.join(` `)}}}function bt(e){return pt(e)}function xt(e){let t=new Map;for(let n of e){let e=pt(n.at),r=t.get(e);r?r.push(n):t.set(e,[n])}return t}var St=[`automation.dow.monday`,`automation.dow.tuesday`,`automation.dow.wednesday`,`automation.dow.thursday`,`automation.dow.friday`,`automation.dow.saturday`,`automation.dow.sunday`],Ct=e=>(e.getDay()+6)%7;function wt(e){let t=O(P(e),{weekStartsOn:1});return Array.from({length:42},(e,n)=>ve(t,n))}function Tt(e){let t=O(e,{weekStartsOn:1});return Array.from({length:7},(e,n)=>ve(t,n))}var X=pe(),Et=3,Z=e=>K(e,`HH:mm`),Dt=e=>`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`;function Ot(e){return e.status===`enabled`?e.schedule.kind===`once`?`once`:`enabled`:`disabled`}var kt={enabled:`border-accent-blue bg-accent-blue/10 text-dark-text`,once:`border-accent-yellow bg-accent-yellow/10 text-dark-text`,disabled:`border-dark-border bg-dark-hover text-dark-muted`};function At({occurrence:e,onSelectDay:t,extra:n,onUnpack:r,onDragStart:i,onDragEnd:a}){let{t:o}=S(),s=n=>{n.stopPropagation(),r?r():t(e.at)},c=!!i,l=c?o(`automation.dragHint`):r?o(`automation.unpackHint`):``;return(0,X.jsxs)(`button`,{type:`button`,onClick:s,draggable:c,onDragStart:t=>{i&&(t.stopPropagation(),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,e.key)),i(e))},onDragEnd:()=>a?.(),title:`${Z(e.at)} ${e.automation.name}${l?` · ${l}`:``}`,className:`flex w-full items-center gap-1 truncate rounded border-s-2 px-1.5 py-[3px] text-start text-badge hover:brightness-110 ${kt[Ot(e.automation)]} ${c?`cursor-grab active:cursor-grabbing`:``}`,children:[(0,X.jsx)(`span`,{className:`shrink-0 tabular-nums opacity-70`,children:Z(e.at)}),(0,X.jsx)(`span`,{className:`truncate`,children:e.automation.name}),n!==void 0&&n>0&&(0,X.jsx)(`span`,{className:`shrink-0 opacity-70`,children:o(`automation.moreCount`,{count:n})})]})}function jt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onFocusSlot:i,onMoveOccurrence:a}){let{t:o}=S(),s=(0,q.useMemo)(()=>wt(e),[e]),[c,l]=(0,q.useState)(null),[u,d]=(0,q.useState)(null),f=()=>{l(null),d(null)};return(0,X.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsx)(`div`,{className:`grid grid-cols-7 border-b border-dark-border bg-dark-hover/40`,children:St.map(e=>(0,X.jsx)(`div`,{className:`px-2 py-2 text-center text-meta font-medium text-dark-muted`,children:o(e)},e))}),(0,X.jsx)(`div`,{className:`grid grid-cols-7`,children:s.map((s,p)=>{let m=Dt(s),h=n.get(m)??[],g=Mt(h),_=g.slice(0,Et),v=g.slice(Et).reduce((e,t)=>e+t.items.length,0),y=lt(s,e),b=M(s,t),ee=ut(s),te=u===m;return(0,X.jsxs)(`div`,{"data-day":m,role:`button`,tabIndex:0,onClick:()=>r(s),onDragOver:e=>{c&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),d(m))},onDragLeave:()=>d(e=>e===m?null:e),onDrop:e=>{if(!c)return;e.preventDefault();let t=c;f(),a?.(t,s)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r(s))},className:[`flex min-h-28 cursor-pointer flex-col gap-1 border-b border-e border-dark-border p-1.5`,p%7==6?`border-e-0`:``,p>=35?`border-b-0`:``,y?`bg-dark-surface`:`bg-dark-bg/50`,te?`bg-accent-blue/10 ring-2 ring-inset ring-accent-blue/70`:b?`ring-1 ring-inset ring-accent-blue/50`:`hover:bg-dark-hover/40`].join(` `),children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:[`flex h-5 w-5 items-center justify-center rounded-full text-meta tabular-nums`,ee?`bg-accent-blue font-semibold text-accent-fg`:y?`text-dark-text`:`text-dark-muted/60`].join(` `),children:s.getDate()}),h.length>0&&(0,X.jsx)(`span`,{className:`text-badge tabular-nums text-dark-muted/50`,children:h.length})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[_.map(e=>{let t=e.items[0],n=e.items.length>1;return(0,X.jsx)(At,{occurrence:t,onSelectDay:r,extra:e.items.length-1,onDragStart:a&&!n?l:void 0,onDragEnd:f,onUnpack:n&&i?()=>i(s,Z(e.at)):void 0},`${m}-${Z(e.at)}`)}),v>0&&(0,X.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),r(s)},className:`px-1 text-start text-badge text-dark-muted hover:text-accent-blue`,children:o(`automation.moreCount`,{count:v})})]})]},s.toISOString())})})]})}function Mt(e){let t=new Map;for(let n of e){let e=Z(n.at),r=t.get(e);r?r.items.push(n):t.set(e,{at:n.at,items:[n]})}return[...t.values()].sort((e,t)=>e.at.getTime()-t.at.getTime())}function Nt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onFocusSlot:i,onMoveOccurrence:a}){let{t:o}=S(),s=(0,q.useMemo)(()=>Tt(e),[e]),c=(0,q.useMemo)(()=>Array.from({length:24},(e,t)=>t),[]),[l,u]=(0,q.useState)(null),[d,f]=(0,q.useState)(null),p=()=>{u(null),f(null)};return(0,X.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-[3rem_repeat(7,minmax(0,1fr))] border-b border-dark-border bg-dark-hover/40`,children:[(0,X.jsx)(`div`,{}),s.map(e=>{let n=ut(e),i=M(e,t);return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>r(e),className:[`border-s border-dark-border px-1 py-1.5 text-center`,i?`bg-accent-blue/10`:`hover:bg-dark-hover/60`].join(` `),children:[(0,X.jsx)(`div`,{className:`text-meta text-dark-muted`,children:o(St[Ct(e)]??``)}),(0,X.jsx)(`div`,{className:[`mx-auto mt-0.5 flex h-5 w-5 items-center justify-center rounded-full text-meta tabular-nums`,n?`bg-accent-blue font-semibold text-accent-fg`:`text-dark-text`].join(` `),children:e.getDate()})]},e.toISOString())})]}),(0,X.jsxs)(`div`,{className:`custom-scrollbar grid max-h-[62vh] grid-cols-[3rem_repeat(7,minmax(0,1fr))] overflow-y-auto`,children:[(0,X.jsx)(`div`,{className:`relative`,style:{height:`72rem`},children:c.map(e=>(0,X.jsx)(`div`,{className:`absolute end-1 -translate-y-1/2 text-badge tabular-nums text-dark-muted`,style:{top:`${e/24*100}%`},children:e===0?``:`${String(e).padStart(2,`0`)}:00`},e))}),s.map(e=>{let o=Dt(e),s=Mt(n.get(o)??[]),m=M(e,t);return(0,X.jsxs)(`div`,{"data-day":o,onDragOver:e=>{l&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),f(o))},onDragLeave:()=>f(e=>e===o?null:e),onDrop:t=>{if(!l)return;t.preventDefault();let n=l;p(),a?.(n,e)},className:[`relative border-s border-dark-border`,d===o?`bg-accent-blue/15 ring-2 ring-inset ring-accent-blue/70`:m?`bg-accent-blue/5`:``].join(` `),style:{height:`72rem`},children:[c.map(e=>(0,X.jsx)(`div`,{className:`absolute inset-x-0 border-t ${e===0?`border-transparent`:`border-dark-border/60`}`,style:{top:`${e/24*100}%`}},e)),s.map(t=>{let n=t.items[0],o=t.at.getHours()*60+t.at.getMinutes();return(0,X.jsx)(`div`,{className:`absolute inset-x-0.5 z-10`,style:{top:`${o/1440*100}%`},children:(0,X.jsx)(At,{occurrence:n,onSelectDay:r,extra:t.items.length-1,onDragStart:a&&t.items.length===1?u:void 0,onDragEnd:p,onUnpack:i&&t.items.length>1?()=>i(e,Z(t.at)):void 0})},`${e.toISOString()}-${Z(t.at)}`)})]},e.toISOString())})]})]})}var Pt=e=>K(e,`HH:mm`);function Ft({day:e,occurrences:n,focusSlot:r,onClearFocus:i,onEdit:a,onRun:o,onToggle:s,onDelete:c,onCreate:l}){let{t:u}=S(),f=r??null,m=f?n.filter(e=>Pt(e.at)===f).length:0,g=f?n.findIndex(e=>Pt(e.at)===f):-1,_=(0,q.useRef)(null);return(0,q.useEffect)(()=>{f&&_.current?.scrollIntoView?.({block:`nearest`})},[f]),(0,X.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col overflow-hidden rounded-xl border border-dark-border bg-dark-surface lg:w-72`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-2 border-b border-dark-border px-3 py-2.5`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsxs)(`div`,{className:`truncate text-sm font-semibold`,children:[u(St[Ct(e)]??``),` · `,K(e,`yyyy-MM-dd`)]}),(0,X.jsxs)(`div`,{className:`text-meta text-dark-muted`,children:[u(`automation.tasksCount`,{count:n.length}),ut(e)?` · ${u(`automation.today`)}`:``]})]}),(0,X.jsx)(`button`,{type:`button`,onClick:l,title:u(`automation.new`),className:`rounded-lg p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(y,{size:15})})]}),f&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-dark-border bg-accent-blue/10 px-3 py-1.5 text-meta`,children:[(0,X.jsx)(`span`,{className:`shrink-0 font-medium tabular-nums`,children:f}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted`,children:u(`automation.slotFocus`,{count:m})}),i&&(0,X.jsx)(`button`,{type:`button`,onClick:i,title:u(`automation.clearFocus`),className:`rounded p-0.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(b,{size:12})})]}),(0,X.jsx)(`div`,{className:`custom-scrollbar flex-1 overflow-y-auto p-2.5`,children:n.length===0?(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-1 px-2 py-8 text-center`,children:[(0,X.jsx)(t,{size:22,className:`text-dark-muted`}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:u(`automation.dayEmpty`)}),(0,X.jsx)(`p`,{className:`text-meta text-dark-muted/70`,children:u(`automation.dayEmptyHint`)})]}):(0,X.jsx)(`div`,{className:`space-y-2`,children:n.map((e,t)=>{let n=e.automation,r=n.status===`enabled`,i=f!==null&&Pt(e.at)===f;return(0,X.jsxs)(`div`,{ref:t===g?_:void 0,"data-focus-slot":i?f:void 0,className:[`rounded-lg border bg-dark-bg/50 px-2.5 py-2`,i?`border-accent-blue/60 ring-1 ring-inset ring-accent-blue/50`:`border-dark-border`].join(` `),children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`shrink-0 text-meta font-medium tabular-nums text-dark-muted`,children:Pt(e.at)}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium`,title:n.name,children:n.name}),(0,X.jsx)(`span`,{className:`shrink-0 rounded px-1 py-0.5 text-badge ${r?`bg-accent-green/20 text-accent-green`:`bg-dark-hover text-dark-muted`}`,children:u(r?`automation.enabled`:`automation.disabled`)})]}),(0,X.jsxs)(`div`,{className:`mt-2 flex items-center gap-1.5`,children:[n.nextRunAt&&(0,X.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-badge tabular-nums text-dark-muted`,children:[u(`automation.nextRun`),` `,K(new Date(n.nextRunAt),`MM-dd HH:mm`)]}),(0,X.jsxs)(`div`,{className:`ms-auto flex shrink-0 items-center gap-1`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>a(n),title:u(`automation.edit`),className:`rounded p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(h,{size:14})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>s(n),title:u(r?`automation.disable`:`automation.enable`),className:`rounded p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(x,{size:14})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>o(n.id),title:u(`automation.runNow`),className:`rounded p-1.5 text-accent-green hover:bg-dark-hover`,children:(0,X.jsx)(p,{size:14})}),c&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>c(n),title:u(`automation.delete`),className:`rounded p-1.5 text-dark-muted hover:bg-accent-red/10 hover:text-accent-red`,children:(0,X.jsx)(d,{size:14})})]})]})]},e.key)})})})]})}var Q={name:``,instructions:``,jobKind:`agent`,workflowTemplate:``,freq:`daily`,time:`09:00`,dow:`1`,onceAt:``,cron:`0 9 * * *`,modelRef:``,connectorIds:[],channelIds:[],workspaceDir:``,readAutoAllow:!0,runSessionMode:`home`,runSessionId:``},It=`.agent/automation-attachments`,Lt=`workflow:`;function Rt(e){return/^[a-z0-9][a-z0-9_-]*$/.test(e)}function zt(e){let t=e??``;if(!t.startsWith(Lt))return``;let n=t.slice(9).trim();return Rt(n)?n:``}var Bt=`deepseekcode:automation-view`,Vt=[{id:`month`,key:`automation.viewMonth`,Icon:v},{id:`week`,key:`automation.viewWeek`,Icon:a},{id:`list`,key:`automation.viewList`,Icon:u}];function Ht(){try{let e=localStorage.getItem(Bt);if(e===`month`||e===`week`||e===`list`)return e}catch{}return`month`}function Ut(e){try{localStorage.setItem(Bt,e)}catch{}}var $=e=>String(e).padStart(2,`0`);function Wt(e){let t=e.schedule,n=zt(e.name),r={modelRef:e.modelRef??``,connectorIds:Array.isArray(e.connectorIds)?[...e.connectorIds]:[],channelIds:Array.isArray(e.notificationChannelIds)?[...e.notificationChannelIds]:[],workspaceDir:e.workspaceDir??``,readAutoAllow:e.readAutoAllow,runSessionMode:e.runSessionMode??`home`,runSessionId:e.runSessionId??``,workflowTemplate:n,jobKind:n?`workflow`:`agent`};if(t.kind===`once`&&t.fireAt){let n=new Date(t.fireAt);return{...Q,name:e.name,instructions:e.instructions,freq:`once`,time:`${$(n.getHours())}:${$(n.getMinutes())}`,onceAt:`${n.getFullYear()}-${$(n.getMonth()+1)}-${$(n.getDate())}T${$(n.getHours())}:${$(n.getMinutes())}`,...r}}let i=(t.cron||``).trim().split(/\s+/),a={...Q,name:e.name,instructions:e.instructions,...r};if(i.length===5){let e=i[0]??``,t=i[1]??``,n=i[4]??``,r=`${$(parseInt(t,10)||0)}:${$(parseInt(e,10)||0)}`;if(n===`*`)return{...a,freq:`daily`,time:r};if(n===`1-5`)return{...a,freq:`weekdays`,time:r};if(/^\d+$/.test(n))return{...a,freq:`weekly`,time:r,dow:n}}return{...a,freq:`custom`,cron:t.cron||``}}function Gt(e){let[t,n]=e.time.split(`:`),r=parseInt(t??``,10),i=parseInt(n??``,10);switch(e.freq){case`daily`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * *`}:null;case`weekdays`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * 1-5`}:null;case`weekly`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * ${e.dow}`}:null;case`once`:return e.onceAt?{kind:`once`,fireAt:new Date(e.onceAt).toISOString()}:null;case`custom`:return e.cron.trim()?{kind:`cron`,cron:e.cron.trim()}:null}}function Kt(e,t){if(e.kind===`once`&&e.fireAt){let n=new Date(e.fireAt);return`${t(`automation.badgeOnce`)} ${n.toLocaleString()}`}let n=(e.cron||``).trim().split(/\s+/);if(n.length!==5)return e.cron||``;let r=n[0]??``,i=n[1]??``,a=n[4]??``,o=`${$(parseInt(i,10)||0)}:${$(parseInt(r,10)||0)}`;return a===`*`?t(`automation.badgeDaily`,{time:o}):a===`1-5`?t(`automation.badgeWeekdays`,{time:o}):/^\d+$/.test(a)?t(`automation.badgeWeekly`,{day:t(`automation.dow.${[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`][parseInt(a,10)%7]}`),time:o}):e.cron||``}var qt=[{value:`1`,key:`automation.dow.monday`},{value:`2`,key:`automation.dow.tuesday`},{value:`3`,key:`automation.dow.wednesday`},{value:`4`,key:`automation.dow.thursday`},{value:`5`,key:`automation.dow.friday`},{value:`6`,key:`automation.dow.saturday`},{value:`0`,key:`automation.dow.sunday`}];function Jt(e){let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`\\`),t.lastIndexOf(`/`));return n===-1?t:t.slice(n+1)}function Yt({isOpen:e,initial:t,onClose:n,onConfirm:r}){let{t:i}=S(),{visible:a,phase:o}=de(e),[c,u]=(0,q.useState)(t),[d,p]=(0,q.useState)(null),[m,h]=(0,q.useState)([]),[g,_]=(0,q.useState)(!1),[v,y]=(0,q.useState)(``),[ee,te]=(0,q.useState)(t),ne=(0,q.useRef)(null),x=async e=>{_(!0),y(``);try{let t=await w.dirs.list(e);if(!t.success||!t.data){y(t.error||`加载目录失败`);return}u(t.data.path),p(t.data.parent),h(t.data.dirs||[]),te(t.data.path)}catch(e){y(e instanceof Error?e.message:`加载目录失败`)}finally{_(!1)}};return(0,q.useEffect)(()=>{e&&x(t)},[e,t]),(0,q.useEffect)(()=>{ne.current?.focus()},[]),(0,q.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())};return document.addEventListener(`keydown`,t),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,t),document.body.style.overflow=``}},[e,n]),a?(0,X.jsxs)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center overflow-hidden p-4`,role:`dialog`,"aria-modal":`true`,children:[(0,X.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":o,onClick:n}),(0,X.jsxs)(`div`,{className:`relative w-full max-w-lg mx-4 bg-dark-overlay ui-surface-overlay border border-dark-border rounded-xl shadow-pop flex flex-col max-h-[70vh] ui-overlay-panel`,"data-phase":o,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5 border-b border-dark-border shrink-0`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-2 text-compact font-semibold text-dark-text`,children:[(0,X.jsx)(oe,{size:15,className:`text-accent-blue`}),i(`automation.workspacePick`)]}),(0,X.jsx)(`button`,{type:`button`,onClick:n,className:`rounded p-1 text-dark-muted hover:bg-dark-hover`,children:(0,X.jsx)(b,{size:15})})]}),(0,X.jsxs)(`div`,{className:`p-4 flex flex-col gap-3 min-h-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsxs)(`div`,{className:`relative flex-1`,children:[(0,X.jsx)(f,{size:13,className:`absolute start-2.5 top-1/2 -translate-y-1/2 text-dark-muted/60`}),(0,X.jsx)(`input`,{ref:ne,value:ee,onChange:e=>te(e.target.value),onKeyDown:e=>{e.key===`Enter`&&x(ee.trim())},spellCheck:!1,className:`w-full rounded-lg border border-dark-border bg-dark-surface ps-8 pe-2.5 py-1.5 text-xs font-mono focus:outline-none focus:border-accent-blue/50`})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>void x(ee.trim()),disabled:g||!ee.trim(),className:`shrink-0 rounded-lg border border-dark-border px-2.5 py-1.5 text-xs text-dark-muted hover:bg-dark-hover disabled:opacity-40`,children:i(`chat.dirPickerGo`)})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`flex-1 truncate font-mono text-meta text-dark-muted bg-dark-surface rounded-md px-2 py-1 border border-dark-border`,title:c,children:c||`—`}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>d&&void x(d),disabled:g||!d,className:`shrink-0 flex items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-meta text-dark-muted hover:bg-dark-hover disabled:opacity-40`,children:[(0,X.jsx)(s,{size:12}),i(`chat.dirPickerUp`)]})]}),(0,X.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto rounded-lg border border-dark-border bg-dark-surface divide-y divide-dark-border/60`,children:g?(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-xs text-dark-muted`,children:[(0,X.jsx)(l,{size:14,className:`animate-spin`}),i(`chat.loading`)]}):v?(0,X.jsx)(`div`,{className:`px-3 py-4 text-xs text-accent-red`,children:v}):m.length===0?(0,X.jsx)(`div`,{className:`px-3 py-4 text-xs text-dark-muted/60 text-center`,children:`—`}):m.map(e=>{let t=c.includes(`\\`)?`\\`:`/`,n=c.endsWith(t)?c+e:c+t+e;return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void x(n),className:`w-full flex items-center gap-2 px-3 py-1.5 text-start text-xs text-dark-text hover:bg-dark-hover`,children:[(0,X.jsx)(ie,{size:13,className:`shrink-0 text-accent-yellow/80`}),(0,X.jsx)(`span`,{className:`truncate`,children:e})]},e)})}),(0,X.jsx)(ue,{variant:`accent`,className:`w-full`,onClick:()=>r(c),disabled:!c,loading:g,children:i(`chat.dirPickerConfirm`)})]})]})]}):null}function Xt(){let{t:e}=S(),{automations:r,runsByAutomation:a,fetchAutomations:s,createAutomation:u,updateAutomation:v,deleteAutomation:ie,toggleAutomation:le,runAutomation:pe,fetchRuns:he,error:ge}=me(),[_e,T]=(0,q.useState)(!1),{visible:E,phase:ve}=de(_e),[be,D]=(0,q.useState)(null),[O,k]=(0,q.useState)(Q),[xe,Se]=(0,q.useState)(null),[A,j]=(0,q.useState)(``),[Ce,we]=(0,q.useState)(!1),[Ee,M]=fe(),De=async t=>{await M({message:e(`automation.deleteConfirm`,{name:t.name}),variant:`danger`})&&await ie(t.id)},[Oe,ke]=(0,q.useState)(!1),[N,Ae]=(0,q.useState)(Ht),[P,je]=(0,q.useState)(()=>new Date),[F,Me]=(0,q.useState)(()=>new Date),[Ne,Pe]=(0,q.useState)(null),I=e=>{Me(e),Pe(null)};(0,q.useEffect)(()=>{Ut(N)},[N]);let Fe=(0,q.useMemo)(()=>{if(N===`month`){let e=wt(P);return{from:e[0],to:e[e.length-1]}}if(N===`week`){let e=Tt(P);return{from:e[0],to:e[e.length-1]}}return null},[N,P]),L=(0,q.useMemo)(()=>Fe?_t(r,Fe.from,Fe.to):[],[r,Fe]),Ie=(0,q.useMemo)(()=>xt(L),[L]),R=(0,q.useMemo)(()=>Ie.get(bt(F))??[],[Ie,F]),Le=e=>{let t=N===`week`?Te(P,e):ye(P,e);je(t),(N===`week`?ct(F,t,{weekStartsOn:1}):lt(F,t))||I(t)},Re=()=>{let e=new Date;je(e),I(e)},ze=async(t,n)=>{let r=yt(t.automation,n);if(!r.ok){r.reason===`noop-day`?C.info(e(`automation.dragNoop`)):C.warning(e(`automation.dragLocked`));return}let i=Kt(t.automation.schedule,e);await v(t.automation.id,{schedule:r.schedule})&&(I(n),C.success(e(`automation.dragMoved`,{name:t.automation.name,from:i,to:Kt(r.schedule,e)})))},Be=(0,q.useMemo)(()=>{if(N===`week`){let e=Tt(P);return`${K(e[0],`yyyy-MM-dd`)} → ${K(e[e.length-1],`MM-dd`)}`}return K(P,`yyyy-MM`)},[N,P]),[Ve,He]=(0,q.useState)([]),[Ue,We]=(0,q.useState)([]),[Ge,z]=(0,q.useState)([]),[B,V]=(0,q.useState)([]),[Ke,qe]=(0,q.useState)(!1),[Je,H]=(0,q.useState)([]),[Ye,Xe]=(0,q.useState)(!1),[Ze,Qe]=(0,q.useState)(!1),$e=async()=>{if(Ye)return;Xe(!0);let e=await w.sessions.list().catch(()=>({success:!1,data:void 0}));e.success&&Array.isArray(e.data)&&H(e.data.filter(e=>!e.id.startsWith(`__automation_run__`)))},[U,W]=(0,q.useState)([]),et=(0,q.useRef)(null);(0,q.useEffect)(()=>{s()},[s]);let G=async e=>{D(null),k(e?{...e.form}:{...Q}),W([]),T(!0),await rt()},tt=async e=>{D(e.id),k(Wt(e)),W((e.attachments??[]).map((e,t)=>({id:`existing-${t}-${e}`,name:Jt(e),file:null,uploading:!1,path:e}))),T(!0),await rt(),e.runSessionMode===`fixed`&&$e()},nt=()=>{T(!1),D(null),k(Q),W([]),ke(!1)},rt=async()=>{Qe(!0);try{let e=w.templates?.list?w.templates.list().catch(()=>({success:!1,data:void 0})):Promise.resolve({success:!1,data:void 0}),[t,n,r,i]=await Promise.all([w.models.list().catch(()=>({success:!1,data:void 0})),w.connectors.list().catch(()=>({success:!1,data:void 0})),w.channels.list().catch(()=>({success:!1,data:void 0})),e]);t.success&&t.data?.models?He(t.data.models.filter(e=>e.enabled!==!1)):He([]),n.success&&n.data?.connectors?We(n.data.connectors.filter(e=>e.installed)):We([]),r.success&&Array.isArray(r.data)?z(r.data):z([]),i.success&&Array.isArray(i.data)?V(i.data):V([]),qe(!0)}finally{Qe(!1)}},it=e=>{k(t=>{if(t.jobKind===e)return t;let n=e===`agent`&&!zt(t.name);return{...t,jobKind:e,workflowTemplate:``,instructions:``,name:n?t.name:``}})},at=()=>{let e=B.find(e=>e.id===O.workflowTemplate),t={};for(let n of e?.inputs??[])t[n.name]=n.default===void 0?``:n.default;k(e=>({...e,instructions:JSON.stringify(t,null,2)}))},ot=async()=>{let t=Gt(O);if(!t)return;let n=O.jobKind===`workflow`;if(n&&!O.workflowTemplate)return;if(n){let t=O.instructions.trim();if(t){let n;try{n=JSON.parse(t)}catch{C.warning(e(`automation.workflowJsonInvalid`));return}if(!n||typeof n!=`object`||Array.isArray(n)){C.warning(e(`automation.workflowJsonNotObject`));return}}}else if(!O.name.trim()||!O.instructions.trim())return;if(U.some(e=>e.uploading)){C.warning(`附件上传中,请稍候…`);return}let r=U.filter(e=>e.error).map(e=>e.name);if(r.length>0){C.warning(`附件上传失败:${r.join(`, `)}`);return}we(!0);let i={name:n?`${Lt}${O.workflowTemplate}`:O.name.trim(),instructions:O.instructions.trim(),schedule:t,workspaceDir:O.workspaceDir.trim(),readAutoAllow:O.readAutoAllow,modelRef:O.modelRef.trim()||null,attachments:U.map(e=>e.path).filter(e=>!!e),connectorIds:[...O.connectorIds],notificationChannelIds:[...O.channelIds],runSessionMode:O.runSessionMode,runSessionId:O.runSessionMode===`fixed`&&O.runSessionId.trim()||null},a=be?await v(be,i):await u(i)!==null;we(!1),a&&nt()},st=async e=>{let t=A.trim();if(!t)return;let[n,...r]=t.split(/\s+/),i=r.join(` `);n&&i&&(await fetch(`/api/automations/${encodeURIComponent(e)}/permissions`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({tool:n,target:i})})).ok&&(j(``),await s())},ut=async(e,t)=>{(await fetch(`/api/automations/${encodeURIComponent(e)}/permissions`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({entry:t})})).ok&&await s()},ft=async e=>{let t=xe===e?null:e;Se(t),t&&await he(e)},pt=async e=>{if(!e||e.length===0)return;let t=Array.from(e).map(e=>({id:`f-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:e.name,file:e,uploading:!0}));W(e=>[...e,...t]);for(let e of t){let t=`${It}/${e.name}`;try{let n=await w.files.upload(e.file,t);if(n.success&&n.data?.path){let t=n.data.path.replace(/\\/g,`/`);W(n=>n.map(n=>n.id===e.id?{...n,uploading:!1,path:t}:n))}else W(t=>t.map(t=>t.id===e.id?{...t,uploading:!1,error:n.error||`upload failed`}:t))}catch(t){let n=t instanceof Error?t.message:`upload failed`;W(t=>t.map(t=>t.id===e.id?{...t,uploading:!1,error:n}:t))}}},J=e=>{W(t=>t.filter(t=>t.id!==e))},Y=[{id:`movie`,nameKey:`automation.tplMovieName`,descKey:`automation.tplMovieDesc`,form:{...Q,name:e(`automation.tplMovieName`),instructions:e(`automation.tplMovieInstr`),freq:`daily`,time:`20:00`}},{id:`health`,nameKey:`automation.tplHealthName`,descKey:`automation.tplHealthDesc`,form:{...Q,name:e(`automation.tplHealthName`),instructions:e(`automation.tplHealthInstr`),freq:`daily`,time:`14:00`}},{id:`why`,nameKey:`automation.tplWhyName`,descKey:`automation.tplWhyDesc`,form:{...Q,name:e(`automation.tplWhyName`),instructions:e(`automation.tplWhyInstr`),freq:`daily`,time:`16:00`}},{id:`git`,nameKey:`automation.tplGitName`,descKey:`automation.tplGitDesc`,form:{...Q,name:e(`automation.tplGitName`),instructions:e(`automation.tplGitInstr`),freq:`weekdays`,time:`09:00`}}],mt=B.find(e=>e.id===O.workflowTemplate),ht=(O.jobKind===`workflow`?!!O.workflowTemplate:!!(O.name.trim()&&O.instructions.trim()))&&(O.freq===`custom`?!!O.cron.trim():O.freq!==`once`||!!O.onceAt);return(0,X.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-y-auto p-6`,children:[Ee,(0,X.jsxs)(`div`,{className:`max-w-7xl w-full mx-auto`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between mb-1`,children:[(0,X.jsxs)(`h2`,{className:`text-xl font-semibold flex items-center gap-2`,children:[(0,X.jsx)(ne,{size:20,className:`text-accent-blue`}),e(`automation.title`)]}),(0,X.jsx)(`button`,{onClick:()=>void s(),className:`p-2 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.refresh`),children:(0,X.jsx)(ee,{size:16})})]}),(0,X.jsx)(`p`,{className:`text-sm text-dark-muted mb-4`,children:e(`automation.subtitle`)}),(0,X.jsx)(`div`,{className:`mb-4`,children:r.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,X.jsx)(_,{size:15,className:`text-accent-yellow`}),(0,X.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.recommendedTitle`)})]}),(0,X.jsx)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-4`,children:Y.map(t=>(0,X.jsxs)(`button`,{onClick:()=>void G(t),className:`flex flex-col gap-1 rounded-xl border border-dark-border bg-dark-surface p-2.5 text-start transition-colors hover:border-accent-blue/60 hover:bg-dark-hover/50`,children:[(0,X.jsx)(`span`,{className:`text-xs font-semibold`,children:e(t.nameKey)}),(0,X.jsx)(`span`,{className:`text-meta leading-relaxed text-dark-muted line-clamp-1`,children:e(t.descKey)}),(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 self-start rounded bg-dark-hover px-1.5 py-0.5 text-badge text-dark-muted`,children:[(0,X.jsx)(ne,{size:11}),` `,Kt(Gt(t.form),e)]})]},t.id))})]}):(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5 pe-1 text-meta font-medium text-dark-muted`,children:[(0,X.jsx)(_,{size:13,className:`text-accent-yellow`}),e(`automation.recommendedTitle`)]}),Y.map(t=>(0,X.jsxs)(`button`,{onClick:()=>void G(t),title:e(t.descKey),className:`flex items-center gap-1.5 rounded-lg border border-dark-border bg-dark-surface px-2 py-1 text-meta text-dark-muted transition-colors hover:border-accent-blue/60 hover:text-dark-text`,children:[(0,X.jsx)(y,{size:11}),e(t.nameKey),(0,X.jsx)(`span`,{className:`text-badge tabular-nums opacity-60`,children:Kt(Gt(t.form),e)})]},t.id))]})}),ge&&(0,X.jsxs)(`div`,{className:`mb-4 p-3 rounded-lg bg-accent-red/10 text-accent-red text-sm flex items-center gap-2`,children:[(0,X.jsx)(m,{size:16}),` `,ge]}),(0,X.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(`div`,{className:`flex items-center rounded-lg border border-dark-border bg-dark-surface p-0.5`,children:Vt.map(({id:t,key:n,Icon:r})=>(0,X.jsxs)(`button`,{onClick:()=>Ae(t),"aria-pressed":N===t,className:`flex items-center gap-1 rounded-md px-2.5 py-1 text-xs transition-colors ${N===t?`bg-accent-blue/15 text-accent-blue font-medium`:`text-dark-muted hover:text-dark-text`}`,children:[(0,X.jsx)(r,{size:13}),` `,e(n)]},t))}),N!==`list`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`button`,{onClick:()=>Le(-1),title:e(`automation.prevPeriod`),className:`rounded-lg border border-dark-border bg-dark-surface p-1.5 text-dark-muted hover:text-dark-text`,children:(0,X.jsx)(c,{size:14})}),(0,X.jsx)(`button`,{onClick:Re,className:`rounded-lg border border-dark-border bg-dark-surface px-2 py-1.5 text-xs text-dark-muted hover:text-dark-text`,children:e(`automation.today`)}),(0,X.jsx)(`button`,{onClick:()=>Le(1),title:e(`automation.nextPeriod`),className:`rounded-lg border border-dark-border bg-dark-surface p-1.5 text-dark-muted hover:text-dark-text`,children:(0,X.jsx)(se,{size:14})})]}),(0,X.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:Be})]}),(0,X.jsxs)(`div`,{className:`ms-auto flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`automation.tasksCount`,{count:r.length})}),(0,X.jsxs)(`button`,{onClick:()=>void G(),className:`flex items-center gap-1 rounded-lg bg-accent-blue px-3 py-1.5 text-xs font-medium text-accent-fg hover:brightness-110`,children:[(0,X.jsx)(y,{size:14}),` `,e(`automation.new`)]})]})]}),N!==`list`&&(0,X.jsxs)(`div`,{className:`mb-6 flex flex-col gap-4 lg:flex-row lg:items-start`,children:[(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[N===`month`?(0,X.jsx)(jt,{anchor:P,selectedDay:F,byDay:Ie,onSelectDay:I,onFocusSlot:(e,t)=>{Me(e),Pe(t)},onMoveOccurrence:(e,t)=>void ze(e,t)}):(0,X.jsx)(Nt,{anchor:P,selectedDay:F,byDay:Ie,onSelectDay:I,onFocusSlot:(e,t)=>{Me(e),Pe(t)},onMoveOccurrence:(e,t)=>void ze(e,t)}),r.length===0&&(0,X.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 rounded-lg border border-dashed border-dark-border px-3 py-2 text-xs text-dark-muted`,children:[(0,X.jsx)(t,{size:14}),e(`automation.emptyTitle`),` · `,e(`automation.emptyDesc`)]})]}),(0,X.jsx)(Ft,{day:F,occurrences:R,focusSlot:Ne,onClearFocus:()=>Pe(null),onEdit:e=>void tt(e),onRun:e=>void pe(e),onToggle:e=>void le(e.id,e.status!==`enabled`),onDelete:e=>void De(e),onCreate:()=>void G()})]}),N===`list`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,X.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.mineTitle`)}),(0,X.jsx)(`span`,{className:`text-xs text-dark-muted`,children:r.length})]}),r.length===0?(0,X.jsxs)(`div`,{className:`rounded-xl border border-dashed border-dark-border py-12 flex flex-col items-center gap-2 text-center`,children:[(0,X.jsx)(t,{size:32,className:`text-dark-muted`}),(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e(`automation.emptyTitle`)}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.emptyDesc`)}),(0,X.jsxs)(`button`,{onClick:()=>void G(),className:`mt-2 flex items-center gap-1 px-4 py-1.5 rounded-lg border border-dark-border bg-dark-surface hover:bg-dark-hover text-sm font-medium`,children:[(0,X.jsx)(y,{size:15}),` `,e(`automation.new`)]})]}):(0,X.jsx)(`div`,{className:`space-y-2`,children:r.map(t=>(0,X.jsxs)(`div`,{className:`rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between p-3`,children:[(0,X.jsxs)(`button`,{onClick:()=>void ft(t.id),className:`flex items-center gap-2 min-w-0 text-start`,children:[(0,X.jsx)(ne,{size:16,className:`text-accent-blue shrink-0`}),(0,X.jsx)(`span`,{className:`font-medium text-sm truncate`,children:t.name}),(0,X.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded shrink-0 ${t.status===`enabled`?`bg-accent-green/20 text-accent-green`:`bg-dark-hover text-dark-muted`}`,children:t.status===`enabled`?e(`automation.enabled`):e(`automation.disabled`)}),(0,X.jsx)(`span`,{className:`text-xs text-dark-muted shrink-0 hidden md:inline`,children:Kt(t.schedule,e)})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[t.nextRunAt&&(0,X.jsxs)(`span`,{className:`text-xs text-dark-muted hidden lg:inline me-1`,children:[e(`automation.nextRun`),`: `,new Date(t.nextRunAt).toLocaleString()]}),(0,X.jsx)(`button`,{onClick:()=>void tt(t),className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.edit`),children:(0,X.jsx)(h,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void le(t.id,t.status!==`enabled`),className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,title:t.status===`enabled`?e(`automation.disable`):e(`automation.enable`),children:(0,X.jsx)(x,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void pe(t.id),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-green`,title:e(`automation.runNow`),children:(0,X.jsx)(p,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void De(t),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-red`,title:e(`automation.delete`),children:(0,X.jsx)(d,{size:15})})]})]}),xe===t.id&&(0,X.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t border-dark-border pt-3`,children:[zt(t.name)?(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(`p`,{className:`text-xs text-dark-muted flex items-center gap-1.5`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-accent-blue/10 text-accent-blue`,children:[(0,X.jsx)(g,{size:11}),` `,e(`automation.jobKindWorkflow`)]}),(0,X.jsx)(`code`,{children:zt(t.name)})]}),t.instructions.trim()&&(0,X.jsx)(`pre`,{className:`text-badge text-dark-muted whitespace-pre-wrap font-mono`,children:t.instructions})]}):(0,X.jsx)(`p`,{className:`text-xs text-dark-muted whitespace-pre-wrap`,children:t.instructions}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1 flex items-center gap-1`,children:[(0,X.jsx)(ae,{size:12}),` `,e(`automation.historyTitle`)]}),(a[t.id]||[]).length===0&&(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.noRuns`)}),(a[t.id]||[]).slice(0,10).map(e=>(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-1`,children:[(0,X.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded flex items-center gap-1 ${e.status===`ok`?`bg-accent-green/20 text-accent-green`:e.status===`error`?`bg-accent-red/20 text-accent-red`:`bg-accent-yellow/20 text-accent-yellow`}`,children:[e.status===`ok`&&(0,X.jsx)(te,{size:11}),e.status]}),(0,X.jsx)(`span`,{className:`text-dark-muted`,children:new Date(e.startedAt).toLocaleString()}),(0,X.jsxs)(`span`,{className:`text-dark-muted truncate flex-1`,children:[`#`,e.id.slice(0,8),` · `,e.trigger]})]},e.id))]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1`,children:e(`automation.permissionsTitle`)}),t.permissions.length===0&&(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.permissionsEmpty`)}),(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-1`,children:t.permissions.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded bg-accent-blue/10 text-accent-blue text-xs`,children:[e,(0,X.jsx)(`button`,{onClick:()=>void ut(t.id,e),className:`hover:text-accent-red`,children:(0,X.jsx)(b,{size:12})})]},e))}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{value:A,onChange:e=>j(e.target.value),placeholder:e(`automation.permissionPlaceholder`),className:`flex-1 px-2 py-1.5 rounded-lg bg-dark-bg border border-dark-border text-xs focus:outline-none focus:border-accent-blue`}),(0,X.jsx)(`button`,{onClick:()=>void st(t.id),className:`px-3 py-1.5 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-xs`,children:e(`automation.add`)})]})]})]})]},t.id))})]})]}),E&&(0,X.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4`,onClick:nt,children:[(0,X.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":ve,"aria-hidden":`true`}),(0,X.jsxs)(`div`,{className:`relative w-full max-w-2xl rounded-xl border border-dark-border bg-dark-overlay ui-surface-overlay p-5 space-y-4 shadow-pop max-h-[90vh] overflow-y-auto custom-scrollbar ui-overlay-panel`,"data-phase":ve,onClick:e=>e.stopPropagation(),children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,children:e(be?`automation.editTitle`:`automation.createTitle`)}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`automation.subtitle`)})]}),(0,X.jsx)(`button`,{onClick:nt,className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,children:(0,X.jsx)(b,{size:16})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.jobKindLabel`)}),(0,X.jsx)(`div`,{className:`flex gap-1.5`,children:[{id:`agent`,label:e(`automation.jobKindAgent`),hint:e(`automation.jobKindAgentHint`)},{id:`workflow`,label:e(`automation.jobKindWorkflow`),hint:e(`automation.jobKindWorkflowHint`)}].map(e=>{let t=O.jobKind===e.id;return(0,X.jsxs)(`button`,{type:`button`,title:e.hint,onClick:()=>it(e.id),className:`flex-1 px-3 py-2 rounded-lg border text-sm flex items-center justify-center gap-1.5 ${t?`border-accent-blue bg-accent-blue/10 text-accent-blue`:`border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`}`,children:[e.id===`workflow`?(0,X.jsx)(g,{size:13}):(0,X.jsx)(_,{size:13}),e.label]},e.id)})})]}),O.jobKind===`workflow`&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.workflowTemplateLabel`)}),(0,X.jsxs)(`select`,{value:O.workflowTemplate,onChange:e=>{let t=e.target.value;k(e=>({...e,workflowTemplate:t,name:t?`${Lt}${t}`:``}))},className:`w-full px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.workflowTemplateNone`)}),B.map(e=>(0,X.jsx)(`option`,{value:e.id,children:(e.nameOverride||e.name||e.id)+(e.category?` · ${e.category}`:``)},e.id))]}),Ke&&B.length===0&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.workflowTemplateEmpty`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.nameLabel`)}),(0,X.jsx)(`input`,{autoFocus:O.jobKind===`agent`,value:O.name,onChange:e=>k(t=>({...t,name:e.target.value})),placeholder:e(`automation.namePlaceholder`),disabled:O.jobKind===`workflow`,className:`w-full px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue disabled:opacity-60`}),O.jobKind===`workflow`&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.workflowNameHint`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.scheduleLabel`)}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsxs)(`select`,{value:O.freq,onChange:e=>k(t=>({...t,freq:e.target.value})),className:`px-2.5 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:`daily`,children:e(`automation.freqDaily`)}),(0,X.jsx)(`option`,{value:`weekly`,children:e(`automation.freqWeekly`)}),(0,X.jsx)(`option`,{value:`weekdays`,children:e(`automation.freqWeekdays`)}),(0,X.jsx)(`option`,{value:`once`,children:e(`automation.freqOnce`)}),(0,X.jsx)(`option`,{value:`custom`,children:e(`automation.freqCustom`)})]}),O.freq===`weekly`&&(0,X.jsx)(`select`,{value:O.dow,onChange:e=>k(t=>({...t,dow:e.target.value})),className:`px-2.5 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:qt.map(t=>(0,X.jsx)(`option`,{value:t.value,children:e(t.key)},t.value))}),(O.freq===`daily`||O.freq===`weekly`||O.freq===`weekdays`)&&(0,X.jsx)(`input`,{type:`time`,value:O.time,onChange:e=>k(t=>({...t,time:e.target.value})),className:`flex-1 px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`}),O.freq===`once`&&(0,X.jsx)(`input`,{type:`datetime-local`,value:O.onceAt,onChange:e=>k(t=>({...t,onceAt:e.target.value})),className:`flex-1 px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`}),O.freq===`custom`&&(0,X.jsx)(`input`,{value:O.cron,onChange:e=>k(t=>({...t,cron:e.target.value})),placeholder:`*/30 * * * *`,className:`flex-1 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm font-mono focus:outline-none focus:border-accent-blue`})]})]}),O.jobKind===`agent`?(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.instructionLabel`)}),(0,X.jsx)(`textarea`,{value:O.instructions,onChange:e=>k(t=>({...t,instructions:e.target.value})),placeholder:e(`automation.instructionsPlaceholder`),rows:4,className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue resize-none`})]}):(0,X.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface/40 p-3 space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsx)(`label`,{className:`text-xs font-medium text-dark-muted`,children:e(`automation.workflowInputsLabel`)}),(mt?.inputs.length??0)>0&&(0,X.jsx)(`button`,{type:`button`,onClick:at,className:`text-badge text-accent-blue hover:underline`,children:e(`automation.workflowInputsFillDefaults`)})]}),mt&&mt.inputs.length>0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ul`,{className:`space-y-0.5`,children:mt.inputs.map(e=>(0,X.jsxs)(`li`,{className:`text-badge text-dark-muted`,children:[(0,X.jsx)(`code`,{className:`text-accent-blue`,children:e.name}),e.label&&(0,X.jsx)(`span`,{className:`ms-1`,children:e.label}),e.required&&(0,X.jsx)(`span`,{className:`ms-1 text-accent-red`,children:`*`}),e.description&&(0,X.jsxs)(`span`,{className:`ms-1 text-dark-muted/60`,children:[`— `,e.description]})]},e.name))}),(0,X.jsx)(`textarea`,{value:O.instructions,onChange:e=>k(t=>({...t,instructions:e.target.value})),placeholder:`{
2
+ "key": "value"
3
+ }`,rows:4,className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-xs font-mono focus:outline-none focus:border-accent-blue resize-none`}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70`,children:e(`automation.workflowInputsHint`)})]}):(0,X.jsx)(`p`,{className:`text-xs text-dark-muted/70`,children:e(`automation.workflowNoInputs`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(ce,{size:12}),` `,e(`automation.attachmentsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.attachmentsHint`)}),U.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.attachmentsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mb-2`,children:U.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs ${e.error?`bg-accent-red/10 text-accent-red`:e.uploading?`bg-dark-hover text-dark-muted`:`bg-accent-blue/10 text-accent-blue`}`,title:e.path??e.error,children:[(0,X.jsx)(ce,{size:11}),(0,X.jsx)(`span`,{className:`truncate max-w-[180px]`,children:e.name}),e.uploading&&(0,X.jsx)(l,{size:11,className:`animate-spin`}),e.error&&(0,X.jsx)(m,{size:11}),(0,X.jsx)(`button`,{onClick:()=>J(e.id),className:`hover:text-accent-red ms-0.5`,children:(0,X.jsx)(b,{size:11})})]},e.id))}),(0,X.jsx)(`input`,{ref:et,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{pt(e.target.files),e.target.value=``}}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>et.current?.click(),className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg border border-dashed border-dark-border text-xs text-dark-muted hover:border-accent-blue/60 hover:text-accent-blue`,children:[(0,X.jsx)(y,{size:12}),` `,e(`automation.attachmentsAdd`)]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(n,{size:12}),` `,e(`automation.modelLabel`)]}),(0,X.jsxs)(`select`,{value:O.modelRef,onChange:e=>k(t=>({...t,modelRef:e.target.value})),className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue disabled:opacity-50 disabled:cursor-not-allowed`,disabled:Ze||O.runSessionMode!==`new`,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.modelAuto`)}),Ve.map(e=>(0,X.jsxs)(`option`,{value:`${e.provider}:${e.id}`,children:[e.name,` · `,e.provider]},`${e.provider}:${e.id}`))]}),O.runSessionMode!==`new`&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelFollowsSession`)}),!Ze&&Ve.length===0&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelNoModels`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(f,{size:12}),` `,e(`automation.runSessionLabel`)]}),(0,X.jsxs)(`select`,{value:O.runSessionMode,onChange:e=>{let t=e.target.value;k(e=>({...e,runSessionMode:t})),t===`fixed`&&$e()},className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:`home`,children:e(`automation.runSessionHome`)}),(0,X.jsx)(`option`,{value:`new`,children:e(`automation.runSessionNew`)}),(0,X.jsx)(`option`,{value:`fixed`,children:e(`automation.runSessionFixed`)})]}),O.runSessionMode===`fixed`&&(0,X.jsxs)(`select`,{value:O.runSessionId,onChange:e=>k(t=>({...t,runSessionId:e.target.value})),className:`mt-2 w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,disabled:Ze,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.runSessionPick`)}),Je.map(e=>(0,X.jsx)(`option`,{value:e.id,children:e.title||e.id},e.id))]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.runSessionHint`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(re,{size:12}),` `,e(`automation.connectorsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.connectorsHint`)}),Ue.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.connectorsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Ue.map(e=>{let t=O.connectorIds.includes(e.id);return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>k(n=>({...n,connectorIds:t?n.connectorIds.filter(t=>t!==e.id):[...n.connectorIds,e.id]})),className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs transition-colors ${t?`bg-accent-blue/15 text-accent-blue border border-accent-blue/40`:`bg-dark-bg text-dark-muted border border-dark-border hover:border-accent-blue/40 hover:text-accent-blue`}`,children:[(0,X.jsx)(re,{size:11}),e.name]},e.id)})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(i,{size:12}),` `,e(`automation.channelsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.channelsHint`)}),Ge.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.channelsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Ge.map(e=>{let t=O.channelIds.includes(e.id);return(0,X.jsxs)(`button`,{type:`button`,disabled:!e.enabled,onClick:()=>k(n=>({...n,channelIds:t?n.channelIds.filter(t=>t!==e.id):[...n.channelIds,e.id]})),className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs transition-colors ${t?`bg-accent-blue/15 text-accent-blue border border-accent-blue/40`:e.enabled?`bg-dark-bg text-dark-muted border border-dark-border hover:border-accent-blue/40 hover:text-accent-blue`:`bg-dark-bg text-dark-muted/50 border border-dark-border opacity-60 cursor-not-allowed`}`,children:[(0,X.jsx)(i,{size:11}),e.name,!e.enabled&&(0,X.jsx)(`span`,{className:`text-avatar`,children:`·off`})]},e.id)})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(oe,{size:12}),` `,e(`automation.workspaceLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.workspaceHint`)}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{value:O.workspaceDir,onChange:e=>k(t=>({...t,workspaceDir:e.target.value})),placeholder:`留空使用当前工作目录`,className:`flex-1 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm font-mono focus:outline-none focus:border-accent-blue`}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>ke(!0),className:`shrink-0 inline-flex items-center gap-1 px-3 py-2 rounded-lg border border-dark-border text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:[(0,X.jsx)(oe,{size:12}),` `,e(`automation.workspacePick`)]}),O.workspaceDir&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>k(e=>({...e,workspaceDir:``})),className:`shrink-0 inline-flex items-center gap-1 px-2 py-2 rounded-lg border border-dark-border text-xs text-dark-muted hover:bg-dark-hover hover:text-accent-red`,title:e(`automation.workspaceClear`),children:(0,X.jsx)(b,{size:12})})]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(o,{size:12}),` `,e(`automation.permissionAccess`)]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-2 p-2.5 rounded-lg border border-dark-border bg-dark-bg`,children:[(0,X.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":O.readAutoAllow,onClick:()=>k(e=>({...e,readAutoAllow:!e.readAutoAllow})),className:`relative shrink-0 mt-0.5 inline-flex h-5 w-9 items-center rounded-full transition-colors ${O.readAutoAllow?`bg-accent-blue`:`bg-dark-hover`}`,children:(0,X.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${O.readAutoAllow?`translate-x-4`:`translate-x-0.5`}`})}),(0,X.jsxs)(`div`,{className:`flex-1`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium text-dark-text`,children:e(`automation.fullAccessLabel`)}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/80 mt-0.5`,children:e(`automation.fullAccessHint`)})]})]})]}),(0,X.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,X.jsx)(`button`,{onClick:nt,className:`px-4 py-2 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-sm`,children:e(`automation.cancel`)}),(0,X.jsx)(ue,{variant:`accent`,onClick:()=>void ot(),disabled:!ht,loading:Ce,children:e(`automation.save`)})]})]})]}),(0,dt.createPortal)((0,X.jsx)(Yt,{isOpen:Oe&&_e,initial:O.workspaceDir||``,onClose:()=>ke(!1),onConfirm:e=>{k(t=>({...t,workspaceDir:e})),ke(!1)}}),document.body)]})}export{Xt as AutomationView};
@@ -0,0 +1,8 @@
1
+ import{i as e,t}from"./rolldown-runtime-COiEfhsA.js";import{Gr as n,Kr as r,Z as i,_ as a,a as o,at as s,h as c,lt as l,nt as u,o as d,ut as f,wn as p}from"./icons-CYDRRPKW.js";import{t as m}from"./useTranslation-B-mfApCn.js";import{a as h,c as g,r as _,t as v}from"./useConfirm-Da8iQ_DZ.js";import{t as y}from"./api-plEYhRn0.js";import{I as b}from"./markdown-N5__3T-w.js";import"./common-Bbatsa0-.js";import{n as x,r as S,t as C}from"./channelMeta-BGQXQxgj.js";import{m as w}from"./index-CTbLW314.js";var T=e(r(),1),E=b(),D=[{labelKey:`im`,types:[`wechat`,`feishu`,`dingtalk`]},{labelKey:`international`,types:[`telegram`,`discord`,`slack`,`signal`,`whatsapp`]},{labelKey:`eastAsia`,types:[`line`,`qqbot`]},{labelKey:`collaboration`,types:[`matrix`,`mattermost`,`msteams`,`googlechat`]},{labelKey:`classic`,types:[`irc`,`imessage`,`sms`]},{labelKey:`other`,types:[`nextcloud-talk`,`nostr`,`synology-chat`,`tlon`,`twitch`,`zalo`,`zalouser`]},{labelKey:`builtin`,types:[`clickclack`,`raft`,`qa-channel`]}];function O(){let{t:e}=m(),{channels:t,availableTypes:n,typesLoaded:r,selectedType:i,selectType:a,loadTypes:o}=w();(0,T.useEffect)(()=>{o()},[o]);let s=(0,T.useMemo)(()=>{if(n.length===0)return[];let e=new Set(n),t=D.map(t=>({...t,types:t.types.filter(t=>e.has(t))})).filter(e=>e.types.length>0),r=new Set(D.flatMap(e=>e.types)),i=n.filter(e=>!r.has(e));return i.length>0?[...t,{labelKey:`plugins`,types:i}]:t},[n]),c=(0,T.useMemo)(()=>{let e=new Map;for(let n of t){let t=e.get(n.type)??{count:0,connected:0};e.set(n.type,{count:t.count+1,connected:t.connected+ +!!n.connected})}return e},[t]),l=n.length>0,u=(0,T.useMemo)(()=>l?t.filter(e=>n.includes(e.type)):[],[l,t,n]);return(0,E.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 border-e border-dark-border bg-dark-surface`,children:[(0,E.jsxs)(`div`,{className:`shrink-0 px-4 py-3 border-b border-dark-border`,children:[(0,E.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-dark-muted`,children:e(`channels.sidebar.title`)}),(0,E.jsx)(`p`,{className:`text-meta text-dark-muted mt-0.5`,children:u.length>0?e(`channels.sidebar.configuredCount`,{n:u.length}):e(l?`channels.sidebar.clickToConfigure`:`channels.sidebar.emptyHint`)})]}),(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar`,children:[r&&!l&&(0,E.jsxs)(`div`,{className:`px-4 py-10 text-center`,children:[(0,E.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`channels.sidebar.empty`)}),(0,E.jsx)(`p`,{className:`text-meta text-dark-muted/70 mt-1.5 leading-relaxed`,children:e(`channels.sidebar.emptyHint`)})]}),s.map(t=>{let n=t.types.filter(e=>c.has(e));return n.length===0?null:(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-badge font-semibold uppercase tracking-wider text-dark-muted/60`,children:e(`channels.categories.${t.labelKey}`)}),n.map(e=>{let t=c.get(e);return(0,E.jsx)(k,{label:x(e),icon:C(e),isSelected:i===e,experimental:S(e),info:t,onClick:()=>a(e)},e)})]},t.labelKey)}),(()=>{let t=s.flatMap(e=>e.types).filter(e=>!c.has(e));return t.length===0?null:(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-badge font-semibold uppercase tracking-wider text-dark-muted/60`,children:e(`channels.sidebar.unconfigured`)}),t.map(e=>(0,E.jsx)(k,{label:x(e),icon:C(e),isSelected:i===e,experimental:S(e),onClick:()=>a(e)},e))]})})()]})]})}function k({label:e,icon:t,isSelected:n,experimental:r,info:i,onClick:a}){let{t:s}=m();return(0,E.jsxs)(`button`,{onClick:a,className:`w-full flex items-center gap-2.5 px-4 py-2.5 text-start transition-colors hover:bg-dark-hover ${n?`bg-accent-blue/10 border-s-2 border-accent-blue`:`border-s-2 border-transparent`}`,children:[(0,E.jsx)(`span`,{className:`text-lg shrink-0 w-7 h-7 flex items-center justify-center rounded-md bg-dark-bg`,children:t}),(0,E.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,E.jsx)(`span`,{className:`text-sm font-medium text-dark-text truncate`,children:e}),r&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-avatar text-accent-yellow bg-accent-yellow/15 px-1 py-0.5 rounded shrink-0`,title:s(`channels.experimentalTip`),children:[(0,E.jsx)(p,{className:`w-2.5 h-2.5`}),` `,s(`channels.experimentalShort`)]}),i&&(0,E.jsx)(`span`,{className:`text-badge text-dark-muted bg-dark-hover px-1.5 py-0.5 rounded shrink-0`,children:i.count})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-1 mt-0.5`,children:i?i.connected>0?(0,E.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-accent-green`,children:[(0,E.jsx)(o,{className:`w-3 h-3`}),i.connected===i.count?s(`channels.status.connected`):s(`channels.sidebar.partialConnected`,{connected:i.connected,count:i.count})]}):(0,E.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-dark-muted`,children:[(0,E.jsx)(d,{className:`w-3 h-3`}),s(`channels.status.disconnected`)]}):(0,E.jsx)(`span`,{className:`text-meta text-dark-muted`,children:s(`channels.sidebar.unconfigured`)})})]})]})}var A={name:``,type:`wechat`,appId:``,appSecret:``,token:``,encodingAESKey:``,enabled:!0};function j(){let{t:e}=m(),[t,n]=v(),{channels:r,selectedType:i,availableTypes:a,create:o,update:u,remove:d,toggle:g,error:_,clearError:y,openQr:b,load:D,test:O,testResult:k,testing:j}=w(),P=(0,T.useMemo)(()=>a.length>0&&!!i&&!a.includes(i),[a,i]),F=(0,T.useMemo)(()=>i?r.filter(e=>e.type===i):[],[r,i]),[I,L]=(0,T.useState)(``),[R,z]=(0,T.useState)(A),[B,V]=(0,T.useState)(!1),H=I===`__new__`,U=(0,T.useMemo)(()=>H?null:F.find(e=>e.id===I)??null,[F,I,H]);(0,T.useEffect)(()=>{L(``),z(A),V(!1),y()},[i]),(0,T.useEffect)(()=>{i===`wechat`&&F.length===0&&!P&&b(null)},[i,F.length,P,b]),(0,T.useEffect)(()=>{U?z({name:U.name,type:U.type,appId:U.appId||``,appSecret:``,token:``,encodingAESKey:U.encodingAESKey||``,enabled:U.enabled}):H&&z(e=>({...e,type:i}))},[I]);let W=(e,t)=>{y(),z(n=>({...n,[e]:t}))},G=e=>{L(e),y()},K=()=>{L(`__new__`),z({...A,type:i}),y()},q=()=>{L(``),z(A),y()},J=async()=>{if(!R.name.trim())return;V(!0);let e=U?await u(U.id,R):await o(R);V(!1),e&&(L(``),z(A))},Y=async t=>{await n({message:e(`channels.actions.deleteConfirmShort`),variant:`danger`})&&await d(t)&&I===t&&(L(``),z(A))},X=(e,t)=>{g(e,t)};return i?(0,E.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 overflow-hidden`,children:[t,(0,E.jsx)(`div`,{className:`shrink-0 px-6 py-4 border-b border-dark-border`,children:(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:C(i)}),(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`h2`,{className:`font-semibold text-base text-dark-text`,children:x(i)}),S(i)&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-badge text-accent-yellow bg-accent-yellow/15 px-1.5 py-0.5 rounded`,title:e(`channels.experimentalTip`),children:[(0,E.jsx)(p,{className:`w-3 h-3`}),` `,e(`channels.experimentalLabel`)]})]}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:F.length>0?e(`channels.instancesCount`,{n:F.length}):e(`channels.notConfiguredYet`)}),S(i)&&(0,E.jsx)(`p`,{className:`text-badge text-accent-yellow mt-1`,children:e(`channels.experimentalDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`button`,{onClick:()=>D(),className:`text-xs px-3 py-1.5 rounded-lg border border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:e(`channels.actions.refresh`)}),(0,E.jsx)(h,{size:`sm`,variant:`accent`,onClick:K,leftIcon:(0,E.jsx)(l,{className:`w-3.5 h-3.5`}),children:e(`channels.createInstance`)})]})]})}),_&&(0,E.jsxs)(`div`,{className:`shrink-0 mx-6 mt-3 bg-accent-red/15 border border-accent-red text-accent-red px-3 py-2 rounded-lg text-sm flex justify-between items-center`,children:[(0,E.jsx)(`span`,{children:_}),(0,E.jsx)(`button`,{onClick:y,className:`text-accent-red hover:text-accent-red`,children:(0,E.jsx)(`span`,{className:`w-4 h-4 inline-flex items-center justify-center`,children:`×`})})]}),P&&(0,E.jsxs)(`div`,{className:`shrink-0 mx-6 mt-3 flex items-start gap-2 bg-accent-yellow/15 border border-accent-yellow text-accent-yellow px-3 py-2 rounded-lg text-xs`,children:[(0,E.jsx)(c,{className:`w-3.5 h-3.5 mt-0.5 shrink-0`}),(0,E.jsx)(`span`,{children:e(`channels.pluginMissingWarning`,{name:i===`wechat`?` WeChat Channel`:` ${x(i)}`})})]}),(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar p-6`,children:[F.length>1&&!H&&(0,E.jsxs)(`div`,{className:`mb-4`,children:[(0,E.jsx)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:e(`channels.selectInstance`)}),(0,E.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[F.map(e=>(0,E.jsxs)(`button`,{onClick:()=>G(e.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border transition-colors ${I===e.id?`bg-accent-blue/10 border-accent-blue/40 text-accent-blue`:`border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover`}`,children:[(0,E.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full ${e.connected?`bg-accent-green`:`bg-dark-muted`}`}),e.name]},e.id)),(0,E.jsxs)(`button`,{onClick:K,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border border-dashed border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:[(0,E.jsx)(l,{className:`w-3 h-3`}),` `,e(`channels.createShort`)]})]})]}),F.length===0&&I===``&&(0,E.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,E.jsx)(`div`,{className:`text-4xl mb-3`,children:C(i)}),(0,E.jsx)(`p`,{className:`text-dark-text font-medium`,children:e(`channels.emptyWithType`,{type:x(i)})}),(0,E.jsx)(`p`,{className:`text-sm text-dark-muted mt-1 mb-4`,children:e(i===`wechat`?`channels.wechatBindHint`:`channels.startWithCreate`)}),i===`wechat`&&(0,E.jsxs)(`button`,{onClick:()=>b(null),className:`flex items-center gap-1.5 text-sm px-4 py-2 rounded-lg bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green transition-colors mb-3`,children:[(0,E.jsx)(s,{className:`w-4 h-4`}),` `,e(`channels.scanToBind`)]}),(0,E.jsx)(h,{variant:`accent`,onClick:K,leftIcon:(0,E.jsx)(l,{className:`w-4 h-4`}),children:e(`channels.createInstance`)})]}),F.length===1&&I===``&&F[0]&&(0,E.jsx)(M,{channel:F[0],onEdit:()=>G(F[0].id),onDelete:()=>Y(F[0].id),onToggle:e=>X(F[0].id,e),onQr:()=>b(F[0]),onTest:()=>O(F[0].id),testResult:k[F[0].id],testing:j===F[0].id}),F.length>1&&I===``&&(0,E.jsx)(`div`,{className:`space-y-3`,children:F.map(e=>(0,E.jsx)(M,{channel:e,onEdit:()=>G(e.id),onDelete:()=>Y(e.id),onToggle:t=>X(e.id,t),onQr:()=>b(e),onTest:()=>O(e.id),testResult:k[e.id],testing:j===e.id},e.id))}),I!==``&&(H||U)&&(0,E.jsx)(N,{form:R,upd:W,saving:B,editing:!!U,channel:U??void 0,onSave:J,onCancel:q,onDelete:U?()=>Y(U.id):void 0,onQr:U?()=>b(U):void 0})]})]}):(0,E.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,E.jsxs)(`div`,{className:`text-center`,children:[(0,E.jsx)(f,{className:`w-12 h-12 mx-auto mb-3 text-dark-muted/40`}),(0,E.jsx)(`p`,{className:`text-dark-muted text-sm`,children:e(`channels.selectTypeHint`)})]})})}function M({channel:e,onEdit:t,onDelete:r,onToggle:i,onQr:l,onTest:u,testResult:f,testing:p}){let{t:h}=m();return(0,E.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`p-5`,children:(0,E.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h3`,{className:`font-medium text-dark-text`,children:e.name}),(0,E.jsxs)(`div`,{className:`flex items-center gap-3 mt-2`,children:[(0,E.jsx)(`span`,{className:`flex items-center gap-1 text-xs ${e.connected?`text-accent-green`:`text-dark-muted`}`,children:e.connected?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(o,{className:`w-3 h-3`}),` `,h(`channels.status.connected`)]}):(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(d,{className:`w-3 h-3`}),` `,h(`channels.status.disconnected`)]})}),(0,E.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`AppID: `,e.appId||`—`]}),e.implementationStatus===`OUTBOUND_ONLY`&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-badge text-accent-yellow bg-accent-yellow/15 px-1.5 py-0.5 rounded`,title:h(`channels.outboundOnlyTip`),children:[(0,E.jsx)(c,{className:`w-3 h-3`}),` `,h(`channels.outboundOnlyLabel`)]})]}),f&&(0,E.jsxs)(`p`,{className:`mt-1.5 text-xs ${f.ok?`text-accent-green`:`text-accent-red`}`,children:[f.detail??(f.ok?h(`channels.actions.testPassed`):h(`channels.actions.testFailed`)),typeof f.latencyMs==`number`&&f.ok?` · ${f.latencyMs}ms`:``]})]}),(0,E.jsx)(`button`,{onClick:()=>i(!e.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${e.enabled?`bg-accent-green`:`bg-dark-muted`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${e.enabled?`start-[18px]`:`start-0.5`}`})})]})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1 px-5 py-2.5 bg-dark-bg/50 border-t border-dark-border`,children:[e.type===`wechat`&&(0,E.jsxs)(`button`,{onClick:l,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-green hover:bg-accent-green/15 transition-colors`,children:[(0,E.jsx)(s,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.qrLogin`)]}),(0,E.jsxs)(`button`,{onClick:t,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-blue hover:bg-accent-blue/10 transition-colors`,children:[(0,E.jsx)(`span`,{className:`w-3.5 h-3.5 inline-flex items-center justify-center`,children:`✎`}),` `,h(`channels.actions.edit`)]}),e.enabled&&u&&(0,E.jsxs)(`button`,{onClick:u,disabled:p,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-blue hover:bg-accent-blue/10 transition-colors disabled:opacity-50`,children:[(0,E.jsx)(n,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.test`)]}),(0,E.jsxs)(`button`,{onClick:r,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-red hover:bg-accent-red/15 transition-colors ms-auto`,children:[(0,E.jsx)(a,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.delete`)]})]})]})}function N({form:e,upd:t,saving:n,editing:r,channel:o,onSave:c,onCancel:l,onDelete:u,onQr:d}){let{t:f}=m();return(0,E.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`px-5 py-4 border-b border-dark-border`,children:(0,E.jsx)(`h3`,{className:`font-medium text-dark-text`,children:f(r?`channels.editConfig`:`channels.createConfig`)})}),(0,E.jsxs)(`div`,{className:`p-5 space-y-4`,children:[(0,E.jsx)(P,{label:f(`channels.form.name`),required:!0,children:(0,E.jsx)(`input`,{value:e.name,onChange:e=>t(`name`,e.target.value),placeholder:f(`channels.form.namePlaceholderDev`),className:F})}),(0,E.jsxs)(P,{label:f(`channels.form.credentials`),children:[(0,E.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:f(`channels.form.appId`)}),(0,E.jsx)(`input`,{value:e.appId,onChange:e=>t(`appId`,e.target.value),placeholder:`AppID`,className:F})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`AppSecret`}),(0,E.jsx)(`input`,{type:`password`,value:e.appSecret,onChange:e=>t(`appSecret`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.appSecretValue`),className:F})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`Token`}),(0,E.jsx)(`input`,{value:e.token,onChange:e=>t(`token`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.tokenCallback`),className:F})]}),e.type===`wechat`&&(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`EncodingAESKey`}),(0,E.jsx)(`input`,{value:e.encodingAESKey,onChange:e=>t(`encodingAESKey`,e.target.value),placeholder:f(`channels.form.optionalShort`),className:F})]})]}),e.type===`wechat`&&(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:f(`channels.form.wechatIlinkHint`)})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-dark-border px-3 py-2.5`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`p`,{className:`text-sm text-dark-text`,children:f(`channels.form.enabled`)}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted`,children:f(`channels.form.enabledOffHint`)})]}),(0,E.jsx)(`button`,{onClick:()=>t(`enabled`,!e.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${e.enabled?`bg-accent-green`:`bg-dark-muted`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${e.enabled?`start-[18px]`:`start-0.5`}`})})]}),r&&o?.type===`wechat`&&d&&(0,E.jsxs)(`button`,{onClick:d,className:`w-full flex items-center justify-center gap-2 text-sm bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green px-3 py-2.5 rounded-lg transition-colors`,children:[(0,E.jsx)(s,{className:`w-4 h-4`}),` `,f(`channels.qrLoginReauth`)]})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 bg-dark-bg/50 border-t border-dark-border`,children:[(0,E.jsx)(`div`,{children:r&&u&&(0,E.jsxs)(`button`,{onClick:u,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-red hover:bg-accent-red/15 transition-colors`,children:[(0,E.jsx)(a,{className:`w-3.5 h-3.5`}),` `,f(`channels.actions.delete`)]})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`button`,{onClick:l,className:`px-4 py-2 text-sm text-dark-muted hover:text-dark-text transition-colors`,children:f(`channels.actions.cancel`)}),(0,E.jsx)(h,{variant:`accent`,onClick:c,loading:n,disabled:!e.name.trim(),leftIcon:(0,E.jsx)(i,{className:`w-3.5 h-3.5`}),children:f(`channels.save`)})]})]})]})}function P({label:e,required:t,children:n}){return(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:[e,t&&(0,E.jsx)(`span`,{className:`text-accent-red ms-0.5`,children:`*`})]}),n]})}var F=`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-2 text-sm text-dark-text placeholder-dark-muted/60 focus:outline-none focus:border-accent-blue transition-colors`,I=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),L=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),R=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),z=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),B=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),V=t((e=>{var t=L().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),H=t((e=>{var t=L().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),U=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),W=t((e=>{var t=R(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),G=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),K=t((e=>{var t=G();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),q=t(((e,t)=>{var n=K();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),J=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Y=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
+ ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),X=t((e=>{var t=J(),n=Y();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),Z=t((e=>{var t=L(),n=W(),r=R(),i=X(),a=J(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),Q=t((e=>{var t=L(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),ee=t(((e,t)=>{var n=X();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),te=t(((e,t)=>{var n=X(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t=0;for(;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),ne=t(((e,t)=>{var n=X();function r(e){this.mode=n.BYTE,this.data=typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),re=t(((e,t)=>{var n=X(),r=L();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t=0;for(;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
+ Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),ie=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),ae=t((e=>{var t=X(),n=ee(),r=te(),i=ne(),a=re(),o=Y(),s=L(),c=ie();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
+ Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),oe=t((e=>{var t=L(),n=R(),r=z(),i=B(),a=V(),o=H(),s=U(),c=W(),l=q(),u=Z(),d=Q(),f=X(),p=ae();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
5
+ The chosen QR Code version cannot contain this amount of data.
6
+ Minimum version required to store current data is: `+c+`.
7
+ `);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),$=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||(e.color={});let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),se=t((e=>{var t=$();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o!==void 0||i&&i.getContext||(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i!==void 0||n&&n.getContext||(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),ce=t((e=>{var t=$();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
+ `;return typeof a==`function`&&a(null,p),p}})),le=e(t((e=>{var t=I(),n=oe(),r=se(),i=ce();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1),ue=2e3,de=5;function fe({channel:e,onClose:t}){let{t:n}=m(),[r,i]=(0,T.useState)(`loading`),[a,o]=(0,T.useState)(null),[s,c]=(0,T.useState)(null),[l,u]=(0,T.useState)(``),d=(0,T.useRef)(null),f=(0,T.useRef)(0),p=(0,T.useRef)(null),h=(0,T.useRef)(!1),v=()=>{p.current&&=(clearTimeout(p.current),null),h.current=!0},b=async e=>{if(d.current)try{await le.toCanvas(d.current,e,{width:240,margin:2,color:{dark:`#000000ff`,light:`#ffffffff`}})}catch(e){console.warn(`[WechatQr] Canvas QR generation failed, falling back to URL:`,e)}},x=async()=>{if(!h.current&&s)try{let r=await y.channels.weixin.bindStatus(s),a=r?.data??r,o=a?.status??``;if(f.current=0,o===`confirmed`){if(!a?.channel_id){i(`error`),u(n(`channels.bindNoInstance`)),g.error(n(`channels.bindNoInstance`));return}i(`confirmed`),g.success(e?n(`channels.toastReauthSuccess`,{name:e.name}):n(`channels.toastBindSuccess`)),setTimeout(t,2400);return}if(o===`scaned`)i(`scanned`);else if(o===`expired`){i(`expired`);return}h.current||(p.current=setTimeout(x,ue))}catch(e){if(f.current++,console.warn(`[WechatQr] poll error (`+f.current+`/5)`,e),f.current>=de)i(`error`),u(n(`channels.pollFailedRefresh`)),g.error(n(`channels.pollFailedToast`));else if(!h.current){let e=Math.min(1e3*2**f.current,1e4);p.current=setTimeout(x,e)}}},S=()=>{v(),h.current=!1,f.current=0,p.current=setTimeout(x,1e3)},C=async()=>{i(`loading`),o(null),c(null),u(``),f.current=0;try{let e=await y.channels.weixin.bind(),t=e?.data??e,r=t?.qrcode_img_content??``,a=t?.qrcode??``;if(!r||!a){i(`error`),u(n(`channels.qrDataMissing`,{data:JSON.stringify(t)}));return}o(r),c(a),await b(r),i(`waiting`)}catch(e){i(`error`);let t=String(e?.message??e);u(t),g.error(n(`channels.fetchWechatQrFailed`,{error:t}))}},w=()=>{C()};return(0,T.useEffect)(()=>(C(),v),[]),(0,T.useEffect)(()=>(s&&S(),v),[s]),(0,E.jsx)(_,{isOpen:!0,onClose:t,title:n(`channels.bindTitle`,{name:e?.name??n(`channels.typeLabels.wechat`)}),size:`sm`,children:(0,E.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-2`,children:[(0,E.jsxs)(`div`,{className:`relative w-60 h-60 rounded-lg bg-white flex items-center justify-center overflow-hidden`,children:[r===`loading`&&(0,E.jsx)(`span`,{className:`text-dark-muted text-sm`,children:n(`channels.qr.generating`)}),r!==`error`&&r!==`expired`&&(0,E.jsx)(`canvas`,{ref:d,width:240,height:240,className:`w-full h-full object-contain ${r===`waiting`?``:`opacity-30`}`}),r===`scanned`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/70 flex flex-col items-center justify-center text-overlay-fg gap-1`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:`✓`}),(0,E.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.scanned`)})]}),r===`confirmed`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-accent-green/15 flex flex-col items-center justify-center text-accent-fg gap-2 px-4 text-center`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:`🎉`}),(0,E.jsx)(`span`,{className:`text-sm font-medium`,children:n(`channels.bindSuccess`)}),(0,E.jsx)(`span`,{className:`text-xs opacity-90`,children:e?n(`channels.connectedReady`,{name:e.name}):n(`channels.createdConnectedReady`)}),(0,E.jsx)(`button`,{onClick:t,className:`mt-1 text-xs bg-white/20 hover:bg-white/30 px-3 py-1.5 rounded-md transition-colors`,children:n(`channels.startUsing`)})]}),r===`expired`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-overlay-fg gap-2`,children:[(0,E.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.expired`)}),(0,E.jsx)(`button`,{onClick:w,className:`text-xs bg-accent-green hover:bg-accent-green px-3 py-1 rounded`,children:n(`channels.clickToRefresh`)})]}),r===`error`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-accent-red gap-2 px-4 text-center`,children:[(0,E.jsx)(`span`,{className:`text-xs`,children:l||n(`channels.unknownError`)}),(0,E.jsx)(`button`,{onClick:w,className:`text-xs bg-accent-blue hover:bg-accent-blue px-3 py-1 rounded text-accent-fg`,children:n(`channels.retry`)})]})]}),(0,E.jsxs)(`p`,{className:`text-sm text-dark-muted text-center`,children:[r===`waiting`&&n(`channels.waitingAuthorize`),r===`scanned`&&n(`channels.scannedConfirming`),r===`confirmed`&&n(`channels.confirmedClosing`),r===`loading`&&n(`channels.connectingIlink`),(r===`expired`||r===`error`)&&(r===`expired`?n(`channels.qr.expired`):``)]}),a&&r===`waiting`&&(0,E.jsxs)(`button`,{onClick:()=>window.open(a,`_blank`,`width=480,height=600,noopener`),className:`w-full flex items-center justify-center gap-2 text-sm bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green px-3 py-2.5 rounded-lg transition-colors`,children:[(0,E.jsx)(`span`,{children:`🔔`}),` `,n(`channels.openInNewTabFallback`)]})]})})}function pe(){let{t:e}=m(),{load:t,loading:n,qrOpen:r,qrChannel:i,closeQr:a}=w();return(0,T.useEffect)(()=>{t()},[]),(0,E.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-dark-bg text-dark-text`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-dark-border shrink-0`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h2`,{className:`font-semibold text-base`,children:e(`channels.title`)}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`channels.viewSubtitle`)})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,E.jsx)(`button`,{onClick:()=>t(),title:e(`channels.actions.refresh`),className:`p-2 rounded-lg text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:(0,E.jsx)(u,{className:`w-4 h-4 ${n?`animate-spin`:``}`})})})]}),(0,E.jsxs)(`div`,{className:`flex-1 flex min-h-0 overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`w-[260px] shrink-0`,children:(0,E.jsx)(O,{})}),(0,E.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,E.jsx)(j,{})})]}),r&&(0,E.jsx)(fe,{channel:i,onClose:a})]})}export{pe as ChannelConfigView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{At as t,Cr as n,Kr as r,Rt as i,Tr as a,Ut as o,_ as s,h as c,n as l,nt as u,pn as d,wr as f,xr as p}from"./icons-CYDRRPKW.js";import{t as m}from"./useTranslation-B-mfApCn.js";import{s as h}from"./useConfirm-Da8iQ_DZ.js";import{C as g}from"./MessageBubble-CVGXupVH.js";import{t as _}from"./api-plEYhRn0.js";import{I as v}from"./markdown-N5__3T-w.js";import{B as y,F as b,H as x,I as S,L as C,M as w,N as T,P as E,R as ee,j as D,z as te}from"./index-CTbLW314.js";var O=e(r(),1),k=v(),A=[];function j(e){let t=[];return e.query?t.push(e.query):e.connector&&t.push(e.connector),e.detail&&t.push(e.detail),t.join(` — `)}function ne({onApproved:e,refreshToken:t=0}){let{t:r}=m(),[i,a]=(0,O.useState)(A),[s,u]=(0,O.useState)(!0),[d,v]=(0,O.useState)(!0),[y,b]=(0,O.useState)(null),[x,S]=(0,O.useState)(null),C=(0,O.useCallback)(async()=>{u(!0);try{let e=await _.pendingArtifacts.list(`pending`);if(!e?.success)throw Error(e?.error||r(`charts.pending.loadFailed`));a(e.data?.items??A),S(null)}catch(e){S(e instanceof Error?e.message:String(e))}finally{u(!1)}},[r]);(0,O.useEffect)(()=>{C()},[C,t]);let w=(0,O.useCallback)(async(t,n)=>{b(t),S(null);try{let i=n===`approve`?await _.pendingArtifacts.approve(t):await _.pendingArtifacts.reject(t);if(!i?.success)throw Error(i?.error||r(`charts.pending.decideFailed`));a(e=>e.filter(e=>e.id!==t)),n===`approve`&&e?.(),C()}catch(e){S(e instanceof Error?e.message:String(e))}finally{b(null)}},[e,C,r]);return s&&i.length===0||i.length===0&&!x?null:(0,k.jsxs)(`div`,{"data-testid":`pending-artifacts`,className:`mx-4 mt-3 shrink-0 rounded-lg border border-accent-yellow/40 bg-accent-yellow/5`,children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifacts-toggle`,onClick:()=>v(e=>!e),"aria-expanded":d,className:`flex w-full items-center gap-2 px-3 py-2 text-start`,children:[(0,k.jsx)(d?n:p,{size:13,className:`shrink-0 text-accent-yellow`}),(0,k.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-accent-yellow`,children:r(`charts.pending.title`,{n:i.length})}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-badge text-dark-muted`,children:r(`charts.pending.subtitle`)}),s&&(0,k.jsx)(o,{size:12,className:`animate-spin text-dark-muted`})]}),d&&(0,k.jsxs)(`div`,{className:`border-t border-accent-yellow/20`,children:[x&&(0,k.jsxs)(`div`,{className:`flex items-start gap-2 px-3 py-2 text-xs text-accent-red`,children:[(0,k.jsx)(c,{size:13,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0 break-words`,children:x})]}),i.map(e=>{let t=y===e.id;return(0,k.jsxs)(`div`,{"data-testid":`pending-artifact-item`,className:`flex items-start gap-2.5 border-b border-accent-yellow/15 px-3 py-2 last:border-b-0`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-text`,children:e.summary}),(0,k.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-badge text-dark-muted/80`,children:[(0,k.jsx)(`span`,{className:`truncate font-mono`,children:e.targetPath}),(0,k.jsx)(`span`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px`,children:e.artifactType}),(0,k.jsx)(`span`,{className:`shrink-0`,children:g(e.createdAt,Date.now(),r)})]}),e.sources.length>0?(0,k.jsx)(`ul`,{className:`mt-1 space-y-0.5`,"data-testid":`pending-artifact-sources`,children:e.sources.map((t,n)=>(0,k.jsx)(`li`,{className:`truncate font-mono text-badge text-dark-muted/70`,title:j(t),children:j(t)},`${e.id}-src-${n}`))}):(0,k.jsx)(`p`,{className:`mt-1 text-badge text-accent-yellow/80`,children:r(`charts.pending.noSources`)})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifact-approve`,disabled:t,onClick:()=>void w(e.id,`approve`),title:r(`charts.pending.approveHint`),className:h(`flex items-center gap-1 rounded-md border border-accent-green/40 bg-accent-green/10 px-2 py-1 text-badge text-accent-green transition-colors hover:bg-accent-green/20`,t&&`opacity-60`),children:[t?(0,k.jsx)(o,{size:11,className:`animate-spin`}):(0,k.jsx)(f,{size:11}),r(`charts.pending.approve`)]}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifact-reject`,disabled:t,onClick:()=>void w(e.id,`reject`),title:r(`charts.pending.rejectHint`),className:h(`flex items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,t&&`opacity-60`),children:[(0,k.jsx)(l,{size:11}),r(`charts.pending.reject`)]})]})]},e.id)})]})]})}var M=`dsc.charts.artifactOrder`,N=1;function re(){try{let e=localStorage.getItem(M);if(!e)return[];let t=JSON.parse(e);if(typeof t!=`object`||!t)return[];let n=t;return n.v!==N||!Array.isArray(n.order)?[]:n.order.filter(e=>typeof e==`string`&&e!==``)}catch{return[]}}function ie(e){try{localStorage.setItem(M,JSON.stringify({v:N,order:e}))}catch{}}function ae(e,t,n){if(t.length===0)return[...e];let r=new Map(e.map(e=>[n(e),e])),i=[];for(let e of t){let t=r.get(e);t!==void 0&&(i.push(t),r.delete(e))}for(let t of e)r.has(n(t))&&i.push(t);return i}function P(e,t,n,r){return C(e,t,n,r)}var oe=[`list`,`tabs`],F=`dsc.charts.displayMode`;function se(){try{return localStorage.getItem(F)===`tabs`?`tabs`:`list`}catch{return`list`}}function ce(e){try{localStorage.setItem(F,e)}catch{}}var le=[],ue=[{command:`dashboard`,hintKey:`chat.visualArtifactsEmptyHint_dashboard`},{command:`analysis`,hintKey:`chat.visualArtifactsEmptyHint_analysis`},{command:`motion`,hintKey:`chat.visualArtifactsEmptyHint_motion`}];function de(e){let t=new Map;for(let n of e){if(!n.locator?.path)continue;let e=t.get(n.logicalId);(!e||n.version>e.version)&&t.set(n.logicalId,n)}return[...t.values()].sort((e,t)=>e.createdAt===t.createdAt?0:e.createdAt<t.createdAt?1:-1)}function I({text:e}){return(0,k.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/30 bg-accent-red/5 px-3 py-2.5 text-xs text-accent-red`,children:[(0,k.jsx)(c,{size:14,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0 break-words`,children:e})]})}function L({path:e,content:t,readError:n,freshness:r}){let{t:i}=m();if(n)return(0,k.jsx)(I,{text:n});let a=T(e);return a===`motion`?(0,k.jsx)(w,{path:e,content:t}):a===`dashboard`?(0,k.jsx)(b,{path:e,content:t,freshness:r}):a===`analysis`?(0,k.jsx)(E,{path:e,content:t}):(0,k.jsxs)(`div`,{"data-testid":`charts-no-renderer`,className:`px-1 py-2 text-xs leading-relaxed text-dark-muted`,children:[i(`charts.noRenderer`),(0,k.jsx)(`span`,{className:`mt-1 block truncate font-mono text-badge text-dark-muted/70`,children:e})]})}function fe({records:e,activePath:t,onSelect:n,nameOf:r}){return(0,k.jsx)(`div`,{"data-testid":`charts-tabs`,role:`tablist`,className:`flex shrink-0 items-center gap-1 overflow-x-auto rounded-lg border border-dark-border bg-dark-surface p-1`,children:e.map(e=>{let i=e.locator.path,a=i===t;return(0,k.jsxs)(`button`,{type:`button`,role:`tab`,"data-testid":`charts-tab`,"aria-selected":a,"aria-current":a,title:`${i}\n${e.producer.sessionId}`,onClick:()=>n(i),className:h(`flex max-w-[14rem] shrink-0 items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors`,a?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:[(0,k.jsx)(D,{kind:T(i),size:13}),(0,k.jsx)(`span`,{className:`min-w-0 truncate`,children:r(e)}),(0,k.jsxs)(`span`,{className:`shrink-0 text-badge opacity-60`,children:[`v`,e.version]})]},e.logicalId)})})}function R(){let{t:e}=m(),[n,r]=(0,O.useState)(le),[c,l]=(0,O.useState)(!0),[f,p]=(0,O.useState)(null),[v,b]=(0,O.useState)(0),[C,w]=(0,O.useState)(null),[E,A]=(0,O.useState)(!1),[j,M]=(0,O.useState)(null),[N,F]=(0,O.useState)(null),[R,z]=(0,O.useState)(()=>re()),[pe,B]=(0,O.useState)(null),[V,me]=(0,O.useState)(()=>se()),he=(0,O.useCallback)(e=>{e!==V&&(me(e),ce(e),B(null),U(null))},[V]),[H,U]=(0,O.useState)(null),[ge,W]=(0,O.useState)(!1),G=x(e=>e.publishedSeq),K=(0,O.useCallback)(async t=>{t?.silent||l(!0),p(null);try{let t=await _.visualArtifacts.list();if(!t?.success)throw Error(t?.error||e(`charts.loadFailed`));r(de(t.data?.items??le))}catch(e){p(e instanceof Error?e.message:String(e))}finally{l(!1)}},[e]);(0,O.useEffect)(()=>{K()},[K]),(0,O.useEffect)(()=>{G!==0&&K({silent:!0})},[G,K]);let q=(0,O.useMemo)(()=>ae(n,R,e=>e.logicalId),[n,R]),J=(0,O.useCallback)(e=>{z(e),ie(e)},[]),_e=(0,O.useCallback)(async t=>{W(!0),U(null);try{let n=await _.visualArtifacts.remove(t);if(!n?.success)throw Error(n?.error||e(`charts.removeFailed`));r(e=>e.filter(e=>e.logicalId!==t)),J(R.filter(e=>e!==t)),B(null)}catch(e){U(e instanceof Error?e.message:String(e))}finally{W(!1)}},[J,R,e]),ve=(0,O.useCallback)((e,t)=>{let n=q.map(e=>e.logicalId),r=P(n,e,t.id,t.side);r.join()!==n.join()&&J(r)},[J,q]),Y=S(ve,{vertical:!0}),ye=(0,O.useCallback)((e,t)=>{let n=q.map(e=>e.logicalId),r=n.indexOf(e);if(r<0)return;let i=n[r+t];i&&J(P(n,e,i,t<0?`before`:`after`))},[J,q]),X=(0,O.useMemo)(()=>C&&n.some(e=>e.locator.path===C)?C:q[0]?.locator.path??null,[q,n,C]);(0,O.useEffect)(()=>{if(!X){M(null),F(null);return}let t=!1;return M(null),F(null),(async()=>{try{let n=await _.files.read(X);if(t)return;n.success&&n.data!==void 0&&n.data!==null?M(String(n.data)):F(n.error||e(`charts.readFailed`))}catch(e){t||F(e instanceof Error?e.message:String(e))}})(),()=>{t=!0}},[X,e]),(0,O.useEffect)(()=>{if(!E)return;let e=e=>{e.key===`Escape`&&A(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[E]);let Z=(0,O.useMemo)(()=>n.find(e=>e.locator.path===X)??null,[n,X]),be=(0,O.useMemo)(()=>n.map(e=>({path:e.locator.path??``,metadata:e.metadata,version:e.version})),[n]),xe=ee(be),Q=e=>e.locator.path?xe(e.locator.path):``,Se=Z?Q(Z):null,$=Y.draggingId?n.find(e=>e.logicalId===Y.draggingId)??null:null,Ce=Z?.locator.path===void 0?null:(0,k.jsx)(L,{path:Z.locator.path,content:j,readError:N,freshness:Z.freshness});return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-start gap-3 px-4 pt-3`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`h1`,{className:`flex items-center gap-1.5 text-lg font-semibold text-dark-text`,children:[(0,k.jsx)(a,{size:16,className:`shrink-0 text-accent-blue`}),e(`charts.title`)]}),(0,k.jsx)(`p`,{className:`mt-0.5 text-xs leading-relaxed text-dark-muted`,children:e(`charts.subtitle`)})]}),(0,k.jsxs)(`div`,{className:`mt-0.5 flex shrink-0 items-center gap-2`,children:[n.length>0&&(0,k.jsx)(`div`,{"data-testid":`charts-display-switch`,role:`group`,"aria-label":e(`charts.displayMode`),className:`flex items-center gap-0.5 rounded-md border border-dark-border p-0.5`,children:oe.map(t=>(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-display-${t}`,"aria-pressed":V===t,onClick:()=>he(t),className:h(`rounded px-2 py-0.5 text-badge transition-colors`,V===t?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:e(t===`list`?`charts.viewList`:`charts.viewTabs`)},t))}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-refresh`,onClick:()=>{K(),b(e=>e+1)},className:`flex shrink-0 items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-xs text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.refresh`),children:[c?(0,k.jsx)(o,{size:12,className:`animate-spin`}):(0,k.jsx)(u,{size:12}),e(`charts.refresh`)]})]})]}),f&&(0,k.jsx)(`div`,{className:`shrink-0 px-4 pt-2`,children:(0,k.jsx)(I,{text:f})}),(0,k.jsx)(ne,{refreshToken:v,onApproved:()=>void K()}),(0,k.jsx)(`div`,{className:h(`flex min-h-0 flex-1 gap-3 p-4`,V===`tabs`?`flex-col`:``),children:n.length===0?(0,k.jsx)(`div`,{"data-testid":`charts-empty`,className:`flex min-h-0 flex-1 items-center justify-center rounded-lg border border-dashed border-dark-border px-6`,children:c?(0,k.jsx)(o,{size:18,className:`animate-spin text-accent-blue`}):(0,k.jsxs)(`div`,{className:`max-w-md space-y-2`,children:[(0,k.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-muted`,children:e(`charts.empty`)}),(0,k.jsx)(`ul`,{className:`space-y-1`,children:ue.map(({command:t,hintKey:n})=>(0,k.jsxs)(`li`,{className:`flex items-baseline gap-1.5 text-badge text-dark-muted/80`,children:[(0,k.jsxs)(`code`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px font-mono text-accent-blue`,children:[`/`,t]}),(0,k.jsx)(`span`,{className:`min-w-0`,children:e(n)})]},t))})]})}):(0,k.jsxs)(k.Fragment,{children:[V===`tabs`?(0,k.jsx)(fe,{records:q,activePath:X,onSelect:w,nameOf:Q}):(0,k.jsxs)(`aside`,{"data-testid":`charts-list`,className:`flex w-64 shrink-0 flex-col overflow-y-auto rounded-lg border border-dark-border bg-dark-surface`,children:[H&&(0,k.jsx)(`div`,{className:`border-b border-dark-border/60 p-1.5`,children:(0,k.jsx)(I,{text:`${e(`charts.removeFailed`)} — ${H}`})}),q.map(t=>{let n=t.locator.path,r=n===X,i=y(t.type),a=i?e(i):t.type,o=Y.draggingId===t.logicalId,c=Y.dropTarget?.id===t.logicalId?Y.dropTarget.side:null,l=pe===t.logicalId;return(0,k.jsxs)(`div`,{"data-panel-id":t.logicalId,"data-testid":`charts-item-row`,"data-dragging":o?`true`:`false`,"data-drop-side":c??void 0,onPointerDown:e=>Y.startFromCard(e,t.logicalId),onPointerMove:Y.onPointerMove,onPointerUp:Y.onPointerUp,onPointerCancel:Y.onPointerCancel,className:h(`flex items-stretch border-b border-dark-border/60 transition-colors`,r?`bg-accent-blue/10`:`hover:bg-dark-hover`,o&&`opacity-40`,c===`before`&&`shadow-[inset_0_2px_0_0_theme(colors.accent-blue)]`,c===`after`&&`shadow-[inset_0_-2px_0_0_theme(colors.accent-blue)]`),children:[(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-grab`,"aria-label":e(`charts.dragHandle`),title:e(`charts.dragHandle`),onPointerDown:e=>Y.startFromGrip(e,t.logicalId),onKeyDown:e=>{let n=e.key===`ArrowUp`,r=e.key===`ArrowDown`;(n||r)&&(e.preventDefault(),ye(t.logicalId,n?-1:1))},style:{touchAction:`none`},className:`flex shrink-0 cursor-grab items-center px-1 text-dark-tertiary transition-colors hover:text-dark-text active:cursor-grabbing`,children:(0,k.jsx)(d,{size:12})}),l?(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5 py-2 pe-2`,children:[(0,k.jsx)(`span`,{className:`min-w-0 flex-1 text-badge leading-snug text-amber-300`,children:e(`charts.removeConfirm`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-confirm`,disabled:ge,onClick:()=>void _e(t.logicalId),className:`shrink-0 rounded border border-accent-red/40 px-1.5 py-0.5 text-badge text-accent-red transition-colors hover:bg-accent-red/10 disabled:opacity-50`,children:e(`charts.remove`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-cancel`,onClick:()=>B(null),className:`shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,children:e(`common.cancel`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-item`,"aria-current":r,onClick:()=>w(n),title:`${n}\n${t.producer.sessionId}`,className:`flex min-w-0 flex-1 items-center gap-2 py-2 pe-1 text-start`,children:[(0,k.jsx)(D,{kind:T(n),size:14}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,k.jsx)(`span`,{"data-testid":`charts-item-name`,className:h(`truncate text-xs`,r?`text-accent-blue`:`text-dark-text`),children:Q(t)}),(0,k.jsxs)(`span`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px text-badge text-dark-muted`,children:[a,` v`,t.version]})]}),(0,k.jsxs)(`span`,{className:`mt-0.5 block truncate font-mono text-badge text-dark-muted/70`,children:[te(n),` · `,g(t.createdAt,Date.now(),e)]})]})]}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove`,onClick:()=>{U(null),B(t.logicalId)},title:e(`charts.removeHint`),"aria-label":e(`charts.removeHint`),className:`flex shrink-0 items-center px-1.5 text-dark-tertiary transition-colors hover:text-accent-red`,children:(0,k.jsx)(s,{size:12})})]})]},t.logicalId)})]}),(0,k.jsxs)(`section`,{"data-testid":`charts-canvas`,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-dark-border bg-dark-surface`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-3 py-1.5`,children:[(0,k.jsx)(`span`,{"data-testid":`charts-canvas-name`,className:`min-w-0 flex-1 truncate text-xs text-dark-text`,title:X??``,children:Se??X??``}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-fullscreen-toggle`,onClick:()=>A(!0),className:`shrink-0 rounded p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.fullscreen`),"aria-label":e(`charts.fullscreen`),children:(0,k.jsx)(i,{size:13})})]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:Ce})]})]})}),$&&(0,k.jsx)(`div`,{ref:Y.ghost.setElement,"data-testid":`charts-drag-ghost`,"aria-hidden":!0,className:`pointer-events-none fixed left-0 top-0 z-50 w-56 will-change-transform`,children:(0,k.jsxs)(`div`,{className:h(`flex w-full rotate-1 items-center gap-2 overflow-hidden rounded-lg border bg-dark-surface/95 px-2 py-1.5 shadow-pop`,Y.dropTarget?`border-accent-blue/70 ring-1 ring-accent-blue/30`:`border-dark-border`),children:[(0,k.jsx)(d,{size:12,className:`shrink-0 text-dark-muted`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-dark-text`,children:Q($)})]})}),E&&Z?.locator.path!==void 0&&(0,k.jsxs)(`div`,{"data-testid":`charts-fullscreen`,className:`fixed inset-0 z-50 flex flex-col bg-dark-bg`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-4 py-2`,children:[(0,k.jsx)(a,{size:14,className:`shrink-0 text-accent-blue`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-dark-text`,title:Z.locator.path,children:Se??Z.locator.path}),(0,k.jsxs)(`button`,{type:`button`,onClick:()=>A(!1),className:`flex shrink-0 items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-xs text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.exitFullscreen`),children:[(0,k.jsx)(t,{size:12}),e(`charts.exitFullscreen`)]})]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:(0,k.jsx)(L,{path:Z.locator.path,content:j,readError:N,freshness:Z.freshness})})]})]})}function z(){return(0,k.jsx)(`div`,{className:`flex h-full min-h-0 flex-col`,children:(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,k.jsx)(R,{})})})}export{z as ChartsView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Bt as t,Et as n,G as r,Kr as i,T as a,Ut as o,Vn as s,Vr as c,Wn as l,_ as u,h as d,ht as f,j as p,lt as ee,mn as m,nn as h,nt as g,pr as _,q as v,r as y,t as te,ut as b}from"./icons-CYDRRPKW.js";import{t as ne}from"./useTranslation-B-mfApCn.js";import{a as x,t as re}from"./useConfirm-Da8iQ_DZ.js";import{t as S}from"./api-plEYhRn0.js";import{I as C}from"./markdown-N5__3T-w.js";import{f as w}from"./common-Bbatsa0-.js";import{V as ie}from"./index-CTbLW314.js";var T=e(i(),1),E=C();function D(e){return e.split(/[,,、]/).map(e=>e.trim()).filter(Boolean)}function O({connector:e,onRefresh:t}){let{t:n}=ne(),[r,i]=re(),[a,s]=(0,T.useState)(null),[c,l]=(0,T.useState)(null),[p,m]=(0,T.useState)(null),[g,v]=(0,T.useState)(null),y=e.accounts??[],te=(e.requiresEnv??[]).filter(e=>!e.optional),b=async(e,n)=>{s(e),l(null);let r=await n();r&&l(r),s(null),r||t()},C=()=>m({mode:`add`,label:``,tags:``,env:{}}),w=e=>m({mode:`creds`,accountId:e.id,label:e.label,tags:e.tags.join(`, `),env:{}}),ie=()=>{if(!p)return;let t=D(p.tags),n=Object.fromEntries(Object.entries(p.env).filter(([,e])=>e.trim().length>0)),r=p.accountId??`new`;b(r,async()=>{if(p.mode===`add`){let r=await S.connectors.addAccount(e.id,{...p.label.trim()?{label:p.label.trim()}:{},tags:t,...Object.keys(n).length?{env:n}:{}});if(!r.success)return r.error||`新增账号失败`}else{let r=y.find(e=>e.id===p.accountId);if(!r)return`账号已不存在,请刷新`;let i=await S.connectors.updateAccount(e.id,r.id,{label:p.label.trim()||r.label,tags:t});if(!i.success)return i.error||`保存账号失败`;if(Object.keys(n).length){let e=await S.connectors.connect(r.stateId,n);if(!e.success)return e.error||`连接账号失败`}}return m(null),null})},O=e=>{!e.enabled&&e.missingEnv?.length?w(e):b(e.id,async()=>{let t=await S.connectors.toggle(e.stateId,!e.enabled);return t.success?null:t.error||`切换 ${e.label} 失败`})},k=(t,n)=>{b(t.id,async()=>{let r=await S.connectors.updateAccount(e.id,t.id,{tags:D(n)});return r.success?null:r.error||`保存标签失败`}),v(null)},A=t=>{i({message:n(`connectors.accountsRemoveConfirm`,{label:t.label}),variant:`danger`}).then(n=>{n&&b(t.id,async()=>{let n=await S.connectors.removeAccount(e.id,t.id);return n.success?n.data?.removed===!1?`账号已不存在`:null:n.error||`删除账号失败`})})},ae=e=>e.enabled&&e.status===`ready`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-green`,children:[(0,E.jsx)(_,{size:10}),e.toolCount?n(`connectors.toolCount`,{count:e.toolCount}):`ready`]}):e.status===`error`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-red`,title:e.error,children:[(0,E.jsx)(d,{size:10}),e.error||n(`connectors.missing`)]}):e.missingEnv?.length?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-yellow`,children:[(0,E.jsx)(d,{size:10}),e.missingEnv.join(`, `),` `,n(`connectors.missing`)]}):(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e.status});return(0,E.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-dark-border`,children:[r,(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-2`,children:[(0,E.jsxs)(`span`,{className:`text-xs text-dark-muted inline-flex items-center gap-1`,children:[(0,E.jsx)(h,{size:12}),n(`connectors.accountsTitle`),(0,E.jsxs)(`span`,{className:`text-badge`,children:[`(`,y.length,`)`]})]}),(0,E.jsxs)(`button`,{type:`button`,onClick:C,className:`inline-flex items-center gap-1 text-meta text-accent-blue hover:underline`,children:[(0,E.jsx)(ee,{size:11}),n(`connectors.accountsAdd`)]})]}),y.length===0?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted`,children:n(`connectors.accountsEmpty`)}):(0,E.jsx)(`ul`,{className:`space-y-1.5`,children:y.map(e=>(0,E.jsxs)(`li`,{className:`flex items-center gap-2 flex-wrap bg-dark-bg/60 border border-dark-border rounded-lg px-2.5 py-1.5`,children:[(0,E.jsx)(`span`,{className:`text-sm`,children:e.label}),g?.id===e.id?(0,E.jsx)(`input`,{autoFocus:!0,value:g.value,onChange:t=>v({id:e.id,value:t.target.value}),onBlur:()=>k(e,g.value),onKeyDown:t=>{t.key===`Enter`&&k(e,g.value),t.key===`Escape`&&v(null)},placeholder:n(`connectors.accountsTagsHint`),className:`px-1.5 py-0.5 bg-dark-surface border border-dark-border rounded text-badge w-40`}):(0,E.jsxs)(E.Fragment,{children:[e.tags.length?e.tags.map(e=>(0,E.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-accent-blue/15 text-accent-blue`,children:e},e)):(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:n(`connectors.accountsNoTags`)}),(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsEditTags`),onClick:()=>v({id:e.id,value:e.tags.join(`, `)}),className:`text-dark-muted hover:text-accent-blue`,children:(0,E.jsx)(f,{size:11})})]}),e.hint?(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e.hint}):null,a===e.id?(0,E.jsx)(o,{size:11,className:`animate-spin text-dark-muted`}):ae(e),(0,E.jsxs)(`span`,{className:`ms-auto flex items-center gap-1.5`,children:[(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsCreds`),onClick:()=>w(e),className:`p-1 rounded text-dark-muted hover:text-accent-blue hover:bg-dark-hover`,children:(0,E.jsx)(h,{size:12})}),(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsRemove`),onClick:()=>A(e),disabled:a!==null,className:`p-1 rounded text-dark-muted hover:text-accent-red hover:bg-accent-red/10 disabled:opacity-40`,children:(0,E.jsx)(u,{size:12})}),(0,E.jsx)(`button`,{role:`switch`,"aria-checked":e.enabled,disabled:a!==null,onClick:()=>O(e),className:`relative w-9 h-5 rounded-full transition-colors disabled:opacity-50 ${e.enabled?`bg-accent-green`:`bg-dark-border`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-transform ${e.enabled?`start-4`:`start-0.5`}`})})]})]},e.id))}),c?(0,E.jsx)(`p`,{className:`text-badge text-accent-red mt-2`,children:c}):null,p?(0,E.jsxs)(`div`,{className:`mt-2 border border-dark-border rounded-lg p-2.5 bg-dark-bg/60 space-y-2`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:n(`connectors.accountsLabel`)}),(0,E.jsx)(`input`,{autoFocus:!0,value:p.label,onChange:e=>m({...p,label:e.target.value}),placeholder:n(`connectors.accountsLabelHint`),className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:n(`connectors.accountsTags`)}),(0,E.jsx)(`input`,{value:p.tags,onChange:e=>m({...p,tags:e.target.value}),placeholder:n(`connectors.accountsTagsHint`),className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`})]}),te.map(e=>(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e.label}),(0,E.jsx)(`input`,{type:e.secret?`password`:`text`,value:p.env[e.key]??``,onChange:t=>m({...p,env:{...p.env,[e.key]:t.target.value}}),placeholder:e.key,className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`}),e.hint?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted mt-0.5`,children:e.hint}):null]},e.key)),(0,E.jsxs)(`div`,{className:`flex gap-2`,children:[(0,E.jsx)(x,{variant:`accent`,disabled:a!==null,onClick:ie,children:p.mode===`add`?n(`connectors.accountsAdd`):n(`common.save`)}),(0,E.jsx)(`button`,{type:`button`,onClick:()=>m(null),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:n(`common.cancel`)})]})]}):null]})}var k={"code-intelligence":`🧠 代码智能`,filesystem:`📂 文件系统`,databases:`🗄️ 数据库`,"browser-automation":`🌐 浏览器自动化`,"knowledge-memory":`🧠 知识/记忆`,"search-web":`🔎 搜索/网页`,"cloud-platforms":`☁️ 云平台`,communication:`💬 通讯`,"developer-tools":`🛠️ 开发者工具`,security:`🔒 安全`,"test-demo":`🧪 测试/Demo`,other:`📦 其他`},A=`email-imap`;function ae(e){return(e.missingEnv?.length??0)>0||!!e.supportsOAuth&&!e.authorized}var oe=[`phone_use`,`phone_inspect`];function j(){let{t:e}=ne(),[i,f]=(0,T.useState)([]),[re,C]=(0,T.useState)(!0),[D,j]=(0,T.useState)(null),[M,N]=(0,T.useState)({}),[se,P]=(0,T.useState)(null),[F,ce]=(0,T.useState)(``),[I,le]=(0,T.useState)(null),[L,ue]=(0,T.useState)(`all`),[de,R]=(0,T.useState)(null),[fe,pe]=(0,T.useState)({}),[me,he]=(0,T.useState)(!1),[z,B]=(0,T.useState)({name:``,command:``,args:``,env:``,transport:`stdio`,url:``,headers:``}),[V,ge]=(0,T.useState)(null),[_e,H]=(0,T.useState)(!1),[ve,U]=(0,T.useState)(null),[W,ye]=(0,T.useState)(null),[be,G]=(0,T.useState)(!1),[xe,K]=(0,T.useState)(null),[q,Se]=(0,T.useState)(null),[Ce,we]=(0,T.useState)(!1),[Te,Ee]=(0,T.useState)(null),De=async()=>{H(!0),U(null);try{let e=await S.tools.get(`computer_use`);ge(e.success&&e.data?!!e.data.enabled:!1)}catch(e){U(e instanceof Error?e.message:String(e))}H(!1)},Oe=async()=>{if(V===null)return;let e=!V;H(!0),U(null);try{let t=await S.tools.toggle(`computer_use`,e);t.success?ge(e):U(t.error||`切换 Computer Use 失败`)}catch(e){U(e instanceof Error?e.message:String(e))}H(!1)},ke=async()=>{G(!0),K(null);try{let e=await S.tools.get(`phone_use`);ye(e.success&&e.data?!!e.data.enabled:!1)}catch(e){K(e instanceof Error?e.message:String(e))}G(!1)},Ae=async()=>{if(W===null)return;let t=!W;G(!0),K(null);try{let n=(await Promise.all(oe.map(e=>S.tools.toggle(e,t)))).find(e=>!e.success);n?K(n.error||e(`connectors.phoneToggleFailed`)):(ye(t),t&&je())}catch(e){K(e instanceof Error?e.message:String(e))}G(!1)},je=async()=>{we(!0),K(null);try{let t=await S.device.androidStatus();t.success&&t.data?Se(t.data):K(t.error||e(`connectors.phoneCheckFailed`))}catch(e){K(e instanceof Error?e.message:String(e))}we(!1)},Me=()=>{window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:`tools`}))},Ne=()=>B({name:``,command:``,args:``,env:``,transport:`stdio`,url:``,headers:``}),Pe=e=>Object.fromEntries(e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.indexOf(`=`);return t>0?[e.slice(0,t).trim(),e.slice(t+1).trim()]:[e,``]})),Fe=async()=>{let t=z.transport!==`stdio`;if(!z.name.trim()||!t&&!z.command.trim()||t&&!z.url.trim())P(e(`connectors.customFormRequired`));else{N(e=>({...e,__add:!0})),P(null);try{let e=await S.connectors.addCustom({name:z.name.trim(),command:t?void 0:z.command.trim(),args:t?void 0:z.args.split(/\s+/).filter(Boolean),env:Pe(z.env),url:t?z.url.trim():void 0,transport:t?z.transport:void 0,headers:t?Pe(z.headers):void 0});e.success&&e.data?(f(t=>[...t,e.data]),he(!1),Ne()):P(e.error||`添加失败`)}catch(e){P(e instanceof Error?e.message:String(e))}finally{N(e=>({...e,__add:!1}))}}},Ie=async e=>{N(t=>({...t,[e.id]:!0}));try{let t=await S.connectors.removeCustom(e.id);t.success?f(t=>t.filter(t=>t.id!==e.id)):P(t.error||`删除失败`)}finally{N(t=>({...t,[e.id]:!1}))}},J=async()=>{C(!0),j(null);let e=await S.connectors.list();e.success&&Array.isArray(e.data?.connectors)?f(e.data.connectors):j(e.error||`加载连接器失败`),C(!1)};(0,T.useEffect)(()=>{J(),De(),ke()},[]),ie(()=>void J(),{filterServer:e=>/^(managed|custom)-connector-/.test(e)});let Y=(e,t,n,r)=>{P(n||null),f(n=>n.map(n=>n.id===e?t??{...n,enabled:!!r,status:`error`}:n))},Le=async(e,t,n)=>{P(null),N(t=>({...t,[e.id]:!0})),f(n=>n.map(n=>n.id===e.id?{...n,enabled:t,status:t?`connecting`:`installed`}:n));try{let r=await S.connectors.toggle(e.id,t,n);r.success&&r.data?f(t=>t.map(t=>t.id===e.id?r.data:t)):Y(e.id,void 0,r.error||`切换 ${e.name} 失败`,!t)}catch(n){Y(e.id,void 0,n instanceof Error?n.message:String(n),!t)}finally{N(t=>({...t,[e.id]:!1}))}},Re=e=>{!e.enabled&&e.requiresEnv?.length&&e.missingEnv?.length?R(e.id):(R(null),Le(e,!e.enabled))},ze=async(e,t)=>{R(null),P(null),N(t=>({...t,[e.id]:!0})),f(t=>t.map(t=>t.id===e.id?{...t,enabled:!0,status:`connecting`}:t));try{let n=await S.connectors.connect(e.id,t);n.success&&n.data?(f(t=>t.map(t=>t.id===e.id?n.data:t)),pe(t=>({...t,[e.id]:{}}))):Y(e.id,void 0,n.error||`连接 ${e.name} 失败`,!1)}catch(t){Y(e.id,void 0,t instanceof Error?t.message:String(t),!1)}finally{N(t=>({...t,[e.id]:!1}))}},Be=async t=>{P(null),Ee(t.id);try{let n=await S.connectors.authorize(t.id);if(!n.success||!n.data?.authUrl){P(n.error||e(`connectors.authorizeFailed`));return}window.open(n.data.authUrl,`_blank`,`noopener,noreferrer`);let r=Date.now()+12e4;for(;Date.now()<r;){await new Promise(e=>setTimeout(e,2e3));let e=(await S.connectors.list()).data?.connectors?.find(e=>e.id===t.id);if(e){if(f(n=>n.map(n=>n.id===t.id?e:n)),e.error){P(e.error);break}if(e.authorized&&e.status===`ready`)break}}}catch(e){P(e instanceof Error?e.message:String(e))}finally{Ee(null)}},Ve=t=>{let n=`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-badge`;return t.stage===`ready`?(0,E.jsxs)(`span`,{className:`${n} bg-accent-green/15 text-accent-green`,children:[(0,E.jsx)(_,{size:9}),e(`connectors.phoneBadgeReady`)]}):t.stage===`adb-missing`||t.stage===`adb-error`?(0,E.jsxs)(`span`,{className:`${n} bg-accent-red/15 text-accent-red`,children:[(0,E.jsx)(d,{size:9}),t.stage===`adb-error`?e(`connectors.phoneBadgeAdbError`):e(`connectors.phoneBadgeNoAdb`)]}):(0,E.jsxs)(`span`,{className:`${n} bg-accent-yellow/15 text-accent-yellow`,children:[(0,E.jsx)(d,{size:9}),e(`connectors.phoneBadgeWaiting`)]})},He=e=>e===`adb-error`?0:e===`adb-missing`?1:e===`no-device`?2:e===`unauthorized`||e===`device-offline`?3:e===`multiple`?4:0,Ue=t=>{switch(t.stage){case`ready`:return e(`connectors.phoneReady`,{device:t.selected?`${t.selected.serial}${t.selected.model?` · ${t.selected.model}`:``}`:`—`});case`adb-missing`:return e(`connectors.phoneAdbMissing`,{env:t.envKeys.binary});case`adb-error`:return e(`connectors.phoneAdbError`,{env:t.envKeys.binary});case`no-device`:return e(`connectors.phoneNoDevice`);case`unauthorized`:return e(`connectors.phoneUnauthorized`);case`device-offline`:return e(`connectors.phoneOffline`);case`multiple`:return e(`connectors.phoneMultiple`,{count:t.devices.filter(e=>e.state===`device`).length,serials:t.devices.filter(e=>e.state===`device`).map(e=>e.serial).join(`, `),env:t.envKeys.serial});default:return e(`connectors.phoneNoDevice`)}},We=t=>{let n=`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium`;if(!t.installed)return(0,E.jsxs)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:[(0,E.jsx)(l,{size:12}),e(`connectors.notInstalled`)]});switch(t.status){case`ready`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-green/15 text-accent-green`,children:[(0,E.jsx)(_,{size:12}),e(`connectors.ready`)]});case`connecting`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-blue/15 text-accent-blue`,children:[(0,E.jsx)(o,{size:12,className:`animate-spin`}),e(`connectors.connecting`)]});case`error`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-red/15 text-accent-red`,children:[(0,E.jsx)(d,{size:12}),e(`connectors.error`)]});case`disabled`:return(0,E.jsx)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:e(`connectors.disabled`)});default:return(0,E.jsx)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:e(`connectors.installed`)})}},X=i.find(e=>e.id===A)??null,Ge=i.filter(e=>e.featured&&e.id!==A&&ae(e)),Ke=new Set(Ge.map(e=>e.id)),Z=i.filter(e=>e.id!==A&&!Ke.has(e.id)),qe=X?.missingEnv??[],Q=qe.length>0,Je=!!(X&&de===X.id),$=Z.filter(e=>L===`all`||e.kind===L),Ye=$.filter(e=>{if(F){let t=F.toLowerCase();if(![e.name,e.id,e.description,e.category??``,e.kind,...e.languages??[]].join(` `).toLowerCase().includes(t))return!1}return!(I&&e.category!==I)}).sort((e,t)=>e.enabled===t.enabled?e.name.localeCompare(t.name):e.enabled?-1:1),Xe=[...new Set($.map(e=>e.category).filter(Boolean))];if(re)return(0,E.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,role:`status`,"aria-label":e(`common.loading`),children:(0,E.jsx)(w,{count:5})});if(D)return(0,E.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,E.jsxs)(`div`,{className:`text-center`,children:[(0,E.jsx)(d,{size:32,className:`mx-auto mb-2 text-accent-red`}),(0,E.jsx)(`p`,{className:`text-accent-red mb-4`,children:D}),(0,E.jsx)(x,{variant:`accent`,onClick:()=>void J(),children:e(`common.retry`)})]})});let Ze=t=>{let n=fe[t.id]??{},r=(e,n)=>pe(r=>({...r,[t.id]:{...r[t.id]??{},[e]:n}})),i=t.requiresEnv??[],a=i.filter(e=>!e.optional),o=i.filter(e=>e.optional),s=new Set(t.configuredEnv??[]),c=Object.fromEntries(Object.entries(n).filter(([,e])=>e.trim().length>0)),l=a.filter(e=>!c[e.key]&&!s.has(e.key)),u=t=>(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`label`,{className:`flex items-center gap-1.5 text-meta text-dark-muted mb-1`,children:[(0,E.jsx)(`span`,{children:t.label}),t.optional?(0,E.jsx)(`span`,{className:`text-badge px-1 py-0.5 rounded bg-dark-hover text-dark-muted`,children:e(`connectors.envOptional`)}):null,s.has(t.key)?(0,E.jsx)(`span`,{className:`text-badge px-1 py-0.5 rounded bg-accent-green/15 text-accent-green`,children:e(`connectors.envAlreadySet`)}):null]}),(0,E.jsx)(`input`,{type:t.secret?`password`:`text`,value:n[t.key]??``,onChange:e=>r(t.key,e.target.value),placeholder:s.has(t.key)?e(`connectors.envKeepPlaceholder`):t.key,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`}),t.hint?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted mt-1`,children:t.hint}):null]},t.key);return(0,E.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-dark-border`,children:[(0,E.jsxs)(`div`,{className:`text-xs text-dark-muted mb-2 flex items-center gap-1`,children:[(0,E.jsx)(h,{size:12}),a.length?e(`connectors.needCredentials`):e(`connectors.envOptionalOnly`)]}),(0,E.jsx)(`div`,{className:`space-y-2`,children:a.map(u)}),o.length?(0,E.jsxs)(`details`,{className:`mt-2`,open:l.length===0&&a.length===0,children:[(0,E.jsx)(`summary`,{className:`text-meta text-dark-muted cursor-pointer select-none`,children:e(`connectors.envOptionalSection`,{count:o.length})}),(0,E.jsx)(`div`,{className:`space-y-2 mt-2`,children:o.map(u)})]}):null,l.length?(0,E.jsx)(`p`,{className:`text-badge text-accent-yellow mt-2`,children:e(`connectors.envMissingRequired`,{keys:l.map(e=>e.key).join(`, `)})}):null,(0,E.jsxs)(`div`,{className:`flex gap-2 mt-2`,children:[(0,E.jsx)(x,{variant:`accent`,disabled:l.length>0,onClick:()=>void ze(t,c),children:e(`connectors.connect`)}),(0,E.jsx)(`button`,{onClick:()=>R(null),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:e(`common.cancel`)})]})]})},Qe=(t,n=!1)=>{let i=!!M[t.id],a=de===t.id,o=new Set(t.configuredEnv??[]),c=(t.requiresEnv??[]).filter(e=>e.optional&&!o.has(e.key)).length;return(0,E.jsxs)(`div`,{className:n?``:`bg-dark-surface border border-dark-border rounded-lg p-4 transition-opacity ${t.enabled?``:`opacity-80`}`,children:[(0,E.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,E.jsxs)(`div`,{className:`flex items-start gap-3 flex-1 min-w-0`,children:[(0,E.jsx)(`span`,{className:`mt-0.5 shrink-0 px-2 py-1 rounded-md text-meta font-semibold uppercase ${t.kind===`lsp`?`bg-accent-purple/15 text-accent-purple`:`bg-accent-green/15 text-accent-green`}`,children:t.kind===`lsp`?`LSP`:`MCP`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`font-medium text-sm truncate`,children:t.name}),t.custom?(0,E.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-accent-purple/15 text-accent-purple`,children:e(`connectors.custom`)}):null,t.official?(0,E.jsxs)(`span`,{title:`Official`,className:`text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow`,children:[`🎖️ `,e(`connectors.official`)]}):null,t.scope===`cloud`?(0,E.jsxs)(`span`,{title:`Cloud`,className:`inline-flex items-center gap-0.5 text-badge px-1.5 py-0.5 rounded bg-accent-blue/15 text-accent-blue`,children:[(0,E.jsx)(m,{size:9}),e(`connectors.cloud`)]}):(0,E.jsxs)(`span`,{title:`Local`,className:`inline-flex items-center gap-0.5 text-badge px-1.5 py-0.5 rounded bg-dark-hover text-dark-muted`,children:[(0,E.jsx)(r,{size:9}),e(`connectors.local`)]}),t.language?(0,E.jsx)(`span`,{className:`text-badge`,children:t.language}):null,We(t)]}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-1 line-clamp-2`,children:t.description}),(0,E.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-meta text-dark-muted flex-wrap`,children:[(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(r,{size:11}),(0,E.jsx)(`code`,{className:`text-badge`,children:t.installHint})]}),t.transport&&t.transport!==`stdio`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-accent-blue`,children:[(0,E.jsx)(m,{size:11}),t.transport===`sse`?`SSE`:`Streamable HTTP`]}):null,t.languages?.length?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(te,{size:11}),t.languages.join(`, `)]}):null,t.kind===`mcp`&&t.toolCount!==void 0?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(b,{size:11}),e(`connectors.toolCount`,{count:t.toolCount})]}):null,t.requiresEnv?.length?(0,E.jsxs)(`button`,{type:`button`,onClick:()=>R(a?null:t.id),className:`inline-flex items-center gap-1 hover:text-accent-blue ${t.missingEnv?.length?`text-accent-yellow`:`text-dark-muted`}`,children:[(0,E.jsx)(h,{size:11}),t.missingEnv?.length?`${t.missingEnv.join(`, `)} ${e(`connectors.missing`)}`:e(`connectors.envConfigured`),c?` · ${e(`connectors.envOptionalUnset`,{count:c})}`:null]}):null,t.docsUrl?(0,E.jsxs)(`a`,{href:t.docsUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-accent-blue`,onClick:e=>e.stopPropagation(),children:[(0,E.jsx)(s,{size:11}),e(`connectors.docs`)]}):null]}),t.error?(0,E.jsx)(`p`,{className:`text-meta text-accent-red mt-1`,children:t.error}):null,t.supportsOAuth&&!t.authorized&&!t.error?(0,E.jsx)(`p`,{className:`text-meta text-accent-yellow mt-1`,children:e(`connectors.oauthNotAuthorized`)}):null]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[t.supportsOAuth?(0,E.jsx)(x,{variant:t.authorized?`ghost`:`accent`,size:`sm`,disabled:i||Te===t.id,onClick:()=>void Be(t),children:Te===t.id?e(`connectors.authorizing`):t.authorized?e(`connectors.reauthorize`):e(`connectors.authorize`)}):null,t.custom?(0,E.jsx)(`button`,{onClick:()=>void Ie(t),disabled:i,title:e(`connectors.removeCustom`),className:`p-1.5 rounded-lg text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors disabled:opacity-40`,children:(0,E.jsx)(u,{size:14})}):null,!t.installed&&t.enabled?(0,E.jsxs)(`span`,{className:`text-meta text-accent-blue flex items-center gap-1`,children:[(0,E.jsx)(l,{size:11,className:`animate-pulse`}),e(`connectors.installing`)]}):null,(0,E.jsx)(`button`,{role:`switch`,"aria-checked":t.enabled,disabled:i,onClick:()=>Re(t),className:`relative w-12 h-6 rounded-full transition-colors disabled:opacity-50 ${t.enabled?`bg-accent-green`:`bg-dark-border`}`,children:(0,E.jsx)(`span`,{className:`absolute top-1 w-4 h-4 bg-white rounded-full transition-transform ${t.enabled?`start-7`:`start-1`}`})})]})]}),a?Ze(t):null,t.supportsAccounts?(0,E.jsx)(O,{connector:t,onRefresh:()=>void J()}):null]},t.id)};return(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar p-4`,children:[(0,E.jsxs)(`div`,{className:`sticky top-0 z-20 -mx-4 -mt-4 flex items-center justify-between bg-dark-bg/90 px-4 pb-3 pt-4 backdrop-blur`,children:[(0,E.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,E.jsx)(b,{size:20}),e(`nav.connectors`),(0,E.jsxs)(`span`,{className:`text-sm font-normal text-dark-muted`,children:[`· `,Z.filter(e=>e.enabled).length,`/`,Z.length]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(x,{variant:`accent`,leftIcon:(0,E.jsx)(ee,{size:14}),onClick:()=>he(e=>!e),children:e(`connectors.addCustom`)}),(0,E.jsxs)(`button`,{onClick:()=>void J(),className:`flex items-center gap-2 px-3 py-1.5 bg-dark-surface border border-dark-border rounded hover:bg-dark-hover transition-colors`,children:[(0,E.jsx)(g,{size:14}),e(`common.refresh`)]})]})]}),(0,E.jsxs)(`div`,{className:`mb-4 px-3 py-2 rounded-lg bg-accent-blue/10 border border-accent-blue/20 text-xs text-dark-muted space-y-1`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-x-2 gap-y-1 flex-wrap`,children:[(0,E.jsx)(`span`,{children:e(`connectors.scopeHint`)}),(0,E.jsxs)(`button`,{type:`button`,onClick:Me,className:`inline-flex items-center gap-1 text-accent-blue hover:underline`,children:[e(`connectors.scopeHintToolsLink`),(0,E.jsx)(c,{size:11})]})]}),(0,E.jsx)(`div`,{children:e(`connectors.builtinCardHint`)})]}),(0,E.jsxs)(`div`,{className:`mb-4 p-4 bg-dark-surface border border-dark-border rounded-lg space-y-3`,children:[X?(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(t,{size:16,className:`mt-0.5 shrink-0 ${Q?`text-accent-yellow`:`text-accent-green`}`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`text-sm text-dark-text`,children:e(`connectors.emailTitle`)}),We(X),Q?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow`,children:[(0,E.jsx)(d,{size:9}),e(`connectors.emailNeedsSetup`)]}):null]}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`connectors.emailDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:()=>R(Je?null:X.id),className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg text-meta border transition-colors ${Q?`bg-accent-yellow/15 border-accent-yellow/40 text-accent-yellow hover:bg-accent-yellow/25`:`bg-dark-bg border-dark-border text-dark-muted hover:bg-dark-hover`}`,children:[(0,E.jsx)(h,{size:11}),e(Q?`connectors.emailConfigure`:`connectors.emailEditCredentials`)]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":X.enabled,disabled:!!M[X.id],onClick:()=>Re(X),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${X.enabled?`bg-accent-green`:`bg-dark-border`}`,children:M[X.id]?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${X.enabled?`translate-x-[18px]`:`translate-x-0.5`}`})})]})]}),Q?(0,E.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 rounded-lg bg-accent-yellow/10 border border-accent-yellow/30 px-3 py-2`,children:[(0,E.jsx)(d,{size:13,className:`text-accent-yellow mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`text-xs text-accent-yellow space-y-0.5`,children:[(0,E.jsx)(`div`,{children:e(`connectors.emailNeedsSetupHint`,{keys:qe.join(`, `)})}),(0,E.jsx)(`div`,{className:`text-dark-muted`,children:e(`connectors.emailPriorityHint`)})]})]}):null,Je?Ze(X):null,X.supportsAccounts?(0,E.jsx)(O,{connector:X,onRefresh:()=>void J()}):null]}):null,Ge.length?(0,E.jsxs)(`div`,{className:`space-y-2 ${X?`pt-3 border-t border-dark-border`:``}`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-meta text-dark-muted`,children:[(0,E.jsx)(a,{size:11}),e(`connectors.featuredSetup`)]}),Ge.map(e=>(0,E.jsx)(`div`,{children:Qe(e,!0)},e.id))]}):null,(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-3 ${X?`pt-3 border-t border-dark-border`:``}`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(n,{size:16,className:`text-accent-blue mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`text-sm text-dark-text`,children:`Computer Use`}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:`GUI 截屏 + 鼠标键盘操控(Windows)。每次调用需审批;需要视觉模型读屏。`})]})]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":!!V,disabled:_e,onClick:()=>void Oe(),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${V?`bg-accent-blue`:`bg-dark-border`}`,children:_e?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${V?`translate-x-[18px]`:`translate-x-0.5`}`})})]}),ve?(0,E.jsx)(`div`,{className:`text-xs text-accent-red bg-accent-red/10 border border-accent-red/30 rounded-lg px-3 py-2`,children:ve}):null,(0,E.jsxs)(`div`,{className:`pt-3 border-t border-dark-border space-y-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(p,{size:16,className:`text-accent-blue mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`text-sm text-dark-text`,children:e(`connectors.phoneTitle`)}),q?Ve(q):null]}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`connectors.phoneDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:()=>void je(),disabled:Ce,className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg text-meta bg-dark-bg border border-dark-border text-dark-muted hover:bg-dark-hover transition-colors disabled:opacity-50`,children:[Ce?(0,E.jsx)(o,{size:11,className:`animate-spin`}):(0,E.jsx)(v,{size:11}),e(Ce?`connectors.phoneChecking`:q?`connectors.phoneRecheck`:`connectors.phoneCheck`)]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":!!W,disabled:be,onClick:()=>void Ae(),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${W?`bg-accent-blue`:`bg-dark-border`}`,children:be?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${W?`translate-x-[18px]`:`translate-x-0.5`}`})})]})]}),q?(0,E.jsx)(`div`,{className:`rounded-lg border px-3 py-2 text-xs ${q.stage===`ready`?`bg-accent-green/10 border-accent-green/30 text-accent-green`:q.stage===`adb-missing`||q.stage===`adb-error`?`bg-accent-red/10 border-accent-red/30 text-accent-red`:`bg-accent-yellow/10 border-accent-yellow/30 text-accent-yellow`}`,children:(0,E.jsxs)(`div`,{className:`flex items-start gap-2`,children:[q.stage===`ready`?(0,E.jsx)(_,{size:13,className:`mt-0.5 shrink-0`}):(0,E.jsx)(d,{size:13,className:`mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,E.jsx)(`div`,{children:Ue(q)}),He(q.stage)>0?(0,E.jsx)(`ol`,{className:`space-y-0.5`,children:[1,2,3,4].map(t=>{let n=He(q.stage),r=t===1?{env:q.envKeys.binary}:t===4?{env:q.envKeys.serial}:{};return(0,E.jsxs)(`li`,{className:`flex items-start gap-1.5 ${t===n?`text-accent-yellow`:`text-dark-muted`}`,children:[(0,E.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:t===n?`▶`:t+`.`}),(0,E.jsx)(`span`,{children:e(`connectors.phoneStep${t}`,r)})]},t)})}):null,q.devices.length>0?(0,E.jsx)(`div`,{className:`text-dark-muted`,children:e(`connectors.phoneDevices`,{list:q.devices.map(e=>`${e.serial} [${e.state}]${e.model?` · ${e.model}`:``}`).join(` | `)})}):null,q.stage!==`ready`&&q.reason?(0,E.jsx)(`div`,{className:`text-dark-muted break-words opacity-80`,children:q.reason}):null]})]})}):(0,E.jsx)(`div`,{className:`text-xs text-dark-muted ps-6`,children:e(`connectors.phoneConnectHint`)}),xe?(0,E.jsx)(`div`,{className:`text-xs text-accent-red bg-accent-red/10 border border-accent-red/30 rounded-lg px-3 py-2`,children:xe}):null]})]}),me?(0,E.jsxs)(`div`,{className:`mb-4 p-4 bg-dark-surface border border-dark-border rounded-lg`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,E.jsx)(y,{size:15,className:`text-accent-purple`}),e(`connectors.customTitle`)]}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[[`stdio`,`🖥️ `+e(`connectors.customLocal`)],[`http`,`🌐 HTTP`],[`sse`,`📡 SSE`]].map(([e,t])=>(0,E.jsx)(`button`,{onClick:()=>B(t=>({...t,transport:e})),className:`px-3 py-1.5 rounded-lg text-xs transition-colors ${z.transport===e?`bg-accent-blue text-accent-fg`:`bg-dark-bg border border-dark-border hover:bg-dark-hover`}`,children:t},e))})]}),(0,E.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customName`)}),(0,E.jsx)(`input`,{value:z.name,onChange:e=>B(t=>({...t,name:e.target.value})),placeholder:`my-server`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),z.transport===`stdio`?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customCommand`)}),(0,E.jsx)(`input`,{value:z.command,onChange:e=>B(t=>({...t,command:e.target.value})),placeholder:`npx -y @some/mcp-server`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customArgs`)}),(0,E.jsx)(`input`,{value:z.args,onChange:e=>B(t=>({...t,args:e.target.value})),placeholder:`--arg value`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})]}):(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customUrl`)}),(0,E.jsx)(`input`,{value:z.url,onChange:e=>B(t=>({...t,url:e.target.value})),placeholder:`https://mcp.example.com/mcp`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),z.transport===`stdio`?(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customEnv`)}),(0,E.jsx)(`input`,{value:z.env,onChange:e=>B(t=>({...t,env:e.target.value})),placeholder:`KEY=value, KEY2=value2`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}):(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customHeaders`)}),(0,E.jsx)(`input`,{value:z.headers,onChange:e=>B(t=>({...t,headers:e.target.value})),placeholder:`Authorization=Bearer xxx`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})]}),(0,E.jsxs)(`div`,{className:`flex gap-2 mt-3`,children:[(0,E.jsx)(x,{variant:`accent`,onClick:()=>void Fe(),loading:!!M.__add,children:e(`connectors.add`)}),(0,E.jsx)(`button`,{onClick:()=>he(!1),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:e(`common.cancel`)})]})]}):null,(0,E.jsx)(`div`,{className:`flex gap-1 mb-3`,children:[[`all`,`${e(`connectors.all`)} (${Z.length})`],[`lsp`,`LSP (${Z.filter(e=>e.kind===`lsp`).length})`],[`mcp`,`MCP (${Z.filter(e=>e.kind===`mcp`).length})`]].map(([e,t])=>(0,E.jsx)(`button`,{onClick:()=>ue(e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${L===e?`bg-accent-blue text-accent-fg`:`bg-dark-surface border border-dark-border hover:bg-dark-hover`}`,children:t},e))}),(0,E.jsx)(`div`,{className:`flex gap-3 mb-3`,children:(0,E.jsxs)(`div`,{className:`flex-1 relative`,children:[(0,E.jsx)(v,{size:16,className:`absolute start-3 top-1/2 -translate-y-1/2 text-dark-muted`}),(0,E.jsx)(`input`,{type:`text`,value:F,onChange:e=>ce(e.target.value),placeholder:e(`connectors.searchPlaceholder`),className:`w-full ps-10 pe-4 py-2 bg-dark-surface border border-dark-border rounded-lg text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})}),(0,E.jsxs)(`div`,{className:`flex gap-1 mb-4 flex-wrap`,children:[(0,E.jsxs)(`button`,{onClick:()=>le(null),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I?`bg-dark-surface border border-dark-border hover:bg-dark-hover`:`bg-accent-blue text-accent-fg`}`,children:[e(`connectors.all`),` `,(0,E.jsxs)(`span`,{className:`opacity-70 text-xs`,children:[`(`,$.length,`)`]})]}),Xe.map(e=>{let t=$.filter(t=>t.category===e).length;return(0,E.jsxs)(`button`,{onClick:()=>le(I===e?null:e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I===e?`bg-accent-blue text-accent-fg`:`bg-dark-surface border border-dark-border hover:bg-dark-hover`}`,children:[k[e]??e,` `,(0,E.jsxs)(`span`,{className:`opacity-70 text-xs`,children:[`(`,t,`)`]})]},e)})]}),se?(0,E.jsx)(`div`,{className:`mb-4 px-3 py-2 bg-accent-red/10 border border-accent-red/30 rounded-lg text-accent-red text-sm`,children:se}):null,(0,E.jsx)(`div`,{children:Ye.length===0?(0,E.jsxs)(`div`,{className:`text-center text-dark-muted text-sm py-10`,children:[(0,E.jsx)(v,{size:24,className:`mx-auto mb-2 opacity-50`}),e(`connectors.noResults`)]}):(0,E.jsx)(`div`,{className:`space-y-2`,children:Ye.map(e=>Qe(e))})})]})}export{j as ConnectorsView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Cr as t,En as n,Kr as r,Sr as i,Wn as a,Z as o,cn as s,m as c,nt as l,q as u,vn as d,xr as f}from"./icons-CYDRRPKW.js";import{t as ee}from"./react-vendor-CB4cLN-6.js";import{t as p}from"./useTranslation-B-mfApCn.js";import{c as m,s as h,t as g}from"./useConfirm-Da8iQ_DZ.js";import{t as _}from"./api-plEYhRn0.js";import{I as v}from"./markdown-N5__3T-w.js";var y=e(r(),1),b=v();function te(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,py:`python`,rs:`rust`,go:`go`,rb:`ruby`,json:`json`,xml:`xml`,html:`html`,css:`css`,scss:`scss`,md:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`toml`,sql:`sql`,sh:`shell`,bat:`bat`,ps1:`powershell`,dockerfile:`dockerfile`,properties:`properties`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,cs:`csharp`,vue:`html`,svelte:`html`,svg:`xml`}[e.split(`.`).pop()?.toLowerCase()||``]||`plaintext`}function x(){let{t:e}=p(),[r,v]=g(),[x,S]=(0,y.useState)([]),[C,w]=(0,y.useState)(null),[T,E]=(0,y.useState)(``),[ne,D]=(0,y.useState)(``),[O,k]=(0,y.useState)(!1),[A,j]=(0,y.useState)(``),[M,N]=(0,y.useState)(!1),[P,F]=(0,y.useState)(!1),[I,L]=(0,y.useState)(!1),[R,z]=(0,y.useState)(``),B=(0,y.useRef)(null);(0,y.useEffect)(()=>{C?(k(!0),_.files.read(C).then(t=>{if(t.success&&t.data){let e=typeof t.data==`string`?t.data:JSON.stringify(t.data);E(e),D(e)}else m.error(t.error||e(`fileTree.readFail`))}).catch(()=>m.error(e(`fileTree.readFail`))).finally(()=>k(!1))):(E(``),D(``))},[C]);let V=async e=>{N(!0);try{let t=await _.files.list(e);t.success&&Array.isArray(t.data)&&S(t.data.map(e=>({...e,expanded:!1})))}finally{N(!1)}},H=async e=>{if(e.type===`directory`)try{let t=await _.files.list(e.path);if(t.success&&Array.isArray(t.data)){let n=t.data.map(e=>({...e,expanded:!1}));S(t=>U(t,e.id,n))}}catch{}},U=(e,t,n)=>e.map(e=>e.id===t?{...e,children:n,expanded:!0}:e.children?{...e,children:U(e.children,t,n)}:e);(0,y.useEffect)(()=>{V()},[]);let W=e=>{let t=K(x,e);t&&t.type===`directory`&&!t.children?H(t):S(t=>G(t,e))},G=(e,t)=>e.map(e=>e.id===t&&e.type===`directory`?{...e,expanded:!e.expanded}:e.children?{...e,children:G(e.children,t)}:e),K=(e,t)=>{for(let n of e){if(n.id===t)return n;if(n.children){let e=K(n.children,t);if(e)return e}}return null},q=(e,t)=>t?e.reduce((e,n)=>{if(n.name.toLowerCase().includes(t.toLowerCase()))e.push(n);else if(n.children){let r=q(n.children,t);r.length>0&&e.push({...n,children:r,expanded:!0})}return e},[]):e,J=(0,y.useCallback)(async()=>{if(C){F(!0);try{let t=await _.files.update(C,T);t.success?(D(T),m.success(e(`fileTree.saved`))):m.error(t.error||e(`fileTree.saveFail`))}catch{m.error(e(`fileTree.saveFail`))}finally{F(!1)}}},[C,T,e]),Y=()=>{w(null),E(``),D(``)},X=(0,y.useCallback)(async t=>{let n=await _.files.download(t);n.success?m.success(e(`fileTree.downloadStarted`)):m.error(n.error||e(`fileTree.downloadFail`))},[e]),re=()=>B.current?.click(),ie=(0,y.useCallback)(async t=>{if(!t||t.length===0)return;let n=R||(C?C.replace(/[\\/][^\\/]+$/,``):``);L(!0);let r=0,i=0;for(let e of Array.from(t)){let t=n?`${n}/${e.name}`:e.name;(await _.files.upload(e,t)).success?r++:i++}L(!1),r>0&&m.success(e(`fileTree.uploadedCount`,{count:r})),i>0&&m.error(e(`fileTree.uploadFailedCount`,{count:i})),await V()},[R,C,e]),Z=T!==ne,Q=async()=>!Z||v({message:e(`fileTree.discardConfirm`,{file:C||``}),variant:`danger`}),ae=async()=>{await Q()&&Y()},$=(n,r=0)=>{let i=n.type===`directory`,o=C===n.path,s=R===n.path;return(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`group flex items-center gap-1 px-2 py-0.5 cursor-pointer rounded text-xs transition-colors ${o?`bg-accent-blue/20 text-accent-blue`:s?`bg-accent-blue/10`:`hover:bg-dark-hover`}`,style:{paddingLeft:`${r*14+6}px`},onClick:()=>i?(z(n.path),W(n.id)):w(n.path),title:i?e(`fileTree.setUploadDirHint`):n.path,children:[i&&(0,b.jsx)(`span`,{className:`text-dark-muted shrink-0`,children:n.expanded?(0,b.jsx)(t,{size:12}):(0,b.jsx)(f,{size:12})}),i?(0,b.jsx)(d,{size:12,className:`text-accent-yellow shrink-0`}):(0,b.jsx)(`span`,{className:`w-3`}),(0,b.jsx)(`span`,{className:`truncate flex-1`,children:n.name}),!i&&(0,b.jsx)(`button`,{onClick:e=>{e.stopPropagation(),X(n.path)},className:`opacity-0 group-hover:opacity-100 p-0.5 rounded hover:bg-dark-border text-dark-muted hover:text-dark-text shrink-0`,title:e(`fileTree.download`),children:(0,b.jsx)(a,{size:11})})]}),i&&n.expanded&&n.children?.map(e=>$(e,r+1))]},n.id)},oe=A?q(x,A):x;return(0,b.jsxs)(`div`,{className:`flex-1 flex overflow-hidden`,children:[r,(0,b.jsxs)(`div`,{className:h(`flex flex-col overflow-hidden flex-1 min-h-0`,C&&`hidden`),children:[(0,b.jsx)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-dark-border`,children:(0,b.jsxs)(`div`,{className:`flex items-center gap-0.5 ms-auto`,children:[(0,b.jsx)(`button`,{onClick:re,disabled:I,className:`p-1 rounded hover:bg-dark-hover disabled:opacity-50`,title:R?e(`fileTree.uploadTo`,{dir:R}):e(`fileTree.uploadToRoot`),children:(0,b.jsx)(c,{size:12,className:I?`animate-pulse`:``})}),(0,b.jsx)(`button`,{onClick:()=>V(),disabled:M,className:`p-1 rounded hover:bg-dark-hover`,title:e(`fileTree.refresh`),children:(0,b.jsx)(l,{size:12,className:M?`animate-spin`:``})}),(0,b.jsx)(`button`,{onClick:()=>{(async()=>{await Q()&&(S(x.map(e=>({...e,expanded:!1}))),Y())})()},className:`p-1 rounded hover:bg-dark-hover`,title:e(`fileTree.collapse`),children:(0,b.jsx)(s,{size:12})})]})}),(0,b.jsx)(`div`,{className:`p-1.5 border-b border-dark-border`,children:(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(u,{size:12,className:`absolute start-2 top-1/2 -translate-y-1/2 text-dark-muted`}),(0,b.jsx)(`input`,{type:`text`,value:A,onChange:e=>j(e.target.value),placeholder:e(`fileTree.searchPlaceholder`),className:`w-full ps-6 pe-2 py-1 text-xs bg-dark-bg border border-dark-border rounded focus:border-accent-blue focus:outline-none`})]})}),(0,b.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar py-1`,children:oe.map(e=>$(e))}),(0,b.jsx)(`input`,{ref:B,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{ie(e.target.files),e.currentTarget.value=``}})]}),(0,b.jsx)(`div`,{className:h(`flex-1 flex flex-col min-w-0 bg-dark-bg`,!C&&`hidden`),children:C?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b border-dark-border bg-dark-surface`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2 text-xs min-w-0`,children:[(0,b.jsx)(`button`,{onClick:()=>void ae(),className:`p-0.5 -ms-1 rounded hover:bg-dark-hover text-dark-muted hover:text-dark-text shrink-0`,title:e(`fileTree.backToList`),"aria-label":e(`fileTree.backToList`),"data-testid":`file-tree-back`,children:(0,b.jsx)(i,{size:13})}),(0,b.jsx)(n,{size:12,className:`text-dark-muted shrink-0`}),(0,b.jsx)(`span`,{className:`truncate`,children:C}),Z&&(0,b.jsxs)(`span`,{className:`text-accent-yellow text-badge shrink-0`,children:[`● `,e(`fileTree.modified`)]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsxs)(`button`,{onClick:J,disabled:!Z||P,className:`px-2 py-0.5 text-badge rounded flex items-center gap-1 transition-colors ${Z?`bg-accent-green text-accent-fg hover:opacity-90`:`bg-dark-border text-dark-muted cursor-not-allowed`}`,children:[(0,b.jsx)(o,{size:10}),e(P?`fileTree.saving`:`fileTree.save`)]}),(0,b.jsx)(`button`,{onClick:()=>void X(C),className:`p-1 rounded hover:bg-dark-hover`,title:e(`fileTree.download`),children:(0,b.jsx)(a,{size:12})})]})]}),(0,b.jsx)(`div`,{className:`flex-1 min-h-0`,children:O?(0,b.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,b.jsx)(`div`,{className:`w-4 h-4 border-2 border-accent-blue border-t-transparent rounded-full animate-spin`})}):(0,b.jsx)(ee,{language:te(C),value:T,onChange:e=>E(e||``),theme:`vs-dark`,options:{fontSize:13,fontFamily:`"Cascadia Code", "Fira Code", Consolas, monospace`,minimap:{enabled:!0,renderCharacters:!1,maxColumn:80,showSlider:`mouseover`},lineNumbers:`on`,scrollBeyondLastLine:!1,wordWrap:`on`,automaticLayout:!0,tabSize:2}})})]}):(0,b.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,b.jsxs)(`div`,{className:`text-center`,children:[(0,b.jsx)(n,{size:32,className:`text-dark-muted mx-auto mb-2`}),(0,b.jsx)(`p`,{className:`text-sm text-dark-muted`,children:e(`fileTree.selectFileHint`)})]})})})]})}export{x as FileTreeView};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{B as t,Cr as n,E as r,Kr as i,O as a,Sr as o,Wn as s,Y as c,Yt as l,_ as u,dt as d,gt as f,k as p,lt as m,m as h,n as g,nt as _,v,xr as y,y as b}from"./icons-CYDRRPKW.js";import{t as x}from"./useTranslation-B-mfApCn.js";import{n as S}from"./state-CSZ50keL.js";import{a as C,o as w,r as T,t as E}from"./useConfirm-Da8iQ_DZ.js";import{t as D}from"./api-plEYhRn0.js";import{I as O}from"./markdown-N5__3T-w.js";import"./common-Bbatsa0-.js";var k=e(i(),1),A=S((e,t)=>({rules:[],templates:[],stats:null,events:[],agents:[],loading:!1,error:null,fieldErrors:null,formOpen:!1,editingRule:null,draftRule:null,dryRunResult:null,loadRules:async()=>{let t=await D.hooks.list();t.success&&Array.isArray(t.data)?e({rules:t.data}):t.success&&t.data&&!Array.isArray(t.data)?e({error:`服务端返回的规则数据格式异常`}):e({error:t.error||`Failed to load rules`})},loadTemplates:async()=>{let t=await D.hooks.templates();t.success&&Array.isArray(t.data)?e({templates:t.data}):t.success&&t.data&&!Array.isArray(t.data)&&e({error:`服务端返回的模板数据格式异常`})},loadStats:async()=>{let t=await D.hooks.stats();t.success&&t.data&&e({stats:t.data})},loadEvents:async()=>{let t=await D.hooks.events();t.success&&Array.isArray(t.data)?e({events:t.data}):t.success&&t.data&&!Array.isArray(t.data)&&e({error:`服务端返回的事件数据格式异常`})},loadAgents:async()=>{let t=await D.hooks.agents();t.success&&Array.isArray(t.data)?e({agents:t.data}):t.success&&t.data&&!Array.isArray(t.data)&&e({error:`服务端返回的Agent数据格式异常`})},loadAll:async()=>{e({loading:!0,error:null});try{await Promise.all([t().loadRules(),t().loadTemplates(),t().loadStats(),t().loadEvents(),t().loadAgents()])}catch(t){e({error:String(t)})}finally{e({loading:!1})}},createRule:async n=>{e({fieldErrors:null});let r=await D.hooks.create(n);if(r.success)return await t().loadRules(),await t().loadStats(),e({formOpen:!1,editingRule:null}),!0;if(r.error){e({error:r.error});try{let t=JSON.parse(r.error);t.fieldErrors&&e({fieldErrors:t.fieldErrors})}catch{}}return!1},updateRule:async(n,r)=>{e({fieldErrors:null});let i=await D.hooks.update(n,r);return i.success?(await t().loadRules(),await t().loadStats(),e({formOpen:!1,editingRule:null}),!0):(e({error:i.error||`Update failed`}),!1)},deleteRule:async n=>{let r=await D.hooks.delete(n);return r.success?(await t().loadRules(),await t().loadStats(),!0):(e({error:r.error||`Delete failed`}),!1)},batchDelete:async n=>{let r=await D.hooks.batchDelete(n);return r.success?(await t().loadRules(),await t().loadStats(),!0):(e({error:r.error||`Batch delete failed`}),!1)},toggleRule:async(n,r)=>(await D.hooks.toggle(n,r)).success?(e(e=>({rules:e.rules.map(e=>e.name===n?{...e,enabled:r}:e)})),await t().loadStats(),!0):(await t().loadRules(),!1),batchToggle:async(n,r)=>(await D.hooks.batchToggle(n,r)).success?(e(e=>({rules:e.rules.map(e=>n.includes(e.name)?{...e,enabled:r}:e)})),await t().loadStats(),!0):(await t().loadRules(),!1),dryRun:async t=>{let n=await D.hooks.dryRun(t);return n.success&&n.data?(e({dryRunResult:n.data}),n.data):(e({error:n.error||`Dry-run failed`}),null)},openForm:t=>e({formOpen:!0,editingRule:t||null,draftRule:null,dryRunResult:null,fieldErrors:null}),openFormFromTemplate:(t,n)=>e({formOpen:!0,editingRule:null,draftRule:{...t.rule,description:n||t.rule.description},dryRunResult:null,fieldErrors:null}),closeForm:()=>e({formOpen:!1,editingRule:null,draftRule:null,dryRunResult:null,fieldErrors:null}),setDryRunResult:t=>e({dryRunResult:t}),clearError:()=>e({error:null}),clearFieldErrors:()=>e({fieldErrors:null})})),j=O(),M={SYSTEM:`bg-accent-red/15 text-accent-red`,SECURITY:`bg-accent-orange/15 text-accent-orange`,PROJECT:`bg-accent-blue/15 text-accent-blue`,USER:`bg-accent-green/15 text-accent-green`,PLUGIN:`bg-accent-purple/15 text-accent-purple`},N={SHELL:`bg-accent-yellow/15 text-accent-yellow`,HTTP:`bg-accent-cyan/15 text-accent-cyan`,PROMPT:`bg-accent-purple/15 text-accent-purple`,AGENT:`bg-accent-blue/15 text-accent-blue`};function P({rules:e,onEdit:t}){let{t:n}=x(),[i,o]=E(),{toggleRule:s,deleteRule:c,batchDelete:l,batchToggle:d}=A(),[p,m]=(0,k.useState)(new Set),[h,g]=(0,k.useState)(!1),_=Array.isArray(e)?e:[];if(_.length===0)return(0,j.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 py-16 text-dark-muted`,children:[(0,j.jsx)(`div`,{className:`text-4xl opacity-60`,children:`🪝`}),(0,j.jsx)(`p`,{className:`text-sm`,children:n(`hook.noRules`)}),(0,j.jsx)(`p`,{className:`text-xs text-dark-muted/70`,children:n(`hook.noRulesHint`)})]});let v=e=>{let t=new Set(p);t.has(e)?t.delete(e):t.add(e),m(t),g(t.size===_.length)},y=()=>{h?(m(new Set),g(!1)):(m(new Set(_.map(e=>e.name))),g(!0))},b=async()=>{p.size!==0&&await o({message:n(`hook.batchDeleteConfirm`,{n:p.size}),variant:`danger`})&&(l(Array.from(p)),m(new Set),g(!1))},S=e=>{p.size!==0&&(d(Array.from(p),e),m(new Set),g(!1))};return(0,j.jsxs)(`div`,{className:`flex flex-1 flex-col min-h-0`,children:[i,p.size>0&&(0,j.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 rounded-lg border border-accent-blue/30 bg-accent-blue/5 px-3 py-1.5 text-sm`,children:[(0,j.jsx)(`span`,{className:`text-dark-muted`,children:n(`hook.selectedItems`,{n:p.size})}),(0,j.jsx)(`button`,{onClick:()=>S(!0),className:`rounded bg-accent-green/15 px-2 py-0.5 text-accent-green transition-colors hover:bg-accent-green/25`,children:n(`hook.enableAll`)}),(0,j.jsx)(`button`,{onClick:()=>S(!1),className:`rounded bg-dark-hover px-2 py-0.5 text-dark-text transition-colors hover:bg-dark-border`,children:n(`hook.disableAll`)}),(0,j.jsx)(`button`,{onClick:()=>void b(),className:`rounded bg-accent-red/15 px-2 py-0.5 text-accent-red transition-colors hover:bg-accent-red/25`,children:n(`common.delete`)})]}),(0,j.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto custom-scrollbar rounded-xl border border-dark-border`,children:(0,j.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,j.jsx)(`thead`,{className:`sticky top-0 bg-dark-hover text-dark-muted`,children:(0,j.jsxs)(`tr`,{children:[(0,j.jsx)(`th`,{className:`w-8 p-2.5`,children:(0,j.jsx)(`button`,{onClick:y,children:h?(0,j.jsx)(a,{size:14}):(0,j.jsx)(r,{size:14})})}),(0,j.jsx)(`th`,{className:`p-2.5 text-start font-medium`,children:n(`hook.colName`)}),(0,j.jsx)(`th`,{className:`p-2.5 text-start font-medium`,children:n(`hook.colEvents`)}),(0,j.jsx)(`th`,{className:`p-2.5 text-start font-medium`,children:n(`hook.colType`)}),(0,j.jsx)(`th`,{className:`p-2.5 text-start font-medium`,children:n(`hook.fieldPriority`)}),(0,j.jsx)(`th`,{className:`p-2.5 text-start font-medium`,children:n(`hook.colStatus`)}),(0,j.jsx)(`th`,{className:`p-2.5 text-end font-medium`,children:n(`hook.colActions`)})]})}),(0,j.jsx)(`tbody`,{className:`divide-y divide-dark-border`,children:_.map(e=>(0,j.jsxs)(`tr`,{className:`transition-colors hover:bg-dark-hover/50`,children:[(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsx)(`button`,{onClick:()=>v(e.name),children:p.has(e.name)?(0,j.jsx)(a,{size:14,className:`text-accent-blue`}):(0,j.jsx)(r,{size:14,className:`text-dark-muted`})})}),(0,j.jsxs)(`td`,{className:`p-2.5`,children:[(0,j.jsx)(`div`,{className:`font-medium text-dark-text`,children:e.name}),e.description&&(0,j.jsx)(`div`,{className:`mt-0.5 max-w-[220px] truncate text-xs text-dark-muted`,children:e.description})]}),(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[Array.isArray(e.events)&&e.events.slice(0,3).map(e=>(0,j.jsx)(`span`,{className:`rounded bg-dark-hover px-1.5 py-0.5 text-xs text-dark-text`,children:e},e)),Array.isArray(e.events)&&e.events.length>3&&(0,j.jsxs)(`span`,{className:`px-1 py-0.5 text-xs text-dark-muted`,children:[`+`,e.events.length-3]})]})}),(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsx)(`span`,{className:`rounded px-1.5 py-0.5 text-xs font-medium ${N[e.implementationType]||`bg-dark-hover text-dark-muted`}`,children:e.implementationType})}),(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsx)(`span`,{className:`rounded px-1.5 py-0.5 text-xs font-medium ${M[e.priority]||`bg-dark-hover text-dark-muted`}`,children:e.priority})}),(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsx)(`button`,{onClick:()=>s(e.name,!e.enabled),className:`relative h-5 w-9 rounded-full transition-colors ${e.enabled?`bg-accent-green`:`bg-dark-border`}`,title:e.enabled?n(`hook.clickToDisable`):n(`hook.clickToEnable`),children:(0,j.jsx)(`span`,{className:`absolute top-0.5 block h-3.5 w-3.5 rounded-full bg-white transition-all ${e.enabled?`start-[18px]`:`start-[2px]`}`})})}),(0,j.jsx)(`td`,{className:`p-2.5`,children:(0,j.jsxs)(`div`,{className:`flex items-center justify-end gap-1`,children:[(0,j.jsx)(`button`,{onClick:()=>t(e),className:`rounded p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue`,title:n(`hook.actionEdit`),children:(0,j.jsx)(f,{size:14})}),(0,j.jsx)(`button`,{onClick:()=>{(async()=>{await o({message:n(`hook.deleteRuleConfirm`,{name:e.name}),variant:`danger`})&&c(e.name)})()},className:`rounded p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-red`,title:n(`common.delete`),children:(0,j.jsx)(u,{size:14})})]})})]},e.name))})]})})]})}var F={name:``,description:``,events:[],implementationType:`SHELL`,command:``,url:``,promptTemplate:``,agentName:``,priority:`USER`,tools:[],matcherToolNamePattern:``,matcherFromState:``,matcherToState:``,timeoutMs:3e4,enabled:!0,failOpen:!0,onFailure:`fail-open`,scope:`project`},I=[{value:`SYSTEM`,label:`SYSTEM (100)`},{value:`SECURITY`,label:`SECURITY (80)`},{value:`PROJECT`,label:`PROJECT (60)`},{value:`USER`,label:`USER (40)`},{value:`PLUGIN`,label:`PLUGIN (20)`}],L=e=>`w-full rounded-lg border bg-dark-bg px-3 py-2 text-sm text-dark-text placeholder-dark-muted/60 transition-colors focus:outline-none focus:ring-2 ${e?`border-accent-red focus:border-accent-red focus:ring-accent-red/20`:`border-dark-border focus:border-accent-blue focus:ring-accent-blue/20`}`,R=`mb-1 block text-xs font-medium text-dark-muted`;function z({isOpen:e,events:t,agents:n}){let{t:r}=x(),{editingRule:i,draftRule:a,fieldErrors:s,dryRunResult:c,createRule:l,updateRule:u,closeForm:f,dryRun:p,setDryRunResult:m,clearFieldErrors:h}=A(),{visible:_,phase:v}=w(e),b=[{value:`SHELL`,label:r(`hook.implShell`),desc:r(`hook.implShellDesc`)},{value:`HTTP`,label:r(`hook.implHttp`),desc:r(`hook.implHttpDesc`)},{value:`PROMPT`,label:`LLM Prompt`,desc:r(`hook.implPromptDesc`)},{value:`AGENT`,label:`AI Agent`,desc:r(`hook.implAgentDesc`)}],S=Array.isArray(t)?t:[],T=Array.isArray(n)?n:[],[E,D]=(0,k.useState)(0),[O,M]=(0,k.useState)(F),[N,P]=(0,k.useState)(``),[z,B]=(0,k.useState)(``),[V,H]=(0,k.useState)(``),U=i??a;(0,k.useEffect)(()=>{if(!e)return;D(0),P(``),M(U?{name:U.name,description:U.description||``,events:U.events,implementationType:U.implementationType,command:U.command||``,url:U.url||``,promptTemplate:U.promptTemplate||``,agentName:U.agentName||``,priority:U.priority,tools:U.tools||[],matcherToolNamePattern:U.matchers?.toolNamePattern||``,matcherFromState:U.matchers?.fromState||``,matcherToState:U.matchers?.toState||``,timeoutMs:U.timeoutMs,enabled:U.enabled,failOpen:U.failOpen,onFailure:U.onFailure||(U.failOpen?`fail-open`:`block`),scope:U.scope||`project`}:F);let t=(U?.matchers?.toolNamePattern||``).trim().replace(/^\^|\$$/g,``);B(/^[A-Za-z0-9_]+$/.test(t)?t:``),H(``)},[e,U]);let W=(e,t)=>{M(n=>({...n,[e]:t})),h()},G=e=>{M(t=>({...t,events:t.events.includes(e)?t.events.filter(t=>t!==e):[...t.events,e]}))},K=e=>{e.every(e=>O.events.includes(e))?M(t=>({...t,events:t.events.filter(t=>!e.includes(t))})):M(t=>({...t,events:[...new Set([...t.events,...e])]}))},q=async()=>{let e={};O.matcherToolNamePattern&&(e.toolNamePattern=O.matcherToolNamePattern),O.matcherFromState&&(e.fromState=O.matcherFromState),O.matcherToState&&(e.toState=O.matcherToState);let t={...O,tools:O.tools.length>0?O.tools:[]};t.matchers=e,delete t.matcherToolNamePattern,delete t.matcherFromState,delete t.matcherToState,i?await u(i.name,t):await l(t)},J=async()=>{m(null);let e={};O.matcherToolNamePattern&&(e.toolNamePattern=O.matcherToolNamePattern),await p({hook:{name:O.name||`dry-run`,description:O.description,events:O.events,implementationType:O.implementationType,command:O.command,url:O.url,promptTemplate:O.promptTemplate,agentName:O.agentName,priority:O.priority,tools:O.tools,matchers:e,timeoutMs:O.timeoutMs,enabled:!0,failOpen:O.failOpen,onFailure:O.onFailure,scope:O.scope},eventType:O.events[0]||`PRE_TOOL_USE`,toolName:z.trim(),toolInput:V.trim()})},Y=N?S.map(e=>({...e,events:Array.isArray(e.events)?e.events.filter(e=>e.name.toLowerCase().includes(N.toLowerCase())||e.summary.includes(N)):[]})).filter(e=>e.events.length>0):S,X=[{title:r(`hook.stepBasicTitle`),desc:r(`hook.stepBasicDesc`)},{title:r(`hook.stepImplTitle`),desc:r(`hook.stepImplDesc`)},{title:r(`hook.stepAdvancedTitle`),desc:r(`hook.stepAdvancedDesc`)}];return _?(0,j.jsxs)(`div`,{className:`fixed inset-0 z-50 flex justify-end`,children:[(0,j.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":v,onClick:f}),(0,j.jsxs)(`div`,{className:`relative flex h-full w-[560px] flex-col border-s border-dark-border bg-dark-bg shadow-2xl ui-overlay-panel-edge`,"data-phase":v,children:[(0,j.jsxs)(`div`,{className:`flex flex-shrink-0 items-center justify-between border-b border-dark-border px-4 py-3.5`,children:[(0,j.jsx)(`h3`,{className:`text-base font-semibold text-dark-text`,children:i?r(`hook.editRule`,{name:i.name}):r(`hook.addRule`)}),(0,j.jsx)(`button`,{onClick:f,className:`rounded-lg p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,children:(0,j.jsx)(g,{size:18})})]}),(0,j.jsx)(`div`,{className:`flex flex-shrink-0 border-b border-dark-border`,children:X.map((e,t)=>{let n=t===E,r=t<E;return(0,j.jsxs)(`button`,{onClick:()=>D(t),className:`relative flex-1 border-b-2 px-2 py-2.5 text-center text-xs transition-colors ${n?`border-accent-blue bg-accent-blue/5 text-accent-blue`:r?`border-transparent text-dark-text`:`border-transparent text-dark-muted hover:text-dark-text`}`,children:[(0,j.jsx)(`span`,{className:`me-1 inline-flex h-4 w-4 items-center justify-center rounded-full text-badge ${n?`bg-accent-blue text-accent-fg`:r?`bg-accent-green text-accent-fg`:`bg-dark-hover text-dark-muted`}`,children:r?`✓`:t+1}),(0,j.jsx)(`span`,{className:`font-medium`,children:e.title})]},e.title)})}),(0,j.jsxs)(`div`,{className:`flex-1 min-h-0 space-y-4 overflow-auto custom-scrollbar p-4`,children:[s&&Object.keys(s).length>0&&(0,j.jsx)(`div`,{className:`rounded-lg border border-accent-red/40 bg-accent-red/10 p-2.5 text-xs text-accent-red`,children:Object.entries(s).map(([e,t])=>(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`strong`,{children:[e,`:`]}),` `,t]},e))}),E===0&&(0,j.jsxs)(`div`,{className:`space-y-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldName`)}),(0,j.jsx)(`input`,{value:O.name,onChange:e=>W(`name`,e.target.value),placeholder:`my-custom-hook`,className:L(s?.name)})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldDescription`)}),(0,j.jsx)(`textarea`,{value:O.description,onChange:e=>W(`description`,e.target.value),placeholder:r(`hook.descriptionPlaceholder`),rows:2,className:L()})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:`Scope`}),(0,j.jsxs)(`select`,{value:O.scope,onChange:e=>W(`scope`,e.target.value),className:L(),children:[(0,j.jsx)(`option`,{value:`project`,children:`project (.agent/hooks.json)`}),(0,j.jsx)(`option`,{value:`user`,children:`user (~/.agent/hooks.json)`}),(0,j.jsx)(`option`,{value:`local`,children:`local (.agent/hooks.local.json)`})]})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`mb-1 flex items-center justify-between`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-dark-muted`,children:r(`hook.fieldEvents`)}),(0,j.jsx)(`span`,{className:`text-xs text-accent-blue`,children:r(`hook.eventsSelected`,{n:O.events.length})})]}),(0,j.jsx)(`input`,{value:N,onChange:e=>P(e.target.value),placeholder:r(`hook.searchEventsPlaceholder`),className:L()+` mb-2`}),(0,j.jsx)(`div`,{className:`max-h-[280px] space-y-2 overflow-auto custom-scrollbar rounded-lg border border-dark-border bg-dark-surface p-2`,children:Y.map(e=>(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`button`,{onClick:()=>K(e.events.map(e=>e.name)),className:`mb-1 text-xs font-medium text-dark-muted transition-colors hover:text-dark-text`,children:[e.category,` — `,r(`hook.toggleAllEvents`)]}),e.events.map(e=>{let t=O.events.includes(e.name);return(0,j.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 rounded px-1 py-1 transition-colors hover:bg-dark-hover`,children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:t,onChange:()=>G(e.name),className:`h-3.5 w-3.5 accent-accent-blue`}),(0,j.jsx)(`span`,{className:`text-xs text-dark-text`,children:e.name}),(0,j.jsxs)(`span`,{className:`truncate text-xs text-dark-muted`,children:[`— `,e.summary]})]},e.name)})]},e.category))})]})]}),E===1&&(0,j.jsxs)(`div`,{className:`space-y-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldImplType`)}),(0,j.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:b.map(e=>{let t=O.implementationType===e.value;return(0,j.jsxs)(`button`,{onClick:()=>W(`implementationType`,e.value),className:`rounded-lg border p-3 text-start transition-colors ${t?`border-accent-blue bg-accent-blue/10 ring-1 ring-accent-blue/30`:`border-dark-border bg-dark-surface hover:bg-dark-hover`}`,children:[(0,j.jsx)(`div`,{className:`text-sm font-medium ${t?`text-accent-blue`:`text-dark-text`}`,children:e.label}),(0,j.jsx)(`div`,{className:`mt-1 text-xs text-dark-muted`,children:e.desc})]},e.value)})})]}),O.implementationType===`SHELL`&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldCommand`)}),(0,j.jsx)(`textarea`,{value:O.command,onChange:e=>W(`command`,e.target.value),placeholder:`python3 .agent/hooks/audit.py
2
+ 或 node -e "…"(WINDOWS 下命令内不要出现第二个双引号)`,rows:4,spellCheck:!1,className:`resize-y font-mono leading-relaxed ${L(s?.command)}`})]}),O.implementationType===`HTTP`&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:`URL *`}),(0,j.jsx)(`input`,{value:O.url,onChange:e=>W(`url`,e.target.value),placeholder:`https://example.com/hooks/audit`,className:L(s?.url)})]}),O.implementationType===`PROMPT`&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldPromptTemplate`)}),(0,j.jsx)(`textarea`,{value:O.promptTemplate,onChange:e=>W(`promptTemplate`,e.target.value),placeholder:r(`hook.promptTemplatePlaceholder`),rows:5,className:`font-mono ${L(s?.promptTemplate)}`})]}),O.implementationType===`AGENT`&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:`Agent *`}),(0,j.jsxs)(`select`,{value:O.agentName,onChange:e=>W(`agentName`,e.target.value),className:L(s?.agentName),children:[(0,j.jsx)(`option`,{value:``,children:r(`hook.selectAgentPlaceholder`)}),T.map(e=>(0,j.jsxs)(`option`,{value:e.id,children:[e.name,` (`,e.description,`)`]},e.id))]}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-dark-muted`,children:r(`hook.agentReadOnlyHint`)})]})]}),E===2&&(0,j.jsxs)(`div`,{className:`space-y-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldPriority`)}),(0,j.jsx)(`select`,{value:O.priority,onChange:e=>W(`priority`,e.target.value),className:L(),children:I.map(e=>(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,j.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldTimeout`)}),(0,j.jsx)(`input`,{type:`number`,value:O.timeoutMs,onChange:e=>W(`timeoutMs`,parseInt(e.target.value)||3e4),min:100,max:3e5,step:1e3,className:L()})]}),(0,j.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,j.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-dark-text`,children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:O.enabled,onChange:e=>W(`enabled`,e.target.checked),className:`h-3.5 w-3.5 accent-accent-blue`}),r(`hook.labelEnabled`)]}),(0,j.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-dark-text`,children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:O.failOpen,onChange:e=>W(`failOpen`,e.target.checked),className:`h-3.5 w-3.5 accent-accent-blue`}),r(`hook.failOpenLabel`)]}),(0,j.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-dark-text`,title:r(`hook.onFailureHint`),children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:O.onFailure===`block`,onChange:e=>{let t=e.target.checked;M(e=>({...e,onFailure:t?`block`:`fail-open`,failOpen:!t&&e.failOpen})),h()},className:`h-3.5 w-3.5 accent-accent-blue`}),r(`hook.onFailureLabel`)]})]})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.fieldToolFilter`)}),(0,j.jsx)(`input`,{value:O.matcherToolNamePattern,onChange:e=>W(`matcherToolNamePattern`,e.target.value),placeholder:`Bash.*|FileWrite.*`,className:`font-mono ${L()}`})]}),O.events.some(e=>e.includes(`STATE`))&&(0,j.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:`From State`}),(0,j.jsx)(`input`,{value:O.matcherFromState,onChange:e=>W(`matcherFromState`,e.target.value),className:L()})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:`To State`}),(0,j.jsx)(`input`,{value:O.matcherToState,onChange:e=>W(`matcherToState`,e.target.value),className:L()})]})]}),c&&(0,j.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface p-3`,children:[(0,j.jsx)(`div`,{className:`mb-2 text-xs font-medium text-dark-text`,children:r(`hook.dryRunResultTitle`)}),(0,j.jsxs)(`div`,{className:`space-y-1 text-xs`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`text-dark-muted`,children:r(`hook.dryRunDecision`)}),(0,j.jsx)(`span`,{className:String(c.decision).toUpperCase()===`ALLOW`?`text-accent-green`:String(c.decision).toUpperCase()===`DENY`?`text-accent-red`:`text-accent-yellow`,children:c.decision}),typeof c.durationMs==`number`&&(0,j.jsxs)(`span`,{className:`ms-2 text-dark-muted`,children:[c.durationMs,`ms`]})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`text-dark-muted`,children:r(`hook.dryRunReason`)}),(0,j.jsx)(`span`,{className:`text-dark-text`,children:c.reason})]}),c.contextOutput&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`text-dark-muted`,children:r(`hook.dryRunOutput`)}),(0,j.jsx)(`pre`,{className:`mt-1 max-h-40 overflow-auto whitespace-pre-wrap break-all font-mono text-meta text-dark-text`,children:c.contextOutput})]})]})]}),(0,j.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-2`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.dryRunSampleTool`)}),(0,j.jsx)(`input`,{value:z,onChange:e=>B(e.target.value),placeholder:`bash / write_file / apply_patch`,className:`font-mono ${L()}`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`label`,{className:R,children:r(`hook.dryRunSampleInput`)}),(0,j.jsx)(`input`,{value:V,onChange:e=>H(e.target.value),placeholder:`{"command":"rm -rf /tmp/x"}`,className:`font-mono ${L()}`})]})]}),(0,j.jsxs)(`button`,{onClick:J,className:`inline-flex items-center gap-1.5 rounded-lg border border-dark-border bg-dark-surface px-3 py-1.5 text-xs text-dark-text transition-colors hover:bg-dark-hover`,children:[(0,j.jsx)(d,{size:12}),` `,r(`hook.dryRunButton`)]})]})]}),(0,j.jsxs)(`div`,{className:`flex flex-shrink-0 items-center justify-between border-t border-dark-border px-4 py-3`,children:[(0,j.jsx)(`div`,{className:`flex gap-2`,children:E>0&&(0,j.jsx)(C,{size:`sm`,onClick:()=>D(E-1),leftIcon:(0,j.jsx)(o,{size:14}),children:r(`hook.prevStep`)})}),(0,j.jsxs)(`div`,{className:`flex gap-2`,children:[(0,j.jsx)(C,{size:`sm`,onClick:f,children:r(`common.cancel`)}),E<2?(0,j.jsx)(C,{size:`sm`,variant:`accent`,onClick:()=>D(E+1),rightIcon:(0,j.jsx)(y,{size:14}),children:r(`hook.nextStep`)}):(0,j.jsx)(C,{size:`sm`,variant:`accent`,onClick:q,children:r(i?`hook.saveChanges`:`hook.createRule`)})]})]})]})]}):null}function B({stats:e}){let{t}=x();if(!e)return null;let n=[{id:`total`,label:t(`hook.statTotal`),value:e.totalHooks,icon:l,iconWrap:`bg-accent-blue/15 text-accent-blue`},{id:`enabled`,label:t(`common.enabled`),value:e.enabledCount,icon:v,iconWrap:`bg-accent-green/15 text-accent-green`},{id:`disabled`,label:t(`common.disabled`),value:e.disabledCount,icon:b,iconWrap:`bg-dark-hover text-dark-muted`}];return(0,j.jsx)(`div`,{className:`grid grid-cols-3 gap-3`,children:n.map(e=>{let t=e.icon;return(0,j.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-dark-border bg-dark-surface px-4 py-3`,children:[(0,j.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg ${e.iconWrap}`,children:(0,j.jsx)(t,{size:18})}),(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`div`,{className:`text-xl font-bold text-dark-text`,children:e.value}),(0,j.jsx)(`div`,{className:`text-xs text-dark-muted`,children:e.label})]})]},e.id)})})}var V={safety:{Icon:t,cls:`text-accent-red`},quality:{Icon:p,cls:`text-accent-blue`},audit:{Icon:c,cls:`text-accent-purple`}},H={Icon:c,cls:`text-dark-muted`},U=[`safety`,`quality`,`audit`];function W({templates:e,existingNames:t,onPick:r}){let{t:i}=x(),[a,o]=(0,k.useState)(!0),s=Array.isArray(e)?e:[],c=(0,k.useMemo)(()=>{let e=e=>{let t=U.indexOf(e);return t===-1?U.length:t};return[...s].sort((t,n)=>e(t.category)-e(n.category))},[s]);if(s.length===0)return null;let l=new Set(t);return(0,j.jsxs)(`section`,{className:`mt-4 min-w-0 rounded-xl border border-dark-border bg-dark-surface px-4 py-3`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold text-dark-text`,children:i(`hook.templatesTitle`)}),(0,j.jsx)(`p`,{className:`mt-0.5 text-xs text-dark-muted`,children:i(`hook.templatesDesc`)})]}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-expanded":a,className:`shrink-0 rounded-lg p-1.5 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:i(a?`common.collapse`:`common.expand`),children:a?(0,j.jsx)(n,{size:16}):(0,j.jsx)(y,{size:16})})]}),a&&(0,j.jsx)(`div`,{className:`mt-3 grid grid-cols-1 gap-2 md:grid-cols-2 xl:grid-cols-3`,children:c.map(e=>{let{Icon:t,cls:n}=V[e.category]??H,a=i(`hook.template.${e.id}.title`),o=i(`hook.template.${e.id}.desc`),s=l.has(e.id);return(0,j.jsxs)(`button`,{type:`button`,onClick:()=>r(e),className:`group flex flex-col rounded-lg border border-dark-border bg-dark-bg p-2.5 text-start transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,j.jsx)(t,{size:13,className:n}),(0,j.jsx)(`span`,{className:`text-meta uppercase tracking-wider text-dark-muted`,children:i(`hook.templateCategory.${e.category}`)}),s&&(0,j.jsx)(`span`,{className:`ms-auto rounded bg-dark-raised px-1.5 text-badge text-dark-muted`,children:i(`hook.templateExists`)})]}),(0,j.jsx)(`div`,{className:`mt-1 text-sm font-medium text-dark-text`,children:a}),(0,j.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-relaxed text-dark-muted`,children:o}),(0,j.jsx)(`div`,{className:`mt-2 text-xs text-accent-blue/80 transition-colors group-hover:text-accent-blue`,children:i(`hook.templateUse`)})]},e.id)})})]})}function G(){let{t:e}=x(),[t,n]=(0,k.useState)(null),[r,i]=(0,k.useState)(!1),{rules:a,templates:o,stats:c,events:l,agents:u,loading:d,error:f,formOpen:p,loadAll:v,openForm:y,openFormFromTemplate:b,clearError:S}=A();(0,k.useEffect)(()=>{v()},[]);let w=(0,k.useCallback)(async()=>{let e=await D.hooks.export();if(e.success&&e.data){let t=new Blob([JSON.stringify(e.data,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`hooks-export.json`,r.click(),URL.revokeObjectURL(n)}},[]),E=(0,k.useCallback)(()=>{let e=document.createElement(`input`);e.type=`file`,e.accept=`.json`,e.onchange=async e=>{let t=e.target.files?.[0];if(!t)return;let r=await t.text();try{let e=JSON.parse(r);n({fileName:t.name,data:e})}catch(e){console.error(`Import failed:`,e)}},e.click()},[]),O=(0,k.useCallback)(async e=>{if(t){i(!0);try{(await D.hooks.import({...t.data,mergeMode:e})).success&&(n(null),v())}catch(e){console.error(`Import failed:`,e)}finally{i(!1)}}},[t,v]);return(0,j.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-dark-bg text-dark-text`,children:[(0,j.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-between gap-3 border-b border-dark-border px-6 py-4`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h2`,{className:`text-base font-semibold text-dark-text`,children:e(`hook.configTitle`)}),(0,j.jsx)(`p`,{className:`mt-0.5 text-xs text-dark-muted`,children:e(`hook.configDesc`)})]}),(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsx)(`button`,{onClick:v,title:e(`common.refresh`),className:`rounded-lg p-2 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,children:(0,j.jsx)(_,{size:16,className:d?`animate-spin`:``})}),(0,j.jsx)(C,{onClick:E,leftIcon:(0,j.jsx)(h,{size:14}),children:e(`hook.import`)}),(0,j.jsx)(C,{onClick:w,leftIcon:(0,j.jsx)(s,{size:14}),children:e(`hook.export`)}),(0,j.jsx)(C,{variant:`accent`,onClick:()=>y(),leftIcon:(0,j.jsx)(m,{size:14}),children:e(`hook.newRule`)})]})]}),(0,j.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-auto custom-scrollbar px-6 py-4`,children:[f&&(0,j.jsxs)(`div`,{className:`mb-3 flex items-center justify-between rounded-lg border border-accent-red/40 bg-accent-red/10 px-4 py-2 text-sm text-accent-red`,children:[(0,j.jsx)(`span`,{children:f}),(0,j.jsx)(`button`,{onClick:S,className:`text-accent-red/70 transition-colors hover:text-accent-red`,children:(0,j.jsx)(g,{size:16})})]}),(0,j.jsx)(B,{stats:c}),(0,j.jsx)(W,{templates:o,existingNames:a.map(e=>e.name),onPick:t=>b(t,e(`hook.template.${t.id}.desc`))}),(0,j.jsxs)(`section`,{className:`mt-4 min-w-0 rounded-xl border border-dark-border bg-dark-surface p-4`,children:[(0,j.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold text-dark-text`,children:e(`hook.ruleList`)}),(0,j.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`hook.ruleCount`,{n:a.length})})]}),d&&a.length===0?(0,j.jsx)(`div`,{className:`flex h-[520px] items-center justify-center text-dark-muted`,children:e(`common.loading`)}):(0,j.jsx)(`div`,{className:`min-h-[520px]`,children:(0,j.jsx)(P,{rules:a,onEdit:e=>y(e)})})]})]}),(0,j.jsx)(z,{isOpen:p,events:l,agents:u}),(0,j.jsx)(T,{isOpen:t!==null,onClose:()=>{r||n(null)},title:e(`hook.importTitle`),size:`sm`,children:(0,j.jsxs)(`div`,{className:`space-y-4`,children:[t&&(0,j.jsxs)(`p`,{className:`text-sm leading-relaxed text-dark-muted`,children:[(0,j.jsx)(`span`,{className:`text-dark-text`,children:t.fileName}),(0,j.jsx)(`br`,{}),e(`hook.importDesc`)]}),(0,j.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,j.jsx)(C,{variant:`ghost`,disabled:r,onClick:()=>n(null),"data-autofocus":!0,children:e(`common.cancel`)}),(0,j.jsx)(C,{variant:`danger`,disabled:r,onClick:()=>void O(`replace`),children:e(`hook.importReplace`)}),(0,j.jsx)(C,{variant:`accent`,loading:r,onClick:()=>void O(`merge`),children:e(`hook.importMerge`)})]})]})})]})}export{G as HookConfigView};