@opencodex/cli 1.0.39 → 1.0.41

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 (532) hide show
  1. package/LICENSE.md +12 -0
  2. package/README.md +1007 -28
  3. package/bin/stt/requirements.txt +20 -0
  4. package/bin/stt/stt_server.py +544 -0
  5. package/bin/tts/requirements.txt +21 -0
  6. package/bin/tts/tts_server.py +404 -0
  7. package/cli-wrapper.cjs +4 -0
  8. package/install.cjs +156 -2
  9. package/llms.txt +115 -0
  10. package/package.json +30 -11
  11. package/web/dist/assets/AssistantsView-dhdYVIy0.js +1 -0
  12. package/web/dist/assets/AutomationView-D1dU5ZV7.js +1 -0
  13. package/web/dist/assets/ChannelConfigView-CEPVZntU.js +8 -0
  14. package/web/dist/assets/ChartsView-DdN-beHW.js +1 -0
  15. package/web/dist/assets/ConnectorsView-CseCss9C.js +1 -0
  16. package/web/dist/assets/FileTreeView-Dnc3-gRF.js +1 -0
  17. package/web/dist/assets/HookConfigView-DA2h4HdJ.js +1 -0
  18. package/web/dist/assets/InputArea-DAgOOjOc.js +14 -0
  19. package/web/dist/assets/MemoryView-D6OUBi4-.js +1 -0
  20. package/web/dist/assets/MessageBubble-CCTRbIMZ.css +1 -0
  21. package/web/dist/assets/MessageBubble-CV16DZMG.js +453 -0
  22. package/web/dist/assets/ModelsView-BuqD9vWl.js +1 -0
  23. package/web/dist/assets/PluginsView-CIziDHFJ.js +2 -0
  24. package/web/dist/assets/ProjectsView-c6faWy32.js +1 -0
  25. package/web/dist/assets/SessionGrid-BZJHcklh.js +4 -0
  26. package/web/dist/assets/SessionGrid-Bk5CAXEn.css +1 -0
  27. package/web/dist/assets/SettingsModal-BqdGEGW-.js +4 -0
  28. package/web/dist/assets/SkillsView-CB6CKkmb.js +1 -0
  29. package/web/dist/assets/TemplatesTab-B8efVwVZ.js +1 -0
  30. package/web/dist/assets/ThreadsView-CDoM0aNb.js +2 -0
  31. package/web/dist/assets/ToolsView-BG-xsWsO.js +1 -0
  32. package/web/dist/assets/abnfDiagram-WEYOIA3C-DGUPHfRO.js +1 -0
  33. package/web/dist/assets/agentIconSet-Btsb_SC4.js +1 -0
  34. package/web/dist/assets/api-CCt9DRQm.js +1 -0
  35. package/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  36. package/web/dist/assets/architecture-WOLXFQ4H-BUERx_-B.js +1 -0
  37. package/web/dist/assets/architectureDiagram-ZHVYKT53-BPsQL7O5.js +36 -0
  38. package/web/dist/assets/array-BifhSqXX.js +1 -0
  39. package/web/dist/assets/blockDiagram-RJAE7QA3-pB7EXp6p.js +140 -0
  40. package/web/dist/assets/c4Diagram-XDPPPE54-BnPeCq_L.js +38 -0
  41. package/web/dist/assets/channel-CSrLW66f.js +1 -0
  42. package/web/dist/assets/channelMeta-BGQXQxgj.js +1 -0
  43. package/web/dist/assets/chunk-2E7WHVMD-xX282MrC.js +88 -0
  44. package/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  45. package/web/dist/assets/chunk-4EMNKR2T-BAQDLVqt.js +1 -0
  46. package/web/dist/assets/chunk-55XCU76K-BwAE3Eqq.js +1 -0
  47. package/web/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  48. package/web/dist/assets/chunk-7S6XSTFO-DwwaClMo.js +2 -0
  49. package/web/dist/assets/chunk-AQDTSKZB-DHG5Km_p.js +72 -0
  50. package/web/dist/assets/chunk-DSNLSHJZ-a6-B52h-.js +129 -0
  51. package/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  52. package/web/dist/assets/chunk-HAGFOTED-DZMcAj3o.js +62 -0
  53. package/web/dist/assets/chunk-HNE4Q36P-gl_4xI6B.js +1 -0
  54. package/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  55. package/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  56. package/web/dist/assets/chunk-NGNAAXSQ-Bw6tHVuc.js +136 -0
  57. package/web/dist/assets/chunk-NQOKRVIF-B8Q-YmhL.js +213 -0
  58. package/web/dist/assets/chunk-UHW7PFBP-isP5lYMB.js +1 -0
  59. package/web/dist/assets/chunk-VQ5W62QI-Bn68syIc.js +1 -0
  60. package/web/dist/assets/chunk-WQQL4CDK-CdZpmEYA.js +10 -0
  61. package/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  62. package/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  63. package/web/dist/assets/chunk-YZO67HFG-DX9GhJkR.js +1 -0
  64. package/web/dist/assets/chunk-ZAUX2LTX-Ki22UlYp.js +1 -0
  65. package/web/dist/assets/chunk-ZCHMQSOR-BVj0Zx6L.js +2 -0
  66. package/web/dist/assets/classDiagram-v2-4MYWR3UA-C7PV1veb.js +217 -0
  67. package/web/dist/assets/cn-rx4uumOJ.js +1 -0
  68. package/web/dist/assets/common-BHXgEvgk.js +192 -0
  69. package/web/dist/assets/cose-bilkent-JH36ORCC-DHFtpmij.js +1 -0
  70. package/web/dist/assets/cynefin-EF2NZ3EQ-1rI2T0cc.js +1 -0
  71. package/web/dist/assets/cynefinDiagram-WF24UDRP-C8O_v8xU.js +62 -0
  72. package/web/dist/assets/cytoscape.esm-BY277UBX.js +321 -0
  73. package/web/dist/assets/dagre-NK4GIZVX-BWGoHIUd.js +4 -0
  74. package/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  75. package/web/dist/assets/diagram-CBK3MWTC-kf9v35RN.js +24 -0
  76. package/web/dist/assets/diagram-I5XIIV2D-Ro-ig56_.js +24 -0
  77. package/web/dist/assets/diagram-ODIL2UCW-CtGga01G.js +30 -0
  78. package/web/dist/assets/diagram-PFBEJUXE-C14lcR-6.js +3 -0
  79. package/web/dist/assets/diagram-RJA3I4VV-BBbqaSKU.js +41 -0
  80. package/web/dist/assets/diagram-TYUNFSNR-BynvjQsr.js +200 -0
  81. package/web/dist/assets/dist-CumnGVmJ.js +1 -0
  82. package/web/dist/assets/ebnfDiagram-V4P3TTPT-BdqUCZnk.js +1 -0
  83. package/web/dist/assets/elk-QONTBCTQ-CYCP_9Jy.js +27 -0
  84. package/web/dist/assets/erDiagram-KYQIGQAA-C3L55l_F.js +99 -0
  85. package/web/dist/assets/eventmodeling-K75KTNOO-CTQdA_1v.js +1 -0
  86. package/web/dist/assets/flowDiagram-IUGLLWBU-COLKOzBg.js +1 -0
  87. package/web/dist/assets/ganttDiagram-R7GPNTJY-Be4Qk8Hx.js +292 -0
  88. package/web/dist/assets/gitGraph-VSP46ZUC-B59HXvj1.js +1 -0
  89. package/web/dist/assets/gitGraphDiagram-PDYL7XHY-C2A0VA6q.js +106 -0
  90. package/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  91. package/web/dist/assets/icons-BvYhTENi.js +1 -0
  92. package/web/dist/assets/index-BNI6CNsY.css +1 -0
  93. package/web/dist/assets/index-BX-d2OBW.js +130 -0
  94. package/web/dist/assets/info-OHQRW6UA-DWlkKvmi.js +1 -0
  95. package/web/dist/assets/infoDiagram-MVDRKAX5-B8e6dTjN.js +2 -0
  96. package/web/dist/assets/init-C-OQMol4.js +1 -0
  97. package/web/dist/assets/ishikawaDiagram-HPEHV2GE-udXPYi9H.js +70 -0
  98. package/web/dist/assets/journeyDiagram-BOSHW7O7-DTyDkf5d.js +139 -0
  99. package/web/dist/assets/kanban-definition-FNSA4HC5-BXgV20qe.js +89 -0
  100. package/web/dist/assets/katex-B940_AAO.js +257 -0
  101. package/web/dist/assets/line-DVabuQAu.js +1 -0
  102. package/web/dist/assets/linear-gLkGxN9m.js +1 -0
  103. package/web/dist/assets/markdown-DAQZeY5V.js +14 -0
  104. package/web/dist/assets/mermaid-parser.core-BrXnuEs7.js +7 -0
  105. package/web/dist/assets/mermaid.core-BGbz3k1k.js +44 -0
  106. package/web/dist/assets/mindmap-definition-6OY57UG3-DbtP-bmk.js +98 -0
  107. package/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  108. package/web/dist/assets/packet-JDAUHWVQ-iW8w3JF5.js +1 -0
  109. package/web/dist/assets/panels-DYiQiVWh.js +1 -0
  110. package/web/dist/assets/path-fybaL0A-.js +1 -0
  111. package/web/dist/assets/pegDiagram-ECIUJNBX-rBWJbaq4.js +1 -0
  112. package/web/dist/assets/pie-XZMESJXO-KHXEq-Yx.js +1 -0
  113. package/web/dist/assets/pieDiagram-GNMPY74T-DsW7yHm0.js +39 -0
  114. package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  115. package/web/dist/assets/profileChange-xrd7jkii.js +1 -0
  116. package/web/dist/assets/quadrantDiagram-D57K4MC3-DF_pwNhM.js +7 -0
  117. package/web/dist/assets/radar-ABXABTNO-BkAUJ_Zd.js +1 -0
  118. package/web/dist/assets/railroad-I3PHUGI6-BdnWRdGt.js +1 -0
  119. package/web/dist/assets/railroad-abnf-LNEFI6M7-C8K36-8b.js +1 -0
  120. package/web/dist/assets/railroad-ebnf-DWYD2UWJ-BlS25T3f.js +1 -0
  121. package/web/dist/assets/railroad-peg-JR7BVNR7-CBKGDi75.js +1 -0
  122. package/web/dist/assets/railroadDiagram-Y72NRBL7-DmrlMIvv.js +1 -0
  123. package/web/dist/assets/react-vendor-BlngCquv.js +19 -0
  124. package/web/dist/assets/requirementDiagram-EQYSW5RA-cvUq9H3I.js +84 -0
  125. package/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  126. package/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  127. package/web/dist/assets/sankeyDiagram-SY24JHO5-BdxXAbER.js +40 -0
  128. package/web/dist/assets/sequenceDiagram-BLEHNHQU-Druumi0k.js +169 -0
  129. package/web/dist/assets/settingsStore-RLUAWgIk.js +1 -0
  130. package/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  131. package/web/dist/assets/src-49LUQhkG.js +1 -0
  132. package/web/dist/assets/src-BWF7jMDv.js +1 -0
  133. package/web/dist/assets/state-_ZfNVAsd.js +1 -0
  134. package/web/dist/assets/stateDiagram-v2-A6IESKWZ-Jgh6qlrr.js +291 -0
  135. package/web/dist/assets/sttLanguages-aqoVC79g.js +2 -0
  136. package/web/dist/assets/swimlanes-B3ENRKFQ-4xKumvXQ.js +1 -0
  137. package/web/dist/assets/swimlanesDiagram-AYQRV4AK-bHcLKL3d.js +8 -0
  138. package/web/dist/assets/timeline-definition-JXYKGLGB-BYKhga9x.js +120 -0
  139. package/web/dist/assets/treeView-D4JQ5SDB-6-eTVUuH.js +1 -0
  140. package/web/dist/assets/treemap-SAJKECNS-Dxl8yCLE.js +1 -0
  141. package/web/dist/assets/ttsSettings-DHo3OsOq.js +15 -0
  142. package/web/dist/assets/types-JssxRFJn.js +1 -0
  143. package/web/dist/assets/useTranslation-BGmCDuQI.js +1 -0
  144. package/web/dist/assets/usecaseDiagram-WPOLBNNX-BaQ8nAv9.js +328 -0
  145. package/web/dist/assets/vennDiagram-Q3Y3IDCW-DkPvfmfT.js +34 -0
  146. package/web/dist/assets/wardley-7MLQ67FV-CZtI22aa.js +1 -0
  147. package/web/dist/assets/wardleyDiagram-IVAIDKWA-Dgi2OWQ4.js +78 -0
  148. package/web/dist/assets/websocket-C9e3h7VU.js +1 -0
  149. package/web/dist/assets/whatsNewStore-Bf_7lW8o.js +1 -0
  150. package/web/dist/assets/workspaceSemantics-RaIRer76.js +3 -0
  151. package/web/dist/assets/xychartDiagram-4URNHDU4-Ch96dep-.js +7 -0
  152. package/web/dist/favicon.svg +18 -39
  153. package/web/dist/icons/icon-1024.png +0 -0
  154. package/web/dist/icons/icon-180.png +0 -0
  155. package/web/dist/icons/icon-192.png +0 -0
  156. package/web/dist/icons/icon-512.png +0 -0
  157. package/web/dist/icons/icon-maskable-512.png +0 -0
  158. package/web/dist/index.html +46 -12
  159. package/web/dist/logo.svg +25 -39
  160. package/web/dist/manifest.webmanifest +2 -2
  161. package/web/dist/assets/AssistantsView-0aLB_cG6.js +0 -1
  162. package/web/dist/assets/AutomationView-CAMjPhJ2.js +0 -1
  163. package/web/dist/assets/ChannelConfigView-FcioeeYb.js +0 -8
  164. package/web/dist/assets/ConnectorsView-DERP7zAW.js +0 -1
  165. package/web/dist/assets/FileTreeView-hBtHBbAV.js +0 -11
  166. package/web/dist/assets/HookConfigView-NModtSB8.js +0 -1
  167. package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  168. package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  169. package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  170. package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  171. package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  172. package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  173. package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  174. package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  175. package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  176. package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  177. package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  178. package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  179. package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  180. package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  181. package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  182. package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  183. package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  184. package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  185. package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  186. package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  187. package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  188. package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  189. package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  190. package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  191. package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  192. package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  193. package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  194. package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  195. package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  196. package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  197. package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  198. package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  199. package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  200. package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  201. package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  202. package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  203. package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  204. package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  205. package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  206. package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  207. package/web/dist/assets/ModelsView-BPpO50C_.js +0 -1
  208. package/web/dist/assets/PluginsView-D0NE7zrt.js +0 -1
  209. package/web/dist/assets/ProjectsView-PIv7Gx4q.js +0 -1
  210. package/web/dist/assets/SessionGrid-BGpz0-op.css +0 -1
  211. package/web/dist/assets/SessionGrid-BsDL3lov.js +0 -47
  212. package/web/dist/assets/SettingsModal-DdebvEmv.js +0 -10
  213. package/web/dist/assets/SkillsView-BNoigImJ.js +0 -1
  214. package/web/dist/assets/TemplatesTab-D8Pa68fj.js +0 -1
  215. package/web/dist/assets/ToolsView-NY-yk5YX.js +0 -1
  216. package/web/dist/assets/WorkspaceDirPicker-C5knnArH.js +0 -6
  217. package/web/dist/assets/abap-BdImnpbu.js +0 -1
  218. package/web/dist/assets/actionscript-3-B3316cI-.js +0 -1
  219. package/web/dist/assets/ada-bCR0ucgS.js +0 -1
  220. package/web/dist/assets/ahk-CsyLZFj1.js +0 -1
  221. package/web/dist/assets/ahk2-8Zs4aa1G.js +0 -1
  222. package/web/dist/assets/andromeeda-C4gqWexZ.js +0 -1
  223. package/web/dist/assets/angular-html-DA-rfuFy.js +0 -1
  224. package/web/dist/assets/angular-ts-BrjP3tb8.js +0 -1
  225. package/web/dist/assets/apache-Pmp26Uib.js +0 -1
  226. package/web/dist/assets/apex-DhZFqWV2.js +0 -1
  227. package/web/dist/assets/apl-CORt7UWP.js +0 -1
  228. package/web/dist/assets/applescript-Co6uUVPk.js +0 -1
  229. package/web/dist/assets/ara-BRHolxvo.js +0 -1
  230. package/web/dist/assets/asciidoc-CSVQ5wI8.js +0 -1
  231. package/web/dist/assets/asm-D_Q5rh1f.js +0 -1
  232. package/web/dist/assets/astro-HNnZUWAn.js +0 -1
  233. package/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -1
  234. package/web/dist/assets/awk-DMzUqQB5.js +0 -1
  235. package/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -1
  236. package/web/dist/assets/ayu-light-BA47KaF1.js +0 -1
  237. package/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -1
  238. package/web/dist/assets/ballerina-BFfxhgS-.js +0 -1
  239. package/web/dist/assets/bat-CickPsom.js +0 -1
  240. package/web/dist/assets/beancount-k_qm7-4y.js +0 -1
  241. package/web/dist/assets/berry-uYugtg8r.js +0 -1
  242. package/web/dist/assets/bibtex-CHM0blh-.js +0 -1
  243. package/web/dist/assets/bicep-Bmn6On1c.js +0 -1
  244. package/web/dist/assets/bird2-Bx8U0n9b.js +0 -1
  245. package/web/dist/assets/blade-2xfisSek.js +0 -1
  246. package/web/dist/assets/bsl-DlhNcFeZ.js +0 -1
  247. package/web/dist/assets/c-BIGW1oBm.js +0 -1
  248. package/web/dist/assets/c3-Dp5svz6Z.js +0 -1
  249. package/web/dist/assets/cadence-Bv_4Rxtq.js +0 -1
  250. package/web/dist/assets/cairo-KRGpt6FW.js +0 -1
  251. package/web/dist/assets/catppuccin-frappe-CZL1YF0i.js +0 -1
  252. package/web/dist/assets/catppuccin-latte-DH-8KZSZ.js +0 -1
  253. package/web/dist/assets/catppuccin-macchiato-B7yYVSCf.js +0 -1
  254. package/web/dist/assets/catppuccin-mocha-Ct7hS0mc.js +0 -1
  255. package/web/dist/assets/chapel-DTp_pixX.js +0 -1
  256. package/web/dist/assets/clarity-Dn5IMItf.js +0 -1
  257. package/web/dist/assets/clojure-P80f7IUj.js +0 -1
  258. package/web/dist/assets/cmake-D1j8_8rp.js +0 -1
  259. package/web/dist/assets/cobol-nBiQ_Alo.js +0 -1
  260. package/web/dist/assets/codeowners-Bp6g37R7.js +0 -1
  261. package/web/dist/assets/codeql-DsOJ9woJ.js +0 -1
  262. package/web/dist/assets/coffee-Ch7k5sss.js +0 -1
  263. package/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -1
  264. package/web/dist/assets/coq-C7JzOVbR.js +0 -1
  265. package/web/dist/assets/cpp-BMRokrvK.js +0 -1
  266. package/web/dist/assets/crystal-DGywbUpC.js +0 -1
  267. package/web/dist/assets/csharp-DSvCPggb.js +0 -1
  268. package/web/dist/assets/css-CLj8gQPS.js +0 -1
  269. package/web/dist/assets/csv-fuZLfV_i.js +0 -1
  270. package/web/dist/assets/cue-D82EKSYY.js +0 -1
  271. package/web/dist/assets/cypher-COkxafJQ.js +0 -1
  272. package/web/dist/assets/d-85-TOEBH.js +0 -1
  273. package/web/dist/assets/dark-plus-C3mMm8J8.js +0 -1
  274. package/web/dist/assets/dart-bE4Kk8sk.js +0 -1
  275. package/web/dist/assets/dax-CEL-wOlO.js +0 -1
  276. package/web/dist/assets/desktop-BmXAJ9_W.js +0 -1
  277. package/web/dist/assets/diff-D97Zzqfu.js +0 -1
  278. package/web/dist/assets/docker-BcOcwvcX.js +0 -1
  279. package/web/dist/assets/dotenv-Da5cRb03.js +0 -1
  280. package/web/dist/assets/dracula-BzJJZx-M.js +0 -1
  281. package/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -1
  282. package/web/dist/assets/dream-maker-BtqSS_iP.js +0 -1
  283. package/web/dist/assets/edge-FbVlp4U3.js +0 -1
  284. package/web/dist/assets/elixir-CkH2-t6x.js +0 -1
  285. package/web/dist/assets/elm-DbKCFpqz.js +0 -1
  286. package/web/dist/assets/emacs-lisp-C_m_b--Z.js +0 -1
  287. package/web/dist/assets/erb-DXfck5VN.js +0 -1
  288. package/web/dist/assets/erlang-DsQrWhSR.js +0 -1
  289. package/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -1
  290. package/web/dist/assets/everforest-light-C8M2exoo.js +0 -1
  291. package/web/dist/assets/fennel-BYunw83y.js +0 -1
  292. package/web/dist/assets/fish-BvzEVeQv.js +0 -1
  293. package/web/dist/assets/fluent-C4IJs8-o.js +0 -1
  294. package/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  295. package/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
  296. package/web/dist/assets/fsharp-CXgrBDvD.js +0 -1
  297. package/web/dist/assets/gdresource-TyuKm33G.js +0 -1
  298. package/web/dist/assets/gdscript-DqcFQ5yU.js +0 -1
  299. package/web/dist/assets/gdshader-DkwncUOv.js +0 -1
  300. package/web/dist/assets/genie-D0YGMca9.js +0 -1
  301. package/web/dist/assets/gherkin-DyxjwDmM.js +0 -1
  302. package/web/dist/assets/git-commit-F4YmCXRG.js +0 -1
  303. package/web/dist/assets/git-rebase-r7XF79zn.js +0 -1
  304. package/web/dist/assets/github-dark-DHJKELXO.js +0 -1
  305. package/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
  306. package/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  307. package/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  308. package/web/dist/assets/github-light-DAi9KRSo.js +0 -1
  309. package/web/dist/assets/github-light-default-D7oLnXFd.js +0 -1
  310. package/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  311. package/web/dist/assets/gleam-BspZqrRM.js +0 -1
  312. package/web/dist/assets/glimmer-js-ByusRIyA.js +0 -1
  313. package/web/dist/assets/glimmer-ts-BfAWNZQY.js +0 -1
  314. package/web/dist/assets/glsl-DplSGwfg.js +0 -1
  315. package/web/dist/assets/gn-n2N0HUVH.js +0 -1
  316. package/web/dist/assets/gnuplot-DdkO51Og.js +0 -1
  317. package/web/dist/assets/go-C27-OAKa.js +0 -1
  318. package/web/dist/assets/graphql-ChdNCCLP.js +0 -1
  319. package/web/dist/assets/groovy-gcz8RCvz.js +0 -1
  320. package/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  321. package/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  322. package/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  323. package/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  324. package/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  325. package/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  326. package/web/dist/assets/hack-BWmVpMyf.js +0 -1
  327. package/web/dist/assets/haml-D5jkg6IW.js +0 -1
  328. package/web/dist/assets/handlebars-BpdQsYii.js +0 -1
  329. package/web/dist/assets/haskell-Df6bDoY_.js +0 -1
  330. package/web/dist/assets/haxe-CfZj7gIn.js +0 -1
  331. package/web/dist/assets/hcl-BWvSN4gD.js +0 -1
  332. package/web/dist/assets/hjson-D5-asLiD.js +0 -1
  333. package/web/dist/assets/hlsl-D3lLCCz7.js +0 -1
  334. package/web/dist/assets/horizon-BUw7H-hv.js +0 -1
  335. package/web/dist/assets/horizon-bright-CUuTKBJd.js +0 -1
  336. package/web/dist/assets/houston-DnULxvSX.js +0 -1
  337. package/web/dist/assets/html-derivative-DlHx6ybY.js +0 -1
  338. package/web/dist/assets/html-pp8916En.js +0 -1
  339. package/web/dist/assets/http-jrhK8wxY.js +0 -1
  340. package/web/dist/assets/hurl-irOxFIW8.js +0 -1
  341. package/web/dist/assets/hxml-2-FPmUDs.js +0 -1
  342. package/web/dist/assets/hy-DFXneXwc.js +0 -1
  343. package/web/dist/assets/icons-BxNxyk-c.js +0 -804
  344. package/web/dist/assets/imba-DGztddWO.js +0 -1
  345. package/web/dist/assets/index-DaiVo1RY.css +0 -1
  346. package/web/dist/assets/index-RB5ffy32.js +0 -620
  347. package/web/dist/assets/ini-BEwlwnbL.js +0 -1
  348. package/web/dist/assets/java-CylS5w8V.js +0 -1
  349. package/web/dist/assets/javascript-wDzz0qaB.js +0 -1
  350. package/web/dist/assets/jinja-f2NsQr07.js +0 -1
  351. package/web/dist/assets/jison-wvAkD_A8.js +0 -1
  352. package/web/dist/assets/json-Cp-IABpG.js +0 -1
  353. package/web/dist/assets/json5-C9tS-k6U.js +0 -1
  354. package/web/dist/assets/jsonc-Des-eS-w.js +0 -1
  355. package/web/dist/assets/jsonl-DcaNXYhu.js +0 -1
  356. package/web/dist/assets/jsonnet-DFQXde-d.js +0 -1
  357. package/web/dist/assets/jssm-C2t-YnRu.js +0 -1
  358. package/web/dist/assets/jsx-g9-lgVsj.js +0 -1
  359. package/web/dist/assets/julia-5Bft2YPA.js +0 -1
  360. package/web/dist/assets/just-Cwhn7H3k.js +0 -1
  361. package/web/dist/assets/kanagawa-dragon-BuwD2xS4.js +0 -1
  362. package/web/dist/assets/kanagawa-lotus-C3DzagqV.js +0 -1
  363. package/web/dist/assets/kanagawa-wave-DFGoQZhC.js +0 -1
  364. package/web/dist/assets/kdl-DV7GczEv.js +0 -1
  365. package/web/dist/assets/kotlin-BdnUsdx6.js +0 -1
  366. package/web/dist/assets/kusto-wEQ09or8.js +0 -1
  367. package/web/dist/assets/laserwave-DUszq2jm.js +0 -1
  368. package/web/dist/assets/latex-D5pSuvFb.js +0 -1
  369. package/web/dist/assets/lean-BZvkOJ9d.js +0 -1
  370. package/web/dist/assets/less-B1dDrJ26.js +0 -1
  371. package/web/dist/assets/light-plus-B7mTdjB0.js +0 -1
  372. package/web/dist/assets/liquid-C0sCDyMI.js +0 -1
  373. package/web/dist/assets/llvm-BZoOZj88.js +0 -1
  374. package/web/dist/assets/log-2UxHyX5q.js +0 -1
  375. package/web/dist/assets/logo-BtOb2qkB.js +0 -1
  376. package/web/dist/assets/lua-BaeVxFsk.js +0 -1
  377. package/web/dist/assets/luau-BnpPk5vE.js +0 -1
  378. package/web/dist/assets/make-CHLpvVh8.js +0 -1
  379. package/web/dist/assets/markdown-B2L4Mq-x.js +0 -30
  380. package/web/dist/assets/markdown-Cvjx9yec.js +0 -1
  381. package/web/dist/assets/marko-DjSrsDqO.js +0 -1
  382. package/web/dist/assets/material-theme-D5KoaKCx.js +0 -1
  383. package/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
  384. package/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  385. package/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -1
  386. package/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  387. package/web/dist/assets/matlab-D7o27uSR.js +0 -1
  388. package/web/dist/assets/mdc-D1_yUvq7.js +0 -1
  389. package/web/dist/assets/mdx-Cmh6b_Ma.js +0 -1
  390. package/web/dist/assets/mermaid-CQcHuHx7.js +0 -1
  391. package/web/dist/assets/min-dark-CafNBF8u.js +0 -1
  392. package/web/dist/assets/min-light-CTRr51gU.js +0 -1
  393. package/web/dist/assets/mipsasm-CKIfxQSi.js +0 -1
  394. package/web/dist/assets/mojo-DJz3ZmWd.js +0 -1
  395. package/web/dist/assets/monokai-BRVnQi9A.js +0 -1
  396. package/web/dist/assets/moonbit-CHtswR0a.js +0 -1
  397. package/web/dist/assets/move-el3G9tDJ.js +0 -1
  398. package/web/dist/assets/narrat-DRg8JJMk.js +0 -1
  399. package/web/dist/assets/nextflow-C-mBbutL.js +0 -1
  400. package/web/dist/assets/nextflow-groovy-vE_lwT2v.js +0 -1
  401. package/web/dist/assets/nginx-BpAMiNFr.js +0 -1
  402. package/web/dist/assets/night-owl-C39BiMTA.js +0 -1
  403. package/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -1
  404. package/web/dist/assets/nim-BIad80T-.js +0 -1
  405. package/web/dist/assets/nix-CwoSXNpI.js +0 -1
  406. package/web/dist/assets/nord-Ddv68eIx.js +0 -1
  407. package/web/dist/assets/nsis-BlV79W_Q.js +0 -1
  408. package/web/dist/assets/nushell-D3jzshHO.js +0 -1
  409. package/web/dist/assets/objective-c-DXmwc3jG.js +0 -1
  410. package/web/dist/assets/objective-cpp-CLxacb5B.js +0 -1
  411. package/web/dist/assets/ocaml-C0hk2d4L.js +0 -1
  412. package/web/dist/assets/odin-BBf5iR-q.js +0 -1
  413. package/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  414. package/web/dist/assets/one-light-C3Wv6jpd.js +0 -1
  415. package/web/dist/assets/openscad-C4EeE6gA.js +0 -1
  416. package/web/dist/assets/org-DM6o9KBp.js +0 -1
  417. package/web/dist/assets/panels-P_I7Q72_.js +0 -1
  418. package/web/dist/assets/pascal-D93ZcfNL.js +0 -1
  419. package/web/dist/assets/perl-B9cMNwum.js +0 -1
  420. package/web/dist/assets/php-Csjmro_R.js +0 -1
  421. package/web/dist/assets/pkl-u5AG7uiY.js +0 -1
  422. package/web/dist/assets/plastic-3e1v2bzS.js +0 -1
  423. package/web/dist/assets/plsql-ChMvpjG-.js +0 -1
  424. package/web/dist/assets/po-BTJTHyun.js +0 -1
  425. package/web/dist/assets/poimandres-CS3Unz2-.js +0 -1
  426. package/web/dist/assets/polar-C0HS_06l.js +0 -1
  427. package/web/dist/assets/postcss-CXtECtnM.js +0 -1
  428. package/web/dist/assets/powerquery-CEu0bR-o.js +0 -1
  429. package/web/dist/assets/powershell-BmBUJMz7.js +0 -1
  430. package/web/dist/assets/prisma-Vru482bI.js +0 -1
  431. package/web/dist/assets/profileChange-C7Jg9C61.js +0 -1
  432. package/web/dist/assets/prolog-CbFg5uaA.js +0 -1
  433. package/web/dist/assets/proto-C7zT0LnQ.js +0 -1
  434. package/web/dist/assets/pug-DKIMFp6K.js +0 -1
  435. package/web/dist/assets/puppet-BMWR74SV.js +0 -1
  436. package/web/dist/assets/purescript-CklMAg4u.js +0 -1
  437. package/web/dist/assets/python-B6aJPvgy.js +0 -1
  438. package/web/dist/assets/qml-3beO22l8.js +0 -1
  439. package/web/dist/assets/qmldir-C8lEn-DE.js +0 -1
  440. package/web/dist/assets/qss-IeuSbFQv.js +0 -1
  441. package/web/dist/assets/r-Cf5RLm7j.js +0 -1
  442. package/web/dist/assets/racket-BqYA7rlc.js +0 -1
  443. package/web/dist/assets/raku-DXvB9xmW.js +0 -1
  444. package/web/dist/assets/razor-BjBPvh-w.js +0 -1
  445. package/web/dist/assets/rbs-CpoqiR4B.js +0 -1
  446. package/web/dist/assets/react-vendor-B2V_5iSS.js +0 -9
  447. package/web/dist/assets/red-hvxz__6c.js +0 -1
  448. package/web/dist/assets/reg-C-SQnVFl.js +0 -1
  449. package/web/dist/assets/regexp-CDVJQ6XC.js +0 -1
  450. package/web/dist/assets/rel-C3B-1QV4.js +0 -1
  451. package/web/dist/assets/riscv-BM1_JUlF.js +0 -1
  452. package/web/dist/assets/ron-D8l8udqQ.js +0 -1
  453. package/web/dist/assets/rose-pine-5qJOZa0Y.js +0 -1
  454. package/web/dist/assets/rose-pine-dawn-zx0QlTCp.js +0 -1
  455. package/web/dist/assets/rose-pine-moon-C9pEdX9L.js +0 -1
  456. package/web/dist/assets/rosmsg-BJDFO7_C.js +0 -1
  457. package/web/dist/assets/rst-bs7f0vWN.js +0 -1
  458. package/web/dist/assets/ruby-C0TQ7zu5.js +0 -1
  459. package/web/dist/assets/rust-B1yitclQ.js +0 -1
  460. package/web/dist/assets/sas-DEy46yEz.js +0 -1
  461. package/web/dist/assets/sass-Cj5Yp3dK.js +0 -1
  462. package/web/dist/assets/scala-CqE71os6.js +0 -1
  463. package/web/dist/assets/scheme-C98Dy4si.js +0 -1
  464. package/web/dist/assets/scss-D5BDwBP9.js +0 -1
  465. package/web/dist/assets/sdbl-DVxCFoDh.js +0 -1
  466. package/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
  467. package/web/dist/assets/shellscript-Yzrsuije.js +0 -1
  468. package/web/dist/assets/shellsession-BADoaaVG.js +0 -1
  469. package/web/dist/assets/slack-dark-BthQWCQV.js +0 -1
  470. package/web/dist/assets/slack-ochin-DqwNpetd.js +0 -1
  471. package/web/dist/assets/smalltalk-BOQMe2GC.js +0 -1
  472. package/web/dist/assets/smithy-cds9vsN8.js +0 -1
  473. package/web/dist/assets/snazzy-light-Bw305WKR.js +0 -1
  474. package/web/dist/assets/solarized-dark-CpvCGNkr.js +0 -1
  475. package/web/dist/assets/solarized-light-Dlz6yCKv.js +0 -1
  476. package/web/dist/assets/solidity-DijEV5ha.js +0 -1
  477. package/web/dist/assets/soy-8wufbnw4.js +0 -1
  478. package/web/dist/assets/sparql-rVzFXLq3.js +0 -1
  479. package/web/dist/assets/splunk-BtCnVYZw.js +0 -1
  480. package/web/dist/assets/sql-CRqJ_cUM.js +0 -1
  481. package/web/dist/assets/ssh-config-_ykCGR6B.js +0 -1
  482. package/web/dist/assets/stata-DI20mbqo.js +0 -1
  483. package/web/dist/assets/state-0T92JV0u.js +0 -17
  484. package/web/dist/assets/stylus-BEDo0Tqx.js +0 -1
  485. package/web/dist/assets/surrealql-Cjom0U5J.js +0 -1
  486. package/web/dist/assets/svelte-Cy7k_4gC.js +0 -1
  487. package/web/dist/assets/swift-C2oV4EkX.js +0 -1
  488. package/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -1
  489. package/web/dist/assets/system-verilog-0hqHdDBg.js +0 -1
  490. package/web/dist/assets/systemd-4A_iFExJ.js +0 -1
  491. package/web/dist/assets/talonscript-CkByrt1z.js +0 -1
  492. package/web/dist/assets/tasl-QIJgUcNo.js +0 -1
  493. package/web/dist/assets/tcl-dwOrl1Do.js +0 -1
  494. package/web/dist/assets/templ-DhtptRzy.js +0 -1
  495. package/web/dist/assets/terraform-BETggiCN.js +0 -1
  496. package/web/dist/assets/tex-D96PA37w.js +0 -1
  497. package/web/dist/assets/tokyo-night-hegEt444.js +0 -1
  498. package/web/dist/assets/toml-vGWfd6FD.js +0 -1
  499. package/web/dist/assets/ts-tags-D351s5mN.js +0 -1
  500. package/web/dist/assets/tsv-B_m7g4N7.js +0 -1
  501. package/web/dist/assets/tsx-COt5Ahok.js +0 -1
  502. package/web/dist/assets/turtle-BsS91CYL.js +0 -1
  503. package/web/dist/assets/twig-27uCiNez.js +0 -1
  504. package/web/dist/assets/typescript-BPQ3VLAy.js +0 -1
  505. package/web/dist/assets/typespec-CAFt9gP4.js +0 -1
  506. package/web/dist/assets/typst-BUadGCkm.js +0 -1
  507. package/web/dist/assets/v-BGw2Nkan.js +0 -1
  508. package/web/dist/assets/vala-CsfeWuGM.js +0 -1
  509. package/web/dist/assets/vb-Cu-pLBUe.js +0 -1
  510. package/web/dist/assets/verilog-nZwndyjY.js +0 -1
  511. package/web/dist/assets/vesper-DRje8inN.js +0 -1
  512. package/web/dist/assets/vhdl-CeAyd5Ju.js +0 -1
  513. package/web/dist/assets/viml-CJc9bBzg.js +0 -1
  514. package/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
  515. package/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
  516. package/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  517. package/web/dist/assets/vue-BqiEGhQt.js +0 -1
  518. package/web/dist/assets/vue-html-AaS7Mt5G.js +0 -1
  519. package/web/dist/assets/vue-vine-BoDAl6tE.js +0 -1
  520. package/web/dist/assets/vyper-CDx5xZoG.js +0 -1
  521. package/web/dist/assets/wasm-CG6Dc4jp.js +0 -1
  522. package/web/dist/assets/wasm-MzD3tlZU.js +0 -1
  523. package/web/dist/assets/wenyan-BV7otONQ.js +0 -1
  524. package/web/dist/assets/wgsl-Dx-B1_4e.js +0 -1
  525. package/web/dist/assets/wikitext-BhOHFoWU.js +0 -1
  526. package/web/dist/assets/wit-5i3qLPDT.js +0 -1
  527. package/web/dist/assets/wolfram-lXgVvXCa.js +0 -1
  528. package/web/dist/assets/xml-sdJ4AIDG.js +0 -1
  529. package/web/dist/assets/xsl-CtQFsRM5.js +0 -1
  530. package/web/dist/assets/yaml-Buea-lGh.js +0 -1
  531. package/web/dist/assets/zenscript-DVFEvuxE.js +0 -1
  532. package/web/dist/assets/zig-VOosw3JB.js +0 -1
package/llms.txt ADDED
@@ -0,0 +1,115 @@
1
+ # DeepSeekCode
2
+
3
+ > DeepSeekCode is a local-first AI coding agent: one npm package starts a runtime on your machine
4
+ > that serves a terminal UI, a web UI and an HTTP + WebSocket API, driven by any OpenAI-compatible
5
+ > model.
6
+ >
7
+ > It is built around a permission/approval layer on every tool call, a strictly read-only plan
8
+ > mode, and runtime-switchable act / goal / chat modes.
9
+ > Official distribution: the npm package `@deepseekcode/cli` (commands `dscode` and `deepseekcode`).
10
+ > Project page: https://deepseekcode.github.io/deepseekwork/
11
+
12
+ This file follows the llms.txt convention: a short, structured, machine-readable summary for AI
13
+ assistants and LLM crawlers. Everything below is verifiable from the deployed package.
14
+ Content reflects version 1.0.40 (2026-10-15).
15
+
16
+ ## Category and identity
17
+
18
+ - Product name: DeepSeekCode
19
+ - Category: AI coding agent (developer tool, CLI-first, local runtime)
20
+ - npm package: `@deepseekcode/cli` (official scope; the same build is also published under
21
+ additional brand scopes — the official and canonical one is `@deepseekcode`)
22
+ - Commands installed: `dscode`, `deepseekcode`
23
+ - Language: TypeScript; runs on Node.js >= 18, shipped as prebuilt native binaries
24
+ - License: proprietary, closed source (see `LICENSE.md` in the package)
25
+ - Independent project: DeepSeekCode is not affiliated with, sponsored by, or endorsed by DeepSeek
26
+ (深度求索) or any other model vendor. The name refers to a client runtime, not to a model family.
27
+
28
+ ## Official distribution
29
+
30
+ - Project page (canonical human-readable entry point):
31
+ https://deepseekcode.github.io/deepseekwork/
32
+ - npm page: https://www.npmjs.com/package/@deepseekcode/cli
33
+ - Package metadata (registry JSON): https://registry.npmjs.org/@deepseekcode/cli/latest
34
+ - README (plain markdown, no JavaScript needed): https://unpkg.com/@deepseekcode/cli/README.md
35
+ - This file, served from the published package: https://unpkg.com/@deepseekcode/cli/llms.txt
36
+ - Platforms with prebuilt binaries: Windows x64 / ARM64, macOS Intel / Apple Silicon,
37
+ Linux glibc and musl on x64 / ARM64
38
+
39
+ ## Install and first run
40
+
41
+ ```bash
42
+ npm install -g @deepseekcode/cli
43
+ dscode
44
+ ```
45
+
46
+ Requires Node.js >= 18. The first run walks through provider configuration; the web UI is served at
47
+ `http://localhost:8080` (provider setup at `http://localhost:8080/#models`).
48
+
49
+ Non-interactive use (scripts, CI): `dscode exec "<task>"` emits JSONL.
50
+
51
+ ## What it does
52
+
53
+ - Interactive terminal UI (TUI), a web UI, and an HTTP + WebSocket API from one local process.
54
+ - ~70 built-in tools: files, search, git, LSP, code intelligence, browser, sub-agents, plans,
55
+ memory, MCP.
56
+ - Permission layer on every tool call: scopes `system > project > user > local > session`
57
+ (narrowest wins), `auto` / `ask` / `deny` policies, an optional AI classifier for risky calls,
58
+ and timeout-means-deny.
59
+ - Read-only plan mode (`/plan`): a checklist you approve before anything executes.
60
+ - Runtime-switchable modes: `act` · `auto-act` · `goal` · `auto-goal` · `chat` (`Shift+Tab`).
61
+ - Extensible: MCP servers (`/mcp`), skills (`/skills`), plugins, sub-agents, workflows, and IM
62
+ channels (LINE, Slack, WhatsApp, QQ, DingTalk, Feishu) with inbound signature verification.
63
+ - Sandboxed shell tools: bwrap on Linux, SBPL on macOS, MXC / Docker on Windows; fails closed when
64
+ no policy is available.
65
+ - Themes: dark, light, nord, dracula, monokai, one-dark, tokyo-night.
66
+
67
+ ## Clarifications AI assistants commonly need
68
+
69
+ - DeepSeekCode is an agent runtime (a program you run), **not** a model. It has no model of its
70
+ own: it drives whichever OpenAI-compatible endpoint the user configures — DeepSeek models among
71
+ them, but not exclusively.
72
+ - It is **not** a hosted service. The runtime, the UI, the file operations and the shell tools run
73
+ locally; prompts and tool results go to the configured model endpoint and nowhere else.
74
+ - "OpenAI-compatible" here means the API shape, not a vendor relationship: any server speaking that
75
+ API works, including a local one.
76
+ - DeepSeekCode is an independent project. It is not made, sponsored, endorsed or distributed by
77
+ DeepSeek (深度求索) or any other model vendor; installing it does not imply any affiliation.
78
+ - License: proprietary and closed source. It is not open source, and copying, modifying,
79
+ distributing or selling it requires prior written permission (see `LICENSE.md`).
80
+ - It is not a hosted or managed service: there is no subscription to buy, and model usage is billed
81
+ by whichever provider the user configures, not by this project.
82
+
83
+ ## Screenshots and demo
84
+
85
+ - A 40-second demo video (1920x1080, H.264 + VP9) and the stills used in the README ship in the
86
+ repository at `docs/promo/media/` (`deepseekcode-promo.mp4`, `deepseekcode-promo.webm`,
87
+ `poster.png`, plus per-screen stills).
88
+ - The package README embeds an animated GIF of a real agent turn (`media/demo.gif` inside the
89
+ package): tool calls, a diff, and a written summary.
90
+ - The footage is recorded from the real UI with a scripted local model endpoint, so it shows real
91
+ tool execution rather than a mock-up.
92
+
93
+ ## Languages
94
+
95
+ - The package README carries a full English main section plus condensed sections in 16 further
96
+ languages, each with a stable anchor: zh-CN (Simplified Chinese), zh-TW (Traditional Chinese),
97
+ ja (Japanese), ko (Korean), es (Spanish), pt (Portuguese), fr (French), it (Italian), de (German),
98
+ ru (Russian), tr (Turkish), ar (Arabic), hi (Hindi), id (Indonesian), vi (Vietnamese) and
99
+ th (Thai).
100
+ - Every language section repeats the same canonical definition, install line, feature list and FAQ,
101
+ so a claim about this package can be cited from the reader's own language.
102
+ - The application UI itself is localized into 13 locales: en, zh-CN, zh-TW, ja, ko, de, fr, es,
103
+ pt-BR, ru, it, ar, id. Of these, zh-CN and en are complete; the other eleven translate the
104
+ desktop-download entry, the language setting, the built-in template texts and the hook template
105
+ texts (180 keys each) and fall back to English elsewhere. Arabic is included, but whole-document
106
+ right-to-left mirroring is deliberately not switched on yet: the stylesheet still uses physical
107
+ directional utilities, so `dir=rtl` would leave spacing on the wrong side.
108
+ - Most interactive commands have Chinese aliases, and replies can be pinned to a language
109
+ independently of the UI locale.
110
+
111
+ ## Release notes
112
+
113
+ - Latest release notes are embedded in the README (What's New section), generated from the same
114
+ source as the in-app "What's New".
115
+ - Version history: the version list on the npm page.
package/package.json CHANGED
@@ -1,7 +1,24 @@
1
1
  {
2
2
  "name": "@opencodex/cli",
3
- "version": "1.0.39",
4
- "description": "DeepSeekCode TypeScript CLI",
3
+ "version": "1.0.41",
4
+ "description": "DeepSeekCode — local-first AI coding agent for your terminal: one local runtime with a TUI, a web UI and an API, a permission/approval layer, read-only plan mode, and any OpenAI-compatible model.",
5
+ "keywords": [
6
+ "deepseekcode",
7
+ "dscode",
8
+ "ai-coding-agent",
9
+ "coding-agent",
10
+ "ai-agent",
11
+ "ai-cli",
12
+ "terminal",
13
+ "tui",
14
+ "local-first",
15
+ "openai-compatible",
16
+ "mcp",
17
+ "plan-mode",
18
+ "code-review",
19
+ "developer-tools",
20
+ "typescript"
21
+ ],
5
22
  "type": "module",
6
23
  "license": "SEE LICENSE IN LICENSE.md",
7
24
  "bin": {
@@ -19,14 +36,14 @@
19
36
  "xterm": "5.3.0"
20
37
  },
21
38
  "optionalDependencies": {
22
- "@opencodex/cli-darwin-arm64": "1.0.39",
23
- "@opencodex/cli-darwin-x64": "1.0.39",
24
- "@opencodex/cli-linux-x64": "1.0.39",
25
- "@opencodex/cli-linux-arm64": "1.0.39",
26
- "@opencodex/cli-linux-x64-musl": "1.0.39",
27
- "@opencodex/cli-linux-arm64-musl": "1.0.39",
28
- "@opencodex/cli-win32-x64": "1.0.39",
29
- "@opencodex/cli-win32-arm64": "1.0.39"
39
+ "@opencodex/cli-darwin-arm64": "1.0.41",
40
+ "@opencodex/cli-darwin-x64": "1.0.41",
41
+ "@opencodex/cli-linux-x64": "1.0.41",
42
+ "@opencodex/cli-linux-arm64": "1.0.41",
43
+ "@opencodex/cli-linux-x64-musl": "1.0.41",
44
+ "@opencodex/cli-linux-arm64-musl": "1.0.41",
45
+ "@opencodex/cli-win32-x64": "1.0.41",
46
+ "@opencodex/cli-win32-arm64": "1.0.41"
30
47
  },
31
48
  "files": [
32
49
  "bin/",
@@ -34,6 +51,8 @@
34
51
  "cli-wrapper.cjs",
35
52
  "web/dist/",
36
53
  "scripts/figure/",
37
- "README.md"
54
+ "README.md",
55
+ "LICENSE.md",
56
+ "llms.txt"
38
57
  ]
39
58
  }
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,At as n,J as r,L as i,Ur as a,d as o,ft as s,g as c,kr as l,n as u,ot as d,u as f,xr as p,yt as m,z as h}from"./icons-BvYhTENi.js";import{t as g}from"./useTranslation-BGmCDuQI.js";import{t as _}from"./api-CCt9DRQm.js";import{I as v}from"./markdown-DAQZeY5V.js";import{A as y,f as b,r as x}from"./common-BHXgEvgk.js";import{n as S,t as C}from"./channelMeta-BGQXQxgj.js";import{i as w}from"./index-BX-d2OBW.js";var T=e(a(),1),E=v(),D=(0,T.memo)(function({selectedSessionId:e,onSelectionChange:n,onOpenSession:r,onNavigate:i,onCollapse:a,onDeleted:o}){let{t:s}=g(),[c,u]=(0,T.useState)([]),[f,p]=(0,T.useState)(!0),[h,v]=(0,T.useState)(null),[y,x]=(0,T.useState)(null),[S,C]=(0,T.useState)(null),[w,D]=(0,T.useState)(!1),[O,A]=(0,T.useState)(null),[j,M]=(0,T.useState)(null),N=(0,T.useCallback)(async()=>{try{let e=await _.assistants.list();e.success&&Array.isArray(e.data)?(u(e.data),v(null)):v(e.error||s(`assistants.loadFailed`))}catch(e){v(e instanceof Error?e.message:String(e))}finally{p(!1)}},[s]);(0,T.useEffect)(()=>{N();let e=window.setInterval(()=>{N()},8e3);return()=>window.clearInterval(e)},[N]);let P=(0,T.useCallback)(async(e,t)=>{(await _.assistants.update(e,t)).success&&N()},[N]),F=(0,T.useCallback)(async()=>{D(!0),M(null);try{let e=await _.assistants.create({title:s(`assistants.newAssistantTitle`)});e.success&&e.data?(await N(),n(e.data),C(e.data.sessionId)):M(e.error||s(`assistants.createFailed`))}catch(e){M(e instanceof Error?e.message:String(e))}finally{D(!1)}},[N,n,s]),I=(0,T.useCallback)(async(e,t)=>{M(null);try{let n=await _.assistants.rename(e,t);n.success?(C(null),await N()):M(n.error||s(`assistants.renameFailed`))}catch(e){M(e instanceof Error?e.message:String(e))}},[N,s]),L=(0,T.useCallback)(async(t,n)=>{if(typeof window>`u`||typeof window.confirm!=`function`||window.confirm(s(`assistants.deleteConfirm`,{title:n}))){M(null),A(t);try{let n=await _.assistants.remove(t);n.success?(S===t&&C(null),e===t&&o?.(t),await N()):M(n.error||s(`assistants.deleteFailed`))}catch(e){M(e instanceof Error?e.message:String(e))}finally{A(null)}}},[S,e,o,N,s]);return(0,T.useEffect)(()=>{if(!e)return;let t=c.find(t=>t.sessionId===e);t&&n(t)},[c,e,n]),(0,E.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between border-b border-dark-border px-4 py-2.5`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(l,{size:16,className:`text-accent-blue`,"aria-hidden":`true`}),(0,E.jsx)(`h2`,{className:`text-sm font-semibold text-dark-text`,children:s(`assistants.title`)}),!f&&(0,E.jsx)(`span`,{className:`rounded-full bg-dark-hover px-1.5 py-0.5 text-badge text-dark-muted`,children:c.length})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:()=>void F(),disabled:w,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-accent-blue hover:bg-dark-hover disabled:opacity-50`,title:s(`assistants.newAssistantHint`),"data-testid":`assistants-create`,children:[(0,E.jsx)(d,{size:12,"aria-hidden":`true`}),s(`assistants.newAssistant`)]}),(0,E.jsxs)(`button`,{type:`button`,onClick:()=>void N(),className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:s(`common.refresh`),children:[(0,E.jsx)(t,{size:12,className:f?`animate-spin`:``,"aria-hidden":`true`}),s(`common.refresh`)]}),a&&(0,E.jsx)(`button`,{type:`button`,onClick:a,className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:s(`assistants.collapseList`),"aria-label":s(`assistants.collapseList`),"aria-expanded":!0,"data-testid":`assistants-list-collapse`,children:(0,E.jsx)(m,{size:13,"aria-hidden":`true`})})]})]}),j&&(0,E.jsx)(`div`,{className:`border-b border-dark-border px-4 py-1.5 text-meta text-accent-red`,role:`alert`,children:j}),(0,E.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto p-2`,children:f&&c.length===0?(0,E.jsx)(`div`,{className:`py-2`,role:`status`,"aria-label":s(`assistants.loading`),children:(0,E.jsx)(b,{count:4})}):h&&c.length===0?(0,E.jsx)(`div`,{className:`py-8 text-center text-xs text-accent-red`,children:h}):c.length===0?(0,E.jsxs)(`div`,{className:`py-10 text-center text-xs text-dark-muted`,children:[(0,E.jsx)(l,{size:24,className:`mx-auto mb-2 text-dark-muted`,"aria-hidden":`true`}),(0,E.jsx)(`p`,{children:s(`assistants.empty`)}),(0,E.jsx)(`p`,{className:`mt-1 text-meta`,children:s(`assistants.emptyHint`)}),(0,E.jsx)(`button`,{type:`button`,onClick:()=>i(`channels`),className:`mt-3 rounded border border-dark-border px-2.5 py-1 text-meta text-dark-text hover:bg-dark-hover`,children:s(`assistants.goChannels`)})]}):(0,E.jsx)(`div`,{className:`flex flex-col gap-2`,children:c.map(t=>(0,E.jsx)(k,{assistant:t,selected:e===t.sessionId,onSelect:()=>n(t),expanded:y===t.sessionId,onToggleExpand:()=>x(y===t.sessionId?null:t.sessionId),onOpen:()=>r(t.sessionId,t.title),onUpdate:e=>void P(t.sessionId,e),editing:S===t.sessionId,onStartRename:()=>C(t.sessionId),onCancelRename:()=>C(null),onRename:e=>void I(t.sessionId,e),deleting:O===t.sessionId,onDelete:()=>void L(t.sessionId,t.title)},t.sessionId))})})]})});function O(e){if(e===`running`)return`running`;if(e===`paused`)return`waiting`;if(e===`error`)return`failed`}var k=(0,T.memo)(function({assistant:e,selected:t,onSelect:r,expanded:a,onToggleExpand:u,onOpen:d,onUpdate:p,editing:m,onStartRename:_,onCancelRename:v,onRename:y,deleting:b,onDelete:T}){let{t:D}=g(),k=e.channel?.peerKind===`group`,N=e.kind===`home`;return(0,E.jsxs)(`div`,{className:`rounded-lg border bg-dark-surface transition-colors ${t?`border-accent-blue/60 ring-1 ring-accent-blue/30`:`border-dark-border`}`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:r,"aria-current":t?`true`:void 0,className:`flex w-full items-center gap-2 rounded-t-lg px-3 py-2 text-start focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60 ${t?`bg-accent-blue/5`:`hover:bg-dark-hover/40`}`,children:[(0,E.jsx)(x,{sessionId:e.sessionId,status:O(e.status),size:40}),(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.channel?(0,E.jsx)(`span`,{className:`text-base leading-none`,"aria-hidden":`true`,children:C(e.channel.type)}):(0,E.jsx)(l,{size:14,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,E.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-dark-text`,title:e.title,children:e.title}),(0,E.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full ${w(e.status)}`,title:D(`assistants.status.${e.status}`,{defaultValue:e.status})}),e.channel&&(k?(0,E.jsx)(f,{size:11,className:`shrink-0 text-dark-muted`,"aria-label":D(`assistants.group`)}):(0,E.jsx)(o,{size:11,className:`shrink-0 text-dark-muted`,"aria-label":D(`assistants.dm`)}))]}),(0,E.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1.5 text-badge text-dark-muted`,children:[(0,E.jsx)(`span`,{className:`shrink-0`,children:e.channel?S(e.channel.type):D(N?`assistants.homeLabel`:`assistants.localLabel`)}),(0,E.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.channel?.peerId,children:e.channel?e.channel.peerId:D(N?`assistants.homeHint`:`assistants.localHint`)}),e.stats.unread>0&&(0,E.jsx)(`span`,{className:`shrink-0 rounded-full bg-accent-red/15 px-1.5 text-avatar font-medium text-accent-fg`,children:e.stats.unread})]}),e.preview&&(0,E.jsx)(`p`,{className:`mt-1 line-clamp-2 text-meta leading-snug text-dark-muted`,title:e.preview,children:e.preview})]}),(0,E.jsx)(j,{mode:e.mode}),e.trust.level===`owner`?(0,E.jsx)(i,{size:12,className:`shrink-0 text-accent-green`,"aria-label":D(`assistants.trust.owner`)}):e.trust.level===`public`?(0,E.jsx)(h,{size:12,className:`shrink-0 text-accent-yellow`,"aria-label":D(`assistants.trust.public`)}):(0,E.jsx)(i,{size:12,className:`shrink-0 text-accent-blue`,"aria-label":D(`assistants.trust.team`)})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:d,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-accent-blue hover:bg-dark-hover`,children:[(0,E.jsx)(n,{size:11,"aria-hidden":`true`}),D(`assistants.openSession`)]}),(0,E.jsx)(`button`,{type:`button`,onClick:u,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:D(`assistants.policy`)}),!N&&(0,E.jsx)(`button`,{type:`button`,onClick:m?v:_,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:D(`assistants.rename`),"aria-label":D(`assistants.rename`),"aria-pressed":m,"data-testid":`assistant-rename-${e.sessionId}`,children:(0,E.jsx)(s,{size:11,"aria-hidden":`true`})}),!N&&(0,E.jsx)(`button`,{type:`button`,onClick:T,disabled:b,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-accent-red/10 hover:text-accent-red disabled:opacity-50`,title:D(`assistants.deleteHint`),"aria-label":D(`assistants.delete`),"data-testid":`assistant-delete-${e.sessionId}`,children:(0,E.jsx)(c,{size:11,"aria-hidden":`true`})}),(0,E.jsx)(`span`,{className:`flex-1`}),(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:D(`assistants.groupPolicy`,{mention:String(k?e.policy.mentionRequired:!1)})})]}),a&&(0,E.jsx)(M,{assistant:e,isGroup:k,onUpdate:p}),m&&(0,E.jsx)(A,{initial:e.title,onSubmit:y,onCancel:v})]})});function A({initial:e,onSubmit:t,onCancel:n}){let{t:r}=g(),[i,a]=(0,T.useState)(e),o=()=>{let r=i.trim();!r||r===e?n():t(r)};return(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5`,children:[(0,E.jsx)(`input`,{autoFocus:!0,type:`text`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),o()):e.key===`Escape`&&(e.preventDefault(),n())},"aria-label":r(`assistants.renameLabel`),"data-testid":`assistant-rename-input`,className:`min-w-0 flex-1 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-meta text-dark-text`}),(0,E.jsx)(`button`,{type:`button`,onClick:o,className:`rounded p-1 text-accent-blue hover:bg-dark-hover`,title:r(`common.save`),"aria-label":r(`common.save`),"data-testid":`assistant-rename-save`,children:(0,E.jsx)(p,{size:12,"aria-hidden":`true`})}),(0,E.jsx)(`button`,{type:`button`,onClick:n,className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:r(`common.cancel`),"aria-label":r(`common.cancel`),children:(0,E.jsx)(u,{size:12,"aria-hidden":`true`})})]})}function j({mode:e}){let{t}=g();return(0,E.jsx)(`span`,{className:`shrink-0 rounded px-1.5 py-0.5 text-avatar font-medium ${e===`delegate`?`bg-accent-blue/15 text-accent-blue`:`bg-dark-hover text-dark-muted`}`,children:t(`assistants.mode.${e}`)})}function M({assistant:e,isGroup:t,onUpdate:n}){let{t:i}=g(),[a,o]=(0,T.useState)(e.mode),[s,c]=(0,T.useState)(e.policy.mentionRequired),[l,u]=(0,T.useState)(String(e.policy.cooldownSeconds)),[d,f]=(0,T.useState)((e.policy.keywords??[]).join(`, `)),[p,m]=(0,T.useState)(!1);return(0,E.jsxs)(`div`,{className:`border-t border-dark-border px-3 py-2.5 text-meta`,children:[(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2`,children:[(0,E.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[i(`assistants.mode.label`),(0,E.jsxs)(`select`,{value:a,onChange:e=>o(e.target.value),className:`rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`,children:[(0,E.jsx)(`option`,{value:`delegate`,children:i(`assistants.mode.delegate`)}),(0,E.jsx)(`option`,{value:`direct`,children:i(`assistants.mode.direct`)})]})]}),t&&(0,E.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),i(`assistants.mentionRequired`)]}),(0,E.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[i(`assistants.cooldown`),(0,E.jsx)(`input`,{type:`number`,min:0,value:l,onChange:e=>u(e.target.value),className:`w-14 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`}),`s`]})]}),(0,E.jsxs)(`label`,{className:`mt-2 flex items-center gap-1.5 text-dark-muted`,children:[i(`assistants.keywords`),(0,E.jsx)(`input`,{type:`text`,value:d,placeholder:i(`assistants.keywordsPlaceholder`)??``,onChange:e=>f(e.target.value),className:`min-w-0 flex-1 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`})]}),(0,E.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,E.jsx)(y,{size:`sm`,variant:`accent`,onClick:()=>{m(!0),n({mode:a,policy:{mentionRequired:t?s:!1,cooldownSeconds:Math.max(0,Number(l)||0),...d.trim()?{keywords:d.split(/[,,]/).map(e=>e.trim()).filter(Boolean)}:{}}}),window.setTimeout(()=>m(!1),600)},loading:p,leftIcon:(0,E.jsx)(r,{size:11,"aria-hidden":`true`}),children:i(`common.save`)})})]})}export{D as AssistantsView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,Bt as n,Dr as r,Er as i,Fr as a,Gn as o,L as s,O as c,Pr as l,Tr as u,Ur as d,Vt as f,an as p,b as m,ct as h,er as g,ft as _,g as ee,gt as v,hn as te,it as y,m as ne,n as b,ot as x,st as S,ur as re,vn as ie,vr as ae,yr as oe}from"./icons-BvYhTENi.js";import{r as se}from"./react-vendor-BlngCquv.js";import{t as C}from"./useTranslation-BGmCDuQI.js";import{n as w}from"./cn-rx4uumOJ.js";import{t as T}from"./api-CCt9DRQm.js";import{I as ce}from"./markdown-DAQZeY5V.js";import{A as le,j as ue}from"./common-BHXgEvgk.js";import{m as de}from"./index-BX-d2OBW.js";var fe=6048e5,pe=864e5,me=Symbol.for(`constructDateFrom`);function E(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&me in e?e[me](t):e instanceof Date?new e.constructor(t):new Date(t)}function D(e,t){return E(t||e,e)}function he(e,t,n){let r=D(e,n?.in);return isNaN(t)?E(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function ge(e,t,n){let r=D(e,n?.in);if(isNaN(t))return E(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=E(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 _e={};function O(){return _e}function k(e,t){let n=O(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=D(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 A(e,t){return k(e,{...t,weekStartsOn:1})}function ve(e,t){let n=D(e,t?.in),r=n.getFullYear(),i=E(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=A(i),o=E(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=A(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function ye(e){let t=D(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 j(e,...t){let n=E.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function M(e,t){let n=D(e,t?.in);return n.setHours(0,0,0,0),n}function be(e,t,n){let[r,i]=j(n?.in,e,t),a=M(r),o=M(i),s=+a-ye(a),c=+o-ye(o);return Math.round((s-c)/pe)}function xe(e,t){let n=ve(e,t),r=E(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),A(r)}function Se(e,t,n){return he(e,t*7,n)}function Ce(e){return E(e,Date.now())}function N(e,t,n){let[r,i]=j(n?.in,e,t);return+M(r)==+M(i)}function P(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function we(e){return!(!P(e)&&typeof e!=`number`||isNaN(+D(e)))}function F(e,t){let n=D(e,t?.in);return n.setHours(23,59,59,999),n}function Te(e,t){let[n,r]=j(e,t.start,t.end);return{start:n,end:r}}function I(e,t){let{start:n,end:r}=Te(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(E(n,o)),o.setDate(o.getDate()+s),o.setHours(0,0,0,0);return i?c.reverse():c}function Ee(e,t){let n=D(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function De(e,t){let n=D(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var Oe={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`}},L=(e,t,n)=>{let r,i=Oe[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 R(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var ke={date:R({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:R({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:R({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},z={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Ae=(e,t,n,r)=>z[e];function B(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 je={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:B({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:B({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:B({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:B({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:B({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 V(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)?Ne(s,e=>e.test(o)):Me(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 Me(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Ne(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function Pe(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 Fe={code:`en-US`,formatDistance:L,formatLong:ke,formatRelative:Ae,localize:je,match:{ordinalNumber:Pe({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:V({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:V({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:V({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:V({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:V({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 Ie(e,t){let n=D(e,t?.in);return be(n,De(n))+1}function Le(e,t){let n=D(e,t?.in),r=+A(n)-xe(n);return Math.round(r/fe)+1}function Re(e,t){let n=D(e,t?.in),r=n.getFullYear(),i=O(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=E(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=k(o,t),c=E(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=k(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function ze(e,t){let n=O(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Re(e,t),a=E(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),k(a,t)}function Be(e,t){let n=D(e,t?.in),r=+k(n,t)-ze(n,t);return Math.round(r/fe)+1}function H(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var U={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return H(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):H(n+1,2)},d(e,t){return H(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 H(e.getHours()%12||12,t.length)},H(e,t){return H(e.getHours(),t.length)},m(e,t){return H(e.getMinutes(),t.length)},s(e,t){return H(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return H(Math.trunc(r*10**(n-3)),t.length)}},W={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Ve={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 U.y(e,t)},Y:function(e,t,n,r){let i=Re(e,r),a=i>0?i:1-i;return t===`YY`?H(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):H(a,t.length)},R:function(e,t){return H(ve(e),t.length)},u:function(e,t){return H(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 H(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 H(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 U.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 H(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=Be(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):H(i,t.length)},I:function(e,t,n){let r=Le(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):H(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):U.d(e,t)},D:function(e,t,n){let r=Ie(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):H(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 H(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 H(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 H(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?W.noon:r===0?W.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?W.evening:r>=12?W.afternoon:r>=4?W.morning:W.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 U.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):U.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):H(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):H(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):U.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):U.s(e,t)},S:function(e,t){return U.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return G(r);case`XXXX`:case`XX`:return K(r);default:return K(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return G(r);case`xxxx`:case`xx`:return K(r);default:return K(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+He(r,`:`);default:return`GMT`+K(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+He(r,`:`);default:return`GMT`+K(r,`:`)}},t:function(e,t,n){return H(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return H(+e,t.length)}};function He(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+H(a,2)}function G(e,t){return e%60==0?(e>0?`-`:`+`)+H(Math.abs(e)/60,2):K(e,t)}function K(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=H(Math.trunc(r/60),2),a=H(r%60,2);return n+i+t+a}var Ue=(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`})}},q=(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`})}},We={p:q,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return Ue(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}}`,Ue(r,t)).replace(`{{time}}`,q(i,t))}},Ge=/^D+$/,Ke=/^Y+$/,qe=[`D`,`DD`,`YY`,`YYYY`];function Je(e){return Ge.test(e)}function Ye(e){return Ke.test(e)}function Xe(e,t,n){let r=Ze(e,t,n);if(console.warn(r),qe.includes(e))throw RangeError(r)}function Ze(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 Qe=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,$e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,et=/^'([^]*?)'?$/,tt=/''/g,nt=/[a-zA-Z]/;function J(e,t,n){let r=O(),i=n?.locale??r.locale??Fe,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=D(e,n?.in);if(!we(s))throw RangeError(`Invalid time value`);let c=t.match($e).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=We[t];return n(e,i.formatLong)}return e}).join(``).match(Qe).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:rt(e)};if(Ve[t])return{isToken:!0,value:e};if(t.match(nt))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&&Ye(a)||!n?.useAdditionalDayOfYearTokens&&Je(a))&&Xe(a,t,String(e));let o=Ve[a[0]];return o(s,a,i.localize,l)}).join(``)}function rt(e){let t=e.match(et);return t?t[1].replace(tt,`'`):e}function it(e,t,n){let[r,i]=j(n?.in,e,t);return+k(r,n)==+k(i,n)}function at(e,t,n){let[r,i]=j(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function ot(e,t){return N(E(t?.in||e,e),Ce(t?.in||e))}var Y=e(d(),1),st=se(),ct=2e3;function lt(e){return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}function X(e,t,n){return Number.isInteger(e)&&e>=t&&e<=n}function ut(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(!X(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(!X(o,t,n)||!X(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(!X(e,t,n)||!X(r,t,n)||e>r)return null;for(let t=e;t<=r;t++)i.add(t);continue}let s=Number(r);if(!X(s,t,n))return null;i.add(s)}return i.size>0?[...i].sort((e,t)=>e-t):null}function dt(e){let t=e.trim().split(/\s+/);if(t.length!==5)return null;let n=ut(t[0]??``,0,59),r=ut(t[1]??``,0,23),i=ut(t[2]??``,1,31),a=ut(t[3]??``,1,12),o=ut(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 ft(e,t){return e.months.includes(t.getMonth()+1)&&e.daysOfMonth.includes(t.getDate())&&e.daysOfWeek.includes(t.getDay())}function pt(e,t){if(e.kind===`once`){if(!e.fireAt)return[];let n=new Date(e.fireAt);return Number.isNaN(n.getTime())?[]:N(n,t)?[n]:[]}let n=dt(e.cron??``);if(!n||!ft(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 mt(e,t,n){let r=M(t),i=F(n);if(r.getTime()>i.getTime())return[];let a=[],o=I({start:r,end:i});for(let t of e){let e=0;for(let n of o){if(e>=ct)break;for(let o of pt(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>=ct))break}}return a.sort((e,t)=>e.at.getTime()-t.at.getTime()||e.automation.name.localeCompare(t.automation.name)),a}var ht=e=>e===`*`||e===`?`;function gt(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(N(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(!ht(i)||!ht(a))return{ok:!1,reason:`locked-cron`};let s=t.getDay();if(!ht(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 _t(e){return lt(e)}function vt(e){let t=new Map;for(let n of e){let e=lt(n.at),r=t.get(e);r?r.push(n):t.set(e,[n])}return t}var yt=[`automation.dow.monday`,`automation.dow.tuesday`,`automation.dow.wednesday`,`automation.dow.thursday`,`automation.dow.friday`,`automation.dow.saturday`,`automation.dow.sunday`],bt=e=>(e.getDay()+6)%7;function xt(e){let t=k(Ee(e),{weekStartsOn:1});return Array.from({length:42},(e,n)=>he(t,n))}function St(e){let t=k(e,{weekStartsOn:1});return Array.from({length:7},(e,n)=>he(t,n))}var Z=ce(),Ct=3,wt=e=>J(e,`HH:mm`),Tt=e=>`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`;function Et(e){return e.status===`enabled`?e.schedule.kind===`once`?`once`:`enabled`:`disabled`}var Dt={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 Ot({occurrence:e,onSelectDay:t,extra:n,onUnpack:r,onDragStart:i,onDragEnd:a}){let{t:o}=C(),s=n=>{n.stopPropagation(),r?r():t(e.at)},c=!!i,l=c?o(`automation.dragHint`):r?o(`automation.unpackHint`):``;return(0,Z.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:`${wt(e.at)} ${e.automation.name}${l?` · ${l}`:``}`,className:`flex w-full items-center gap-1 truncate rounded border-s-2 px-1 py-0.5 text-start text-meta hover:brightness-110 ${Dt[Et(e.automation)]} ${c?`cursor-grab active:cursor-grabbing`:``}`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 tabular-nums opacity-70`,children:wt(e.at)}),(0,Z.jsx)(`span`,{className:`truncate`,children:e.automation.name}),n!==void 0&&n>0&&(0,Z.jsx)(`span`,{className:`shrink-0 opacity-70`,children:o(`automation.moreCount`,{count:n})})]})}function kt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onMoveOccurrence:i}){let{t:a}=C(),o=(0,Y.useMemo)(()=>xt(e),[e]),[s,c]=(0,Y.useState)(null),[l,u]=(0,Y.useState)(null),d=()=>{c(null),u(null)};return(0,Z.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,Z.jsx)(`div`,{className:`grid grid-cols-7 border-b border-dark-border bg-dark-hover/40`,children:yt.map(e=>(0,Z.jsx)(`div`,{className:`px-2 py-1.5 text-center text-meta font-medium text-dark-muted`,children:a(e)},e))}),(0,Z.jsx)(`div`,{className:`grid grid-cols-7`,children:o.map((o,f)=>{let p=Tt(o),m=n.get(p)??[],h=m.slice(0,Ct),g=m.length-h.length,_=at(o,e),ee=N(o,t),v=ot(o),te=l===p;return(0,Z.jsxs)(`div`,{"data-day":p,role:`button`,tabIndex:0,onClick:()=>r(o),onDragOver:e=>{s&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),u(p))},onDragLeave:()=>u(e=>e===p?null:e),onDrop:e=>{if(!s)return;e.preventDefault();let t=s;d(),i?.(t,o)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r(o))},className:[`flex min-h-28 cursor-pointer flex-col gap-1 border-b border-e border-dark-border p-1.5`,f%7==6?`border-e-0`:``,f>=35?`border-b-0`:``,_?`bg-dark-surface`:`bg-dark-bg/50`,te?`bg-accent-blue/10 ring-2 ring-inset ring-accent-blue/70`:ee?`ring-1 ring-inset ring-accent-blue/50`:`hover:bg-dark-hover/40`].join(` `),children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:[`flex h-5 w-5 items-center justify-center rounded-full text-meta tabular-nums`,v?`bg-accent-blue font-semibold text-accent-fg`:_?`text-dark-text`:`text-dark-muted/60`].join(` `),children:o.getDate()}),m.length>0&&(0,Z.jsx)(`span`,{className:`text-badge tabular-nums text-dark-muted`,children:m.length})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[h.map(e=>(0,Z.jsx)(Ot,{occurrence:e,onSelectDay:r,onDragStart:i?c:void 0,onDragEnd:d},e.key)),g>0&&(0,Z.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),r(o)},className:`px-1 text-start text-badge text-dark-muted hover:text-accent-blue`,children:a(`automation.moreCount`,{count:g})})]})]},o.toISOString())})})]})}function At(e){let t=new Map;for(let n of e){let e=wt(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 jt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onFocusSlot:i,onMoveOccurrence:a}){let{t:o}=C(),s=(0,Y.useMemo)(()=>St(e),[e]),c=(0,Y.useMemo)(()=>Array.from({length:24},(e,t)=>t),[]),[l,u]=(0,Y.useState)(null),[d,f]=(0,Y.useState)(null),p=()=>{u(null),f(null)};return(0,Z.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-[3rem_repeat(7,minmax(0,1fr))] border-b border-dark-border bg-dark-hover/40`,children:[(0,Z.jsx)(`div`,{}),s.map(e=>{let n=ot(e),i=N(e,t);return(0,Z.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,Z.jsx)(`div`,{className:`text-meta text-dark-muted`,children:o(yt[bt(e)]??``)}),(0,Z.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,Z.jsxs)(`div`,{className:`custom-scrollbar grid max-h-[62vh] grid-cols-[3rem_repeat(7,minmax(0,1fr))] overflow-y-auto`,children:[(0,Z.jsx)(`div`,{className:`relative`,style:{height:`72rem`},children:c.map(e=>(0,Z.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=Tt(e),s=At(n.get(o)??[]),m=N(e,t);return(0,Z.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,Z.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,Z.jsx)(`div`,{className:`absolute inset-x-0.5 z-10`,style:{top:`${o/1440*100}%`},children:(0,Z.jsx)(Ot,{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,wt(t.at)):void 0})},`${e.toISOString()}-${wt(t.at)}`)})]},e.toISOString())})]})]})}var Mt=e=>J(e,`HH:mm`);function Nt({day:e,occurrences:t,focusSlot:n,onClearFocus:i,onEdit:a,onRun:o,onToggle:s,onCreate:c}){let{t:l}=C(),u=n??null,d=u?t.filter(e=>Mt(e.at)===u).length:0,f=u?t.findIndex(e=>Mt(e.at)===u):-1,p=(0,Y.useRef)(null);return(0,Y.useEffect)(()=>{u&&p.current?.scrollIntoView?.({block:`nearest`})},[u]),(0,Z.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col overflow-hidden rounded-xl border border-dark-border bg-dark-surface lg:w-80`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between border-b border-dark-border px-3 py-2`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsxs)(`div`,{className:`truncate text-sm font-semibold`,children:[l(yt[bt(e)]??``),` · `,J(e,`yyyy-MM-dd`)]}),(0,Z.jsxs)(`div`,{className:`text-meta text-dark-muted`,children:[l(`automation.tasksCount`,{count:t.length}),ot(e)?` · ${l(`automation.today`)}`:``]})]}),(0,Z.jsx)(`button`,{type:`button`,onClick:c,title:l(`automation.new`),className:`rounded-lg p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,Z.jsx)(x,{size:15})})]}),u&&(0,Z.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,Z.jsx)(`span`,{className:`shrink-0 font-medium tabular-nums`,children:u}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted`,children:l(`automation.slotFocus`,{count:d})}),i&&(0,Z.jsx)(`button`,{type:`button`,onClick:i,title:l(`automation.clearFocus`),className:`rounded p-0.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,Z.jsx)(b,{size:12})})]}),(0,Z.jsx)(`div`,{className:`custom-scrollbar flex-1 overflow-y-auto p-2`,children:t.length===0?(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-1 px-2 py-8 text-center`,children:[(0,Z.jsx)(r,{size:22,className:`text-dark-muted`}),(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted`,children:l(`automation.dayEmpty`)}),(0,Z.jsx)(`p`,{className:`text-meta text-dark-muted/70`,children:l(`automation.dayEmptyHint`)})]}):(0,Z.jsx)(`div`,{className:`space-y-1.5`,children:t.map((e,t)=>{let n=e.automation,r=n.status===`enabled`,i=u!==null&&Mt(e.at)===u;return(0,Z.jsxs)(`div`,{ref:t===f?p:void 0,"data-focus-slot":i?u:void 0,className:[`rounded-lg border bg-dark-bg/50 p-2`,i?`border-accent-blue/60 ring-1 ring-inset ring-accent-blue/50`:`border-dark-border`].join(` `),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 text-meta tabular-nums text-dark-muted`,children:Mt(e.at)}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium`,title:n.name,children:n.name}),(0,Z.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:l(r?`automation.enabled`:`automation.disabled`)})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex items-center gap-1`,children:[n.nextRunAt&&(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-badge text-dark-muted`,children:[l(`automation.nextRun`),`: `,new Date(n.nextRunAt).toLocaleString()]}),(0,Z.jsxs)(`div`,{className:`ms-auto flex shrink-0 items-center gap-0.5`,children:[(0,Z.jsx)(`button`,{type:`button`,onClick:()=>a(n),title:l(`automation.edit`),className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,Z.jsx)(_,{size:13})}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>s(n),title:l(r?`automation.disable`:`automation.enable`),className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,Z.jsx)(y,{size:13})}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>o(n.id),title:l(`automation.runNow`),className:`rounded p-1 text-accent-green hover:bg-dark-hover`,children:(0,Z.jsx)(h,{size:13})})]})]})]},e.key)})})})]})}var Q={name:``,instructions:``,freq:`daily`,time:`09:00`,dow:`1`,onceAt:``,cron:`0 9 * * *`,modelRef:``,connectorIds:[],channelIds:[],workspaceDir:``,readAutoAllow:!0,runSessionMode:`home`,runSessionId:``},Pt=`.agent/automation-attachments`,Ft=`deepseekcode:automation-view`,It=[{id:`month`,key:`automation.viewMonth`,Icon:i},{id:`week`,key:`automation.viewWeek`,Icon:u},{id:`list`,key:`automation.viewList`,Icon:f}];function Lt(){try{let e=localStorage.getItem(Ft);if(e===`month`||e===`week`||e===`list`)return e}catch{}return`month`}function Rt(e){try{localStorage.setItem(Ft,e)}catch{}}var $=e=>String(e).padStart(2,`0`);function zt(e){let t=e.schedule,n={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??``};if(t.kind===`once`&&t.fireAt){let r=new Date(t.fireAt);return{...Q,name:e.name,instructions:e.instructions,freq:`once`,time:`${$(r.getHours())}:${$(r.getMinutes())}`,onceAt:`${r.getFullYear()}-${$(r.getMonth()+1)}-${$(r.getDate())}T${$(r.getHours())}:${$(r.getMinutes())}`,...n}}let r=(t.cron||``).trim().split(/\s+/),i={...Q,name:e.name,instructions:e.instructions,...n};if(r.length===5){let e=r[0]??``,t=r[1]??``,n=r[4]??``,a=`${$(parseInt(t,10)||0)}:${$(parseInt(e,10)||0)}`;if(n===`*`)return{...i,freq:`daily`,time:a};if(n===`1-5`)return{...i,freq:`weekdays`,time:a};if(/^\d+$/.test(n))return{...i,freq:`weekly`,time:a,dow:n}}return{...i,freq:`custom`,cron:t.cron||``}}function Bt(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 Vt(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 Ht=[{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 Ut(e){let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`\\`),t.lastIndexOf(`/`));return n===-1?t:t.slice(n+1)}function Wt({isOpen:e,initial:t,onClose:r,onConfirm:i}){let{t:o}=C(),{visible:s,phase:c}=ue(e),[l,u]=(0,Y.useState)(t),[d,f]=(0,Y.useState)(null),[m,h]=(0,Y.useState)([]),[g,_]=(0,Y.useState)(!1),[ee,v]=(0,Y.useState)(``),[y,ne]=(0,Y.useState)(t),x=(0,Y.useRef)(null),S=async e=>{_(!0),v(``);try{let t=await T.dirs.list(e);if(!t.success||!t.data){v(t.error||`加载目录失败`);return}u(t.data.path),f(t.data.parent),h(t.data.dirs||[]),ne(t.data.path)}catch(e){v(e instanceof Error?e.message:`加载目录失败`)}finally{_(!1)}};return(0,Y.useEffect)(()=>{e&&S(t)},[e,t]),(0,Y.useEffect)(()=>{x.current?.focus()},[]),(0,Y.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),r())};return document.addEventListener(`keydown`,t),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,t),document.body.style.overflow=``}},[e,r]),s?(0,Z.jsxs)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center overflow-hidden p-4`,role:`dialog`,"aria-modal":`true`,children:[(0,Z.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":c,onClick:r}),(0,Z.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":c,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5 border-b border-dark-border shrink-0`,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-compact font-semibold text-dark-text`,children:[(0,Z.jsx)(ie,{size:15,className:`text-accent-blue`}),o(`automation.workspacePick`)]}),(0,Z.jsx)(`button`,{type:`button`,onClick:r,className:`rounded p-1 text-dark-muted hover:bg-dark-hover`,children:(0,Z.jsx)(b,{size:15})})]}),(0,Z.jsxs)(`div`,{className:`p-4 flex flex-col gap-3 min-h-0 flex-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsxs)(`div`,{className:`relative flex-1`,children:[(0,Z.jsx)(p,{size:13,className:`absolute start-2.5 top-1/2 -translate-y-1/2 text-dark-muted/60`}),(0,Z.jsx)(`input`,{ref:x,value:y,onChange:e=>ne(e.target.value),onKeyDown:e=>{e.key===`Enter`&&S(y.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,Z.jsx)(`button`,{type:`button`,onClick:()=>void S(y.trim()),disabled:g||!y.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:o(`chat.dirPickerGo`)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.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:l,children:l||`—`}),(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>d&&void S(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,Z.jsx)(a,{size:12}),o(`chat.dirPickerUp`)]})]}),(0,Z.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,Z.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-xs text-dark-muted`,children:[(0,Z.jsx)(n,{size:14,className:`animate-spin`}),o(`chat.loading`)]}):ee?(0,Z.jsx)(`div`,{className:`px-3 py-4 text-xs text-accent-red`,children:ee}):m.length===0?(0,Z.jsx)(`div`,{className:`px-3 py-4 text-xs text-dark-muted/60 text-center`,children:`—`}):m.map(e=>{let t=l.includes(`\\`)?`\\`:`/`,n=l.endsWith(t)?l+e:l+t+e;return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>void S(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,Z.jsx)(te,{size:13,className:`shrink-0 text-accent-yellow/80`}),(0,Z.jsx)(`span`,{className:`truncate`,children:e})]},e)})}),(0,Z.jsx)(le,{variant:`accent`,className:`w-full`,onClick:()=>i(l),disabled:!l,loading:g,children:o(`chat.dirPickerConfirm`)})]})]})]}):null}function Gt(){let{t:e}=C(),{automations:i,runsByAutomation:a,fetchAutomations:u,createAutomation:d,updateAutomation:f,deleteAutomation:te,toggleAutomation:se,runAutomation:ce,fetchRuns:fe,error:pe}=de(),[me,E]=(0,Y.useState)(!1),{visible:D,phase:he}=ue(me),[_e,O]=(0,Y.useState)(null),[k,A]=(0,Y.useState)(Q),[ve,ye]=(0,Y.useState)(null),[j,M]=(0,Y.useState)(``),[be,xe]=(0,Y.useState)(!1),[Ce,N]=(0,Y.useState)(!1),[P,we]=(0,Y.useState)(Lt),[F,Te]=(0,Y.useState)(()=>new Date),[I,Ee]=(0,Y.useState)(()=>new Date),[De,Oe]=(0,Y.useState)(null),L=e=>{Ee(e),Oe(null)};(0,Y.useEffect)(()=>{Rt(P)},[P]);let R=(0,Y.useMemo)(()=>{if(P===`month`){let e=xt(F);return{from:e[0],to:e[e.length-1]}}if(P===`week`){let e=St(F);return{from:e[0],to:e[e.length-1]}}return null},[P,F]),ke=(0,Y.useMemo)(()=>R?mt(i,R.from,R.to):[],[i,R]),z=(0,Y.useMemo)(()=>vt(ke),[ke]),Ae=(0,Y.useMemo)(()=>z.get(_t(I))??[],[z,I]),B=e=>{let t=P===`week`?Se(F,e):ge(F,e);Te(t),(P===`week`?it(I,t,{weekStartsOn:1}):at(I,t))||L(t)},je=()=>{let e=new Date;Te(e),L(e)},V=async(t,n)=>{let r=gt(t.automation,n);if(!r.ok){r.reason===`noop-day`?w.info(e(`automation.dragNoop`)):w.warning(e(`automation.dragLocked`));return}let i=Vt(t.automation.schedule,e);await f(t.automation.id,{schedule:r.schedule})&&(L(n),w.success(e(`automation.dragMoved`,{name:t.automation.name,from:i,to:Vt(r.schedule,e)})))},Me=(0,Y.useMemo)(()=>{if(P===`week`){let e=St(F);return`${J(e[0],`yyyy-MM-dd`)} → ${J(e[e.length-1],`MM-dd`)}`}return J(F,`yyyy-MM`)},[P,F]),[Ne,Pe]=(0,Y.useState)([]),[Fe,Ie]=(0,Y.useState)([]),[Le,Re]=(0,Y.useState)([]),[ze,Be]=(0,Y.useState)([]),[H,U]=(0,Y.useState)(!1),[W,Ve]=(0,Y.useState)(!1),He=async()=>{if(H)return;U(!0);let e=await T.sessions.list().catch(()=>({success:!1,data:void 0}));e.success&&Array.isArray(e.data)&&Be(e.data.filter(e=>!e.id.startsWith(`__automation_run__`)))},[G,K]=(0,Y.useState)([]),Ue=(0,Y.useRef)(null);(0,Y.useEffect)(()=>{u()},[u]);let q=async e=>{O(null),A(e?{...e.form}:{...Q}),K([]),E(!0),await Ke()},We=async e=>{O(e.id),A(zt(e)),K((e.attachments??[]).map((e,t)=>({id:`existing-${t}-${e}`,name:Ut(e),file:null,uploading:!1,path:e}))),E(!0),await Ke(),e.runSessionMode===`fixed`&&He()},Ge=()=>{E(!1),O(null),A(Q),K([]),N(!1)},Ke=async()=>{Ve(!0);try{let[e,t,n]=await Promise.all([T.models.list().catch(()=>({success:!1,data:void 0})),T.connectors.list().catch(()=>({success:!1,data:void 0})),T.channels.list().catch(()=>({success:!1,data:void 0}))]);e.success&&e.data?.models?Pe(e.data.models.filter(e=>e.enabled!==!1)):Pe([]),t.success&&t.data?.connectors?Ie(t.data.connectors.filter(e=>e.installed)):Ie([]),n.success&&Array.isArray(n.data)?Re(n.data):Re([])}finally{Ve(!1)}},qe=async()=>{let e=Bt(k);if(!k.name.trim()||!k.instructions.trim()||!e)return;if(G.some(e=>e.uploading)){w.warning(`附件上传中,请稍候…`);return}let t=G.filter(e=>e.error).map(e=>e.name);if(t.length>0){w.warning(`附件上传失败:${t.join(`, `)}`);return}xe(!0);let n={name:k.name.trim(),instructions:k.instructions.trim(),schedule:e,workspaceDir:k.workspaceDir.trim(),readAutoAllow:k.readAutoAllow,modelRef:k.modelRef.trim()||null,attachments:G.map(e=>e.path).filter(e=>!!e),connectorIds:[...k.connectorIds],notificationChannelIds:[...k.channelIds],runSessionMode:k.runSessionMode,runSessionId:k.runSessionMode===`fixed`&&k.runSessionId.trim()||null},r=_e?await f(_e,n):await d(n)!==null;xe(!1),r&&Ge()},Je=async e=>{let t=j.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&&(M(``),await u())},Ye=async(e,t)=>{(await fetch(`/api/automations/${encodeURIComponent(e)}/permissions`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({entry:t})})).ok&&await u()},Xe=async e=>{let t=ve===e?null:e;ye(t),t&&await fe(e)},Ze=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}));K(e=>[...e,...t]);for(let e of t){let t=`${Pt}/${e.name}`;try{let n=await T.files.upload(e.file,t);if(n.success&&n.data?.path){let t=n.data.path.replace(/\\/g,`/`);K(n=>n.map(n=>n.id===e.id?{...n,uploading:!1,path:t}:n))}else K(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`;K(t=>t.map(t=>t.id===e.id?{...t,uploading:!1,error:n}:t))}}},Qe=e=>{K(t=>t.filter(t=>t.id!==e))},$e=[{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`}}],et=k.name.trim()&&k.instructions.trim()&&(k.freq===`custom`?!!k.cron.trim():k.freq!==`once`||!!k.onceAt);return(0,Z.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-y-auto p-6`,children:[(0,Z.jsxs)(`div`,{className:`max-w-6xl w-full mx-auto`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between mb-1`,children:[(0,Z.jsxs)(`h2`,{className:`text-xl font-semibold flex items-center gap-2`,children:[(0,Z.jsx)(g,{size:20,className:`text-accent-blue`}),e(`automation.title`)]}),(0,Z.jsx)(`button`,{onClick:()=>void u(),className:`p-2 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.refresh`),children:(0,Z.jsx)(t,{size:16})})]}),(0,Z.jsx)(`p`,{className:`text-sm text-dark-muted mb-4`,children:e(`automation.subtitle`)}),pe&&(0,Z.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,Z.jsx)(ne,{size:16}),` `,pe]}),(0,Z.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`div`,{className:`flex items-center rounded-lg border border-dark-border bg-dark-surface p-0.5`,children:It.map(({id:t,key:n,Icon:r})=>(0,Z.jsxs)(`button`,{onClick:()=>we(t),"aria-pressed":P===t,className:`flex items-center gap-1 rounded-md px-2.5 py-1 text-xs transition-colors ${P===t?`bg-accent-blue/15 text-accent-blue font-medium`:`text-dark-muted hover:text-dark-text`}`,children:[(0,Z.jsx)(r,{size:13}),` `,e(n)]},t))}),P!==`list`&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Z.jsx)(`button`,{onClick:()=>B(-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,Z.jsx)(oe,{size:14})}),(0,Z.jsx)(`button`,{onClick:je,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,Z.jsx)(`button`,{onClick:()=>B(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,Z.jsx)(ae,{size:14})})]}),(0,Z.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:Me})]}),(0,Z.jsxs)(`div`,{className:`ms-auto flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`automation.tasksCount`,{count:i.length})}),(0,Z.jsxs)(`button`,{onClick:()=>void q(),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,Z.jsx)(x,{size:14}),` `,e(`automation.new`)]})]})]}),P!==`list`&&(0,Z.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3 lg:flex-row lg:items-start`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[P===`month`?(0,Z.jsx)(kt,{anchor:F,selectedDay:I,byDay:z,onSelectDay:L,onMoveOccurrence:(e,t)=>void V(e,t)}):(0,Z.jsx)(jt,{anchor:F,selectedDay:I,byDay:z,onSelectDay:L,onFocusSlot:(e,t)=>{Ee(e),Oe(t)},onMoveOccurrence:(e,t)=>void V(e,t)}),i.length===0&&(0,Z.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,Z.jsx)(r,{size:14}),e(`automation.emptyTitle`),` · `,e(`automation.emptyDesc`)]})]}),(0,Z.jsx)(Nt,{day:I,occurrences:Ae,focusSlot:De,onClearFocus:()=>Oe(null),onEdit:e=>void We(e),onRun:e=>void ce(e),onToggle:e=>void se(e.id,e.status!==`enabled`),onCreate:()=>void q()})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,Z.jsx)(c,{size:16,className:`text-accent-yellow`}),(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.recommendedTitle`)})]}),(0,Z.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-2 mb-6`,children:$e.map(t=>(0,Z.jsxs)(`button`,{onClick:()=>void q(t),className:`text-start rounded-xl border border-dark-border bg-dark-surface p-2.5 hover:border-accent-blue/60 hover:bg-dark-hover/50 transition-colors flex flex-col gap-1`,children:[(0,Z.jsx)(`span`,{className:`text-xs font-semibold`,children:e(t.nameKey)}),(0,Z.jsx)(`span`,{className:`text-meta text-dark-muted leading-relaxed line-clamp-1`,children:e(t.descKey)}),(0,Z.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,Z.jsx)(g,{size:11}),` `,Vt(Bt(t.form),e)]})]},t.id))}),P===`list`&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.mineTitle`)}),(0,Z.jsx)(`span`,{className:`text-xs text-dark-muted`,children:i.length})]}),i.length===0?(0,Z.jsxs)(`div`,{className:`rounded-xl border border-dashed border-dark-border py-12 flex flex-col items-center gap-2 text-center`,children:[(0,Z.jsx)(r,{size:32,className:`text-dark-muted`}),(0,Z.jsx)(`p`,{className:`text-sm font-medium`,children:e(`automation.emptyTitle`)}),(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.emptyDesc`)}),(0,Z.jsxs)(`button`,{onClick:()=>void q(),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,Z.jsx)(x,{size:15}),` `,e(`automation.new`)]})]}):(0,Z.jsx)(`div`,{className:`space-y-2`,children:i.map(t=>(0,Z.jsxs)(`div`,{className:`rounded-xl border border-dark-border bg-dark-surface`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-3`,children:[(0,Z.jsxs)(`button`,{onClick:()=>void Xe(t.id),className:`flex items-center gap-2 min-w-0 text-start`,children:[(0,Z.jsx)(g,{size:16,className:`text-accent-blue shrink-0`}),(0,Z.jsx)(`span`,{className:`font-medium text-sm truncate`,children:t.name}),(0,Z.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,Z.jsx)(`span`,{className:`text-xs text-dark-muted shrink-0 hidden md:inline`,children:Vt(t.schedule,e)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[t.nextRunAt&&(0,Z.jsxs)(`span`,{className:`text-xs text-dark-muted hidden lg:inline me-1`,children:[e(`automation.nextRun`),`: `,new Date(t.nextRunAt).toLocaleString()]}),(0,Z.jsx)(`button`,{onClick:()=>void We(t),className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.edit`),children:(0,Z.jsx)(_,{size:15})}),(0,Z.jsx)(`button`,{onClick:()=>void se(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,Z.jsx)(y,{size:15})}),(0,Z.jsx)(`button`,{onClick:()=>void ce(t.id),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-green`,title:e(`automation.runNow`),children:(0,Z.jsx)(h,{size:15})}),(0,Z.jsx)(`button`,{onClick:()=>void te(t.id),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-red`,title:e(`automation.delete`),children:(0,Z.jsx)(ee,{size:15})})]})]}),ve===t.id&&(0,Z.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t border-dark-border pt-3`,children:[(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted whitespace-pre-wrap`,children:t.instructions}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1 flex items-center gap-1`,children:[(0,Z.jsx)(m,{size:12}),` `,e(`automation.historyTitle`)]}),(a[t.id]||[]).length===0&&(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.noRuns`)}),(a[t.id]||[]).slice(0,10).map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-1`,children:[(0,Z.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,Z.jsx)(re,{size:11}),e.status]}),(0,Z.jsx)(`span`,{className:`text-dark-muted`,children:new Date(e.startedAt).toLocaleString()}),(0,Z.jsxs)(`span`,{className:`text-dark-muted truncate flex-1`,children:[`#`,e.id.slice(0,8),` · `,e.trigger]})]},e.id))]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1`,children:e(`automation.permissionsTitle`)}),t.permissions.length===0&&(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.permissionsEmpty`)}),(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-1`,children:t.permissions.map(e=>(0,Z.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,Z.jsx)(`button`,{onClick:()=>void Ye(t.id,e),className:`hover:text-accent-red`,children:(0,Z.jsx)(b,{size:12})})]},e))}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(`input`,{value:j,onChange:e=>M(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,Z.jsx)(`button`,{onClick:()=>void Je(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))})]})]}),D&&(0,Z.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4`,onClick:Ge,children:[(0,Z.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":he,"aria-hidden":`true`}),(0,Z.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":he,onClick:e=>e.stopPropagation(),children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h3`,{className:`text-base font-semibold`,children:e(_e?`automation.editTitle`:`automation.createTitle`)}),(0,Z.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`automation.subtitle`)})]}),(0,Z.jsx)(`button`,{onClick:Ge,className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,children:(0,Z.jsx)(b,{size:16})})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.nameLabel`)}),(0,Z.jsx)(`input`,{autoFocus:!0,value:k.name,onChange:e=>A(t=>({...t,name:e.target.value})),placeholder:e(`automation.namePlaceholder`),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`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.scheduleLabel`)}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsxs)(`select`,{value:k.freq,onChange:e=>A(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,Z.jsx)(`option`,{value:`daily`,children:e(`automation.freqDaily`)}),(0,Z.jsx)(`option`,{value:`weekly`,children:e(`automation.freqWeekly`)}),(0,Z.jsx)(`option`,{value:`weekdays`,children:e(`automation.freqWeekdays`)}),(0,Z.jsx)(`option`,{value:`once`,children:e(`automation.freqOnce`)}),(0,Z.jsx)(`option`,{value:`custom`,children:e(`automation.freqCustom`)})]}),k.freq===`weekly`&&(0,Z.jsx)(`select`,{value:k.dow,onChange:e=>A(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:Ht.map(t=>(0,Z.jsx)(`option`,{value:t.value,children:e(t.key)},t.value))}),(k.freq===`daily`||k.freq===`weekly`||k.freq===`weekdays`)&&(0,Z.jsx)(`input`,{type:`time`,value:k.time,onChange:e=>A(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`}),k.freq===`once`&&(0,Z.jsx)(`input`,{type:`datetime-local`,value:k.onceAt,onChange:e=>A(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`}),k.freq===`custom`&&(0,Z.jsx)(`input`,{value:k.cron,onChange:e=>A(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`})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.instructionLabel`)}),(0,Z.jsx)(`textarea`,{value:k.instructions,onChange:e=>A(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,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(v,{size:12}),` `,e(`automation.attachmentsLabel`)]}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.attachmentsHint`)}),G.length===0?(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.attachmentsEmpty`)}):(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mb-2`,children:G.map(e=>(0,Z.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,Z.jsx)(v,{size:11}),(0,Z.jsx)(`span`,{className:`truncate max-w-[180px]`,children:e.name}),e.uploading&&(0,Z.jsx)(n,{size:11,className:`animate-spin`}),e.error&&(0,Z.jsx)(ne,{size:11}),(0,Z.jsx)(`button`,{onClick:()=>Qe(e.id),className:`hover:text-accent-red ms-0.5`,children:(0,Z.jsx)(b,{size:11})})]},e.id))}),(0,Z.jsx)(`input`,{ref:Ue,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{Ze(e.target.files),e.target.value=``}}),(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>Ue.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,Z.jsx)(x,{size:12}),` `,e(`automation.attachmentsAdd`)]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(o,{size:12}),` `,e(`automation.modelLabel`)]}),(0,Z.jsxs)(`select`,{value:k.modelRef,onChange:e=>A(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:W||k.runSessionMode!==`new`,children:[(0,Z.jsx)(`option`,{value:``,children:e(`automation.modelAuto`)}),Ne.map(e=>(0,Z.jsxs)(`option`,{value:`${e.provider}:${e.id}`,children:[e.name,` · `,e.provider]},`${e.provider}:${e.id}`))]}),k.runSessionMode!==`new`&&(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelFollowsSession`)}),!W&&Ne.length===0&&(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelNoModels`)})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(p,{size:12}),` `,e(`automation.runSessionLabel`)]}),(0,Z.jsxs)(`select`,{value:k.runSessionMode,onChange:e=>{let t=e.target.value;A(e=>({...e,runSessionMode:t})),t===`fixed`&&He()},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,Z.jsx)(`option`,{value:`home`,children:e(`automation.runSessionHome`)}),(0,Z.jsx)(`option`,{value:`new`,children:e(`automation.runSessionNew`)}),(0,Z.jsx)(`option`,{value:`fixed`,children:e(`automation.runSessionFixed`)})]}),k.runSessionMode===`fixed`&&(0,Z.jsxs)(`select`,{value:k.runSessionId,onChange:e=>A(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:W,children:[(0,Z.jsx)(`option`,{value:``,children:e(`automation.runSessionPick`)}),ze.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.title||e.id},e.id))]}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.runSessionHint`)})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(S,{size:12}),` `,e(`automation.connectorsLabel`)]}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.connectorsHint`)}),Fe.length===0?(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.connectorsEmpty`)}):(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Fe.map(e=>{let t=k.connectorIds.includes(e.id);return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>A(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,Z.jsx)(S,{size:11}),e.name]},e.id)})})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(l,{size:12}),` `,e(`automation.channelsLabel`)]}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.channelsHint`)}),Le.length===0?(0,Z.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.channelsEmpty`)}):(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Le.map(e=>{let t=k.channelIds.includes(e.id);return(0,Z.jsxs)(`button`,{type:`button`,disabled:!e.enabled,onClick:()=>A(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,Z.jsx)(l,{size:11}),e.name,!e.enabled&&(0,Z.jsx)(`span`,{className:`text-avatar`,children:`·off`})]},e.id)})})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(ie,{size:12}),` `,e(`automation.workspaceLabel`)]}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.workspaceHint`)}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(`input`,{value:k.workspaceDir,onChange:e=>A(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,Z.jsxs)(`button`,{type:`button`,onClick:()=>N(!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,Z.jsx)(ie,{size:12}),` `,e(`automation.workspacePick`)]}),k.workspaceDir&&(0,Z.jsx)(`button`,{type:`button`,onClick:()=>A(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,Z.jsx)(b,{size:12})})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,Z.jsx)(s,{size:12}),` `,e(`automation.permissionAccess`)]}),(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 p-2.5 rounded-lg border border-dark-border bg-dark-bg`,children:[(0,Z.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":k.readAutoAllow,onClick:()=>A(e=>({...e,readAutoAllow:!e.readAutoAllow})),className:`relative shrink-0 mt-0.5 inline-flex h-5 w-9 items-center rounded-full transition-colors ${k.readAutoAllow?`bg-accent-blue`:`bg-dark-hover`}`,children:(0,Z.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${k.readAutoAllow?`translate-x-4`:`translate-x-0.5`}`})}),(0,Z.jsxs)(`div`,{className:`flex-1`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-dark-text`,children:e(`automation.fullAccessLabel`)}),(0,Z.jsx)(`p`,{className:`text-badge text-dark-muted/80 mt-0.5`,children:e(`automation.fullAccessHint`)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,Z.jsx)(`button`,{onClick:Ge,className:`px-4 py-2 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-sm`,children:e(`automation.cancel`)}),(0,Z.jsx)(le,{variant:`accent`,onClick:()=>void qe(),disabled:!et,loading:be,children:e(`automation.save`)})]})]})]}),(0,st.createPortal)((0,Z.jsx)(Wt,{isOpen:Ce&&me,initial:k.workspaceDir||``,onClose:()=>N(!1),onConfirm:e=>{A(t=>({...t,workspaceDir:e})),N(!1)}}),document.body)]})}export{Gt as AutomationView};
@@ -0,0 +1,8 @@
1
+ import{i as e,t}from"./rolldown-runtime-COiEfhsA.js";import{$ as n,Hr as r,J as i,Ur as a,a as o,g as s,i as c,m as l,nt as u,ot as d,st as f,xn as p}from"./icons-BvYhTENi.js";import{t as m}from"./useTranslation-BGmCDuQI.js";import{n as h}from"./cn-rx4uumOJ.js";import{t as g}from"./api-CCt9DRQm.js";import{I as _}from"./markdown-DAQZeY5V.js";import{A as v,h as y}from"./common-BHXgEvgk.js";import{n as b,r as x,t as S}from"./channelMeta-BGQXQxgj.js";import{p as C}from"./index-BX-d2OBW.js";var w=e(a(),1),T=_(),E=[{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 D(){let{t:e}=m(),{channels:t,availableTypes:n,typesLoaded:r,selectedType:i,selectType:a,loadTypes:o}=C();(0,w.useEffect)(()=>{o()},[o]);let s=(0,w.useMemo)(()=>{if(n.length===0)return[];let e=new Set(n),t=E.map(t=>({...t,types:t.types.filter(t=>e.has(t))})).filter(e=>e.types.length>0),r=new Set(E.flatMap(e=>e.types)),i=n.filter(e=>!r.has(e));return i.length>0?[...t,{labelKey:`plugins`,types:i}]:t},[n]),c=(0,w.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,w.useMemo)(()=>l?t.filter(e=>n.includes(e.type)):[],[l,t,n]);return(0,T.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 border-e border-dark-border bg-dark-surface`,children:[(0,T.jsxs)(`div`,{className:`shrink-0 px-4 py-3 border-b border-dark-border`,children:[(0,T.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-dark-muted`,children:e(`channels.sidebar.title`)}),(0,T.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,T.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar`,children:[r&&!l&&(0,T.jsxs)(`div`,{className:`px-4 py-10 text-center`,children:[(0,T.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`channels.sidebar.empty`)}),(0,T.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,T.jsxs)(`div`,{children:[(0,T.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,T.jsx)(O,{label:b(e),icon:S(e),isSelected:i===e,experimental:x(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,T.jsxs)(`div`,{children:[(0,T.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,T.jsx)(O,{label:b(e),icon:S(e),isSelected:i===e,experimental:x(e),onClick:()=>a(e)},e))]})})()]})]})}function O({label:e,icon:t,isSelected:n,experimental:r,info:i,onClick:a}){let{t:s}=m();return(0,T.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,T.jsx)(`span`,{className:`text-lg shrink-0 w-7 h-7 flex items-center justify-center rounded-md bg-dark-bg`,children:t}),(0,T.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,T.jsx)(`span`,{className:`text-sm font-medium text-dark-text truncate`,children:e}),r&&(0,T.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,T.jsx)(p,{className:`w-2.5 h-2.5`}),` `,s(`channels.experimentalShort`)]}),i&&(0,T.jsx)(`span`,{className:`text-badge text-dark-muted bg-dark-hover px-1.5 py-0.5 rounded shrink-0`,children:i.count})]}),(0,T.jsx)(`div`,{className:`flex items-center gap-1 mt-0.5`,children:i?i.connected>0?(0,T.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-accent-green`,children:[(0,T.jsx)(c,{className:`w-3 h-3`}),i.connected===i.count?s(`channels.status.connected`):s(`channels.sidebar.partialConnected`,{connected:i.connected,count:i.count})]}):(0,T.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-dark-muted`,children:[(0,T.jsx)(o,{className:`w-3 h-3`}),s(`channels.status.disconnected`)]}):(0,T.jsx)(`span`,{className:`text-meta text-dark-muted`,children:s(`channels.sidebar.unconfigured`)})})]})]})}var k={name:``,type:`wechat`,appId:``,appSecret:``,token:``,encodingAESKey:``,enabled:!0};function A(){let{t:e}=m(),{channels:t,selectedType:n,availableTypes:r,create:i,update:a,remove:o,toggle:s,error:c,clearError:h,openQr:g,load:_,test:y,testResult:E,testing:D}=C(),O=(0,w.useMemo)(()=>r.length>0&&!!n&&!r.includes(n),[r,n]),A=(0,w.useMemo)(()=>n?t.filter(e=>e.type===n):[],[t,n]),[M,N]=(0,w.useState)(``),[P,F]=(0,w.useState)(k),[I,L]=(0,w.useState)(!1),R=M===`__new__`,z=(0,w.useMemo)(()=>R?null:A.find(e=>e.id===M)??null,[A,M,R]);(0,w.useEffect)(()=>{N(``),F(k),L(!1),h()},[n]),(0,w.useEffect)(()=>{n===`wechat`&&A.length===0&&!O&&g(null)},[n,A.length,O,g]),(0,w.useEffect)(()=>{z?F({name:z.name,type:z.type,appId:z.appId||``,appSecret:``,token:``,encodingAESKey:z.encodingAESKey||``,enabled:z.enabled}):R&&F(e=>({...e,type:n}))},[M]);let B=(e,t)=>{h(),F(n=>({...n,[e]:t}))},V=e=>{N(e),h()},H=()=>{N(`__new__`),F({...k,type:n}),h()},U=()=>{N(``),F(k),h()},W=async()=>{if(!P.name.trim())return;L(!0);let e=z?await a(z.id,P):await i(P);L(!1),e&&(N(``),F(k))},G=async t=>{confirm(e(`channels.actions.deleteConfirmShort`))&&await o(t)&&M===t&&(N(``),F(k))},K=(e,t)=>{s(e,t)};return n?(0,T.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 overflow-hidden`,children:[(0,T.jsx)(`div`,{className:`shrink-0 px-6 py-4 border-b border-dark-border`,children:(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(`span`,{className:`text-2xl`,children:S(n)}),(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h2`,{className:`font-semibold text-base text-dark-text`,children:b(n)}),x(n)&&(0,T.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,T.jsx)(p,{className:`w-3 h-3`}),` `,e(`channels.experimentalLabel`)]})]}),(0,T.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:A.length>0?e(`channels.instancesCount`,{n:A.length}):e(`channels.notConfiguredYet`)}),x(n)&&(0,T.jsx)(`p`,{className:`text-badge text-accent-yellow mt-1`,children:e(`channels.experimentalDesc`)})]})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`button`,{onClick:()=>_(),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,T.jsx)(v,{size:`sm`,variant:`accent`,onClick:H,leftIcon:(0,T.jsx)(d,{className:`w-3.5 h-3.5`}),children:e(`channels.createInstance`)})]})]})}),c&&(0,T.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,T.jsx)(`span`,{children:c}),(0,T.jsx)(`button`,{onClick:h,className:`text-accent-red hover:text-accent-red`,children:(0,T.jsx)(`span`,{className:`w-4 h-4 inline-flex items-center justify-center`,children:`×`})})]}),O&&(0,T.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,T.jsx)(l,{className:`w-3.5 h-3.5 mt-0.5 shrink-0`}),(0,T.jsx)(`span`,{children:e(`channels.pluginMissingWarning`,{name:n===`wechat`?` WeChat Channel`:` ${b(n)}`})})]}),(0,T.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar p-6`,children:[A.length>1&&!R&&(0,T.jsxs)(`div`,{className:`mb-4`,children:[(0,T.jsx)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:e(`channels.selectInstance`)}),(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[A.map(e=>(0,T.jsxs)(`button`,{onClick:()=>V(e.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border transition-colors ${M===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,T.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full ${e.connected?`bg-accent-green`:`bg-dark-muted`}`}),e.name]},e.id)),(0,T.jsxs)(`button`,{onClick:H,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,T.jsx)(d,{className:`w-3 h-3`}),` `,e(`channels.createShort`)]})]})]}),A.length===0&&M===``&&(0,T.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,T.jsx)(`div`,{className:`text-4xl mb-3`,children:S(n)}),(0,T.jsx)(`p`,{className:`text-dark-text font-medium`,children:e(`channels.emptyWithType`,{type:b(n)})}),(0,T.jsx)(`p`,{className:`text-sm text-dark-muted mt-1 mb-4`,children:e(n===`wechat`?`channels.wechatBindHint`:`channels.startWithCreate`)}),n===`wechat`&&(0,T.jsxs)(`button`,{onClick:()=>g(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,T.jsx)(u,{className:`w-4 h-4`}),` `,e(`channels.scanToBind`)]}),(0,T.jsx)(v,{variant:`accent`,onClick:H,leftIcon:(0,T.jsx)(d,{className:`w-4 h-4`}),children:e(`channels.createInstance`)})]}),A.length===1&&M===``&&A[0]&&(0,T.jsx)(j,{channel:A[0],onEdit:()=>V(A[0].id),onDelete:()=>G(A[0].id),onToggle:e=>K(A[0].id,e),onQr:()=>g(A[0]),onTest:()=>y(A[0].id),testResult:E[A[0].id],testing:D===A[0].id}),A.length>1&&M===``&&(0,T.jsx)(`div`,{className:`space-y-3`,children:A.map(e=>(0,T.jsx)(j,{channel:e,onEdit:()=>V(e.id),onDelete:()=>G(e.id),onToggle:t=>K(e.id,t),onQr:()=>g(e),onTest:()=>y(e.id),testResult:E[e.id],testing:D===e.id},e.id))}),M!==``&&(R||z)&&(0,T.jsx)(ee,{form:P,upd:B,saving:I,editing:!!z,channel:z??void 0,onSave:W,onCancel:U,onDelete:z?()=>G(z.id):void 0,onQr:z?()=>g(z):void 0})]})]}):(0,T.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,T.jsxs)(`div`,{className:`text-center`,children:[(0,T.jsx)(f,{className:`w-12 h-12 mx-auto mb-3 text-dark-muted/40`}),(0,T.jsx)(`p`,{className:`text-dark-muted text-sm`,children:e(`channels.selectTypeHint`)})]})})}function j({channel:e,onEdit:t,onDelete:n,onToggle:i,onQr:a,onTest:d,testResult:f,testing:p}){let{t:h}=m();return(0,T.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,T.jsx)(`div`,{className:`p-5`,children:(0,T.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h3`,{className:`font-medium text-dark-text`,children:e.name}),(0,T.jsxs)(`div`,{className:`flex items-center gap-3 mt-2`,children:[(0,T.jsx)(`span`,{className:`flex items-center gap-1 text-xs ${e.connected?`text-accent-green`:`text-dark-muted`}`,children:e.connected?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(c,{className:`w-3 h-3`}),` `,h(`channels.status.connected`)]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(o,{className:`w-3 h-3`}),` `,h(`channels.status.disconnected`)]})}),(0,T.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`AppID: `,e.appId||`—`]}),e.implementationStatus===`OUTBOUND_ONLY`&&(0,T.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,T.jsx)(l,{className:`w-3 h-3`}),` `,h(`channels.outboundOnlyLabel`)]})]}),f&&(0,T.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,T.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,T.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,T.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,T.jsxs)(`button`,{onClick:a,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,T.jsx)(u,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.qrLogin`)]}),(0,T.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,T.jsx)(`span`,{className:`w-3.5 h-3.5 inline-flex items-center justify-center`,children:`✎`}),` `,h(`channels.actions.edit`)]}),e.enabled&&d&&(0,T.jsxs)(`button`,{onClick:d,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,T.jsx)(r,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.test`)]}),(0,T.jsxs)(`button`,{onClick:n,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,T.jsx)(s,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.delete`)]})]})]})}function ee({form:e,upd:t,saving:n,editing:r,channel:a,onSave:o,onCancel:c,onDelete:l,onQr:d}){let{t:f}=m();return(0,T.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,T.jsx)(`div`,{className:`px-5 py-4 border-b border-dark-border`,children:(0,T.jsx)(`h3`,{className:`font-medium text-dark-text`,children:f(r?`channels.editConfig`:`channels.createConfig`)})}),(0,T.jsxs)(`div`,{className:`p-5 space-y-4`,children:[(0,T.jsx)(M,{label:f(`channels.form.name`),required:!0,children:(0,T.jsx)(`input`,{value:e.name,onChange:e=>t(`name`,e.target.value),placeholder:f(`channels.form.namePlaceholderDev`),className:N})}),(0,T.jsxs)(M,{label:f(`channels.form.credentials`),children:[(0,T.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:f(`channels.form.appId`)}),(0,T.jsx)(`input`,{value:e.appId,onChange:e=>t(`appId`,e.target.value),placeholder:`AppID`,className:N})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`AppSecret`}),(0,T.jsx)(`input`,{type:`password`,value:e.appSecret,onChange:e=>t(`appSecret`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.appSecretValue`),className:N})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`Token`}),(0,T.jsx)(`input`,{value:e.token,onChange:e=>t(`token`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.tokenCallback`),className:N})]}),e.type===`wechat`&&(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`EncodingAESKey`}),(0,T.jsx)(`input`,{value:e.encodingAESKey,onChange:e=>t(`encodingAESKey`,e.target.value),placeholder:f(`channels.form.optionalShort`),className:N})]})]}),e.type===`wechat`&&(0,T.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:f(`channels.form.wechatIlinkHint`)})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-dark-border px-3 py-2.5`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`p`,{className:`text-sm text-dark-text`,children:f(`channels.form.enabled`)}),(0,T.jsx)(`p`,{className:`text-xs text-dark-muted`,children:f(`channels.form.enabledOffHint`)})]}),(0,T.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,T.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&&a?.type===`wechat`&&d&&(0,T.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,T.jsx)(u,{className:`w-4 h-4`}),` `,f(`channels.qrLoginReauth`)]})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 bg-dark-bg/50 border-t border-dark-border`,children:[(0,T.jsx)(`div`,{children:r&&l&&(0,T.jsxs)(`button`,{onClick:l,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,T.jsx)(s,{className:`w-3.5 h-3.5`}),` `,f(`channels.actions.delete`)]})}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`button`,{onClick:c,className:`px-4 py-2 text-sm text-dark-muted hover:text-dark-text transition-colors`,children:f(`channels.actions.cancel`)}),(0,T.jsx)(v,{variant:`accent`,onClick:o,loading:n,disabled:!e.name.trim(),leftIcon:(0,T.jsx)(i,{className:`w-3.5 h-3.5`}),children:f(`channels.save`)})]})]})]})}function M({label:e,required:t,children:n}){return(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:[e,t&&(0,T.jsx)(`span`,{className:`text-accent-red ms-0.5`,children:`*`})]}),n]})}var N=`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`,P=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),F=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)}})),I=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}}})),L=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})),R=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})),z=t((e=>{var t=F().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}})),B=t((e=>{var t=F().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),V=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}})),H=t((e=>{var t=I(),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}}})),U=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]]}})),W=t((e=>{var t=U();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}})),G=t(((e,t)=>{var n=W();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})),K=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),q=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)}})),J=t((e=>{var t=K(),n=q();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}}})),te=t((e=>{var t=F(),n=H(),r=I(),i=J(),a=K(),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}})),Y=t((e=>{var t=F(),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}})),X=t(((e,t)=>{var n=J();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})),Z=t(((e,t)=>{var n=J(),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=J();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=J(),r=F();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=J(),n=X(),r=Z(),i=ne(),a=re(),o=q(),s=F(),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=F(),n=I(),r=L(),i=R(),a=z(),o=B(),s=V(),c=H(),l=G(),u=te(),d=Y(),f=J(),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)}})),Q=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}}})),$=t((e=>{var t=Q();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)}})),se=t((e=>{var t=Q();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}})),ce=e(t((e=>{var t=P(),n=oe(),r=$(),i=se();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),le=2e3,ue=5;function de({channel:e,onClose:t}){let{t:n}=m(),[r,i]=(0,w.useState)(`loading`),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(null),[l,u]=(0,w.useState)(``),d=(0,w.useRef)(null),f=(0,w.useRef)(0),p=(0,w.useRef)(null),_=(0,w.useRef)(!1),v=()=>{p.current&&=(clearTimeout(p.current),null),_.current=!0},b=async e=>{if(d.current)try{await ce.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(!_.current&&s)try{let r=await g.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`)),h.error(n(`channels.bindNoInstance`));return}i(`confirmed`),h.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}_.current||(p.current=setTimeout(x,le))}catch(e){if(f.current++,console.warn(`[WechatQr] poll error (`+f.current+`/5)`,e),f.current>=ue)i(`error`),u(n(`channels.pollFailedRefresh`)),h.error(n(`channels.pollFailedToast`));else if(!_.current){let e=Math.min(1e3*2**f.current,1e4);p.current=setTimeout(x,e)}}},S=()=>{v(),_.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 g.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),h.error(n(`channels.fetchWechatQrFailed`,{error:t}))}},E=()=>{C()};return(0,w.useEffect)(()=>(C(),v),[]),(0,w.useEffect)(()=>(s&&S(),v),[s]),(0,T.jsx)(y,{isOpen:!0,onClose:t,title:n(`channels.bindTitle`,{name:e?.name??n(`channels.typeLabels.wechat`)}),size:`sm`,children:(0,T.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-2`,children:[(0,T.jsxs)(`div`,{className:`relative w-60 h-60 rounded-lg bg-white flex items-center justify-center overflow-hidden`,children:[r===`loading`&&(0,T.jsx)(`span`,{className:`text-dark-muted text-sm`,children:n(`channels.qr.generating`)}),r!==`error`&&r!==`expired`&&(0,T.jsx)(`canvas`,{ref:d,width:240,height:240,className:`w-full h-full object-contain ${r===`waiting`?``:`opacity-30`}`}),r===`scanned`&&(0,T.jsxs)(`div`,{className:`absolute inset-0 bg-black/70 flex flex-col items-center justify-center text-overlay-fg gap-1`,children:[(0,T.jsx)(`span`,{className:`text-2xl`,children:`✓`}),(0,T.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.scanned`)})]}),r===`confirmed`&&(0,T.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,T.jsx)(`span`,{className:`text-2xl`,children:`🎉`}),(0,T.jsx)(`span`,{className:`text-sm font-medium`,children:n(`channels.bindSuccess`)}),(0,T.jsx)(`span`,{className:`text-xs opacity-90`,children:e?n(`channels.connectedReady`,{name:e.name}):n(`channels.createdConnectedReady`)}),(0,T.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,T.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-overlay-fg gap-2`,children:[(0,T.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.expired`)}),(0,T.jsx)(`button`,{onClick:E,className:`text-xs bg-accent-green hover:bg-accent-green px-3 py-1 rounded`,children:n(`channels.clickToRefresh`)})]}),r===`error`&&(0,T.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,T.jsx)(`span`,{className:`text-xs`,children:l||n(`channels.unknownError`)}),(0,T.jsx)(`button`,{onClick:E,className:`text-xs bg-accent-blue hover:bg-accent-blue px-3 py-1 rounded text-accent-fg`,children:n(`channels.retry`)})]})]}),(0,T.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,T.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,T.jsx)(`span`,{children:`🔔`}),` `,n(`channels.openInNewTabFallback`)]})]})})}function fe(){let{t:e}=m(),{load:t,loading:r,qrOpen:i,qrChannel:a,closeQr:o}=C();return(0,w.useEffect)(()=>{t()},[]),(0,T.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-dark-bg text-dark-text`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-dark-border shrink-0`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h2`,{className:`font-semibold text-base`,children:e(`channels.title`)}),(0,T.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`channels.viewSubtitle`)})]}),(0,T.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,T.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,T.jsx)(n,{className:`w-4 h-4 ${r?`animate-spin`:``}`})})})]}),(0,T.jsxs)(`div`,{className:`flex-1 flex min-h-0 overflow-hidden`,children:[(0,T.jsx)(`div`,{className:`w-[260px] shrink-0`,children:(0,T.jsx)(D,{})}),(0,T.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,T.jsx)(A,{})})]}),i&&(0,T.jsx)(de,{channel:a,onClose:o})]})}export{fe as ChannelConfigView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,Bt as n,Dt as r,Ft as i,Sr as a,Ur as o,br as s,g as c,h as l,m as u,n as d,un as f,vr as p,xr as m}from"./icons-BvYhTENi.js";import{t as h}from"./useTranslation-BGmCDuQI.js";import{t as g}from"./cn-rx4uumOJ.js";import{C as _}from"./MessageBubble-CV16DZMG.js";import{t as v}from"./api-CCt9DRQm.js";import{I as y}from"./markdown-DAQZeY5V.js";import{A as b,F 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-BX-d2OBW.js";var O=e(o(),1),k=y(),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}=h(),[i,a]=(0,O.useState)(A),[o,c]=(0,O.useState)(!0),[l,f]=(0,O.useState)(!0),[y,b]=(0,O.useState)(null),[x,S]=(0,O.useState)(null),C=(0,O.useCallback)(async()=>{c(!0);try{let e=await v.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{c(!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 v.pendingArtifacts.approve(t):await v.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 o&&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:()=>f(e=>!e),"aria-expanded":l,className:`flex w-full items-center gap-2 px-3 py-2 text-start`,children:[(0,k.jsx)(l?s: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`)}),o&&(0,k.jsx)(n,{size:12,className:`animate-spin text-dark-muted`})]}),l&&(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)(u,{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:_(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:g(`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)(n,{size:11,className:`animate-spin`}):(0,k.jsx)(m,{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:g(`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)(d,{size:11}),r(`charts.pending.reject`)]})]})]},e.id)})]})]})}var M=`.agent/dashboards/insights.dashboard.json`,N=`q_costs`;function P(){let{t:e}=h(),[r,i]=(0,O.useState)(null),[a,o]=(0,O.useState)(null),[s,c]=(0,O.useState)(null),[l,d]=(0,O.useState)(!1),[f,p]=(0,O.useState)(!0),[m,g]=(0,O.useState)(0),_=(0,O.useCallback)(async()=>{p(!0),c(null);let[t,n]=await Promise.allSettled([v.files.read(M),v.observability.costs()]),r=t.status===`fulfilled`&&t.value.success&&typeof t.value.data==`string`;i(r?t.value.data:null),d(!r),n.status===`fulfilled`&&n.value?.success?o(n.value.data??null):c(n.status===`fulfilled`?n.value?.error||e(`insights.loadFailed`):n.reason instanceof Error?n.reason.message:String(n.reason)),p(!1)},[e]);(0,O.useEffect)(()=>{_()},[_,m]);let y=(0,O.useMemo)(()=>a?{lastUpdatedAt:new Date().toISOString(),values:{[N]:a}}:void 0,[a]);return(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto px-4 pb-4`,children:[(0,k.jsxs)(`header`,{className:`mb-2 flex flex-wrap items-center gap-2`,children:[(0,k.jsx)(`h2`,{className:`text-sm font-medium text-dark-text`,children:e(`insights.title`)}),(0,k.jsx)(`span`,{className:`min-w-0 truncate text-badge text-dark-tertiary`,children:e(`insights.subtitle`)}),(0,k.jsx)(`span`,{className:`flex-1`}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`insights-refresh`,onClick:()=>g(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(`insights.refresh`),children:[f?(0,k.jsx)(n,{size:12,className:`animate-spin`}):(0,k.jsx)(t,{size:12}),e(`insights.refresh`)]})]}),s&&(0,k.jsxs)(`div`,{"data-testid":`insights-error`,className:`mb-2 flex items-start gap-1.5 rounded-md border border-amber-500/30 bg-amber-500/5 px-2 py-1.5 text-badge text-amber-300`,children:[(0,k.jsx)(u,{size:11,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0`,children:s})]}),l?(0,k.jsxs)(`div`,{"data-testid":`insights-missing`,className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-1.5 rounded-lg border border-dashed border-dark-border px-6 text-center`,children:[(0,k.jsx)(`p`,{className:`max-w-md text-xs leading-relaxed text-dark-muted`,children:e(`insights.missing`,{path:M})}),(0,k.jsx)(`code`,{className:`rounded bg-dark-hover px-1.5 py-0.5 font-mono text-badge text-accent-blue`,children:M})]}):r===null?(0,k.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-xs text-dark-muted`,children:[(0,k.jsx)(n,{size:14,className:`animate-spin text-accent-blue`}),e(`insights.loading`)]}):(0,k.jsx)(E,{path:M,content:r,freshness:y})]})}var F=`dsc.charts.artifactOrder`,I=1;function re(){try{let e=localStorage.getItem(F);if(!e)return[];let t=JSON.parse(e);if(typeof t!=`object`||!t)return[];let n=t;return n.v!==I||!Array.isArray(n.order)?[]:n.order.filter(e=>typeof e==`string`&&e!==``)}catch{return[]}}function ie(e){try{localStorage.setItem(F,JSON.stringify({v:I,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 L(e,t,n,r){return S(e,t,n,r)}var R=[],oe=[{command:`dashboard`,hintKey:`chat.visualArtifactsEmptyHint_dashboard`},{command:`analysis`,hintKey:`chat.visualArtifactsEmptyHint_analysis`},{command:`motion`,hintKey:`chat.visualArtifactsEmptyHint_motion`}];function se(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 z({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)(u,{size:14,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0 break-words`,children:e})]})}function B({path:e,content:t,readError:n,freshness:r}){let{t:i}=h();if(n)return(0,k.jsx)(z,{text:n});let a=w(e);return a===`motion`?(0,k.jsx)(D,{path:e,content:t}):a===`dashboard`?(0,k.jsx)(E,{path:e,content:t,freshness:r}):a===`analysis`?(0,k.jsx)(T,{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 V({onOpenInsights:e}){let{t:o}=h(),[s,u]=(0,O.useState)(R),[d,p]=(0,O.useState)(!0),[m,y]=(0,O.useState)(null),[S,T]=(0,O.useState)(0),[E,D]=(0,O.useState)(null),[A,j]=(0,O.useState)(!1),[M,N]=(0,O.useState)(null),[P,F]=(0,O.useState)(null),[I,V]=(0,O.useState)(()=>re()),[H,U]=(0,O.useState)(null),[W,G]=(0,O.useState)(null),[ce,K]=(0,O.useState)(!1),q=(0,O.useCallback)(async()=>{p(!0),y(null);try{let e=await v.visualArtifacts.list();if(!e?.success)throw Error(e?.error||o(`charts.loadFailed`));u(se(e.data?.items??R))}catch(e){y(e instanceof Error?e.message:String(e))}finally{p(!1)}},[o]);(0,O.useEffect)(()=>{q()},[q]);let J=(0,O.useMemo)(()=>ae(s,I,e=>e.logicalId),[s,I]),Y=(0,O.useCallback)(e=>{V(e),ie(e)},[]),le=(0,O.useCallback)(async e=>{K(!0),G(null);try{let t=await v.visualArtifacts.remove(e);if(!t?.success)throw Error(t?.error||o(`charts.removeFailed`));u(t=>t.filter(t=>t.logicalId!==e)),Y(I.filter(t=>t!==e)),U(null)}catch(e){G(e instanceof Error?e.message:String(e))}finally{K(!1)}},[Y,I,o]),ue=(0,O.useCallback)((e,t)=>{let n=J.map(e=>e.logicalId),r=L(n,e,t.id,t.side);r.join()!==n.join()&&Y(r)},[Y,J]),X=x(ue,{vertical:!0}),de=(0,O.useCallback)((e,t)=>{let n=J.map(e=>e.logicalId),r=n.indexOf(e);if(r<0)return;let i=n[r+t];i&&Y(L(n,e,i,t<0?`before`:`after`))},[Y,J]),Z=(0,O.useMemo)(()=>E&&s.some(e=>e.locator.path===E)?E:J[0]?.locator.path??null,[J,s,E]);(0,O.useEffect)(()=>{if(!Z){N(null),F(null);return}let e=!1;return N(null),F(null),(async()=>{try{let t=await v.files.read(Z);if(e)return;t.success&&t.data!==void 0&&t.data!==null?N(String(t.data)):F(t.error||o(`charts.readFailed`))}catch(t){e||F(t instanceof Error?t.message:String(t))}})(),()=>{e=!0}},[Z,o]),(0,O.useEffect)(()=>{if(!A)return;let e=e=>{e.key===`Escape`&&j(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[A]);let Q=(0,O.useMemo)(()=>s.find(e=>e.locator.path===Z)??null,[s,Z]),fe=(0,O.useMemo)(()=>s.map(e=>({path:e.locator.path??``,metadata:e.metadata,version:e.version})),[s]),pe=C(fe),$=e=>e.locator.path?pe(e.locator.path):``,me=Q?$(Q):null,he=X.draggingId?s.find(e=>e.logicalId===X.draggingId)??null:null,ge=Q?.locator.path===void 0?null:(0,k.jsx)(B,{path:Q.locator.path,content:M,readError:P,freshness:Q.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`}),o(`charts.title`)]}),(0,k.jsx)(`p`,{className:`mt-0.5 text-xs leading-relaxed text-dark-muted`,children:o(`charts.subtitle`)})]}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-refresh`,onClick:()=>{q(),T(e=>e+1)},className:`mt-0.5 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:o(`charts.refresh`),children:[d?(0,k.jsx)(n,{size:12,className:`animate-spin`}):(0,k.jsx)(t,{size:12}),o(`charts.refresh`)]})]}),m&&(0,k.jsx)(`div`,{className:`shrink-0 px-4 pt-2`,children:(0,k.jsx)(z,{text:m})}),(0,k.jsx)(ne,{refreshToken:S,onApproved:()=>void q()}),(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 gap-3 p-4`,children:s.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:d?(0,k.jsx)(n,{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:o(`charts.empty`)}),(0,k.jsx)(`ul`,{className:`space-y-1`,children:oe.map(({command:e,hintKey:t})=>(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:[`/`,e]}),(0,k.jsx)(`span`,{className:`min-w-0`,children:o(t)})]},e))}),e&&(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-empty-insights`,onClick:e,className:`mt-1 inline-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`,children:[(0,k.jsx)(l,{size:11}),o(`charts.goInsights`)]})]})}):(0,k.jsxs)(k.Fragment,{children:[(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:[W&&(0,k.jsx)(`div`,{className:`border-b border-dark-border/60 p-1.5`,children:(0,k.jsx)(z,{text:`${o(`charts.removeFailed`)} — ${W}`})}),J.map(e=>{let t=e.locator.path,n=t===Z,r=te(e.type),i=r?o(r):e.type,a=X.draggingId===e.logicalId,s=X.dropTarget?.id===e.logicalId?X.dropTarget.side:null,l=H===e.logicalId;return(0,k.jsxs)(`div`,{"data-panel-id":e.logicalId,"data-testid":`charts-item-row`,"data-dragging":a?`true`:`false`,"data-drop-side":s??void 0,onPointerDown:t=>X.startFromCard(t,e.logicalId),onPointerMove:X.onPointerMove,onPointerUp:X.onPointerUp,onPointerCancel:X.onPointerCancel,className:g(`flex items-stretch border-b border-dark-border/60 transition-colors`,n?`bg-accent-blue/10`:`hover:bg-dark-hover`,a&&`opacity-40`,s===`before`&&`shadow-[inset_0_2px_0_0_theme(colors.accent-blue)]`,s===`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":o(`charts.dragHandle`),title:o(`charts.dragHandle`),onPointerDown:t=>X.startFromGrip(t,e.logicalId),onKeyDown:t=>{let n=t.key===`ArrowUp`,r=t.key===`ArrowDown`;(n||r)&&(t.preventDefault(),de(e.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)(f,{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:o(`charts.removeConfirm`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-confirm`,disabled:ce,onClick:()=>void le(e.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:o(`charts.remove`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-cancel`,onClick:()=>U(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:o(`common.cancel`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-item`,"aria-current":n,onClick:()=>D(t),title:`${t}\n${e.producer.sessionId}`,className:`flex min-w-0 flex-1 items-center gap-2 py-2 pe-1 text-start`,children:[(0,k.jsx)(b,{kind:w(t),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:g(`truncate text-xs`,n?`text-accent-blue`:`text-dark-text`),children:$(e)}),(0,k.jsxs)(`span`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px text-badge text-dark-muted`,children:[i,` v`,e.version]})]}),(0,k.jsxs)(`span`,{className:`mt-0.5 block truncate font-mono text-badge text-dark-muted/70`,children:[ee(t),` · `,_(e.createdAt,Date.now(),o)]})]})]}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove`,onClick:()=>{G(null),U(e.logicalId)},title:o(`charts.removeHint`),"aria-label":o(`charts.removeHint`),className:`flex shrink-0 items-center px-1.5 text-dark-tertiary transition-colors hover:text-accent-red`,children:(0,k.jsx)(c,{size:12})})]})]},e.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:Z??``,children:me??Z??``}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-fullscreen-toggle`,onClick:()=>j(!0),className:`shrink-0 rounded p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:o(`charts.fullscreen`),"aria-label":o(`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:ge})]})]})}),he&&(0,k.jsx)(`div`,{ref:X.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:g(`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`,X.dropTarget?`border-accent-blue/70 ring-1 ring-accent-blue/30`:`border-dark-border`),children:[(0,k.jsx)(f,{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:$(he)})]})}),A&&Q?.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:Q.locator.path,children:me??Q.locator.path}),(0,k.jsxs)(`button`,{type:`button`,onClick:()=>j(!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:o(`charts.exitFullscreen`),children:[(0,k.jsx)(r,{size:12}),o(`charts.exitFullscreen`)]})]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:(0,k.jsx)(B,{path:Q.locator.path,content:M,readError:P,freshness:Q.freshness})})]})]})}function H(){let{t:e}=h(),[t,n]=(0,O.useState)(`artifacts`);return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,k.jsxs)(`div`,{"data-testid":`charts-view-switch`,role:`tablist`,className:`flex shrink-0 items-center gap-1 px-4 pt-3`,children:[(0,k.jsx)(`button`,{type:`button`,role:`tab`,"data-testid":`charts-view-artifacts`,"aria-selected":t===`artifacts`,onClick:()=>n(`artifacts`),className:g(`rounded-md px-2.5 py-1 text-xs transition-colors`,t===`artifacts`?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:e(`charts.viewArtifacts`)}),(0,k.jsx)(`button`,{type:`button`,role:`tab`,"data-testid":`charts-view-insights`,"aria-selected":t===`insights`,onClick:()=>n(`insights`),className:g(`rounded-md px-2.5 py-1 text-xs transition-colors`,t===`insights`?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:e(`charts.viewInsights`)})]}),(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:t===`insights`?(0,k.jsx)(P,{}):(0,k.jsx)(V,{onOpenInsights:()=>n(`insights`)})})]})}export{H as ChartsView};