chainlesschain 0.162.29 → 0.162.31

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 (420) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/AIOps-BqWP6FKu.js +1 -0
  3. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-wRdLFzBQ.js → ActionButton-CXwMgOvX.js} +1 -1
  5. package/src/assets/web-panel/assets/Analytics-DAebZ4IY.js +3 -0
  6. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +1 -0
  7. package/src/assets/web-panel/assets/AppLayout-CYsqYoME.js +9 -0
  8. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +1 -0
  9. package/src/assets/web-panel/assets/Audit-BbTtX1Nf.js +1 -0
  10. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +1 -0
  11. package/src/assets/web-panel/assets/Backup-DgqY2Eb-.js +1 -0
  12. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +1 -0
  13. package/src/assets/web-panel/assets/BaseInput-Cq2ZuSoO.js +1 -0
  14. package/src/assets/web-panel/assets/Chat-D2kqpUyO.js +8 -0
  15. package/src/assets/web-panel/assets/Chat-DDh58PCf.css +1 -0
  16. package/src/assets/web-panel/assets/ChatBubbleRenderer-C-svYkrC.js +1 -0
  17. package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +1 -0
  18. package/src/assets/web-panel/assets/{Checkbox-DoGqmF9g.js → Checkbox-_9swHpyc.js} +1 -1
  19. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +1 -0
  20. package/src/assets/web-panel/assets/Codegen-Cr9YbCPl.js +1 -0
  21. package/src/assets/web-panel/assets/{Col-C-9-jORK.js → Col--wdpCMxx.js} +1 -1
  22. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +1 -0
  23. package/src/assets/web-panel/assets/Community-DuFcVnLu.js +1 -0
  24. package/src/assets/web-panel/assets/{Compact-CemvxU3z.js → Compact-1yzYeT04.js} +1 -1
  25. package/src/assets/web-panel/assets/Compliance-Dq3aU9Df.js +1 -0
  26. package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +1 -0
  27. package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +1 -0
  28. package/src/assets/web-panel/assets/Cowork-CrWcnIg8.js +6 -0
  29. package/src/assets/web-panel/assets/Cron-Bh6fKZ0h.js +2 -0
  30. package/src/assets/web-panel/assets/Crosschain-8ofPaWVW.js +1 -0
  31. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +1 -0
  32. package/src/assets/web-panel/assets/DID-D3EiYm3w.js +2 -0
  33. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +1 -0
  34. package/src/assets/web-panel/assets/Dashboard-BFjEdFne.js +3 -0
  35. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +1 -0
  36. package/src/assets/web-panel/assets/Dropdown-pYVPcP6O.js +1 -0
  37. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +1 -0
  38. package/src/assets/web-panel/assets/EmailListRenderer-zBPodwJ1.js +1 -0
  39. package/src/assets/web-panel/assets/FamilyGuardDashboard-CyQTW6PW.js +1 -0
  40. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +1 -0
  41. package/src/assets/web-panel/assets/Federation-Ctaq3zYq.js +1 -0
  42. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +1 -0
  43. package/src/assets/web-panel/assets/FormItemContext-CWYJCLq1.js +2 -0
  44. package/src/assets/web-panel/assets/GenericCardRenderer-B1g6t9R9.js +1 -0
  45. package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +1 -0
  46. package/src/assets/web-panel/assets/{Git-DPuaGtg7.css → Git-BdHhxBWR.css} +1 -1
  47. package/src/assets/web-panel/assets/Git-DH-v8iwd.js +2 -0
  48. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +1 -0
  49. package/src/assets/web-panel/assets/Governance-jZxXvOs5.js +1 -0
  50. package/src/assets/web-panel/assets/Inference-D07LRghn.js +1 -0
  51. package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +1 -0
  52. package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +1 -0
  53. package/src/assets/web-panel/assets/KnowledgeGraph-DnGtRZhx.js +1 -0
  54. package/src/assets/web-panel/assets/Logs-D2pM9C4W.js +2 -0
  55. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +1 -0
  56. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +1 -0
  57. package/src/assets/web-panel/assets/Marketplace-UyIO7C7r.js +1 -0
  58. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +1 -0
  59. package/src/assets/web-panel/assets/McpTools-Bf1gvZPf.js +7 -0
  60. package/src/assets/web-panel/assets/Memory-C1bWj4RN.js +2 -0
  61. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +1 -0
  62. package/src/assets/web-panel/assets/MobileBridge-C_Ot1H_a.js +3 -0
  63. package/src/assets/web-panel/assets/MobileBridge-zJpPuf4E.css +1 -0
  64. package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +1 -0
  65. package/src/assets/web-panel/assets/MobileProjects-zr-PpsT_.js +1 -0
  66. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +1 -0
  67. package/src/assets/web-panel/assets/Mtc-CnzFUz5J.js +6 -0
  68. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +1 -0
  69. package/src/assets/web-panel/assets/MtcAudit-CAAh99wz.js +19 -0
  70. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +1 -0
  71. package/src/assets/web-panel/assets/Multisig-D6IAg6HE.js +13 -0
  72. package/src/assets/web-panel/assets/NLProgramming-BFMarxb0.js +1 -0
  73. package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +1 -0
  74. package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +1 -0
  75. package/src/assets/web-panel/assets/Notes-BRp9ro3t.js +7 -0
  76. package/src/assets/web-panel/assets/NotificationSettings-C0Au3Cxb.js +1 -0
  77. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +1 -0
  78. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +1 -0
  79. package/src/assets/web-panel/assets/OrderTableRenderer-ISp6btRY.js +1 -0
  80. package/src/assets/web-panel/assets/Organization-DYoxLBRX.js +4 -0
  81. package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +1 -0
  82. package/src/assets/web-panel/assets/{Overflow-BFxt7NlK.js → Overflow-rO8JJWGJ.js} +1 -1
  83. package/src/assets/web-panel/assets/{OverrideContext-C_4H9tGA.js → OverrideContext-C2r4vyBb.js} +1 -1
  84. package/src/assets/web-panel/assets/P2P-DJleeXIK.js +2 -0
  85. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +1 -0
  86. package/src/assets/web-panel/assets/PdhVaultBrowser-DM5qghFp.js +7 -0
  87. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +1 -0
  88. package/src/assets/web-panel/assets/Permissions-D5v4Beya.js +4 -0
  89. package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +1 -0
  90. package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +1 -0
  91. package/src/assets/web-panel/assets/PersonalDataHub-c2ZTX0Pv.js +9 -0
  92. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +1 -0
  93. package/src/assets/web-panel/assets/Pipeline-Crrkyhpz.js +1 -0
  94. package/src/assets/web-panel/assets/Privacy-DZVyrJKa.js +1 -0
  95. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +1 -0
  96. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +1 -0
  97. package/src/assets/web-panel/assets/ProjectInit-DKg7J0gz.js +2 -0
  98. package/src/assets/web-panel/assets/ProjectSettings-3ndmTvVH.js +2 -0
  99. package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +1 -0
  100. package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +1 -0
  101. package/src/assets/web-panel/assets/Projects-ll5wnj2L.js +1 -0
  102. package/src/assets/web-panel/assets/Providers-BeqBVMhB.js +1 -0
  103. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +1 -0
  104. package/src/assets/web-panel/assets/QuickAsk-DKAAxzuA.js +1 -0
  105. package/src/assets/web-panel/assets/Recommend-Byu7IGei.js +1 -0
  106. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +1 -0
  107. package/src/assets/web-panel/assets/Reputation-BKhWAmCu.js +1 -0
  108. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +1 -0
  109. package/src/assets/web-panel/assets/Row-BFtn11O6.js +1 -0
  110. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +1 -0
  111. package/src/assets/web-panel/assets/RssFeed-D5a0PT0k.js +3 -0
  112. package/src/assets/web-panel/assets/Search-DAkuaZNe.js +1 -0
  113. package/src/assets/web-panel/assets/Search-Klk29S7C.css +1 -0
  114. package/src/assets/web-panel/assets/Security-BmrukMHn.css +1 -0
  115. package/src/assets/web-panel/assets/Security-C79Ml2Ms.js +4 -0
  116. package/src/assets/web-panel/assets/Services-BBk_jH6-.js +2 -0
  117. package/src/assets/web-panel/assets/Services-DAnVNhUG.css +1 -0
  118. package/src/assets/web-panel/assets/{Skeleton-DL5ebkDK.js → Skeleton-Cy0VvL0M.js} +1 -1
  119. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +1 -0
  120. package/src/assets/web-panel/assets/Skills-OQNky3uI.js +1 -0
  121. package/src/assets/web-panel/assets/Sla-CbX1f8xN.js +1 -0
  122. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +1 -0
  123. package/src/assets/web-panel/assets/SpeechSettings-BIkoUjws.js +1 -0
  124. package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +1 -0
  125. package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +1 -0
  126. package/src/assets/web-panel/assets/SyncSettings-DG6Swk7G.js +2 -0
  127. package/src/assets/web-panel/assets/Tasks-C9R8sgyi.js +1 -0
  128. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +1 -0
  129. package/src/assets/web-panel/assets/Templates-AaJPeCIz.js +1 -0
  130. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +1 -0
  131. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +1 -0
  132. package/src/assets/web-panel/assets/Tenant-jVFRofww.js +1 -0
  133. package/src/assets/web-panel/assets/Terminal-DHBMzfK6.js +3 -0
  134. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +1 -0
  135. package/src/assets/web-panel/assets/TimelineRenderer-9RFfOHSI.js +1 -0
  136. package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +1 -0
  137. package/src/assets/web-panel/assets/Tokens-CynVae-o.css +1 -0
  138. package/src/assets/web-panel/assets/Tokens-ZTfwuABF.js +1 -0
  139. package/src/assets/web-panel/assets/{Trigger-Rzs-a8Xf.js → Trigger-Xo7uZNQs.js} +1 -1
  140. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +1 -0
  141. package/src/assets/web-panel/assets/Trust-C0cTPYvn.js +1 -0
  142. package/src/assets/web-panel/assets/UkeySign-DmMKio71.js +1 -0
  143. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +1 -0
  144. package/src/assets/web-panel/assets/VideoEditing-DP7B-oGT.js +1 -0
  145. package/src/assets/web-panel/assets/Wallet-B1kZDARo.js +4 -0
  146. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +1 -0
  147. package/src/assets/web-panel/assets/WebAuthn-Bo5kBx27.js +5 -0
  148. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +1 -0
  149. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +1 -0
  150. package/src/assets/web-panel/assets/WorkflowEditor-DGI9SNHH.js +1 -0
  151. package/src/assets/web-panel/assets/{_getTag-BVc6NQ_K.js → _getTag-DnrRH4E6.js} +1 -1
  152. package/src/assets/web-panel/assets/{chat-C7tndXfg.js → chat-y97W1CIG.js} +1 -1
  153. package/src/assets/web-panel/assets/{collapseMotion-DfnRZex1.js → collapseMotion-mxzzcDsg.js} +1 -1
  154. package/src/assets/web-panel/assets/{colors-dUAGx-eS.js → colors-DtTNo0sH.js} +1 -1
  155. package/src/assets/web-panel/assets/{compact-item-X13u92RU.js → compact-item-D0q0exuS.js} +1 -1
  156. package/src/assets/web-panel/assets/createContext-D7pLFs2I.js +1 -0
  157. package/src/assets/web-panel/assets/{debounce-D9xTw4Sx.js → debounce-CFGTTtN3.js} +1 -1
  158. package/src/assets/web-panel/assets/devWarning-BDK34w0I.js +1 -0
  159. package/src/assets/web-panel/assets/echarts-jxgIOFUZ.js +25 -0
  160. package/src/assets/web-panel/assets/{hasIn-DGFXWm7Y.js → hasIn-CXjG5B2j.js} +1 -1
  161. package/src/assets/web-panel/assets/{icons--SBOhPAi.js → icons-DP3uiYxy.js} +4 -4
  162. package/src/assets/web-panel/assets/{index-Deh_HoQ3.js → index-1dwtkcJv.js} +2 -2
  163. package/src/assets/web-panel/assets/index-4mWZhCzz.js +1 -0
  164. package/src/assets/web-panel/assets/index-6np5ESBM.js +1 -0
  165. package/src/assets/web-panel/assets/{index-Bewc5jaO.js → index-8jxbZupG.js} +1 -1
  166. package/src/assets/web-panel/assets/{index-DW1GR68q.js → index-B3y_4OdG.js} +1 -1
  167. package/src/assets/web-panel/assets/index-B4dPdrvC.js +1 -0
  168. package/src/assets/web-panel/assets/index-B6SaRuCI.js +1 -0
  169. package/src/assets/web-panel/assets/index-B9ekWb3I.js +1 -0
  170. package/src/assets/web-panel/assets/index-BJUf19Wd.js +73 -0
  171. package/src/assets/web-panel/assets/index-BO644Q4S.js +21 -0
  172. package/src/assets/web-panel/assets/index-BPXhU-jp.js +7 -0
  173. package/src/assets/web-panel/assets/index-BU944DeT.js +31 -0
  174. package/src/assets/web-panel/assets/index-B_hjkMtX.js +3 -0
  175. package/src/assets/web-panel/assets/index-BdhEYW2a.js +1 -0
  176. package/src/assets/web-panel/assets/{index-DBfn83eM.js → index-BgmvrPJH.js} +1 -1
  177. package/src/assets/web-panel/assets/index-BgyrM0UN.js +19 -0
  178. package/src/assets/web-panel/assets/{index-Cq-fdWWC.js → index-BnLrbXDA.js} +1 -1
  179. package/src/assets/web-panel/assets/{index-C54Ydkuz.js → index-BqVjUN8b.js} +4 -4
  180. package/src/assets/web-panel/assets/index-BzCPx1cq.js +21 -0
  181. package/src/assets/web-panel/assets/index-CFsPe2N7.js +3 -0
  182. package/src/assets/web-panel/assets/{index-C14mc-46.js → index-CKrbutAQ.js} +1 -1
  183. package/src/assets/web-panel/assets/index-CSdhC7Qo.js +1 -0
  184. package/src/assets/web-panel/assets/{index-BqX3jeij.js → index-Cbqu804A.js} +1 -1
  185. package/src/assets/web-panel/assets/{index-CvlrcZKy.js → index-CkGFqlYX.js} +4 -4
  186. package/src/assets/web-panel/assets/{index-CfX1DEtk.css → index-Cq93VfoF.css} +1 -1
  187. package/src/assets/web-panel/assets/index-Ct6xtKkc.js +1 -0
  188. package/src/assets/web-panel/assets/index-DY6KLlgG.js +1 -0
  189. package/src/assets/web-panel/assets/index-D_4WcI1V.js +13 -0
  190. package/src/assets/web-panel/assets/{index-Ced-t9AY.js → index-DjCawXk1.js} +3 -3
  191. package/src/assets/web-panel/assets/index-Dr45Nm9V.js +55 -0
  192. package/src/assets/web-panel/assets/index-EaIfumgW.js +1 -0
  193. package/src/assets/web-panel/assets/index-POaFzYGS.js +1 -0
  194. package/src/assets/web-panel/assets/index-TrBGgrwG.js +1 -0
  195. package/src/assets/web-panel/assets/{index-DrH9uW99.js → index-YWOEx3rP.js} +2 -2
  196. package/src/assets/web-panel/assets/{index-DZMiVgXE.js → index-_3wPBMKt.js} +1 -1
  197. package/src/assets/web-panel/assets/{index-CBnkvGxd.js → index-aarO4HT9.js} +1 -1
  198. package/src/assets/web-panel/assets/index-bVJvqDAz.js +1 -0
  199. package/src/assets/web-panel/assets/{index-BipKV1Yr.js → index-gFLQe31v.js} +2 -2
  200. package/src/assets/web-panel/assets/index-kvV0f4tV.js +12 -0
  201. package/src/assets/web-panel/assets/index-qoB3whR9.js +12 -0
  202. package/src/assets/web-panel/assets/{initDefaultProps-B8zdOlFC.js → initDefaultProps-BnXISaAa.js} +1 -1
  203. package/src/assets/web-panel/assets/{isPlainObject-_gz-soRW.js → isPlainObject-BWRMT62c.js} +1 -1
  204. package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +1 -0
  205. package/src/assets/web-panel/assets/motion-ChY7C0zJ.js +11 -0
  206. package/src/assets/web-panel/assets/{move-BioqdqDn.js → move-ByFZMFM5.js} +1 -1
  207. package/src/assets/web-panel/assets/{mtc-parser-Cc3pB9Xm.js → mtc-parser-BbAbUB-9.js} +1 -1
  208. package/src/assets/web-panel/assets/{omit-C1hn14Vc.js → omit-BYeliY1H.js} +1 -1
  209. package/src/assets/web-panel/assets/{pickAttrs-DgVG8oMj.js → pickAttrs-B9dcAKnu.js} +1 -1
  210. package/src/assets/web-panel/assets/{placementArrow-cJY6hoXZ.js → placementArrow-D3F_txz7.js} +1 -1
  211. package/src/assets/web-panel/assets/{responsiveObserve-DbUdURRx.js → responsiveObserve-ClkwY7wS.js} +1 -1
  212. package/src/assets/web-panel/assets/{slide-C2OEWnC4.js → slide-BNgy2Eea.js} +1 -1
  213. package/src/assets/web-panel/assets/{statusUtils-DghgcGqm.js → statusUtils-Bv3heMCD.js} +1 -1
  214. package/src/assets/web-panel/assets/{styleChecker-GoQ7uwU1.js → styleChecker-DVdlHbQm.js} +1 -1
  215. package/src/assets/web-panel/assets/useFlexGapSupport-alrRY5BK.js +1 -0
  216. package/src/assets/web-panel/assets/{useFs-CZCJDMup.js → useFs-CcVh0-Vu.js} +1 -1
  217. package/src/assets/web-panel/assets/{useMergedState-WwedrFR0.js → useMergedState-Cl2q1fes.js} +1 -1
  218. package/src/assets/web-panel/assets/{usePersonalDataHub-BjAS9b7w.js → usePersonalDataHub-CkkHPhyq.js} +1 -1
  219. package/src/assets/web-panel/assets/{useRefs-Cdq8EWeF.js → useRefs-DD9q4mOT.js} +1 -1
  220. package/src/assets/web-panel/assets/{useState-DGS1NOyn.js → useState-BK4hy8Ma.js} +1 -1
  221. package/src/assets/web-panel/assets/vendor-BvqAck49.js +42 -0
  222. package/src/assets/web-panel/assets/vnode-DWi0X9WN.js +1 -0
  223. package/src/assets/web-panel/assets/{zoom-CzyiNxpd.js → zoom-DCbqxxLH.js} +1 -1
  224. package/src/assets/web-panel/index.html +4 -4
  225. package/src/commands/agent.js +306 -1
  226. package/src/commands/ask.js +35 -1
  227. package/src/commands/checkpoint.js +239 -0
  228. package/src/commands/cost.js +114 -0
  229. package/src/commands/session.js +22 -2
  230. package/src/index.js +4 -0
  231. package/src/lib/file-checkpoint.js +300 -0
  232. package/src/lib/llm-pricing.js +227 -0
  233. package/src/lib/personal-data-hub-wiring.js +30 -0
  234. package/src/lib/recent-session.js +72 -0
  235. package/src/lib/session-picker.js +68 -0
  236. package/src/repl/agent-repl.js +58 -2
  237. package/src/repl/chat-repl.js +16 -1
  238. package/src/runtime/agent-core.js +68 -31
  239. package/src/runtime/fallback-model.js +109 -0
  240. package/src/runtime/file-ref-expander.js +258 -0
  241. package/src/runtime/headless-runner.js +576 -0
  242. package/src/runtime/headless-stream.js +302 -0
  243. package/src/runtime/policies/agent-policy.js +6 -0
  244. package/src/runtime/quiet-stdout.js +35 -0
  245. package/src/runtime/system-prompt.js +60 -0
  246. package/src/assets/web-panel/assets/AIOps-BWWsdf3s.js +0 -1
  247. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +0 -1
  248. package/src/assets/web-panel/assets/Analytics-C1-TXmTC.css +0 -1
  249. package/src/assets/web-panel/assets/Analytics-CU1ellhG.js +0 -3
  250. package/src/assets/web-panel/assets/AppLayout-9pWRQa_t.css +0 -1
  251. package/src/assets/web-panel/assets/AppLayout-cXY-mRTd.js +0 -3
  252. package/src/assets/web-panel/assets/Audit-6ZMsXmrO.css +0 -1
  253. package/src/assets/web-panel/assets/Audit-CtQuC6zy.js +0 -1
  254. package/src/assets/web-panel/assets/Backup-CY9QozR7.css +0 -1
  255. package/src/assets/web-panel/assets/Backup-WeATa8CV.js +0 -1
  256. package/src/assets/web-panel/assets/BaseInput-BCu2Cejw.js +0 -1
  257. package/src/assets/web-panel/assets/Chat-Bj0XPlH8.js +0 -7
  258. package/src/assets/web-panel/assets/Chat-IlrLB9ZV.css +0 -1
  259. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpp2sN9W.js +0 -1
  260. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +0 -1
  261. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +0 -1
  262. package/src/assets/web-panel/assets/Codegen-PeBhNei5.js +0 -1
  263. package/src/assets/web-panel/assets/Community-BvaB_Wcs.js +0 -1
  264. package/src/assets/web-panel/assets/Community-C2RejeOY.css +0 -1
  265. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +0 -1
  266. package/src/assets/web-panel/assets/Compliance-DjquEqsU.js +0 -1
  267. package/src/assets/web-panel/assets/Cowork-Bv6Tm40_.js +0 -6
  268. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +0 -1
  269. package/src/assets/web-panel/assets/Cron-D9fPIXV8.js +0 -2
  270. package/src/assets/web-panel/assets/Crosschain-C0WilDBF.js +0 -1
  271. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +0 -1
  272. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +0 -1
  273. package/src/assets/web-panel/assets/DID-CiGeAI1K.js +0 -2
  274. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +0 -1
  275. package/src/assets/web-panel/assets/Dashboard-zqQuizB8.js +0 -3
  276. package/src/assets/web-panel/assets/Dropdown-_Mjb8yOR.js +0 -1
  277. package/src/assets/web-panel/assets/EmailListRenderer-C369EVhV.js +0 -1
  278. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +0 -1
  279. package/src/assets/web-panel/assets/FamilyGuardDashboard-D8WsrCmn.js +0 -1
  280. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +0 -1
  281. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +0 -1
  282. package/src/assets/web-panel/assets/Federation-Dq7CrAzj.js +0 -1
  283. package/src/assets/web-panel/assets/FormItemContext-C7TvuLVK.js +0 -1
  284. package/src/assets/web-panel/assets/GenericCardRenderer-BJUR1Emh.js +0 -1
  285. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +0 -1
  286. package/src/assets/web-panel/assets/Git-B5MdAp15.js +0 -2
  287. package/src/assets/web-panel/assets/Governance-BIbPWlSM.js +0 -1
  288. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +0 -1
  289. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +0 -1
  290. package/src/assets/web-panel/assets/Inference-vOz9J05E.js +0 -1
  291. package/src/assets/web-panel/assets/KnowledgeGraph-B_vUO-Td.js +0 -1
  292. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +0 -1
  293. package/src/assets/web-panel/assets/Logs-BwPfxX3p.js +0 -2
  294. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +0 -1
  295. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +0 -1
  296. package/src/assets/web-panel/assets/Marketplace-T5HNwUjX.js +0 -1
  297. package/src/assets/web-panel/assets/McpTools-CDjHmzxH.css +0 -1
  298. package/src/assets/web-panel/assets/McpTools-CuKeBPxy.js +0 -5
  299. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +0 -1
  300. package/src/assets/web-panel/assets/Memory-DmRW_sTE.js +0 -2
  301. package/src/assets/web-panel/assets/MobileBridge-DK2N_MJA.js +0 -3
  302. package/src/assets/web-panel/assets/MobileBridge-DwxX55b_.css +0 -1
  303. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +0 -1
  304. package/src/assets/web-panel/assets/MobileProjects-wl3bXCnJ.js +0 -1
  305. package/src/assets/web-panel/assets/Mtc-C8e0941i.js +0 -6
  306. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +0 -1
  307. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +0 -1
  308. package/src/assets/web-panel/assets/MtcAudit-Cwigy2IR.js +0 -19
  309. package/src/assets/web-panel/assets/Multisig-BSfh_ncy.js +0 -7
  310. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +0 -1
  311. package/src/assets/web-panel/assets/NLProgramming-BwzJAfJg.js +0 -1
  312. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +0 -1
  313. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +0 -1
  314. package/src/assets/web-panel/assets/Notes-uilHH6hE.js +0 -7
  315. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +0 -1
  316. package/src/assets/web-panel/assets/NotificationSettings-DvM3DTPW.js +0 -1
  317. package/src/assets/web-panel/assets/OrderTableRenderer-BIEm3hZl.js +0 -1
  318. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +0 -1
  319. package/src/assets/web-panel/assets/Organization-BX-cIO8M.css +0 -1
  320. package/src/assets/web-panel/assets/Organization-zxWoIwYM.js +0 -4
  321. package/src/assets/web-panel/assets/P2P-BsbToYKZ.js +0 -2
  322. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +0 -1
  323. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +0 -1
  324. package/src/assets/web-panel/assets/PdhVaultBrowser-VU8vfhsS.js +0 -7
  325. package/src/assets/web-panel/assets/Permissions-C10Sd26B.js +0 -4
  326. package/src/assets/web-panel/assets/Permissions-C9WlkGl-.css +0 -1
  327. package/src/assets/web-panel/assets/PersonalDataHub-Bz5u9Gth.css +0 -1
  328. package/src/assets/web-panel/assets/PersonalDataHub-edJB7VeU.js +0 -2
  329. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +0 -1
  330. package/src/assets/web-panel/assets/Pipeline-qNmVxn5A.js +0 -1
  331. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +0 -1
  332. package/src/assets/web-panel/assets/Privacy-h78XF7eO.js +0 -1
  333. package/src/assets/web-panel/assets/ProjectInit-C9-vm1no.js +0 -2
  334. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +0 -1
  335. package/src/assets/web-panel/assets/ProjectSettings-DpDNsQTb.js +0 -2
  336. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +0 -1
  337. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +0 -1
  338. package/src/assets/web-panel/assets/Projects-CwU3W4RD.js +0 -1
  339. package/src/assets/web-panel/assets/Providers-BNI-WkmA.css +0 -1
  340. package/src/assets/web-panel/assets/Providers-C3KZlUEI.js +0 -1
  341. package/src/assets/web-panel/assets/QuickAsk-CILvLGze.js +0 -1
  342. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +0 -1
  343. package/src/assets/web-panel/assets/Recommend-XfFlk3BY.js +0 -1
  344. package/src/assets/web-panel/assets/Reputation-BqmWvaMD.js +0 -1
  345. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +0 -1
  346. package/src/assets/web-panel/assets/Row-BEbjCI_X.js +0 -1
  347. package/src/assets/web-panel/assets/RssFeed-BlFC20eg.css +0 -1
  348. package/src/assets/web-panel/assets/RssFeed-CFukIl-a.js +0 -3
  349. package/src/assets/web-panel/assets/Search-B6RalzTB.css +0 -1
  350. package/src/assets/web-panel/assets/Search-dVPkf1o2.js +0 -1
  351. package/src/assets/web-panel/assets/Security-13K57V_v.css +0 -1
  352. package/src/assets/web-panel/assets/Security-DlRFaUrn.js +0 -4
  353. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +0 -1
  354. package/src/assets/web-panel/assets/Services-DKy7AjpA.js +0 -2
  355. package/src/assets/web-panel/assets/Skills-BEqnpg2j.js +0 -1
  356. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +0 -1
  357. package/src/assets/web-panel/assets/Sla-CZ9_lzPI.js +0 -1
  358. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +0 -1
  359. package/src/assets/web-panel/assets/SpeechSettings-DVSY_ehZ.js +0 -1
  360. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +0 -1
  361. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +0 -1
  362. package/src/assets/web-panel/assets/SyncSettings-DgvsRpGt.js +0 -1
  363. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +0 -1
  364. package/src/assets/web-panel/assets/Tasks-L5qXKsxK.js +0 -1
  365. package/src/assets/web-panel/assets/Templates-BWTV8-2E.css +0 -1
  366. package/src/assets/web-panel/assets/Templates-DR4VBx7q.js +0 -1
  367. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +0 -1
  368. package/src/assets/web-panel/assets/Tenant-jMyaK184.js +0 -1
  369. package/src/assets/web-panel/assets/Terminal-DA5gjCiE.js +0 -3
  370. package/src/assets/web-panel/assets/Terminal-G1DrFtKr.css +0 -1
  371. package/src/assets/web-panel/assets/TimelineRenderer-BM17JHyr.js +0 -1
  372. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +0 -1
  373. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +0 -1
  374. package/src/assets/web-panel/assets/Tokens-CCJIrnhi.js +0 -1
  375. package/src/assets/web-panel/assets/Trust-BHeJEfNG.js +0 -1
  376. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +0 -1
  377. package/src/assets/web-panel/assets/UkeySign-DjcIVRk4.js +0 -1
  378. package/src/assets/web-panel/assets/VideoEditing-BPhptg3q.js +0 -1
  379. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +0 -1
  380. package/src/assets/web-panel/assets/Wallet-D_xDgfaz.js +0 -4
  381. package/src/assets/web-panel/assets/Wallet-gR0ZvZbK.css +0 -1
  382. package/src/assets/web-panel/assets/WebAuthn-SSh5VhVO.css +0 -1
  383. package/src/assets/web-panel/assets/WebAuthn-pd961lgM.js +0 -5
  384. package/src/assets/web-panel/assets/WorkflowEditor-BmXDUZ8M.js +0 -1
  385. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +0 -1
  386. package/src/assets/web-panel/assets/createContext-BBLoTzN8.js +0 -1
  387. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +0 -1
  388. package/src/assets/web-panel/assets/echarts-Dj_pBaVI.js +0 -19
  389. package/src/assets/web-panel/assets/favicon-FSU2gSy6.ico +0 -0
  390. package/src/assets/web-panel/assets/index-1xUFGcnI.js +0 -21
  391. package/src/assets/web-panel/assets/index-4BeUpRaU.js +0 -1
  392. package/src/assets/web-panel/assets/index-AVHrO1io.js +0 -21
  393. package/src/assets/web-panel/assets/index-B2fc2n_u.js +0 -3
  394. package/src/assets/web-panel/assets/index-B5aXiiOG.js +0 -1
  395. package/src/assets/web-panel/assets/index-B78VsLFL.js +0 -1
  396. package/src/assets/web-panel/assets/index-BECv44dY.js +0 -12
  397. package/src/assets/web-panel/assets/index-BGn5-2TK.js +0 -1
  398. package/src/assets/web-panel/assets/index-BM9IHnrf.js +0 -13
  399. package/src/assets/web-panel/assets/index-BlMshk9V.js +0 -1
  400. package/src/assets/web-panel/assets/index-BoWoWh9f.js +0 -19
  401. package/src/assets/web-panel/assets/index-Bt79ud6Y.js +0 -1
  402. package/src/assets/web-panel/assets/index-CO9Tt0Bo.js +0 -1
  403. package/src/assets/web-panel/assets/index-CSZvB2uy.js +0 -12
  404. package/src/assets/web-panel/assets/index-CjeazYU2.js +0 -1
  405. package/src/assets/web-panel/assets/index-Cw-TEBru.js +0 -1
  406. package/src/assets/web-panel/assets/index-CyObfnlZ.js +0 -3
  407. package/src/assets/web-panel/assets/index-D0d2TS5o.js +0 -69
  408. package/src/assets/web-panel/assets/index-DV3zNhRX.js +0 -1
  409. package/src/assets/web-panel/assets/index-DnHElN_A.js +0 -7
  410. package/src/assets/web-panel/assets/index-DspW4reY.js +0 -55
  411. package/src/assets/web-panel/assets/index-DxUFdvJ5.js +0 -1
  412. package/src/assets/web-panel/assets/index-La4F-U-s.js +0 -1
  413. package/src/assets/web-panel/assets/index-azbNWBMo.js +0 -1
  414. package/src/assets/web-panel/assets/index-squRDiXd.js +0 -31
  415. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +0 -1
  416. package/src/assets/web-panel/assets/motion-ChVLXdRp.js +0 -11
  417. package/src/assets/web-panel/assets/useFlexGapSupport-CzD0s7wN.js +0 -1
  418. package/src/assets/web-panel/assets/vendor-DhFY8mDK.js +0 -1
  419. package/src/assets/web-panel/assets/vnode-CnXQ7gJ2.js +0 -1
  420. package/src/assets/web-panel/assets/warning-Pq00owYb.js +0 -1
@@ -1 +0,0 @@
1
- import{_ as _t,u as gt,b as kt,E as xt,d as h}from"./index-D0d2TS5o.js";import{s as Je}from"./community-parser-CO25nZFt.js";import{R as ht,aX as Ct,as as St,aY as Me,f as Be,x as $t,am as Tt,aC as It}from"./icons--SBOhPAi.js";import{o as zt,M as d,R as g,P as i,c as o,N as l,Q as S,S as y,K as b,r as k,L as u,O as m,u as x,F,Y as D,_ as At,f as P,a as Pe}from"./vendor-DhFY8mDK.js";function N(n){const r=Je(n);if(!r)return null;try{return JSON.parse(r)}catch{}const a=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!a)return null;try{return JSON.parse(a[0])}catch{return null}}const me=Object.freeze(["gold","silver","bronze"]),ze=Object.freeze(["active","expired","terminated"]),pe=Object.freeze(["availability","response_time","throughput","error_rate"]),se=Object.freeze(["minor","moderate","major","critical"]),Ft=Object.freeze(["open","acknowledged","resolved","waived"]);function p(n,r=0){return typeof n=="number"&&Number.isFinite(n)?n:r}function W(n){if(!n)return{noDb:!1,error:""};const r=Je(n),a=/Database not available/i.test(r);return{noDb:a,error:a?"Database not available":""}}function wt(n,r=0){if(!n||typeof n!="object")return null;const a=n.name||"";return a?{key:a,name:a,availability:p(n.availability,0),maxResponseTime:p(n.maxResponseTime,0),minThroughput:p(n.minThroughput,0),maxErrorRate:p(n.maxErrorRate,0),compensationRate:p(n.compensationRate,0),_idx:r}:null}function jt(n){const r=N(n);return Array.isArray(r)?r.map(wt).filter(Boolean):[]}function Ot(n){const r={availability:0,maxResponseTime:0,minThroughput:0,maxErrorRate:0,compensationRate:0};return!n||typeof n!="object"||Array.isArray(n)?r:{availability:p(n.availability,0),maxResponseTime:p(n.maxResponseTime,0),minThroughput:p(n.minThroughput,0),maxErrorRate:p(n.maxErrorRate,0),compensationRate:p(n.compensationRate,0)}}function qe(n,r=0){if(!n||typeof n!="object")return null;const a=n.slaId||n.sla_id||"";return a?{key:a,slaId:a,orgId:String(n.orgId??n.org_id??""),tier:String(n.tier||"").toLowerCase(),terms:Ot(n.terms),monthlyFee:p(n.monthlyFee??n.monthly_fee,0),startDate:n.startDate??n.start_date??null,endDate:n.endDate??n.end_date??null,status:String(n.status||"active").toLowerCase(),createdAt:n.createdAt??n.created_at??null,updatedAt:n.updatedAt??n.updated_at??null,_idx:r}:null}function Rt(n){const r=N(n);return Array.isArray(r)?r.map(qe).filter(Boolean):[]}function Dt(n){const r=N(n);return!r||typeof r!="object"||Array.isArray(r)?null:qe(r,0)}function He(n){return!n||typeof n!="object"?null:{count:p(n.count,0),mean:p(n.mean,0),min:p(n.min,0),max:p(n.max,0),p95:p(n.p95,0)}}function Vt(n){const r=N(n);if(!r||typeof r!="object"||Array.isArray(r))return{slaId:"",totalSamples:0,byTerm:{}};const a={};if(r.byTerm&&typeof r.byTerm=="object")for(const[f,_]of Object.entries(r.byTerm)){const w=He(_);w&&(a[f]=w)}return{slaId:String(r.slaId||""),totalSamples:p(r.totalSamples,0),byTerm:a}}function Ke(n,r=0){if(!n||typeof n!="object")return null;const a=n.violationId||n.violation_id||"";return a?{key:a,violationId:a,slaId:String(n.slaId??n.sla_id??""),term:String(n.term||"").toLowerCase(),severity:String(n.severity||"minor").toLowerCase(),expectedValue:p(n.expectedValue??n.expected_value,0),actualValue:p(n.actualValue??n.actual_value,0),deviationPercent:p(n.deviationPercent??n.deviation_percent,0),compensationAmount:typeof n.compensationAmount=="number"?n.compensationAmount:typeof n.compensation_amount=="number"?n.compensation_amount:null,occurredAt:n.occurredAt??n.occurred_at??null,resolvedAt:n.resolvedAt??n.resolved_at??null,v2Status:n.v2Status?String(n.v2Status).toLowerCase():"open",v2Note:n.v2Note??"",_idx:r}:null}function Lt(n){const r=N(n);return Array.isArray(r)?r.map(Ke).filter(Boolean):[]}function Et(n){const r=N(n);return!r||typeof r!="object"||Array.isArray(r)?{slaId:"",checkedAt:null,totalViolations:0,violations:[]}:{slaId:String(r.slaId||""),checkedAt:r.checkedAt??null,totalViolations:p(r.totalViolations,0),violations:Array.isArray(r.violations)?r.violations.map(Ke).filter(Boolean):[]}}function Nt(n){const r=N(n);return!r||typeof r!="object"||Array.isArray(r)?null:{violationId:String(r.violationId||""),slaId:String(r.slaId||""),severity:String(r.severity||""),base:p(r.base,0),multiplier:p(r.multiplier,0),amount:p(r.amount,0)}}const Ut={slaId:"",tier:"",compliance:0,startDate:null,endDate:null,metricsByTerm:{},violations:{total:0,byTerm:{},bySeverity:{},totalCompensation:0}};function Mt(n){const r=JSON.parse(JSON.stringify(Ut));for(const f of pe)r.violations.byTerm[f]=0;for(const f of se)r.violations.bySeverity[f]=0;const a=N(n);if(!a||typeof a!="object"||Array.isArray(a))return r;if(r.slaId=String(a.slaId||""),r.tier=String(a.tier||"").toLowerCase(),r.compliance=p(a.compliance,0),r.startDate=a.startDate??null,r.endDate=a.endDate??null,a.metricsByTerm&&typeof a.metricsByTerm=="object")for(const[f,_]of Object.entries(a.metricsByTerm)){const w=He(_);w&&(r.metricsByTerm[f]=w)}if(a.violations&&typeof a.violations=="object"){if(r.violations.total=p(a.violations.total,0),r.violations.totalCompensation=p(a.violations.totalCompensation,0),a.violations.byTerm&&typeof a.violations.byTerm=="object")for(const[f,_]of Object.entries(a.violations.byTerm))typeof _=="number"&&Number.isFinite(_)&&(r.violations.byTerm[f]=_);if(a.violations.bySeverity&&typeof a.violations.bySeverity=="object")for(const[f,_]of Object.entries(a.violations.bySeverity))typeof _=="number"&&Number.isFinite(_)&&(r.violations.bySeverity[f]=_)}return r}const Bt={totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}};function Pt(n){const r=JSON.parse(JSON.stringify(Bt));for(const f of ze)r.byStatus[f]=0;for(const f of me)r.byTier[f]=0;for(const f of pe)r.violations.byTerm[f]=0;for(const f of se)r.violations.bySeverity[f]=0;for(const f of Ft)r.violations.byStatus[f]=0;const a=N(n);if(!a||typeof a!="object"||Array.isArray(a))return r;if(r.totalContracts=p(a.totalContracts,0),r.activeContracts=p(a.activeContracts,0),r.activeOrgs=p(a.activeOrgs,0),r.maxActiveSlasPerOrg=p(a.maxActiveSlasPerOrg,0),a.byStatus&&typeof a.byStatus=="object")for(const[f,_]of Object.entries(a.byStatus))typeof _=="number"&&Number.isFinite(_)&&(r.byStatus[f]=_);if(a.byTier&&typeof a.byTier=="object")for(const[f,_]of Object.entries(a.byTier))typeof _=="number"&&Number.isFinite(_)&&(r.byTier[f]=_);if(a.violations&&typeof a.violations=="object"){r.violations.total=p(a.violations.total,0),r.violations.totalCompensation=p(a.violations.totalCompensation,0);for(const f of["byTerm","bySeverity","byStatus"])if(a.violations[f]&&typeof a.violations[f]=="object")for(const[_,w]of Object.entries(a.violations[f]))typeof w=="number"&&Number.isFinite(w)&&(r.violations[f][_]=w)}return r}function Ie(n){if(n==null||n==="")return"—";const r=typeof n=="number"?new Date(n):new Date(String(n));return isNaN(r.getTime())?String(n):r.toLocaleString("zh-CN",{hour12:!1})}const Jt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},qt={class:"page-title"},Ht={class:"page-sub"},Kt={class:"tier-head"},Yt={class:"tier-comp"},Gt={class:"tier-terms"},Wt={class:"tier-term"},Qt={class:"tier-term"},Xt={class:"tier-term"},Zt={class:"tier-term"},ea={class:"filter-bar"},ta={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},aa={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},oa={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},la={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},sa={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},na={class:"filter-bar"},ra={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},ia={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ua={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ca={key:0,style:{color:"#faad14","font-weight":"500"}},da={key:1,style:{color:"var(--text-muted)"}},ma={key:7,style:{color:"var(--text-secondary)","font-size":"11px"}},pa={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},fa={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},va={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},ya={key:0,style:{"padding-top":"8px"}},ba={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 10px"}},_a={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ga={key:2,style:{"font-family":"monospace","font-size":"12px"}},ka={key:0,style:{"padding-top":"8px"}},xa={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},ha={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ca={style:{"margin-left":"auto",color:"#ff4d4f","font-weight":"500"}},Sa={key:0,style:{"padding-top":"8px"}},$a={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Ta={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Ia={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},za={key:2,style:{"font-family":"monospace","font-size":"12px"}},Aa={key:0,style:{"padding-top":"8px"}},Fa={style:{"font-family":"monospace","font-size":"12px"}},wa={style:{"font-family":"monospace"}},ja={style:{"font-family":"monospace"}},Oa={style:{color:"#faad14","font-weight":"600","font-family":"monospace","font-size":"14px"}},Ra={__name:"Sla",setup(n){const r=gt(),{t:a}=kt(),f=xt.PRESENTED_IMAGE_SIMPLE,_=k(!1),w=k(!1),fe=k(!1),Ae=k([]),ve=k([]),Fe=k([]),C=k({totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}}),ye=k({noDb:!1,error:""}),we=k("contracts"),Q=k(""),X=k(""),Z=k(""),ne=k(!1),re=k(!1),be=k(!1),_e=k(!1),ge=k(!1),ie=k(!1),$=Pe({orgId:"",tier:"silver",monthlyFee:1e3,durationDays:30}),T=Pe({slaId:null,term:"availability",value:null}),I=k(null),ee=k({slaId:"",totalSamples:0,byTerm:{}}),V=k(null),A=k(null),ke=k(null),O=k(null),Ye=P(()=>[{title:a("sla.contractCols.slaId"),key:"slaId",width:"120px"},{title:a("sla.contractCols.orgId"),key:"orgId",width:"160px"},{title:a("sla.contractCols.tier"),key:"tier",width:"90px"},{title:a("sla.contractCols.status"),key:"status",width:"100px"},{title:a("sla.contractCols.monthlyFee"),key:"monthlyFee",width:"110px"},{title:a("sla.contractCols.endDate"),key:"endDate",width:"160px"},{title:a("sla.contractCols.action"),key:"action",width:"260px"}]),Ge=P(()=>[{title:a("sla.violationCols.id"),key:"violationId",width:"120px"},{title:a("sla.violationCols.term"),key:"term",width:"140px"},{title:a("sla.violationCols.severity"),key:"severity",width:"100px"},{title:a("sla.violationCols.deviation"),key:"deviation",width:"180px"},{title:a("sla.violationCols.expected"),key:"expected",width:"110px"},{title:a("sla.violationCols.actual"),key:"actual",width:"110px"},{title:a("sla.violationCols.compensation"),key:"compensation",width:"110px"},{title:a("sla.violationCols.occurredAt"),key:"occurredAt",width:"160px"},{title:a("sla.violationCols.action"),key:"action",width:"120px"}]),je=P(()=>[{title:a("sla.aggCols.term"),key:"term",width:"140px"},{title:a("sla.aggCols.expected"),key:"expected",width:"110px"},{title:a("sla.aggCols.mean"),key:"mean",width:"110px"},{title:a("sla.aggCols.p95"),key:"p95",width:"110px"},{title:a("sla.aggCols.min"),key:"min",width:"110px"},{title:a("sla.aggCols.max"),key:"max",width:"110px"},{title:a("sla.aggCols.count"),key:"count",width:"90px"}]),We=P(()=>{let e=ve.value;return Q.value&&(e=e.filter(s=>s.tier===Q.value)),X.value&&(e=e.filter(s=>s.status===X.value)),e}),Qe=P(()=>{let e=Fe.value;return Z.value&&(e=e.filter(s=>s.severity===Z.value)),e}),Xe=P(()=>I.value?Object.entries(ee.value.byTerm).map(([e,s])=>({key:e,term:e,expected:Oe(I.value.terms,e),...s})):[]),Ze=P(()=>!A.value||!I.value?[]:Object.entries(A.value.metricsByTerm).map(([e,s])=>({key:e,term:e,expected:Oe(I.value.terms,e),...s})));function Oe(e,s){if(!e)return 0;switch(s){case"availability":return e.availability;case"response_time":return e.maxResponseTime;case"throughput":return e.minThroughput;case"error_rate":return e.maxErrorRate;default:return 0}}function ue(e){return{gold:"gold",silver:"default",bronze:"orange"}[e]||"default"}function Re(e){return{gold:"#faad14",silver:"#8c8c8c",bronze:"#d4a373"}[e]||"#888"}function xe(e){const s=`sla.statusLabels.${e}`,v=a(s);return v===s?e:v}function De(e){return{active:"green",expired:"default",terminated:"red"}[e]||"default"}function et(e){return{active:"#52c41a",expired:"#888",terminated:"#ff4d4f"}[e]||"#888"}function J(e){const s=`sla.termLabels.${e}`,v=a(s);return v===s?e:v}function tt(e){if(!e)return"";const s=`sla.termHints.${e}`,v=a(s);return v===s?"":v}function U(e,s){return typeof s!="number"||!Number.isFinite(s)?"—":e==="availability"||e==="error_rate"?(s*100).toFixed(3)+"%":e==="response_time"?s.toFixed(1)+"ms":e==="throughput"?s.toFixed(0)+" rps":s.toFixed(4)}function q(e){const s=`sla.severityLabels.${e}`,v=a(s);return v===s?e:v}function te(e){return{minor:"default",moderate:"gold",major:"orange",critical:"red"}[e]||"default"}function he(e){return{minor:"#888",moderate:"#faad14",major:"#fa8c16",critical:"#ff4d4f"}[e]||"#888"}function at(e){return e>=.99?"#52c41a":e>=.9?"#1677ff":e>=.7?"#faad14":"#ff4d4f"}function ae(e,s){return s?Math.round(e/s*100):0}async function H(){_.value=!0,ye.value={noDb:!1,error:""};try{const[e,s,v,oe]=await Promise.all([r.execute("sla tiers --json",8e3).catch(()=>({output:""})),r.execute("sla list --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("sla violations --limit 200 --json",1e4).catch(()=>({output:""})),r.execute("sla stats-v2",8e3).catch(()=>({output:""}))]),M=[s,v,oe].map(j=>W(j.output)).find(j=>j.noDb);M&&(ye.value=M),Ae.value=jt(e.output),ve.value=Rt(s.output),Fe.value=Lt(v.output),C.value=Pt(oe.output)}catch(e){h.error(a("sla.msg.loadFailed")+": "+(e?.message||e))}finally{_.value=!1}}async function ot(){if(!$.orgId.trim()){h.warning(a("sla.msg.orgEmpty"));return}w.value=!0;try{const e=$.durationDays*24*60*60*1e3,s=[`sla create "${$.orgId.trim().replace(/"/g,'\\"')}"`,`-t ${$.tier}`,`-d ${e}`,`-f ${$.monthlyFee||0}`,"--json"],{output:v}=await r.execute(s.join(" "),1e4);if(W(v).noDb){h.error(a("sla.msg.needCcInit"));return}const M=Dt(v);if(!M){h.error(a("sla.msg.createFailed")+": "+v.slice(0,120));return}h.success(a("sla.msg.createSuccess",{id:M.slaId.slice(0,8)})),ne.value=!1,Ve(),await H()}catch(e){h.error(a("sla.msg.createFailed")+": "+(e?.message||e))}finally{w.value=!1}}async function lt(){if(!T.slaId){h.warning(a("sla.msg.slaEmpty"));return}if(T.value===null||T.value===void 0){h.warning(a("sla.msg.valueEmpty"));return}fe.value=!0;try{const{output:e}=await r.execute(`sla record ${T.slaId} ${T.term} ${T.value} --json`,8e3);if(W(e).noDb){h.error(a("sla.msg.needCcInit"));return}if(!/"metricId"|"term"/.test(e)){h.error(a("sla.msg.recordFailed")+": "+e.slice(0,120));return}h.success(a("sla.msg.recordSuccess")),re.value=!1,Le()}catch(e){h.error(a("sla.msg.recordFailed")+": "+(e?.message||e))}finally{fe.value=!1}}async function st(e){try{const{output:s}=await r.execute(`sla terminate ${e.slaId}`,8e3);if(W(s).noDb){h.error(a("sla.msg.needCcInit"));return}if(/Failed/i.test(s)&&!/terminated/i.test(s)){h.error(a("sla.msg.terminateFailed")+": "+s.slice(0,120));return}h.success(a("sla.msg.terminateSuccess")),await H()}catch(s){h.error(a("sla.msg.terminateFailed")+": "+(s?.message||s))}}async function nt(e){I.value=e,ee.value={slaId:"",totalSamples:0,byTerm:{}},be.value=!0;try{const{output:s}=await r.execute(`sla metrics ${e.slaId} --json`,8e3);ee.value=Vt(s)}catch(s){h.error(a("sla.msg.loadMetricsFailed")+": "+(s?.message||s))}}async function rt(e){I.value=e,V.value=null,_e.value=!0;try{const{output:s}=await r.execute(`sla check ${e.slaId} --json`,1e4);if(W(s).noDb){h.error(a("sla.msg.needCcInit"));return}V.value=Et(s),V.value.totalViolations>0&&await H()}catch(s){h.error(a("sla.msg.checkFailed")+": "+(s?.message||s))}}async function it(e){I.value=e,A.value=null,ge.value=!0;try{const{output:s}=await r.execute(`sla report ${e.slaId} --json`,1e4);A.value=Mt(s)}catch(s){h.error(a("sla.msg.loadReportFailed")+": "+(s?.message||s))}}async function ut(e){ke.value=e,O.value=null;try{const{output:s}=await r.execute(`sla compensate ${e.violationId} --json`,8e3);if(W(s).noDb){h.error(a("sla.msg.needCcInit"));return}if(O.value=Nt(s),!O.value){h.error(a("sla.msg.compFailed")+": "+s.slice(0,120));return}ie.value=!0,await H()}catch(s){h.error(a("sla.msg.compFailed")+": "+(s?.message||s))}}function ct(e){ke.value=e,O.value={violationId:e.violationId,slaId:e.slaId,severity:e.severity,base:0,multiplier:0,amount:e.compensationAmount||0},ie.value=!0}function Ve(){$.orgId="",$.tier="silver",$.monthlyFee=1e3,$.durationDays=30}function Le(){T.slaId=null,T.term="availability",T.value=null}return zt(H),(e,s)=>{const v=b("a-button"),oe=b("a-space"),M=b("a-alert"),j=b("a-statistic"),L=b("a-card"),R=b("a-col"),ce=b("a-row"),z=b("a-tag"),K=b("a-radio-button"),Ce=b("a-radio-group"),dt=b("a-popconfirm"),de=b("a-table"),Se=b("a-tab-pane"),Y=b("a-progress"),mt=b("a-tabs"),pt=b("a-input"),B=b("a-form-item"),Ee=b("a-select-option"),$e=b("a-select"),Te=b("a-input-number"),Ne=b("a-form"),G=b("a-modal"),E=b("a-descriptions-item"),Ue=b("a-descriptions"),ft=b("a-empty"),vt=b("a-result"),yt=b("a-list-item"),bt=b("a-list");return u(),d("div",null,[g("div",Jt,[g("div",null,[g("h2",qt,i(e.$t("sla.title")),1),g("p",Ht,i(e.$t("sla.subtitle")),1)]),o(oe,null,{default:l(()=>[o(v,{loading:_.value,onClick:H},{icon:l(()=>[o(x(ht))]),default:l(()=>[m(" "+i(e.$t("sla.refresh")),1)]),_:1},8,["loading"]),o(v,{onClick:s[0]||(s[0]=t=>re.value=!0)},{icon:l(()=>[o(x(Ct))]),default:l(()=>[m(" "+i(e.$t("sla.recordMetric")),1)]),_:1}),o(v,{type:"primary",onClick:s[1]||(s[1]=t=>ne.value=!0)},{icon:l(()=>[o(x(St))]),default:l(()=>[m(" "+i(e.$t("sla.create")),1)]),_:1})]),_:1})]),ye.value.noDb?(u(),S(M,{key:0,type:"info","show-icon":"",message:e.$t("sla.noDb.message"),description:e.$t("sla.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),o(ce,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(R,{xs:12,sm:8,lg:5},{default:l(()=>[o(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(j,{title:e.$t("sla.stats.totalContracts"),value:C.value.totalContracts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(x(Me))]),_:1},8,["title","value"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:l(()=>[o(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(j,{title:e.$t("sla.stats.active"),value:C.value.activeContracts,"value-style":{color:C.value.activeContracts>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:l(()=>[o(x(Be))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:l(()=>[o(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(j,{title:e.$t("sla.stats.orgs"),value:C.value.activeOrgs,"value-style":{color:"#722ed1",fontSize:"20px"},suffix:C.value.maxActiveSlasPerOrg?`· cap=${C.value.maxActiveSlasPerOrg}`:""},{prefix:l(()=>[o(x($t))]),_:1},8,["title","value","suffix"])]),_:1})]),_:1}),o(R,{xs:12,sm:8,lg:5},{default:l(()=>[o(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(j,{title:e.$t("sla.stats.violations"),value:C.value.violations.total,"value-style":{color:C.value.violations.total>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:l(()=>[o(x(Tt))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(R,{xs:24,sm:8,lg:4},{default:l(()=>[o(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(j,{title:e.$t("sla.stats.compensation"),value:C.value.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:l(()=>[o(x(It))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),o(L,{title:e.$t("sla.tierCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(ce,{gutter:[12,12]},{default:l(()=>[(u(!0),d(F,null,D(Ae.value,t=>(u(),S(R,{key:t.name,xs:24,sm:8},{default:l(()=>[g("div",{class:"tier-pill",style:At({borderLeftColor:Re(t.name)})},[g("div",Kt,[o(z,{color:ue(t.name),style:{"font-family":"monospace","font-size":"13px"}},{default:l(()=>[m(i(t.name.toUpperCase()),1)]),_:2},1032,["color"]),g("span",Yt,i(e.$t("sla.tierCompRate",{pct:(t.compensationRate*100).toFixed(1)})),1)]),g("div",Gt,[g("span",Wt,i(e.$t("sla.tierTerms.availability",{pct:(t.availability*100).toFixed(2)})),1),g("span",Qt,i(e.$t("sla.tierTerms.p95",{ms:t.maxResponseTime})),1),g("span",Xt,i(e.$t("sla.tierTerms.rps",{n:t.minThroughput})),1),g("span",Zt,i(e.$t("sla.tierTerms.errorRate",{pct:(t.maxErrorRate*100).toFixed(2)})),1)])],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),o(mt,{activeKey:we.value,"onUpdate:activeKey":s[5]||(s[5]=t=>we.value=t),class:"sla-tabs"},{default:l(()=>[o(Se,{key:"contracts",tab:e.$t("sla.tabs.contracts")},{default:l(()=>[g("div",ea,[o(Ce,{value:Q.value,"onUpdate:value":s[2]||(s[2]=t=>Q.value=t),size:"small","button-style":"solid"},{default:l(()=>[o(K,{value:""},{default:l(()=>[m(i(e.$t("sla.filter.allTiers")),1)]),_:1}),(u(!0),d(F,null,D(x(me),t=>(u(),S(K,{key:t,value:t},{default:l(()=>[m(i(t.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(Ce,{value:X.value,"onUpdate:value":s[3]||(s[3]=t=>X.value=t),size:"small"},{default:l(()=>[o(K,{value:""},{default:l(()=>[m(i(e.$t("sla.filter.allStatuses")),1)]),_:1}),(u(!0),d(F,null,D(x(ze),t=>(u(),S(K,{key:t,value:t},{default:l(()=>[m(i(xe(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(de,{columns:Ye.value,"data-source":We.value,pagination:{pageSize:20,showTotal:t=>e.$t("sla.table.contractsSuffix",{n:t})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:c})=>[t.key==="slaId"?(u(),d("span",ta,i(c.slaId.slice(0,12)),1)):y("",!0),t.key==="orgId"?(u(),d("span",aa,i(c.orgId),1)):y("",!0),t.key==="tier"?(u(),S(z,{key:2,color:ue(c.tier),style:{"font-family":"monospace"}},{default:l(()=>[m(i(c.tier.toUpperCase()),1)]),_:2},1032,["color"])):y("",!0),t.key==="status"?(u(),S(z,{key:3,color:De(c.status)},{default:l(()=>[m(i(xe(c.status)),1)]),_:2},1032,["color"])):y("",!0),t.key==="monthlyFee"?(u(),d("span",oa,i(c.monthlyFee.toFixed(2)),1)):y("",!0),t.key==="endDate"?(u(),d("span",la,i(x(Ie)(c.endDate)),1)):y("",!0),t.key==="action"?(u(),d(F,{key:6},[o(v,{size:"small",type:"link",onClick:le=>nt(c)},{default:l(()=>[m(i(e.$t("sla.table.actionMetrics")),1)]),_:1},8,["onClick"]),o(v,{size:"small",type:"link",onClick:le=>rt(c)},{default:l(()=>[m(i(e.$t("sla.table.actionCheck")),1)]),_:1},8,["onClick"]),o(v,{size:"small",type:"link",onClick:le=>it(c)},{default:l(()=>[m(i(e.$t("sla.table.actionReport")),1)]),_:1},8,["onClick"]),c.status==="active"?(u(),S(dt,{key:0,title:e.$t("sla.terminateConfirm.title"),"ok-text":e.$t("sla.terminateConfirm.ok"),"cancel-text":e.$t("sla.terminateConfirm.cancel"),onConfirm:le=>st(c)},{default:l(()=>[o(v,{size:"small",type:"link",danger:""},{default:l(()=>[m(i(e.$t("sla.terminateConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):y("",!0)],64)):y("",!0)]),emptyText:l(()=>[g("div",sa,[o(x(Me),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),m(" "+i(Q.value||X.value?e.$t("sla.table.emptyContractsFiltered"):e.$t("sla.table.emptyContracts")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),o(Se,{key:"violations",tab:e.$t("sla.tabs.violations")},{default:l(()=>[g("div",na,[o(Ce,{value:Z.value,"onUpdate:value":s[4]||(s[4]=t=>Z.value=t),size:"small","button-style":"solid"},{default:l(()=>[o(K,{value:""},{default:l(()=>[m(i(e.$t("sla.filter.allSeverities")),1)]),_:1}),(u(!0),d(F,null,D(x(se),t=>(u(),S(K,{key:t,value:t},{default:l(()=>[m(i(q(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(de,{columns:Ge.value,"data-source":Qe.value,pagination:{pageSize:20,showTotal:t=>e.$t("sla.table.totalSuffix",{n:t})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:c})=>[t.key==="violationId"?(u(),d("span",ra,i(c.violationId.slice(0,12)),1)):y("",!0),t.key==="term"?(u(),S(z,{key:1,color:"default",style:{"font-family":"monospace"}},{default:l(()=>[m(i(J(c.term)),1)]),_:2},1024)):y("",!0),t.key==="severity"?(u(),S(z,{key:2,color:te(c.severity)},{default:l(()=>[m(i(q(c.severity)),1)]),_:2},1032,["color"])):y("",!0),t.key==="deviation"?(u(),S(Y,{key:3,percent:Math.min(100,Math.round(c.deviationPercent)),"stroke-color":he(c.severity),size:"small",format:()=>`${c.deviationPercent.toFixed(1)}%`},null,8,["percent","stroke-color","format"])):y("",!0),t.key==="expected"?(u(),d("span",ia,i(U(c.term,c.expectedValue)),1)):y("",!0),t.key==="actual"?(u(),d("span",ua,i(U(c.term,c.actualValue)),1)):y("",!0),t.key==="compensation"?(u(),d(F,{key:6},[c.compensationAmount!==null?(u(),d("span",ca,i(c.compensationAmount.toFixed(2)),1)):(u(),d("span",da,i(e.$t("sla.table.uncomputed")),1))],64)):y("",!0),t.key==="occurredAt"?(u(),d("span",ma,i(x(Ie)(c.occurredAt)),1)):y("",!0),t.key==="action"?(u(),d(F,{key:8},[c.compensationAmount===null?(u(),S(v,{key:0,size:"small",type:"link",onClick:le=>ut(c)},{default:l(()=>[m(i(e.$t("sla.table.actionComputeComp")),1)]),_:1},8,["onClick"])):(u(),S(v,{key:1,size:"small",type:"link",onClick:le=>ct(c)},{default:l(()=>[m(i(e.$t("sla.table.actionView")),1)]),_:1},8,["onClick"]))],64)):y("",!0)]),emptyText:l(()=>[g("div",pa,[o(x(Be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block",color:"#52c41a"}}),m(" "+i(Z.value?e.$t("sla.table.emptyViolationsFiltered"):e.$t("sla.table.emptyViolations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),o(Se,{key:"breakdown",tab:e.$t("sla.tabs.breakdown")},{default:l(()=>[o(ce,{gutter:[16,16]},{default:l(()=>[o(R,{xs:24,lg:12},{default:l(()=>[o(L,{title:e.$t("sla.breakdown.contractsByStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:l(()=>[(u(!0),d(F,null,D(x(ze),t=>(u(),d("div",{key:t,class:"bd-row"},[o(z,{color:De(t),style:{"min-width":"80px","text-align":"center"}},{default:l(()=>[m(i(xe(t)),1)]),_:2},1032,["color"]),o(Y,{percent:ae(C.value.byStatus[t]||0,C.value.totalContracts),"stroke-color":et(t),format:()=>`${C.value.byStatus[t]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),o(L,{title:e.$t("sla.breakdown.contractsByTier"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[(u(!0),d(F,null,D(x(me),t=>(u(),d("div",{key:t,class:"bd-row"},[o(z,{color:ue(t),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:l(()=>[m(i(t.toUpperCase()),1)]),_:2},1032,["color"]),o(Y,{percent:ae(C.value.byTier[t]||0,C.value.totalContracts),"stroke-color":Re(t),format:()=>`${C.value.byTier[t]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(R,{xs:24,lg:12},{default:l(()=>[o(L,{title:e.$t("sla.breakdown.violationsBySeverity"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:l(()=>[(u(!0),d(F,null,D(x(se),t=>(u(),d("div",{key:t,class:"bd-row"},[o(z,{color:te(t),style:{"min-width":"80px","text-align":"center"}},{default:l(()=>[m(i(q(t)),1)]),_:2},1032,["color"]),o(Y,{percent:ae(C.value.violations.bySeverity[t]||0,C.value.violations.total),"stroke-color":he(t),format:()=>`${C.value.violations.bySeverity[t]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),o(L,{title:e.$t("sla.breakdown.violationsByTerm"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[(u(!0),d(F,null,D(x(pe),t=>(u(),d("div",{key:t,class:"bd-row"},[o(z,{color:"default",style:{"min-width":"110px","text-align":"center","font-family":"monospace","font-size":"11px"}},{default:l(()=>[m(i(J(t)),1)]),_:2},1024),o(Y,{percent:ae(C.value.violations.byTerm[t]||0,C.value.violations.total),"stroke-color":"#fa8c16",format:()=>`${C.value.violations.byTerm[t]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),o(G,{open:ne.value,"onUpdate:open":s[10]||(s[10]=t=>ne.value=t),title:e.$t("sla.create_modal.title"),"confirm-loading":w.value,width:540,"ok-text":e.$t("sla.create_modal.ok"),"cancel-text":e.$t("sla.create_modal.cancel"),onOk:ot,onCancel:Ve},{default:l(()=>[o(Ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(B,{label:e.$t("sla.create_modal.orgLabel"),required:""},{default:l(()=>[o(pt,{value:$.orgId,"onUpdate:value":s[6]||(s[6]=t=>$.orgId=t),placeholder:e.$t("sla.create_modal.orgPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(B,{label:e.$t("sla.create_modal.tierLabel"),required:""},{default:l(()=>[o($e,{value:$.tier,"onUpdate:value":s[7]||(s[7]=t=>$.tier=t)},{default:l(()=>[(u(!0),d(F,null,D(x(me),t=>(u(),S(Ee,{key:t,value:t},{default:l(()=>[m(i(t.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(B,{label:e.$t("sla.create_modal.feeLabel")},{default:l(()=>[o(Te,{value:$.monthlyFee,"onUpdate:value":s[8]||(s[8]=t=>$.monthlyFee=t),min:0,step:100,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"]),o(B,{label:e.$t("sla.create_modal.durationLabel")},{default:l(()=>[o(Te,{value:$.durationDays,"onUpdate:value":s[9]||(s[9]=t=>$.durationDays=t),min:1,step:30,style:{width:"160px"}},null,8,["value"]),g("span",fa,i(e.$t("sla.create_modal.durationHint")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),o(G,{open:re.value,"onUpdate:open":s[14]||(s[14]=t=>re.value=t),title:e.$t("sla.record_modal.title"),"confirm-loading":fe.value,width:540,"ok-text":e.$t("sla.record_modal.ok"),"cancel-text":e.$t("sla.record_modal.cancel"),onOk:lt,onCancel:Le},{default:l(()=>[o(Ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(B,{label:e.$t("sla.record_modal.slaLabel"),required:""},{default:l(()=>[o($e,{value:T.slaId,"onUpdate:value":s[11]||(s[11]=t=>T.slaId=t),placeholder:e.$t("sla.record_modal.slaPlaceholder"),options:ve.value.map(t=>({value:t.slaId,label:`${t.slaId.slice(0,8)} · ${t.orgId} [${t.tier}]`})),"show-search":""},null,8,["value","placeholder","options"])]),_:1},8,["label"]),o(B,{label:e.$t("sla.record_modal.termLabel"),required:""},{default:l(()=>[o($e,{value:T.term,"onUpdate:value":s[12]||(s[12]=t=>T.term=t)},{default:l(()=>[(u(!0),d(F,null,D(x(pe),t=>(u(),S(Ee,{key:t,value:t},{default:l(()=>[m(i(J(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(B,{label:e.$t("sla.record_modal.valueLabel"),required:""},{default:l(()=>[o(Te,{value:T.value,"onUpdate:value":s[13]||(s[13]=t=>T.value=t),step:.01,style:{width:"200px"}},null,8,["value"]),g("div",va,i(tt(T.term)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),o(G,{open:be.value,"onUpdate:open":s[15]||(s[15]=t=>be.value=t),title:e.$t("sla.metrics_modal.title",{id:I.value?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:l(()=>[I.value?(u(),d("div",ya,[o(Ue,{column:2,size:"small",bordered:""},{default:l(()=>[o(E,{label:e.$t("sla.metrics_modal.org")},{default:l(()=>[m(i(I.value.orgId),1)]),_:1},8,["label"]),o(E,{label:e.$t("sla.metrics_modal.tier")},{default:l(()=>[o(z,{color:ue(I.value.tier)},{default:l(()=>[m(i(I.value.tier.toUpperCase()),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(E,{label:e.$t("sla.metrics_modal.samples")},{default:l(()=>[m(i(ee.value.totalSamples),1)]),_:1},8,["label"]),o(E,{label:e.$t("sla.metrics_modal.monthlyFee")},{default:l(()=>[m(i(I.value.monthlyFee.toFixed(2)),1)]),_:1},8,["label"])]),_:1}),g("h4",ba,i(e.$t("sla.metrics_modal.byTerm")),1),Object.keys(ee.value.byTerm).length?(u(),S(de,{key:1,columns:je.value,"data-source":Xe.value,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:c})=>[t.key==="term"?(u(),S(z,{key:0,color:"default",style:{"font-family":"monospace"}},{default:l(()=>[m(i(J(c.term)),1)]),_:2},1024)):y("",!0),t.key==="expected"?(u(),d("span",_a,i(U(c.term,c.expected)),1)):["mean","p95","min","max"].includes(t.key)?(u(),d("span",ga,i(U(c.term,c[t.key])),1)):y("",!0)]),_:1},8,["columns","data-source"])):(u(),S(ft,{key:0,description:e.$t("sla.metrics_modal.empty"),image:x(f)},null,8,["description","image"]))])):y("",!0)]),_:1},8,["open","title"]),o(G,{open:_e.value,"onUpdate:open":s[16]||(s[16]=t=>_e.value=t),title:e.$t("sla.check_modal.title",{id:I.value?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:l(()=>[V.value?(u(),d("div",ka,[o(vt,{status:V.value.totalViolations===0?"success":"warning",title:V.value.totalViolations===0?e.$t("sla.check_modal.noViolations"):e.$t("sla.check_modal.withViolations",{n:V.value.totalViolations}),"sub-title":e.$t("sla.check_modal.checkedAt",{time:x(Ie)(V.value.checkedAt)})},null,8,["status","title","sub-title"]),V.value.totalViolations>0?(u(),S(bt,{key:0,size:"small","data-source":V.value.violations},{renderItem:l(({item:t})=>[o(yt,null,{default:l(()=>[o(z,{color:te(t.severity),style:{"min-width":"50px","text-align":"center"}},{default:l(()=>[m(i(q(t.severity)),1)]),_:2},1032,["color"]),g("span",xa,i(J(t.term)),1),g("span",ha,i(e.$t("sla.check_modal.expectedActual",{expected:U(t.term,t.expectedValue),actual:U(t.term,t.actualValue)})),1),g("span",Ca,i(t.deviationPercent.toFixed(2))+"%",1)]),_:2},1024)]),_:1},8,["data-source"])):y("",!0)])):y("",!0)]),_:1},8,["open","title"]),o(G,{open:ge.value,"onUpdate:open":s[17]||(s[17]=t=>ge.value=t),title:e.$t("sla.report_modal.title",{id:I.value?.slaId?.slice(0,12)||""}),width:720,footer:null},{default:l(()=>[A.value?(u(),d("div",Sa,[o(ce,{gutter:12,style:{"margin-bottom":"16px"}},{default:l(()=>[o(R,{span:8},{default:l(()=>[o(j,{title:e.$t("sla.report_modal.compliance"),value:A.value.compliance*100,suffix:"%",precision:2,"value-style":{color:at(A.value.compliance),fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1}),o(R,{span:8},{default:l(()=>[o(j,{title:e.$t("sla.report_modal.violations"),value:A.value.violations.total,"value-style":{color:"#ff4d4f",fontSize:"20px"}},null,8,["title","value"])]),_:1}),o(R,{span:8},{default:l(()=>[o(j,{title:e.$t("sla.report_modal.compensation"),value:A.value.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),g("h4",$a,i(e.$t("sla.breakdown.violationsBySeverityHeader")),1),(u(!0),d(F,null,D(x(se),t=>(u(),d("div",{key:t,class:"bd-row"},[o(z,{color:te(t),style:{"min-width":"80px","text-align":"center"}},{default:l(()=>[m(i(q(t)),1)]),_:2},1032,["color"]),o(Y,{percent:ae(A.value.violations.bySeverity[t]||0,A.value.violations.total),"stroke-color":he(t),format:()=>`${A.value.violations.bySeverity[t]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),Object.keys(A.value.metricsByTerm).length?(u(),d("h4",Ta,i(e.$t("sla.breakdown.metricsAggregation")),1)):y("",!0),Object.keys(A.value.metricsByTerm).length?(u(),S(de,{key:1,columns:je.value,"data-source":Ze.value,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:t,record:c})=>[t.key==="term"?(u(),S(z,{key:0,color:"default",style:{"font-family":"monospace"}},{default:l(()=>[m(i(J(c.term)),1)]),_:2},1024)):y("",!0),t.key==="expected"?(u(),d("span",Ia,i(U(c.term,c.expected)),1)):["mean","p95","min","max"].includes(t.key)?(u(),d("span",za,i(U(c.term,c[t.key])),1)):y("",!0)]),_:1},8,["columns","data-source"])):y("",!0)])):y("",!0)]),_:1},8,["open","title"]),o(G,{open:ie.value,"onUpdate:open":s[18]||(s[18]=t=>ie.value=t),title:e.$t("sla.compensation_modal.title",{id:ke.value?.violationId?.slice(0,12)||""}),width:540,footer:null},{default:l(()=>[O.value?(u(),d("div",Aa,[o(Ue,{column:2,size:"small",bordered:""},{default:l(()=>[o(E,{label:e.$t("sla.compensation_modal.violationId"),span:2},{default:l(()=>[g("span",Fa,i(O.value.violationId),1)]),_:1},8,["label"]),o(E,{label:e.$t("sla.compensation_modal.severity")},{default:l(()=>[o(z,{color:te(O.value.severity)},{default:l(()=>[m(i(q(O.value.severity)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(E,{label:e.$t("sla.compensation_modal.base")},{default:l(()=>[g("span",wa,i(O.value.base.toFixed(4)),1)]),_:1},8,["label"]),o(E,{label:e.$t("sla.compensation_modal.multiplier")},{default:l(()=>[g("span",ja,"×"+i(O.value.multiplier.toFixed(2)),1)]),_:1},8,["label"]),o(E,{label:e.$t("sla.compensation_modal.amount")},{default:l(()=>[g("span",Oa,i(O.value.amount.toFixed(2)),1)]),_:1},8,["label"])]),_:1})])):y("",!0)]),_:1},8,["open","title"])])}}},Na=_t(Ra,[["__scopeId","data-v-3294250d"]]);export{Na as default};
@@ -1 +0,0 @@
1
- .page-title[data-v-3294250d]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-3294250d]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.sla-tabs[data-v-3294250d] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-3294250d]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.tier-pill[data-v-3294250d]{padding:12px 14px;border-radius:6px;background:#1677ff0a;border:1px solid var(--border-color);border-left:3px solid #1677ff;height:100%}.tier-head[data-v-3294250d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.tier-comp[data-v-3294250d]{color:var(--text-primary);font-size:12px;font-weight:500}.tier-terms[data-v-3294250d]{display:flex;flex-direction:column;gap:4px}.tier-term[data-v-3294250d]{color:var(--text-secondary);font-size:11px;font-family:monospace}.bd-row[data-v-3294250d]{display:flex;align-items:center;margin-bottom:8px}
@@ -1 +0,0 @@
1
- import{_ as D,b as G,u as W,d as O}from"./index-D0d2TS5o.js";import{R as M,S as Q}from"./icons--SBOhPAi.js";import{a as q,r as E,o as X,M as R,R as v,P as c,u as n,c as t,N as a,K as h,L as P,O as u,Q as C,S as A,f as z}from"./vendor-DhFY8mDK.js";const y=Object.freeze({defaultEngine:"webspeech",webSpeech:{lang:"zh-CN"},whisperAPI:{apiKey:"",baseURL:"https://api.openai.com/v1",model:"whisper-1",language:"zh",timeout:6e4},whisperLocal:{serverUrl:"http://localhost:8002",modelSize:"base",device:"auto",timeout:12e4}}),Y=["webspeech","whisper-api","whisper-local"];function Z(g){if(!g)return null;const e=g.trim();try{return JSON.parse(e)}catch{const f=e.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);if(!f)return null;try{return JSON.parse(f[1])}catch{return null}}}function K(g,e){if(typeof g=="number"&&Number.isFinite(g))return g;const f=parseFloat(g);return Number.isFinite(f)?f:e}function ee(g){return JSON.parse(JSON.stringify(g))}function te(g){const e=ee(y);if(!g)return e;const f=g.trim();if(!f||/key not found/i.test(f))return e;const o=Z(f);if(!o||typeof o!="object"||Array.isArray(o))return e;if(typeof o.defaultEngine=="string"&&Y.includes(o.defaultEngine)&&(e.defaultEngine=o.defaultEngine),o.webSpeech&&typeof o.webSpeech=="object"&&typeof o.webSpeech.lang=="string"&&o.webSpeech.lang&&(e.webSpeech.lang=o.webSpeech.lang),o.whisperAPI&&typeof o.whisperAPI=="object"){const l=o.whisperAPI;typeof l.apiKey=="string"&&(e.whisperAPI.apiKey=l.apiKey),typeof l.baseURL=="string"&&l.baseURL&&(e.whisperAPI.baseURL=l.baseURL),typeof l.model=="string"&&l.model&&(e.whisperAPI.model=l.model),typeof l.language=="string"&&l.language&&(e.whisperAPI.language=l.language),l.timeout!==void 0&&(e.whisperAPI.timeout=K(l.timeout,y.whisperAPI.timeout))}if(o.whisperLocal&&typeof o.whisperLocal=="object"){const l=o.whisperLocal;typeof l.serverUrl=="string"&&l.serverUrl&&(e.whisperLocal.serverUrl=l.serverUrl),typeof l.modelSize=="string"&&l.modelSize&&(e.whisperLocal.modelSize=l.modelSize),typeof l.device=="string"&&l.device&&(e.whisperLocal.device=l.device),l.timeout!==void 0&&(e.whisperLocal.timeout=K(l.timeout,y.whisperLocal.timeout))}return e}function T(g,e){const f={};g.defaultEngine!==e.defaultEngine&&(f.defaultEngine=e.defaultEngine);for(const o of["webSpeech","whisperAPI","whisperLocal"]){const l=g[o]||{},i=e[o]||{};for(const m of Object.keys(y[o]))l[m]!==i[m]&&(f[`${o}.${m}`]=i[m])}return f}const ae={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},se={class:"page-title"},le={class:"page-sub"},ie={style:{color:"var(--text-primary)"}},ne={style:{color:"var(--text-muted)","font-size":"11px"}},oe={style:{color:"var(--text-primary)"}},re={style:{color:"var(--text-primary)"}},pe={style:{color:"var(--text-primary)"}},ue={style:{display:"flex",gap:"12px","align-items":"center"}},de={key:0,style:{color:"#faad14","font-size":"12px"}},ce={__name:"SpeechSettings",setup(g){const{t:e}=G(),f=W(),o=E(!1),l=E(!1),i=q(JSON.parse(JSON.stringify(y))),m=E(JSON.parse(JSON.stringify(y))),F=z(()=>[{value:"webspeech",label:e("speechSettings.engineOptions.webspeech")},{value:"whisper-api",label:e("speechSettings.engineOptions.whisper-api")},{value:"whisper-local",label:e("speechSettings.engineOptions.whisper-local")}]),B=z(()=>{const d=`speechSettings.engineHint.${i.defaultEngine}`,s=e(d);return s===d?"":s}),J=z(()=>Object.keys(T(m.value,i)).length>0);function U(d){i.defaultEngine=d.defaultEngine,Object.assign(i.webSpeech,d.webSpeech),Object.assign(i.whisperAPI,d.whisperAPI),Object.assign(i.whisperLocal,d.whisperLocal),m.value=JSON.parse(JSON.stringify(d))}async function k(){o.value=!0;try{const{output:d}=await f.execute("config get speech",1e4);U(te(d))}catch(d){/key not found/i.test(d.message)?U(JSON.parse(JSON.stringify(y))):O.error(e("speechSettings.messages.loadFailed",{err:d.message}))}finally{o.value=!1}}function $(){U(m.value)}async function H(){const d=T(m.value,i),s=Object.keys(d);if(s.length===0){O.info(e("speechSettings.messages.noChanges"));return}l.value=!0;let S=0,_=0;for(const w of s){const b=d[w],L=String(b).replace(/"/g,'\\"'),x=`config set speech.${w} "${L}"`;try{const{output:p,exitCode:N}=await f.execute(x,1e4);N!==0||/error|failed|失败/i.test(p)?(_++,O.error(e("speechSettings.messages.saveItemFailed",{key:w,err:p.slice(0,80)}))):S++}catch(p){_++,O.error(e("speechSettings.messages.saveItemFailed",{key:w,err:p.message}))}}l.value=!1,_===0?(O.success(e("speechSettings.messages.saveOk",{count:S})),m.value=JSON.parse(JSON.stringify(i))):S>0&&(O.warning(e("speechSettings.messages.savePartial",{ok:S,fail:_})),await k())}return X(()=>{k()}),(d,s)=>{const S=h("a-button"),_=h("a-alert"),w=h("a-select"),b=h("a-form-item"),L=h("a-form"),x=h("a-card"),p=h("a-select-option"),N=h("a-input-password"),I=h("a-input"),j=h("a-input-number"),V=h("a-spin");return P(),R("div",null,[v("div",ae,[v("div",null,[v("h2",se,c(n(e)("speechSettings.title")),1),v("p",le,c(n(e)("speechSettings.subtitle")),1)]),t(S,{loading:o.value,onClick:k},{icon:a(()=>[t(n(M))]),default:a(()=>[u(" "+c(n(e)("speechSettings.refresh")),1)]),_:1},8,["loading"])]),t(_,{message:n(e)("speechSettings.alert.message"),description:n(e)("speechSettings.alert.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),t(V,{spinning:o.value},{default:a(()=>[t(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[v("span",ie,[t(n(Q),{style:{"margin-right":"8px"}}),u(c(n(e)("speechSettings.engineCardTitle")),1)])]),default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:a(()=>[t(b,{label:n(e)("speechSettings.engineLabel")},{extra:a(()=>[v("span",ne,c(B.value),1)]),default:a(()=>[t(w,{value:i.defaultEngine,"onUpdate:value":s[0]||(s[0]=r=>i.defaultEngine=r),style:{width:"320px"},disabled:l.value,options:F.value},null,8,["value","disabled","options"])]),_:1},8,["label"])]),_:1})]),_:1}),i.defaultEngine==="webspeech"?(P(),C(x,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[v("span",oe,c(n(e)("speechSettings.webSpeech.cardTitle")),1)]),default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:a(()=>[t(b,{label:n(e)("speechSettings.webSpeech.langLabel")},{default:a(()=>[t(w,{value:i.webSpeech.lang,"onUpdate:value":s[1]||(s[1]=r=>i.webSpeech.lang=r),style:{width:"240px"},disabled:l.value},{default:a(()=>[t(p,{value:"zh-CN"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.zh-CN")),1)]),_:1}),t(p,{value:"zh-TW"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.zh-TW")),1)]),_:1}),t(p,{value:"en-US"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.en-US")),1)]),_:1}),t(p,{value:"en-GB"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.en-GB")),1)]),_:1}),t(p,{value:"ja-JP"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.ja-JP")),1)]),_:1}),t(p,{value:"ko-KR"},{default:a(()=>[u(c(n(e)("speechSettings.webSpeech.langOptions.ko-KR")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):A("",!0),i.defaultEngine==="whisper-api"?(P(),C(x,{key:1,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[v("span",re,c(n(e)("speechSettings.whisperAPI.cardTitle")),1)]),default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:a(()=>[t(b,{label:n(e)("speechSettings.whisperAPI.apiKeyLabel")},{default:a(()=>[t(N,{value:i.whisperAPI.apiKey,"onUpdate:value":s[2]||(s[2]=r=>i.whisperAPI.apiKey=r),placeholder:"sk-...",disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperAPI.baseUrlLabel")},{default:a(()=>[t(I,{value:i.whisperAPI.baseURL,"onUpdate:value":s[3]||(s[3]=r=>i.whisperAPI.baseURL=r),disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperAPI.modelLabel")},{default:a(()=>[t(I,{value:i.whisperAPI.model,"onUpdate:value":s[4]||(s[4]=r=>i.whisperAPI.model=r),disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperAPI.languageLabel")},{default:a(()=>[t(I,{value:i.whisperAPI.language,"onUpdate:value":s[5]||(s[5]=r=>i.whisperAPI.language=r),disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperAPI.timeoutLabel")},{default:a(()=>[t(j,{value:i.whisperAPI.timeout,"onUpdate:value":s[6]||(s[6]=r=>i.whisperAPI.timeout=r),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):A("",!0),i.defaultEngine==="whisper-local"?(P(),C(x,{key:2,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:a(()=>[v("span",pe,c(n(e)("speechSettings.whisperLocal.cardTitle")),1)]),default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:a(()=>[t(b,{label:n(e)("speechSettings.whisperLocal.serverUrlLabel")},{default:a(()=>[t(I,{value:i.whisperLocal.serverUrl,"onUpdate:value":s[7]||(s[7]=r=>i.whisperLocal.serverUrl=r),placeholder:"http://localhost:8002",disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperLocal.modelSizeLabel")},{default:a(()=>[t(w,{value:i.whisperLocal.modelSize,"onUpdate:value":s[8]||(s[8]=r=>i.whisperLocal.modelSize=r),style:{width:"180px"},disabled:l.value},{default:a(()=>[t(p,{value:"tiny"},{default:a(()=>[...s[11]||(s[11]=[u("tiny",-1)])]),_:1}),t(p,{value:"base"},{default:a(()=>[...s[12]||(s[12]=[u("base",-1)])]),_:1}),t(p,{value:"small"},{default:a(()=>[...s[13]||(s[13]=[u("small",-1)])]),_:1}),t(p,{value:"medium"},{default:a(()=>[...s[14]||(s[14]=[u("medium",-1)])]),_:1}),t(p,{value:"large"},{default:a(()=>[...s[15]||(s[15]=[u("large",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperLocal.deviceLabel")},{default:a(()=>[t(w,{value:i.whisperLocal.device,"onUpdate:value":s[9]||(s[9]=r=>i.whisperLocal.device=r),style:{width:"180px"},disabled:l.value},{default:a(()=>[t(p,{value:"auto"},{default:a(()=>[...s[16]||(s[16]=[u("auto",-1)])]),_:1}),t(p,{value:"cpu"},{default:a(()=>[...s[17]||(s[17]=[u("cpu",-1)])]),_:1}),t(p,{value:"cuda"},{default:a(()=>[...s[18]||(s[18]=[u("cuda",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),t(b,{label:n(e)("speechSettings.whisperLocal.timeoutLabel")},{default:a(()=>[t(j,{value:i.whisperLocal.timeout,"onUpdate:value":s[10]||(s[10]=r=>i.whisperLocal.timeout=r),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:l.value},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):A("",!0),v("div",ue,[t(S,{onClick:$,disabled:l.value||o.value},{default:a(()=>[u(c(n(e)("speechSettings.buttons.reset")),1)]),_:1},8,["disabled"]),t(S,{type:"primary",loading:l.value,disabled:!J.value,onClick:H},{default:a(()=>[u(c(n(e)("speechSettings.buttons.save")),1)]),_:1},8,["loading","disabled"]),J.value?(P(),R("span",de,c(n(e)("speechSettings.dirtyHint")),1)):A("",!0)])]),_:1},8,["spinning"])])}}},he=D(ce,[["__scopeId","data-v-578b4107"]]);export{he as default};
@@ -1 +0,0 @@
1
- [data-v-578b4107] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
@@ -1 +0,0 @@
1
- .page-title[data-v-719c2a8b]{margin:0;color:var(--text-primary)}.page-sub[data-v-719c2a8b]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}
@@ -1 +0,0 @@
1
- import{_ as _e,u as ke,d as n}from"./index-D0d2TS5o.js";import{R as he,Z as j,au as te,u as xe,av as Se,am as Ce}from"./icons--SBOhPAi.js";import{o as Pe,M as w,R as f,c as a,N as o,Q as b,S,r as g,K as d,a as oe,f as J,L as i,O as c,u as k,P as v}from"./vendor-DhFY8mDK.js";const Re={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ue={key:0,style:{"margin-top":"16px"}},Ne={key:0},De={key:1,style:{color:"var(--text-secondary)"}},Ae={key:0},Le={key:1,style:{color:"var(--text-secondary)"}},$e={style:{color:"#ff4d4f","word-break":"break-all"}},ze={key:0,style:{"text-align":"center",padding:"30px"}},Ee={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Ve={key:0,style:{"margin-top":"16px"}},Oe={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},We={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"var(--text-primary)","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace"}},Ge={key:0,style:{"text-align":"center",padding:"30px"}},Ie={__name:"SyncSettings",setup(Te){const m=ke(),D=g(!1),A=g(""),O=g(0),W=g(0),L=g(0),h=g(0),G=g(!1),I=g(!1),C=g(""),T=g(""),B=g(!1),P=g([]),re=[{title:"ID",dataIndex:"id",key:"id",width:220,ellipsis:!0},{title:"资源 ID",dataIndex:"resource_id",key:"resource_id",ellipsis:!0},{title:"类型",dataIndex:"resource_type",key:"resource_type",width:120},{title:"操作",key:"action",width:200}];async function $(){D.value=!0,A.value="";try{const t=await m.sendRaw({type:"sync.status"},15e3),e=t?.result;if(!t?.ok||!e?.success)throw new Error(e?.error||t?.error||"获取失败");O.value=Number(e.totalResources??0),W.value=Number(e.pending??0),L.value=Number(e.synced??0),h.value=Number(e.conflicts??0),h.value>0?await se():P.value=[]}catch(t){A.value="获取状态失败:"+(t?.message||String(t))}finally{D.value=!1}}async function se(){B.value=!0;try{const t=await m.sendRaw({type:"sync.conflicts"},15e3),e=Array.isArray(t?.result?.conflicts)?t.result.conflicts:[];P.value=e}catch{P.value=[]}finally{B.value=!1}}async function le(){G.value=!0,T.value="sync.push";try{const t=await m.sendRaw({type:"sync.push"},6e4),e=t?.result;C.value=JSON.stringify(e,null,2),t?.ok&&e?.success?(n.success(`推送完成 (${e.pushed??0} / ${e.total??0})`),await $()):n.error("推送失败:"+(e?.error||t?.error||""))}catch(t){C.value=t?.message||String(t),n.error("推送失败:"+(t?.message||""))}finally{G.value=!1}}async function ne(){I.value=!0,T.value="sync.pull";try{const t=await m.sendRaw({type:"sync.pull"},6e4),e=t?.result;C.value=JSON.stringify(e,null,2),t?.ok&&e?.success?(n.success(`拉取完成 (检查 ${e.checked??0}, 更新 ${e.updated??0})`),await $()):n.error("拉取失败:"+(e?.error||t?.error||""))}catch(t){C.value=t?.message||String(t),n.error("拉取失败:"+(t?.message||""))}finally{I.value=!1}}async function q(t,e){try{const l=await m.sendRaw({type:"sync.resolve",conflictId:t,side:e},3e4),R=l?.result;l?.ok&&R?.success?(n.success(`已用${e==="local"?"本地":"远程"}版本解决`),await $()):n.error("解决失败:"+(R?.error||l?.error||""))}catch(l){n.error("解决失败:"+(l?.message||""))}}const r=oe({configured:!1,maskedPassword:"",form:{url:"",username:"",password:"",remotePath:"/chainlesschain"},status:null,saving:!1,testing:!1,running:!1,busy:J(()=>r.saving||r.testing||r.running)}),ue=J(()=>{const t=r.status?.lastRunStatus;return t==="success"?"green":t==="conflict"?"orange":t==="failed"?"red":"default"}),ie=J(()=>{const t=r.status?.lastRunStatus;return t?t==="success"?"成功":t==="conflict"?"有冲突跳过":t==="failed"?"失败":t:r.configured?"已配置":"未配置"});function de(t){const e=new Date(t);return`${e.toLocaleDateString()} ${e.toLocaleTimeString()}`}async function M(){try{const t=await m.sendRaw({type:"sync.webdav.config-get"},1e4);if(!t||t.ok===!1)return;const e=t.result?.data||{};r.form.url=e.url||"",r.form.username=e.username||"",r.form.remotePath=e.remotePath||"/chainlesschain",r.form.password="",r.maskedPassword=e.password||"",r.configured=!!e.configured,r.status=e.status||null}catch(t){console.warn("[SyncSettings] webdav.config-get failed:",t?.message)}}async function F(){r.saving=!0;try{const t=await m.sendRaw({type:"sync.webdav.config-set",payload:{url:r.form.url.trim(),username:r.form.username,password:r.form.password,remotePath:r.form.remotePath||"/"}},15e3),e=t?.result;t?.ok&&e?.success?(n.success("WebDAV 配置已保存"),r.form.password="",await M()):n.error("保存失败:"+(e?.error||t?.error||"未知错误"))}catch(t){n.error("保存失败:"+(t?.message||""))}finally{r.saving=!1}}async function ce(){r.form.url&&r.form.password&&!r.configured&&await F(),r.testing=!0;try{const t=await m.sendRaw({type:"sync.webdav.test"},3e4),e=t?.result;t?.ok&&e?.success?n.success("WebDAV 连接成功"):n.error("连接失败:"+(e?.error||t?.error||"未知错误"))}catch(t){n.error("连接失败:"+(t?.message||""))}finally{r.testing=!1}}async function fe(){r.running=!0;try{const t=await m.sendRaw({type:"sync.webdav.run"},3e5),e=t?.result;if(t?.ok&&e?.success){const l=`推送 ${e.pushed} / 跳过 ${e.skipped} / 删除 ${e.deleted}`;e.status==="conflict"?n.warning("同步完成(有跳过):"+l):n.success("同步完成:"+l)}else n.error("同步失败:"+(e?.error||t?.error||"未知错误"));await M()}catch(t){n.error("同步失败:"+(t?.message||""))}finally{r.running=!1}}async function me(){try{const t=await m.sendRaw({type:"sync.webdav.config-clear"},5e3),e=t?.result;t?.ok&&e?.success?(n.success("已清除 WebDAV 凭证"),r.form.url="",r.form.username="",r.form.password="",r.form.remotePath="/chainlesschain",r.configured=!1,r.maskedPassword="",r.status=null):n.error("清除失败:"+(e?.error||t?.error||"未知错误"))}catch(t){n.error("清除失败:"+(t?.message||""))}}const s=oe({configured:!1,maskedPassword:"",saving:!1,form:{enabled:!1,autoSync:!1,remoteUrl:"",repoPath:"",authorName:"",authorEmail:"",username:"",password:""}});async function H(){try{const t=await m.sendRaw({type:"git.config-get"},1e4);if(!t||t.ok===!1)return;const e=t.result;if(!e?.success)return;const l=e.data||{};s.form.enabled=!!l.enabled,s.form.autoSync=!!l.autoSync,s.form.remoteUrl=l.remoteUrl||"",s.form.repoPath=l.repoPath||"",s.form.authorName=l.authorName||"",s.form.authorEmail=l.authorEmail||"",s.form.username=l.auth?.username||"",s.form.password="",s.maskedPassword=l.auth?.password||l.auth?.token||"",s.configured=!!l.configured}catch(t){console.warn("[SyncSettings] git.config-get failed:",t?.message)}}async function pe(){s.saving=!0;try{const t={enabled:s.form.enabled,autoSync:s.form.autoSync,remoteUrl:s.form.remoteUrl.trim(),repoPath:s.form.repoPath.trim(),authorName:s.form.authorName,authorEmail:s.form.authorEmail,auth:{username:s.form.username,password:s.form.password}},e=await m.sendRaw({type:"git.config-set",payload:t},15e3),l=e?.result;e?.ok&&l?.success?(n.success("Git 配置已保存"),s.form.password="",await H()):n.error("保存失败:"+(l?.error||e?.error||"未知错误"))}catch(t){n.error("保存失败:"+(t?.message||""))}finally{s.saving=!1}}async function ye(){try{const t=await m.sendRaw({type:"git.config-clear"},5e3),e=t?.result;t?.ok&&e?.success?(n.success("已清除 Git 凭证"),s.form.username="",s.form.password="",s.form.enabled=!1,s.maskedPassword="",s.configured=!1):n.error("清除失败:"+(e?.error||t?.error||"未知错误"))}catch(t){n.error("清除失败:"+(t?.message||""))}}async function K(){await Promise.all([$(),M(),H()])}return Pe(K),(t,e)=>{const l=d("a-button"),R=d("a-alert"),_=d("a-space"),z=d("a-tag"),x=d("a-input"),p=d("a-form-item"),y=d("a-col"),Q=d("a-input-password"),U=d("a-row"),Z=d("a-popconfirm"),X=d("a-form"),E=d("a-descriptions-item"),ge=d("a-descriptions"),N=d("a-card"),Y=d("a-switch"),ee=d("a-spin"),V=d("a-statistic"),ve=d("a-empty"),we=d("a-table");return i(),w("div",null,[f("div",Re,[e[13]||(e[13]=f("div",null,[f("h2",{class:"page-title"},"同步设置"),f("p",{class:"page-sub"},"通过 web-shell sync.* WS topic 直连主进程同步引擎")],-1)),a(l,{type:"primary",ghost:"",loading:D.value,onClick:K},{icon:o(()=>[a(k(he))]),default:o(()=>[e[12]||(e[12]=c(" 刷新 ",-1))]),_:1},8,["loading"])]),a(R,{type:"info","show-icon":"",message:"本页 status / push / pull 通过 web-shell sync.* WS topic 直连 main 进程;WebDAV 在下方独立段",description:"其它 provider(Git / P2P / S3 等)的细粒度配置仍在 V5/V6 桌面 shell。",style:{"margin-bottom":"16px"}}),a(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(k(te)),e[14]||(e[14]=f("span",null,"WebDAV 网盘同步",-1))]),_:1})]),extra:o(()=>[r.configured?(i(),b(z,{key:0,color:ue.value},{default:o(()=>[c(v(ie.value),1)]),_:1},8,["color"])):(i(),b(z,{key:1,color:"default"},{default:o(()=>[...e[15]||(e[15]=[c("未配置",-1)])]),_:1}))]),default:o(()=>[a(X,{model:r.form,layout:"vertical",disabled:r.busy},{default:o(()=>[a(p,{label:"服务器 URL",required:""},{default:o(()=>[a(x,{value:r.form.url,"onUpdate:value":e[0]||(e[0]=u=>r.form.url=u),placeholder:"https://dav.jianguoyun.com/dav/","allow-clear":""},null,8,["value"])]),_:1}),a(U,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"用户名"},{default:o(()=>[a(x,{value:r.form.username,"onUpdate:value":e[1]||(e[1]=u=>r.form.username=u),placeholder:"user@example.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"密码"},{default:o(()=>[a(Q,{value:r.form.password,"onUpdate:value":e[2]||(e[2]=u=>r.form.password=u),placeholder:r.configured?r.maskedPassword||"(已保存,留空保持不变)":"请输入密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1})]),_:1})]),_:1}),a(p,{label:"远端路径"},{default:o(()=>[a(x,{value:r.form.remotePath,"onUpdate:value":e[3]||(e[3]=u=>r.form.remotePath=u),placeholder:"/chainlesschain","allow-clear":""},null,8,["value"])]),_:1}),a(_,{wrap:""},{default:o(()=>[a(l,{type:"primary",loading:r.saving,onClick:F},{default:o(()=>[...e[16]||(e[16]=[c("保存",-1)])]),_:1},8,["loading"]),a(l,{loading:r.testing,onClick:ce},{default:o(()=>[...e[17]||(e[17]=[c("测试连接",-1)])]),_:1},8,["loading"]),a(l,{type:"primary",loading:r.running,disabled:!r.configured,onClick:fe},{icon:o(()=>[a(k(j))]),default:o(()=>[e[18]||(e[18]=c(" 立即同步 ",-1))]),_:1},8,["loading","disabled"]),r.configured?(i(),b(Z,{key:0,title:"确定要清除 WebDAV 凭证吗?已推送到远端的文件不会被删除。","ok-text":"清除","cancel-text":"取消",onConfirm:me},{default:o(()=>[a(l,{danger:""},{default:o(()=>[...e[19]||(e[19]=[c("断开连接",-1)])]),_:1})]),_:1})):S("",!0)]),_:1})]),_:1},8,["model","disabled"]),r.status?(i(),w("div",Ue,[a(ge,{column:2,size:"small",bordered:""},{default:o(()=>[a(E,{label:"上次同步"},{default:o(()=>[r.status.lastSyncAt?(i(),w("span",Ne,v(de(r.status.lastSyncAt)),1)):(i(),w("span",De,"未同步过"))]),_:1}),a(E,{label:"耗时"},{default:o(()=>[r.status.lastRunDurationMs!=null?(i(),w("span",Ae,v(r.status.lastRunDurationMs)+" ms",1)):(i(),w("span",Le,"—"))]),_:1}),a(E,{label:"累积推送",span:2},{default:o(()=>[e[20]||(e[20]=c(" 已推送 ",-1)),f("b",null,v(r.status.itemsPushed),1),e[21]||(e[21]=c(" · 已跳过 ",-1)),f("b",null,v(r.status.itemsSkipped),1),e[22]||(e[22]=c(" · 已删除 ",-1)),f("b",null,v(r.status.itemsDeleted),1)]),_:1}),r.status.lastRunError?(i(),b(E,{key:0,label:"错误",span:2},{default:o(()=>[f("span",$e,v(r.status.lastRunError),1)]),_:1})):S("",!0)]),_:1})])):S("",!0)]),_:1}),a(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(k(xe)),e[23]||(e[23]=f("span",null,"Git 仓库",-1))]),_:1})]),extra:o(()=>[a(z,{color:s.configured&&s.form.enabled?"green":"default"},{default:o(()=>[c(v(s.configured?s.form.enabled?"已启用":"已配置未启用":"未配置"),1)]),_:1},8,["color"])]),default:o(()=>[a(X,{model:s.form,layout:"vertical",disabled:s.saving},{default:o(()=>[a(U,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"启用 Git 同步"},{default:o(()=>[a(Y,{checked:s.form.enabled,"onUpdate:checked":e[4]||(e[4]=u=>s.form.enabled=u)},null,8,["checked"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"自动同步"},{default:o(()=>[a(Y,{checked:s.form.autoSync,"onUpdate:checked":e[5]||(e[5]=u=>s.form.autoSync=u)},null,8,["checked"])]),_:1})]),_:1})]),_:1}),a(p,{label:"远程仓库 URL"},{default:o(()=>[a(x,{value:s.form.remoteUrl,"onUpdate:value":e[6]||(e[6]=u=>s.form.remoteUrl=u),placeholder:"https://github.com/user/repo.git","allow-clear":""},null,8,["value"])]),_:1}),a(p,{label:"本地仓库路径"},{default:o(()=>[a(x,{value:s.form.repoPath,"onUpdate:value":e[7]||(e[7]=u=>s.form.repoPath=u),placeholder:"留空使用默认 (userData/git-repo)","allow-clear":""},null,8,["value"])]),_:1}),a(U,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"作者名"},{default:o(()=>[a(x,{value:s.form.authorName,"onUpdate:value":e[8]||(e[8]=u=>s.form.authorName=u),placeholder:"ChainlessChain User","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"作者邮箱"},{default:o(()=>[a(x,{value:s.form.authorEmail,"onUpdate:value":e[9]||(e[9]=u=>s.form.authorEmail=u),placeholder:"user@chainlesschain.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1})]),_:1}),a(U,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"用户名"},{default:o(()=>[a(x,{value:s.form.username,"onUpdate:value":e[10]||(e[10]=u=>s.form.username=u),placeholder:"GitHub 用户名 / 邮箱","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(p,{label:"密码 / Token",help:s.configured&&!s.form.password?"留空则沿用已保存的值":""},{default:o(()=>[a(Q,{value:s.form.password,"onUpdate:value":e[11]||(e[11]=u=>s.form.password=u),placeholder:s.configured?s.maskedPassword||"(已保存,留空保持不变)":"Personal Access Token 或密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1},8,["help"])]),_:1})]),_:1}),a(R,{type:"warning","show-icon":"",message:"Git 凭证当前以明文存储在 git-config.json — 建议使用 Personal Access Token 而非账号密码,且 token 范围尽量收敛 (repo 即可)。",style:{"margin-bottom":"16px"}}),a(_,{wrap:""},{default:o(()=>[a(l,{type:"primary",loading:s.saving,onClick:pe},{default:o(()=>[...e[24]||(e[24]=[c("保存",-1)])]),_:1},8,["loading"]),s.configured?(i(),b(Z,{key:0,title:"确定要清除 Git 凭证吗?远程仓库 URL / 路径会保留。","ok-text":"清除","cancel-text":"取消",onConfirm:ye},{default:o(()=>[a(l,{danger:""},{default:o(()=>[...e[25]||(e[25]=[c("清除凭证",-1)])]),_:1})]),_:1})):S("",!0)]),_:1})]),_:1},8,["model","disabled"])]),_:1}),a(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(k(te)),e[26]||(e[26]=f("span",null,"同步状态",-1))]),_:1})]),extra:o(()=>[a(z,{color:h.value>0?"red":L.value>0?"green":"default"},{default:o(()=>[c(v(h.value>0?`${h.value} 个冲突`:O.value===0?"无资源":"正常"),1)]),_:1},8,["color"])]),default:o(()=>[D.value?(i(),w("div",ze,[a(ee)])):(i(),b(U,{key:1,gutter:[16,16]},{default:o(()=>[a(y,{xs:12,sm:6},{default:o(()=>[a(V,{title:"资源总数",value:O.value,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(V,{title:"待同步",value:W.value,"value-style":{color:W.value>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(V,{title:"已同步",value:L.value,"value-style":{color:L.value>0?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(V,{title:"冲突",value:h.value,"value-style":{color:h.value>0?"#ff4d4f":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})),A.value?(i(),w("div",Ee,v(A.value),1)):S("",!0)]),_:1}),a(N,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(k(j)),e[27]||(e[27]=f("span",null,"同步操作",-1))]),_:1})]),default:o(()=>[a(_,null,{default:o(()=>[a(l,{type:"primary",loading:G.value,onClick:le},{icon:o(()=>[a(k(j))]),default:o(()=>[e[28]||(e[28]=c(" 推送本地变更 (push) ",-1))]),_:1},8,["loading"]),a(l,{loading:I.value,onClick:ne},{icon:o(()=>[a(k(Se))]),default:o(()=>[e[29]||(e[29]=c(" 拉取远程变更 (pull) ",-1))]),_:1},8,["loading"])]),_:1}),C.value?(i(),w("div",Ve,[f("div",Oe," 最近一次操作 ("+v(T.value)+") ",1),f("pre",We,v(C.value),1)])):S("",!0)]),_:1}),h.value>0?(i(),b(N,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:o(()=>[a(_,null,{default:o(()=>[a(k(Ce),{style:{color:"#ff4d4f"}}),e[30]||(e[30]=f("span",null,"待解决冲突",-1))]),_:1})]),default:o(()=>[B.value?(i(),w("div",Ge,[a(ee)])):P.value.length===0?(i(),b(ve,{key:1,description:"没有详细冲突数据"})):(i(),b(we,{key:2,columns:re,"data-source":P.value,pagination:{pageSize:10},size:"small","row-key":"id"},{bodyCell:o(({column:u,record:ae})=>[u.key==="action"?(i(),b(_,{key:0},{default:o(()=>[a(l,{size:"small",type:"link",onClick:be=>q(ae.id,"local")},{default:o(()=>[...e[31]||(e[31]=[c("用本地版本",-1)])]),_:1},8,["onClick"]),a(l,{size:"small",type:"link",onClick:be=>q(ae.id,"remote")},{default:o(()=>[...e[32]||(e[32]=[c("用远程版本",-1)])]),_:1},8,["onClick"])]),_:2},1024)):S("",!0)]),_:1},8,["data-source"]))]),_:1})):S("",!0)])}}},Je=_e(Ie,[["__scopeId","data-v-719c2a8b"]]);export{Je as default};
@@ -1 +0,0 @@
1
- .page-header[data-v-c8e3e605]{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.banner[data-v-c8e3e605],.stats-row[data-v-c8e3e605]{margin-bottom:16px}.panel-card[data-v-c8e3e605],.stat-card[data-v-c8e3e605]{background:var(--bg-card);border-color:var(--border-color)}.task-item[data-v-c8e3e605]{padding:12px;border-radius:6px;margin-bottom:8px;background:var(--bg-card-hover, rgba(255, 255, 255, .04))}.task-item.running[data-v-c8e3e605]{border-left:3px solid #1677ff}.task-header[data-v-c8e3e605]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.task-desc[data-v-c8e3e605]{flex:1;color:var(--text-primary);font-weight:500}.task-id[data-v-c8e3e605]{font-family:monospace;font-size:12px;color:var(--text-tertiary)}.task-meta[data-v-c8e3e605]{display:flex;gap:16px;align-items:center;font-size:12px;color:var(--text-secondary)}.error-text[data-v-c8e3e605]{color:#ff4d4f}.success-text[data-v-c8e3e605]{color:#52c41a}.muted-text[data-v-c8e3e605]{color:var(--text-tertiary)}
@@ -1 +0,0 @@
1
- import{E as B,r as $,f as R,o as F,x as I,M as d,R as f,c as o,N as l,u as s,Q as S,S as b,K as _,L as r,O as g,P as u,F as A,Y as V}from"./vendor-DhFY8mDK.js";import{u as P,_ as E}from"./index-D0d2TS5o.js";import{R as L}from"./icons--SBOhPAi.js";const M=B("tasks",()=>{const v=$([]),t=$(!1);let w=null,k=null;const T=R(()=>v.value.filter(e=>e.status==="running")),N=R(()=>v.value.filter(e=>e.status==="pending")),i=R(()=>v.value.filter(e=>e.status==="completed"||e.status==="failed"||e.status==="timeout"));async function a(){const e=P();t.value=!0;try{const p=await e.sendRaw({type:"tasks-list"});p&&Array.isArray(p.tasks)&&(v.value=p.tasks)}catch{}finally{t.value=!1}}async function x(e){const p=P();try{await p.sendRaw({type:"tasks-stop",taskId:e})}catch{}finally{await a()}}const C=$(null);function z(e=5e3){y(),a(),w=setInterval(a,e),m()}function y(){w&&(clearInterval(w),w=null),k&&(k(),k=null)}function m(){const e=P();if(k)return;const p=n=>{n.type==="task:notification"&&n.payload?.task&&(C.value=n.payload.task,a(),setTimeout(()=>{C.value=null},8e3))};k=e.onRuntimeEvent(p)}function h(e){return!e||e<0?"-":e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${(e/6e4).toFixed(1)}m`}function D(e){switch(e){case"running":return"processing";case"pending":return"default";case"completed":return"success";case"failed":return"error";case"timeout":return"warning";default:return"default"}}return{tasks:v,loading:t,running:T,pending:N,completed:i,lastNotification:C,fetchTasks:a,stopTask:x,startPolling:z,stopPolling:y,formatDuration:h,getStatusColor:D}}),O={class:"page-header"},U={key:0,class:"error-text"},K={key:1},Q={class:"task-header"},W={class:"task-desc"},Y={class:"task-id"},j={class:"task-meta"},q=["title"],G={key:0,class:"error-text"},H={key:1,class:"success-text"},J={key:2,class:"muted-text"},X={__name:"Tasks",setup(v){const t=M(),w=[{title:"状态",key:"status",width:90},{title:"描述",key:"description",ellipsis:!0},{title:"类型",dataIndex:"type",width:100},{title:"耗时",key:"duration",width:90},{title:"创建时间",key:"createdAt",width:180},{title:"结果",key:"result",ellipsis:!0},{title:"操作",key:"action",width:80}];function k(i){return i.status==="running"&&i.startedAt?t.formatDuration(Date.now()-i.startedAt):i.completedAt&&i.startedAt?t.formatDuration(i.completedAt-i.startedAt):"-"}function T(i){return i?new Date(i).toLocaleString():"-"}function N(i,a){return i?i.length>a?`${i.slice(0,a)}...`:i:""}return F(()=>t.startPolling(5e3)),I(()=>t.stopPolling()),(i,a)=>{const x=_("a-button"),C=_("a-space"),z=_("a-alert"),y=_("a-statistic"),m=_("a-card"),h=_("a-col"),D=_("a-row"),e=_("a-tag"),p=_("a-table");return r(),d("div",null,[f("div",O,[a[3]||(a[3]=f("div",null,[f("h2",{class:"page-title"},"后台任务"),f("p",{class:"page-sub"},"查看后台任务队列、实时通知和任务执行结果。")],-1)),o(C,null,{default:l(()=>[o(x,{ghost:"",loading:s(t).loading,onClick:a[0]||(a[0]=n=>s(t).fetchTasks())},{icon:l(()=>[o(s(L))]),default:l(()=>[a[2]||(a[2]=g(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(t).lastNotification?(r(),S(z,{key:0,type:s(t).lastNotification.status==="completed"?"success":"error","show-icon":"",closable:"",class:"banner",onClose:a[1]||(a[1]=n=>s(t).lastNotification=null)},{message:l(()=>[g(" 任务"+u(s(t).lastNotification.status==="completed"?"完成":"结束")+": "+u(s(t).lastNotification.description||s(t).lastNotification.id.slice(0,16)),1)]),description:l(()=>[s(t).lastNotification.error?(r(),d("span",U,u(s(t).lastNotification.error),1)):s(t).lastNotification.result?(r(),d("span",K,u(N(String(s(t).lastNotification.result),120)),1)):b("",!0)]),_:1},8,["type"])):b("",!0),o(D,{gutter:[16,16],class:"stats-row"},{default:l(()=>[o(h,{xs:12,sm:6},{default:l(()=>[o(m,{class:"stat-card",size:"small"},{default:l(()=>[o(y,{title:"全部任务",value:s(t).tasks.length},null,8,["value"])]),_:1})]),_:1}),o(h,{xs:12,sm:6},{default:l(()=>[o(m,{class:"stat-card",size:"small"},{default:l(()=>[o(y,{title:"运行中",value:s(t).running.length},null,8,["value"])]),_:1})]),_:1}),o(h,{xs:12,sm:6},{default:l(()=>[o(m,{class:"stat-card",size:"small"},{default:l(()=>[o(y,{title:"等待中",value:s(t).pending.length},null,8,["value"])]),_:1})]),_:1}),o(h,{xs:12,sm:6},{default:l(()=>[o(m,{class:"stat-card",size:"small"},{default:l(()=>[o(y,{title:"已完成",value:s(t).completed.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),s(t).running.length>0?(r(),S(m,{key:1,title:"运行中的任务",class:"panel-card",size:"small"},{default:l(()=>[(r(!0),d(A,null,V(s(t).running,n=>(r(),d("div",{key:n.id,class:"task-item running"},[f("div",Q,[o(e,{color:s(t).getStatusColor(n.status)},{default:l(()=>[g(u(n.status.toUpperCase()),1)]),_:2},1032,["color"]),f("span",W,u(n.description),1),f("span",Y,u(n.id.slice(0,16)),1)]),f("div",j,[f("span",null,"类型: "+u(n.type||"-"),1),f("span",null,"已运行: "+u(s(t).formatDuration(Date.now()-n.startedAt)),1),o(x,{size:"small",danger:"",onClick:c=>s(t).stopTask(n.id)},{default:l(()=>[...a[4]||(a[4]=[g("停止",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})):b("",!0),o(m,{class:"panel-card"},{default:l(()=>[o(p,{columns:w,"data-source":s(t).tasks,pagination:{pageSize:15,size:"small"},loading:s(t).loading,"row-key":"id",size:"small"},{bodyCell:l(({column:n,record:c})=>[n.key==="status"?(r(),S(e,{key:0,color:s(t).getStatusColor(c.status)},{default:l(()=>[g(u(c.status),1)]),_:2},1032,["color"])):n.key==="description"?(r(),d("span",{key:1,title:c.command},u(c.description),9,q)):n.key==="duration"?(r(),d(A,{key:2},[g(u(k(c)),1)],64)):n.key==="createdAt"?(r(),d(A,{key:3},[g(u(T(c.createdAt)),1)],64)):n.key==="result"?(r(),d(A,{key:4},[c.error?(r(),d("span",G,u(N(c.error,60)),1)):c.result?(r(),d("span",H,u(N(String(c.result),60)),1)):(r(),d("span",J,"-"))],64)):n.key==="action"?(r(),d(A,{key:5},[c.status==="running"?(r(),S(x,{key:0,size:"small",danger:"",onClick:Z=>s(t).stopTask(c.id)},{default:l(()=>[...a[5]||(a[5]=[g(" 停止 ",-1)])]),_:1},8,["onClick"])):b("",!0)],64)):b("",!0)]),_:1},8,["data-source","loading"])]),_:1})])}}},at=E(X,[["__scopeId","data-v-c8e3e605"]]);export{at as default};
@@ -1 +0,0 @@
1
- .template-card[data-v-d59b8b0a]{transition:border-color .2s,box-shadow .2s}.template-card[data-v-d59b8b0a]:hover{border-color:#1677ff!important;box-shadow:0 0 0 2px #1677ff26}
@@ -1 +0,0 @@
1
- import{_ as ke,b as we,u as Ce,d as y}from"./index-D0d2TS5o.js";import{o as Oe,M as k,R as i,P as r,u as t,c as s,N as o,r as g,K as c,a as je,I as Pe,L as d,F as R,Y as D,Q as x,O as p,S as J,f as Te}from"./vendor-DhFY8mDK.js";import{u as ze}from"./useFs-CZCJDMup.js";import{j as G,aq as W,m as Se,a5 as X,as as Ae,aL as Fe,aK as Be,l as Z,aR as $e,aQ as Ie}from"./icons--SBOhPAi.js";import"./useShellMode-CgR0wCYM.js";const Ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Le={class:"page-title"},Ee={class:"page-sub"},Re={style:{display:"flex","align-items":"flex-start",gap:"10px"}},De={style:{flex:"1","min-width":"0"}},Je={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},Ue={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ke={style:{"margin-top":"12px","text-align":"right"}},Me={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},qe={key:0,style:{"text-align":"center",padding:"40px"}},Ve={style:{color:"var(--text-muted)","margin-top":"8px"}},He={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Qe={style:{flex:"1","min-width":"0"}},Ye={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Ge={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},We={key:0,style:{"margin-top":"4px"}},Xe={style:{"margin-top":"12px","text-align":"right"}},Ze={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},et={style:{"margin-bottom":"16px",display:"flex",gap:"8px"}},tt={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},at={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ot={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},st={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},lt={style:{color:"var(--text-muted)","font-size":"12px"}},ee="cc_prompt_templates",nt={__name:"Templates",setup(rt){const{t:e}=we(),T=Ce(),te=Pe(),U=ze(),z=g(!1),S=g(!1),K=g("project"),A=g(""),b=g(null),w=g(!1),F=g(""),ae=["code-project","data-science","devops","medical-triage","agriculture-expert","general-assistant","ai-media-creator","ai-doc-creator","empty"],oe=Te(()=>ae.map(l=>({name:l,description:e(`templates.project.items.${l}`)})));function se(l){F.value=l,w.value=!0}async function le(){w.value=!1;const l=F.value;if(l){A.value=l,b.value=null;try{const a=`init --template ${l} --yes`,{output:u,exitCode:_}=await T.execute(a,3e4);b.value={success:_===0,output:u}}catch(a){b.value={success:!1,output:e("templates.messages.initFailed",{err:a.message})}}finally{A.value=""}}}const B=g(!1),C=g([]),$=g(""),h=g(null);async function ne(){B.value=!0;try{const{output:l}=await T.execute("bi templates --json",15e3),a=JSON.parse(l);C.value=Array.isArray(a)?a:a.templates||[]}catch{C.value=[]}finally{B.value=!1}}async function re(l){$.value=l,h.value=null;try{const a=`bi dashboard create --template ${l} --json`,{output:u,exitCode:_}=await T.execute(a,3e4);h.value={success:_===0,output:u}}catch(a){h.value={success:!1,output:e("templates.messages.createFailed",{err:a.message})}}finally{$.value=""}}const v=g([]),O=g(!1),m=je({name:"",category:"general",content:""});function ie(){try{const l=localStorage.getItem(ee);v.value=l?JSON.parse(l):[]}catch{v.value=[]}}function I(){localStorage.setItem(ee,JSON.stringify(v.value))}function pe(){!m.name||!m.content||(v.value.push({name:m.name,category:m.category,content:m.content}),I(),M(),y.success(e("templates.messages.promptSaved")))}function M(){O.value=!1,m.name="",m.category="general",m.content=""}async function ce(){if(v.value.length){z.value=!0;try{const l=await U.saveJson({schema:1,prompts:v.value},{defaultPath:`prompt-templates-${new Date().toISOString().slice(0,10)}.json`});if(l.canceled)return;y.success(l.path?e("templates.messages.exportOk",{count:v.value.length,path:l.path}):e("templates.messages.exportOkDefault"))}catch(l){y.error(e("templates.messages.exportFailed",{err:l.message||l}))}finally{z.value=!1}}}async function me(){S.value=!0;try{const l=await U.pickFileText({title:e("templates.prompts.filePickerTitle"),filters:[{name:"JSON",extensions:["json"]}]});if(!l||l.canceled)return;if(l.reason==="too_large"){y.error(e("templates.messages.fileTooLarge"));return}let a;try{a=JSON.parse(l.content||"")}catch(f){y.error(e("templates.messages.jsonParseFailed",{err:f.message}));return}const u=Array.isArray(a)?a:Array.isArray(a?.prompts)?a.prompts:null;if(!u){y.error(e("templates.messages.fileShapeUnknown",{expected:"prompts: [...]"}));return}let _=0;for(const f of u)!f||typeof f!="object"||typeof f.name!="string"||typeof f.content!="string"||(v.value.push({name:f.name,category:typeof f.category=="string"?f.category:"general",content:f.content}),_++);_?(I(),y.success(e("templates.messages.importedCount",{count:_}))):y.warning(e("templates.messages.importEmpty"))}catch(l){y.error(e("templates.messages.importFailed",{err:l.message||l}))}finally{S.value=!1}}function ue(l){v.value.splice(l,1),I(),y.success(e("templates.messages.promptDeleted"))}function de(l){navigator.clipboard.writeText(l.content).then(()=>{y.success(e("templates.messages.copiedClipboard"))}).catch(()=>{y.error(e("templates.messages.copyFailed"))})}function fe(l){te.push({path:"/chat",query:{prompt:l.content}})}function ge(l){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[l]||"default"}return Oe(()=>{ie(),ne()}),(l,a)=>{const u=c("a-button"),_=c("a-card"),f=c("a-col"),N=c("a-row"),q=c("a-alert"),L=c("a-tab-pane"),ve=c("a-spin"),V=c("a-empty"),H=c("a-tag"),ye=c("a-tabs"),Q=c("a-modal"),_e=c("a-input"),E=c("a-form-item"),j=c("a-select-option"),xe=c("a-select"),be=c("a-textarea"),he=c("a-form");return d(),k("div",null,[i("div",Ne,[i("div",null,[i("h2",Le,r(t(e)("templates.title")),1),i("p",Ee,r(t(e)("templates.subtitle")),1)])]),s(ye,{activeKey:K.value,"onUpdate:activeKey":a[3]||(a[3]=n=>K.value=n),type:"card"},{default:o(()=>[s(L,{key:"project"},{tab:o(()=>[s(t(Se)),p(" "+r(t(e)("templates.tabs.project")),1)]),default:o(()=>[s(N,{gutter:[16,16]},{default:o(()=>[(d(!0),k(R,null,D(oe.value,n=>(d(),x(f,{key:n.name,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",Re,[s(t(G),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),i("div",De,[i("div",Je,r(n.name),1),i("div",Ue,r(n.description),1)])]),i("div",Ke,[s(u,{type:"primary",size:"small",loading:A.value===n.name,onClick:P=>se(n.name)},{icon:o(()=>[s(t(W))]),default:o(()=>[p(" "+r(t(e)("templates.project.initButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1}),b.value?(d(),x(q,{key:0,message:b.value.success?t(e)("templates.project.initSuccessAlert"):t(e)("templates.project.initFailureAlert"),type:b.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:a[0]||(a[0]=n=>b.value=null)},{description:o(()=>[i("pre",Me,r(b.value.output),1)]),_:1},8,["message","type"])):J("",!0)]),_:1}),s(L,{key:"bi"},{tab:o(()=>[s(t(X)),p(" "+r(t(e)("templates.tabs.bi")),1)]),default:o(()=>[B.value?(d(),k("div",qe,[s(ve),i("div",Ve,r(t(e)("templates.bi.loadingHint")),1)])):C.value.length?(d(),x(N,{key:2,gutter:[16,16]},{default:o(()=>[(d(!0),k(R,null,D(C.value,n=>(d(),x(f,{key:n.id,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",He,[s(t(X),{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),i("div",Qe,[i("div",Ye,r(n.name),1),i("div",Ge,r(n.description||t(e)("templates.bi.noDescription")),1),n.id?(d(),k("div",We,[s(H,{size:"small",color:"purple"},{default:o(()=>[p(r(n.id),1)]),_:2},1024)])):J("",!0)])]),i("div",Xe,[s(u,{type:"primary",size:"small",loading:$.value===n.id,onClick:P=>re(n.id)},{icon:o(()=>[s(t(W))]),default:o(()=>[p(" "+r(t(e)("templates.bi.createButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),x(V,{key:1,description:t(e)("templates.bi.emptyText")},null,8,["description"])),h.value?(d(),x(q,{key:3,message:h.value.success?t(e)("templates.bi.createSuccessAlert"):t(e)("templates.bi.createFailureAlert"),type:h.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:a[1]||(a[1]=n=>h.value=null)},{description:o(()=>[i("pre",Ze,r(h.value.output),1)]),_:1},8,["message","type"])):J("",!0)]),_:1}),s(L,{key:"prompts"},{tab:o(()=>[s(t(Z)),p(" "+r(t(e)("templates.tabs.prompts")),1)]),default:o(()=>[i("div",et,[s(u,{type:"primary",onClick:a[2]||(a[2]=n=>O.value=!0)},{icon:o(()=>[s(t(Ae))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.newButton")),1)]),_:1}),s(u,{disabled:!v.value.length,loading:z.value,onClick:ce},{icon:o(()=>[s(t(Fe))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.exportAll")),1)]),_:1},8,["disabled","loading"]),s(u,{loading:S.value,onClick:me},{icon:o(()=>[s(t(Be))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.import")),1)]),_:1},8,["loading"])]),v.value.length?(d(),x(N,{key:1,gutter:[16,16]},{default:o(()=>[(d(!0),k(R,null,D(v.value,(n,P)=>(d(),x(f,{key:P,xs:24,sm:12,lg:8},{default:o(()=>[s(_,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[i("div",tt,[s(t(Z),{style:{"font-size":"18px",color:"#52c41a"}}),i("span",at,r(n.name),1),s(H,{color:ge(n.category),size:"small"},{default:o(()=>[p(r(n.category),1)]),_:2},1032,["color"])]),i("div",ot,r(n.content.length>120?n.content.slice(0,120)+"...":n.content),1),i("div",st,[s(u,{size:"small",onClick:Y=>fe(n)},{icon:o(()=>[s(t(G))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.useButton")),1)]),_:1},8,["onClick"]),s(u,{size:"small",onClick:Y=>de(n)},{icon:o(()=>[s(t($e))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.copyButton")),1)]),_:1},8,["onClick"]),s(u,{size:"small",danger:"",onClick:Y=>ue(P)},{icon:o(()=>[s(t(Ie))]),default:o(()=>[p(" "+r(t(e)("templates.prompts.deleteButton")),1)]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),x(V,{key:0,description:t(e)("templates.prompts.emptyText")},null,8,["description"]))]),_:1})]),_:1},8,["activeKey"]),s(Q,{open:w.value,"onUpdate:open":a[4]||(a[4]=n=>w.value=n),title:t(e)("templates.project.confirmTitle"),onOk:le,onCancel:a[5]||(a[5]=n=>w.value=!1),"ok-text":t(e)("templates.project.confirmOk"),"cancel-text":t(e)("common.cancel")},{default:o(()=>[i("p",null,[p(r(t(e)("templates.project.confirmIntro"))+" ",1),i("strong",null,r(F.value),1),p(" "+r(t(e)("templates.project.confirmIntroSuffix")),1)]),i("p",lt,r(t(e)("templates.project.confirmHint")),1)]),_:1},8,["open","title","ok-text","cancel-text"]),s(Q,{open:O.value,"onUpdate:open":a[9]||(a[9]=n=>O.value=n),title:t(e)("templates.prompts.modalTitle"),onOk:pe,onCancel:M,"ok-text":t(e)("templates.prompts.modalOk"),"cancel-text":t(e)("common.cancel"),"ok-button-props":{disabled:!m.name||!m.content}},{default:o(()=>[s(he,{layout:"vertical"},{default:o(()=>[s(E,{label:t(e)("templates.prompts.nameLabel"),required:""},{default:o(()=>[s(_e,{value:m.name,"onUpdate:value":a[6]||(a[6]=n=>m.name=n),placeholder:t(e)("templates.prompts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),s(E,{label:t(e)("templates.prompts.categoryLabel")},{default:o(()=>[s(xe,{value:m.category,"onUpdate:value":a[7]||(a[7]=n=>m.category=n),style:{width:"100%"}},{default:o(()=>[s(j,{value:"general"},{default:o(()=>[...a[10]||(a[10]=[p("general",-1)])]),_:1}),s(j,{value:"code"},{default:o(()=>[...a[11]||(a[11]=[p("code",-1)])]),_:1}),s(j,{value:"writing"},{default:o(()=>[...a[12]||(a[12]=[p("writing",-1)])]),_:1}),s(j,{value:"analysis"},{default:o(()=>[...a[13]||(a[13]=[p("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),s(E,{label:t(e)("templates.prompts.contentLabel"),required:""},{default:o(()=>[s(be,{value:m.content,"onUpdate:value":a[8]||(a[8]=n=>m.content=n),rows:6,placeholder:t(e)("templates.prompts.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","ok-text","cancel-text","ok-button-props"])])}}},dt=ke(nt,[["__scopeId","data-v-d59b8b0a"]]);export{dt as default};
@@ -1 +0,0 @@
1
- .page-title[data-v-7210f1ac]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-7210f1ac]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.tenant-tabs[data-v-7210f1ac] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-7210f1ac]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.plan-fee[data-v-7210f1ac]{font-size:22px;font-weight:700;color:var(--text-primary);margin-bottom:12px}.plan-fee-unit[data-v-7210f1ac]{font-size:12px;font-weight:400;color:var(--text-secondary)}.plan-section[data-v-7210f1ac]{margin-top:12px}.plan-section-title[data-v-7210f1ac]{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.plan-quota-row[data-v-7210f1ac]{display:flex;justify-content:space-between;font-size:12px;padding:2px 0}.plan-quota-label[data-v-7210f1ac]{color:var(--text-secondary)}.plan-quota-value[data-v-7210f1ac]{color:var(--text-primary);font-family:monospace}
@@ -1 +0,0 @@
1
- import{_ as et,u as tt,b as at,d as m}from"./index-D0d2TS5o.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{R as lt,as as ot,a4 as me,D as st,aX as rt,b4 as je,n as ut}from"./icons--SBOhPAi.js";import{o as it,M as f,R as v,P as u,c as l,N as a,Q as b,S as h,K as y,r as S,L as i,O as p,u as g,F as C,Y as z,a as ne,f as le}from"./vendor-DhFY8mDK.js";function D(s){const r=nt(s);if(!r)return null;try{return JSON.parse(r)}catch{}const o=r.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!o)return null;try{return JSON.parse(o[0])}catch{return null}}const G=Object.freeze(["free","starter","pro","enterprise"]),dt=Object.freeze(["active","suspended","deleted"]),Ue=Object.freeze(["api_calls","storage_bytes","ai_requests"]);function F(s,r=0){return typeof s=="number"&&Number.isFinite(s)?s:r}function ct(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";if(!o)return null;const w=s.quotas&&typeof s.quotas=="object"?{...s.quotas}:{};return{key:o,id:o,name:String(s.name||o),monthlyFee:s.monthlyFee==null?null:F(s.monthlyFee,null),quotas:w,features:Array.isArray(s.features)?s.features.filter(K=>typeof K=="string"):[],_idx:r}}function pt(s){const r=D(s);return Array.isArray(r)?r.map(ct).filter(Boolean):[]}function ft(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,name:String(s.name||o),unit:String(s.unit||""),_idx:r}:null}function mt(s){const r=D(s);return Array.isArray(r)?r.map(ft).filter(Boolean):[]}function vt(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,name:String(s.name||""),slug:String(s.slug||""),config:s.config??null,status:String(s.status||"active").toLowerCase(),plan:String(s.plan||"free").toLowerCase(),dbPath:s.dbPath||null,ownerId:s.ownerId||"",createdAt:s.createdAt??null,updatedAt:s.updatedAt??null,deletedAt:s.deletedAt??null,_idx:r}:null}function yt(s){const r=D(s);return Array.isArray(r)?r.map(vt).filter(Boolean):[]}function bt(s,r=0){if(!s||typeof s!="object")return null;const o=s.id||"";return o?{key:o,id:o,tenantId:String(s.tenantId||""),plan:String(s.plan||"free").toLowerCase(),status:String(s.status||"active").toLowerCase(),startedAt:s.startedAt??null,expiresAt:s.expiresAt??null,cancelledAt:s.cancelledAt??null,paymentMethod:s.paymentMethod||null,amount:s.amount==null?null:F(s.amount,null),createdAt:s.createdAt??null,_idx:r}:null}function gt(s){const r=D(s);return Array.isArray(r)?r.map(bt).filter(Boolean):[]}function _t(s){const r=D(s);return!r||typeof r!="object"||Array.isArray(r)?null:{tenantId:String(r.tenantId||""),plan:String(r.plan||"free").toLowerCase(),metric:String(r.metric||""),period:String(r.period||""),limit:r.limit==null?null:F(r.limit,null),used:F(r.used,0),remaining:r.remaining==null?null:F(r.remaining,null),unlimited:!!r.unlimited,exceeded:!!r.exceeded}}const kt={tenantCount:0,byStatus:{active:0,suspended:0,deleted:0},byPlan:{free:0,starter:0,pro:0,enterprise:0},subscriptionCount:0,activeSubscriptions:0,usageRecordCount:0,totalUsage:{api_calls:0,storage_bytes:0,ai_requests:0}};function $t(s){const r=JSON.parse(JSON.stringify(kt)),o=D(s);if(!o||typeof o!="object"||Array.isArray(o))return r;if(r.tenantCount=F(o.tenantCount,0),r.subscriptionCount=F(o.subscriptionCount,0),r.activeSubscriptions=F(o.activeSubscriptions,0),r.usageRecordCount=F(o.usageRecordCount,0),o.byStatus&&typeof o.byStatus=="object")for(const w of Object.keys(r.byStatus))r.byStatus[w]=F(o.byStatus[w],0);if(o.byPlan&&typeof o.byPlan=="object")for(const w of Object.keys(r.byPlan))r.byPlan[w]=F(o.byPlan[w],0);if(o.totalUsage&&typeof o.totalUsage=="object")for(const w of Object.keys(r.totalUsage))r.totalUsage[w]=F(o.totalUsage[w],0);return r}function ve(s){if(s==null||s==="")return"—";const r=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(r.getTime())?String(s):r.toLocaleString("zh-CN",{hour12:!1})}function ye(s){return typeof s!="number"||!Number.isFinite(s)||s<0?"—":s===0?"0":s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:s<1024*1024*1024?`${(s/1024/1024).toFixed(1)} MB`:`${(s/1024/1024/1024).toFixed(2)} GB`}function ht(s=new Date){const r=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0");return`${r}-${o}`}const St={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ct={class:"page-title"},xt={class:"page-sub"},wt={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},At={class:"filter-bar"},zt={style:{color:"var(--text-primary)","font-weight":"500"}},qt={style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},Ft={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},Lt={key:1,style:{color:"var(--text-muted)"}},jt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},It={style:{color:"var(--text-primary)","font-weight":"500"}},Tt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Pt={key:0,style:{color:"#722ed1","font-weight":"500"}},Nt={key:1,style:{color:"var(--text-muted)"}},Ot={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Mt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Rt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={class:"plan-fee"},Bt={key:0},Dt={class:"plan-fee-unit"},Kt={key:1,style:{color:"#722ed1"}},Jt={class:"plan-section"},Qt={class:"plan-section-title"},Vt={class:"plan-quota-label"},Wt={class:"plan-quota-value"},Yt={class:"plan-section"},Gt={class:"plan-section-title"},Xt={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Ht={style:{"font-family":"monospace",color:"var(--text-primary)"}},Zt={key:0},ea={style:{"font-family":"monospace"}},ta={key:1,style:{"margin-top":"8px"}},aa={__name:"Tenant",setup(s){const r=tt(),{t:o}=at(),w=S(!1),K=S(!1),oe=S(!1),se=S(!1),re=S(!1),J=S([]),ue=S([]),be=S([]),ge=S([]),L=S({tenantCount:0,byStatus:{active:0,suspended:0,deleted:0},byPlan:{free:0,starter:0,pro:0,enterprise:0},subscriptionCount:0,activeSubscriptions:0,usageRecordCount:0,totalUsage:{api_calls:0,storage_bytes:0,ai_requests:0}}),ie=S("tenants"),Q=S(""),V=S(""),X=S(!1),H=S(!1),de=S(!1),Z=S(!1),x=ne({name:"",slug:"",plan:"free",owner:""}),$=ne({tenantId:"",plan:"pro",amount:null,duration:720*60*60*1e3}),ce=S(""),q=ne({tenantId:null,metric:"api_calls",period:""}),_=ne({tenantId:null,metric:"api_calls",value:1,period:""}),k=S(null),Ie=le(()=>[{title:o("tenant.tenantCols.name"),key:"name"},{title:o("tenant.tenantCols.plan"),key:"plan",width:"110px"},{title:o("tenant.tenantCols.status"),key:"status",width:"100px"},{title:o("tenant.tenantCols.owner"),key:"owner",width:"160px"},{title:o("tenant.tenantCols.createdAt"),key:"createdAt",width:"160px"},{title:o("tenant.tenantCols.action"),key:"action",width:"280px"}]),Te=le(()=>[{title:o("tenant.subscriptionCols.tenant"),key:"tenant"},{title:o("tenant.subscriptionCols.plan"),key:"plan",width:"110px"},{title:o("tenant.subscriptionCols.amount"),key:"amount",width:"100px"},{title:o("tenant.subscriptionCols.status"),key:"status",width:"110px"},{title:o("tenant.subscriptionCols.startedAt"),key:"startedAt",width:"160px"},{title:o("tenant.subscriptionCols.expiresAt"),key:"expiresAt",width:"160px"},{title:o("tenant.subscriptionCols.action"),key:"action",width:"120px"}]),Pe=le(()=>{let e=J.value;return Q.value&&(e=e.filter(n=>n.plan===Q.value)),V.value&&(e=e.filter(n=>n.status===V.value)),e}),Ne=le(()=>ue.value.filter(e=>e.status==="active"&&typeof e.amount=="number").reduce((e,n)=>e+n.amount,0));function I(e){const n=`tenant.planLabels.${e}`,d=o(n);return d===n?e:d}function W(e){return{free:"default",starter:"blue",pro:"purple",enterprise:"gold"}[e]||"default"}function _e(e){const n=`tenant.tenantStatusLabels.${e}`,d=o(n);return d===n?e:d}function Oe(e){return{active:"green",suspended:"orange",deleted:"default"}[e]||"default"}function Me(e){const n=`tenant.subStatusLabels.${e}`,d=o(n);return d===n?e:d}function Re(e){return{active:"green",cancelled:"default",expired:"red",past_due:"orange"}[e]||"default"}function Ee(e){const n=J.value.find(d=>d.id===e);return n?n.name:o("tenant.deletedTenant")}function ke(e,n){return e==null?"—":n==="storage_bytes"?ye(e):String(e)}function Be(e,n){return e==null?o("tenant.planCard.unlimited"):n==="storage_bytes"?ye(e):e.toLocaleString()}function De({key:e}){e==="tenant"?X.value=!0:e==="quota"?(k.value=null,de.value=!0):e==="record"&&(Z.value=!0)}async function T(){w.value=!0;try{const[e,n,d,j,ee]=await Promise.all([r.execute("tenant list --json",1e4).catch(()=>({output:""})),r.execute("tenant subscriptions --json",1e4).catch(()=>({output:""})),r.execute("tenant plans --json",8e3).catch(()=>({output:""})),r.execute("tenant metrics --json",8e3).catch(()=>({output:""})),r.execute("tenant stats --json",8e3).catch(()=>({output:""}))]);J.value=yt(e.output),ue.value=gt(n.output),be.value=pt(d.output),ge.value=mt(j.output),L.value=$t(ee.output)}catch(e){m.error(o("tenant.msg.loadFailed")+": "+(e?.message||e))}finally{w.value=!1}}async function Ke(){const e=x.name.trim(),n=x.slug.trim();if(!e||!n){m.warning(o("tenant.msg.createFieldsEmpty"));return}if(!/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/.test(n)){m.warning(o("tenant.msg.slugInvalid"));return}K.value=!0;try{const d=[`tenant create "${e.replace(/"/g,'\\"')}" "${n.replace(/"/g,'\\"')}"`];d.push(`--plan ${x.plan}`),x.owner.trim()&&d.push(`--owner "${x.owner.trim().replace(/"/g,'\\"')}"`),d.push("--json");const{output:j}=await r.execute(d.join(" "),1e4);if(/error|Error|失败/i.test(j)&&!/"id"/.test(j)){m.error(o("tenant.msg.createFailed")+": "+j.slice(0,120));return}m.success(o("tenant.msg.createSuccess")),X.value=!1,he(),await T()}catch(d){m.error(o("tenant.msg.createFailed")+": "+(d?.message||d))}finally{K.value=!1}}function Je(e){$.tenantId=e.id,$.plan=e.plan==="free"?"starter":e.plan,$.amount=null,$.duration=720*60*60*1e3,ce.value=e.name,H.value=!0}async function Qe(){oe.value=!0;try{const e=[`tenant subscribe ${$.tenantId}`];e.push(`--plan ${$.plan}`),$.amount!=null&&e.push(`--amount ${$.amount}`),$.duration&&e.push(`--duration-ms ${$.duration}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),1e4);if(/error|Error|失败/i.test(n)&&!/"id"/.test(n)){m.error(o("tenant.msg.subscribeFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.subscribeSuccess")),H.value=!1,Se(),ie.value="subscriptions",await T()}catch(e){m.error(o("tenant.msg.subscribeFailed")+": "+(e?.message||e))}finally{oe.value=!1}}async function Ve(e,n){if(n!==e.plan)try{const{output:d}=await r.execute(`tenant configure ${e.id} --plan ${n} --json`,8e3);if(/error|Error/i.test(d)&&!/"id"/.test(d)){m.error(o("tenant.msg.planChangeFailed")+": "+d.slice(0,120));return}m.success(o("tenant.msg.planChangeSuccess",{plan:I(n)})),await T()}catch(d){m.error(o("tenant.msg.planChangeFailed")+": "+(d?.message||d))}}async function $e(e,n){try{const{output:d}=await r.execute(`tenant configure ${e.id} --status ${n} --json`,8e3);if(/error|Error/i.test(d)&&!/"id"/.test(d)){m.error(o("tenant.msg.statusChangeFailed")+": "+d.slice(0,120));return}m.success(o(n==="active"?"tenant.msg.activated":"tenant.msg.suspended")),await T()}catch(d){m.error(o("tenant.msg.statusChangeFailed")+": "+(d?.message||d))}}async function We(e){try{const{output:n}=await r.execute(`tenant delete ${e.id} --json`,8e3);if(/error|Error/i.test(n)&&!/deleted|removed/.test(n)){m.error(o("tenant.msg.deleteFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.deleteSuccess")),await T()}catch(n){m.error(o("tenant.msg.deleteFailed")+": "+(n?.message||n))}}async function Ye(e){try{const{output:n}=await r.execute(`tenant cancel ${e.tenantId}`,8e3);if(/error|Error/i.test(n)&&!/cancelled|cancel/i.test(n)){m.error(o("tenant.msg.cancelFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.cancelSuccess")),await T()}catch(n){m.error(o("tenant.msg.cancelFailed")+": "+(n?.message||n))}}async function Ge(){if(!q.tenantId){m.warning(o("tenant.msg.tenantEmpty"));return}se.value=!0,k.value=null;try{const e=[`tenant check-quota ${q.tenantId} ${q.metric}`];q.period.trim()&&e.push(`--period ${q.period.trim()}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),8e3),d=_t(n);if(!d){m.error(o("tenant.msg.checkFailed")+": "+n.slice(0,120));return}k.value=d,d.exceeded&&m.warning(o("tenant.msg.exceededWarning"))}catch(e){m.error(o("tenant.msg.checkFailed")+": "+(e?.message||e))}finally{se.value=!1}}async function Xe(){if(!_.tenantId){m.warning(o("tenant.msg.tenantEmpty"));return}if(_.value==null||_.value<0){m.warning(o("tenant.msg.valueInvalid"));return}re.value=!0;try{const e=[`tenant record ${_.tenantId} ${_.metric} ${_.value}`];_.period.trim()&&e.push(`--period ${_.period.trim()}`),e.push("--json");const{output:n}=await r.execute(e.join(" "),8e3);if(/error|Error/i.test(n)&&!/"id"|"tenant"/.test(n)){m.error(o("tenant.msg.recordFailed")+": "+n.slice(0,120));return}m.success(o("tenant.msg.recordSuccess")),Z.value=!1,Ce(),await T()}catch(e){m.error(o("tenant.msg.recordFailed")+": "+(e?.message||e))}finally{re.value=!1}}function he(){x.name="",x.slug="",x.plan="free",x.owner=""}function Se(){$.tenantId="",$.plan="pro",$.amount=null,$.duration=720*60*60*1e3,ce.value=""}function Ce(){_.tenantId=null,_.metric="api_calls",_.value=1,_.period=""}function xe(e){e.period||(e.period=ht())}return xe(q),xe(_),it(T),(e,n)=>{const d=y("a-button"),j=y("a-menu-item"),ee=y("a-menu"),we=y("a-dropdown"),Ae=y("a-space"),M=y("a-statistic"),P=y("a-card"),R=y("a-col"),ze=y("a-row"),N=y("a-tag"),O=y("a-radio-button"),pe=y("a-radio-group"),qe=y("a-popconfirm"),Fe=y("a-table"),fe=y("a-tab-pane"),He=y("a-tabs"),Y=y("a-input"),A=y("a-form-item"),E=y("a-select-option"),B=y("a-select"),te=y("a-form"),ae=y("a-modal"),Le=y("a-input-number"),Ze=y("a-progress");return i(),f("div",null,[v("div",St,[v("div",null,[v("h2",Ct,u(e.$t("tenant.title")),1),v("p",xt,u(e.$t("tenant.subtitle")),1)]),l(Ae,null,{default:a(()=>[l(d,{loading:w.value,onClick:T},{icon:a(()=>[l(g(lt))]),default:a(()=>[p(" "+u(e.$t("tenant.refresh")),1)]),_:1},8,["loading"]),l(we,{trigger:["click"]},{overlay:a(()=>[l(ee,{onClick:De},{default:a(()=>[l(j,{key:"tenant"},{default:a(()=>[l(g(me)),p(" "+u(e.$t("tenant.actions.tenant")),1)]),_:1}),l(j,{key:"quota"},{default:a(()=>[l(g(st)),p(" "+u(e.$t("tenant.actions.quota")),1)]),_:1}),l(j,{key:"record"},{default:a(()=>[l(g(rt)),p(" "+u(e.$t("tenant.actions.record")),1)]),_:1})]),_:1})]),default:a(()=>[l(d,{type:"primary"},{icon:a(()=>[l(g(ot))]),default:a(()=>[p(" "+u(e.$t("tenant.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),l(ze,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.total"),value:L.value.tenantCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:a(()=>[l(g(me))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.active"),value:L.value.activeSubscriptions,"value-style":{color:L.value.activeSubscriptions>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:a(()=>[l(g(je))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.mrr"),value:Ne.value,precision:0,prefix:"¥","value-style":{color:"#722ed1",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),l(R,{xs:12,sm:8,lg:5},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.apiCalls"),value:L.value.totalUsage.api_calls,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:a(()=>[l(g(ut))]),_:1},8,["title","value"])]),_:1})]),_:1}),l(R,{xs:24,sm:8,lg:4},{default:a(()=>[l(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[l(M,{title:e.$t("tenant.stats.storage"),value:g(ye)(L.value.totalUsage.storage_bytes),"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1})]),_:1}),L.value.tenantCount>0?(i(),b(P,{key:0,title:e.$t("tenant.plansCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:a(()=>[l(Ae,{size:[12,8],wrap:""},{default:a(()=>[(i(!0),f(C,null,z(g(G),t=>(i(),b(N,{key:t,color:W(t)},{default:a(()=>[p(u(I(t))+": "+u(L.value.byPlan[t]||0),1)]),_:2},1032,["color"]))),128)),v("span",wt,u(e.$t("tenant.summarySuffix",{active:L.value.byStatus.active,suspended:L.value.byStatus.suspended,deleted:L.value.byStatus.deleted})),1)]),_:1})]),_:1},8,["title"])):h("",!0),l(He,{activeKey:ie.value,"onUpdate:activeKey":n[2]||(n[2]=t=>ie.value=t),class:"tenant-tabs"},{default:a(()=>[l(fe,{key:"tenants",tab:e.$t("tenant.tabs.tenants")},{default:a(()=>[v("div",At,[l(pe,{value:Q.value,"onUpdate:value":n[0]||(n[0]=t=>Q.value=t),size:"small"},{default:a(()=>[l(O,{value:""},{default:a(()=>[p(u(e.$t("tenant.filter.allPlans")),1)]),_:1}),(i(!0),f(C,null,z(g(G),t=>(i(),b(O,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(pe,{value:V.value,"onUpdate:value":n[1]||(n[1]=t=>V.value=t),size:"small","button-style":"solid"},{default:a(()=>[l(O,{value:""},{default:a(()=>[p(u(e.$t("tenant.filter.allStatuses")),1)]),_:1}),(i(!0),f(C,null,z(g(dt),t=>(i(),b(O,{key:t,value:t},{default:a(()=>[p(u(_e(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(Fe,{columns:Ie.value,"data-source":Pe.value,pagination:{pageSize:20,showTotal:t=>e.$t("tenant.table.totalSuffix",{n:t})},size:"small",loading:w.value,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:t,record:c})=>[t.key==="name"?(i(),f(C,{key:0},[v("span",zt,u(c.name),1),v("div",qt,u(c.slug),1)],64)):h("",!0),t.key==="plan"?(i(),b(N,{key:1,color:W(c.plan)},{default:a(()=>[p(u(I(c.plan)),1)]),_:2},1032,["color"])):h("",!0),t.key==="status"?(i(),b(N,{key:2,color:Oe(c.status)},{default:a(()=>[p(u(_e(c.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="owner"?(i(),f(C,{key:3},[c.ownerId?(i(),f("span",Ft,u(c.ownerId),1)):(i(),f("span",Lt,"—"))],64)):h("",!0),t.key==="createdAt"?(i(),f("span",jt,u(g(ve)(c.createdAt)),1)):h("",!0),t.key==="action"?(i(),f(C,{key:5},[l(d,{size:"small",type:"link",onClick:U=>Je(c)},{default:a(()=>[p(u(e.$t("tenant.table.actionSubscribe")),1)]),_:1},8,["onClick"]),l(we,{trigger:["click"]},{overlay:a(()=>[l(ee,{onClick:U=>Ve(c,U.key)},{default:a(()=>[(i(!0),f(C,null,z(g(G),U=>(i(),b(j,{key:U,disabled:U===c.plan},{default:a(()=>[p(u(I(U)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:a(()=>[l(d,{size:"small",type:"link"},{default:a(()=>[p(u(e.$t("tenant.table.actionPlanDropdown")),1)]),_:1})]),_:2},1024),c.status==="active"?(i(),b(d,{key:0,size:"small",type:"link",onClick:U=>$e(c,"suspended")},{default:a(()=>[p(u(e.$t("tenant.table.actionSuspend")),1)]),_:1},8,["onClick"])):c.status==="suspended"?(i(),b(d,{key:1,size:"small",type:"link",onClick:U=>$e(c,"active")},{default:a(()=>[p(u(e.$t("tenant.table.actionActivate")),1)]),_:1},8,["onClick"])):h("",!0),c.status!=="deleted"?(i(),b(qe,{key:2,title:e.$t("tenant.deleteConfirm.title"),"ok-text":e.$t("tenant.deleteConfirm.ok"),"cancel-text":e.$t("tenant.deleteConfirm.cancel"),onConfirm:U=>We(c)},{default:a(()=>[l(d,{size:"small",type:"link",danger:""},{default:a(()=>[p(u(e.$t("tenant.deleteConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):h("",!0)],64)):h("",!0)]),emptyText:a(()=>[v("div",Ut,[l(g(me),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+u(Q.value||V.value?e.$t("tenant.table.emptyTenantsFiltered"):e.$t("tenant.table.emptyTenants")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(fe,{key:"subscriptions",tab:e.$t("tenant.tabs.subscriptions")},{default:a(()=>[l(Fe,{columns:Te.value,"data-source":ue.value,pagination:{pageSize:20,showTotal:t=>e.$t("tenant.table.totalSuffix",{n:t})},size:"small",loading:w.value,style:{background:"var(--bg-card)"}},{bodyCell:a(({column:t,record:c})=>[t.key==="tenant"?(i(),f(C,{key:0},[v("span",It,u(Ee(c.tenantId)),1),v("div",Tt,u(c.tenantId.slice(0,8)),1)],64)):h("",!0),t.key==="plan"?(i(),b(N,{key:1,color:W(c.plan)},{default:a(()=>[p(u(I(c.plan)),1)]),_:2},1032,["color"])):h("",!0),t.key==="amount"?(i(),f(C,{key:2},[c.amount!=null?(i(),f("span",Pt,"¥"+u(c.amount),1)):(i(),f("span",Nt,"—"))],64)):h("",!0),t.key==="status"?(i(),b(N,{key:3,color:Re(c.status)},{default:a(()=>[p(u(Me(c.status)),1)]),_:2},1032,["color"])):h("",!0),t.key==="startedAt"?(i(),f("span",Ot,u(g(ve)(c.startedAt)),1)):h("",!0),t.key==="expiresAt"?(i(),f("span",Mt,u(g(ve)(c.expiresAt)),1)):h("",!0),t.key==="action"?(i(),f(C,{key:6},[c.status==="active"?(i(),b(qe,{key:0,title:e.$t("tenant.cancelConfirm.title"),"ok-text":e.$t("tenant.cancelConfirm.ok"),"cancel-text":e.$t("tenant.cancelConfirm.cancel"),onConfirm:U=>Ye(c)},{default:a(()=>[l(d,{size:"small",type:"link",danger:""},{default:a(()=>[p(u(e.$t("tenant.cancelConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):h("",!0)],64)):h("",!0)]),emptyText:a(()=>[v("div",Rt,[l(g(je),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+u(e.$t("tenant.table.emptySubscriptions")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),l(fe,{key:"plans",tab:e.$t("tenant.tabs.plans")},{default:a(()=>[l(ze,{gutter:[16,16]},{default:a(()=>[(i(!0),f(C,null,z(be.value,t=>(i(),b(R,{key:t.id,xs:24,sm:12,lg:6},{default:a(()=>[l(P,{title:t.name,size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[l(N,{color:W(t.id)},{default:a(()=>[p(u(t.id),1)]),_:2},1032,["color"])]),default:a(()=>[v("div",Et,[t.monthlyFee!=null?(i(),f("span",Bt,[p("¥"+u(t.monthlyFee)+" ",1),v("span",Dt,u(e.$t("tenant.planCard.monthlySuffix")),1)])):(i(),f("span",Kt,u(e.$t("tenant.planCard.contactSales")),1))]),v("div",Jt,[v("div",Qt,u(e.$t("tenant.planCard.quotas")),1),(i(!0),f(C,null,z(ge.value,c=>(i(),f("div",{key:c.id,class:"plan-quota-row"},[v("span",Vt,u(c.name),1),v("span",Wt,u(Be(t.quotas?.[c.id],c.id)),1)]))),128))]),v("div",Yt,[v("div",Gt,u(e.$t("tenant.planCard.features")),1),(i(!0),f(C,null,z(t.features,c=>(i(),b(N,{key:c,style:{"font-size":"10px",margin:"1px"}},{default:a(()=>[p(u(c),1)]),_:2},1024))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),l(ae,{open:X.value,"onUpdate:open":n[7]||(n[7]=t=>X.value=t),title:e.$t("tenant.create_modal.title"),"confirm-loading":K.value,width:520,"ok-text":e.$t("tenant.create_modal.ok"),"cancel-text":e.$t("tenant.create_modal.cancel"),onOk:Ke,onCancel:he},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.create_modal.nameLabel"),required:""},{default:a(()=>[l(Y,{value:x.name,"onUpdate:value":n[3]||(n[3]=t=>x.name=t),placeholder:e.$t("tenant.create_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.slugLabel"),required:""},{default:a(()=>[l(Y,{value:x.slug,"onUpdate:value":n[4]||(n[4]=t=>x.slug=t),placeholder:e.$t("tenant.create_modal.slugPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.planLabel")},{default:a(()=>[l(B,{value:x.plan,"onUpdate:value":n[5]||(n[5]=t=>x.plan=t)},{default:a(()=>[(i(!0),f(C,null,z(g(G),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.create_modal.ownerLabel")},{default:a(()=>[l(Y,{value:x.owner,"onUpdate:value":n[6]||(n[6]=t=>x.owner=t),placeholder:e.$t("tenant.create_modal.ownerPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:H.value,"onUpdate:open":n[11]||(n[11]=t=>H.value=t),title:e.$t("tenant.subscribe_modal.title",{name:ce.value}),"confirm-loading":oe.value,width:500,"ok-text":e.$t("tenant.subscribe_modal.ok"),"cancel-text":e.$t("tenant.subscribe_modal.cancel"),onOk:Qe,onCancel:Se},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.subscribe_modal.planLabel"),required:""},{default:a(()=>[l(B,{value:$.plan,"onUpdate:value":n[8]||(n[8]=t=>$.plan=t)},{default:a(()=>[(i(!0),f(C,null,z(g(G),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(I(t)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.subscribe_modal.amountLabel")},{default:a(()=>[l(Le,{value:$.amount,"onUpdate:value":n[9]||(n[9]=t=>$.amount=t),min:0,placeholder:e.$t("tenant.subscribe_modal.amountPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.subscribe_modal.durationLabel")},{default:a(()=>[l(pe,{value:$.duration,"onUpdate:value":n[10]||(n[10]=t=>$.duration=t)},{default:a(()=>[l(O,{value:720*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration30")),1)]),_:1}),l(O,{value:2160*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration90")),1)]),_:1}),l(O,{value:365*24*60*60*1e3},{default:a(()=>[p(u(e.$t("tenant.subscribe_modal.duration365")),1)]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:de.value,"onUpdate:open":n[15]||(n[15]=t=>de.value=t),title:e.$t("tenant.quota_modal.title"),"confirm-loading":se.value,width:500,"ok-text":e.$t("tenant.quota_modal.ok"),"cancel-text":e.$t("tenant.quota_modal.cancel"),onOk:Ge},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.quota_modal.tenantLabel"),required:""},{default:a(()=>[l(B,{value:q.tenantId,"onUpdate:value":n[12]||(n[12]=t=>q.tenantId=t),"show-search":"",placeholder:e.$t("tenant.quota_modal.tenantPlaceholder")},{default:a(()=>[(i(!0),f(C,null,z(J.value,t=>(i(),b(E,{key:t.id,value:t.id},{default:a(()=>[p(u(t.name)+" ("+u(t.slug)+")",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.quota_modal.metricLabel"),required:""},{default:a(()=>[l(B,{value:q.metric,"onUpdate:value":n[13]||(n[13]=t=>q.metric=t)},{default:a(()=>[(i(!0),f(C,null,z(g(Ue),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.quota_modal.periodLabel")},{default:a(()=>[l(Y,{value:q.period,"onUpdate:value":n[14]||(n[14]=t=>q.period=t),placeholder:e.$t("tenant.quota_modal.periodPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),k.value?(i(),b(P,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:a(()=>[l(M,{title:e.$t("tenant.quota_modal.resultTitle"),value:k.value.unlimited?e.$t("tenant.quota_modal.unlimited"):k.value.exceeded?e.$t("tenant.quota_modal.exceeded"):e.$t("tenant.quota_modal.ok_state"),"value-style":{color:k.value.exceeded?"#ff4d4f":k.value.unlimited?"#722ed1":"#52c41a"}},null,8,["title","value","value-style"]),v("div",Xt,[v("div",null,[p(u(e.$t("tenant.quota_modal.planLine"))+" ",1),l(N,{color:W(k.value.plan)},{default:a(()=>[p(u(I(k.value.plan)),1)]),_:1},8,["color"])]),v("div",null,u(e.$t("tenant.quota_modal.periodLine",{period:k.value.period})),1),v("div",null,[p(u(e.$t("tenant.quota_modal.usedLine"))+" ",1),v("span",Ht,u(ke(k.value.used,k.value.metric)),1)]),k.value.unlimited?h("",!0):(i(),f("div",Zt,[p(u(e.$t("tenant.quota_modal.limitLine"))+" ",1),v("span",ea,u(ke(k.value.limit,k.value.metric)),1)])),!k.value.unlimited&&k.value.limit>0?(i(),f("div",ta,[l(Ze,{percent:Math.min(100,Math.round(100*k.value.used/k.value.limit)),size:"small",status:k.value.exceeded?"exception":"active"},null,8,["percent","status"])])):h("",!0)])]),_:1})):h("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),l(ae,{open:Z.value,"onUpdate:open":n[20]||(n[20]=t=>Z.value=t),title:e.$t("tenant.record_modal.title"),"confirm-loading":re.value,width:500,"ok-text":e.$t("tenant.record_modal.ok"),"cancel-text":e.$t("tenant.record_modal.cancel"),onOk:Xe,onCancel:Ce},{default:a(()=>[l(te,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:a(()=>[l(A,{label:e.$t("tenant.record_modal.tenantLabel"),required:""},{default:a(()=>[l(B,{value:_.tenantId,"onUpdate:value":n[16]||(n[16]=t=>_.tenantId=t),"show-search":"",placeholder:e.$t("tenant.record_modal.tenantPlaceholder")},{default:a(()=>[(i(!0),f(C,null,z(J.value,t=>(i(),b(E,{key:t.id,value:t.id},{default:a(()=>[p(u(t.name)+" ("+u(t.slug)+")",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.metricLabel"),required:""},{default:a(()=>[l(B,{value:_.metric,"onUpdate:value":n[17]||(n[17]=t=>_.metric=t)},{default:a(()=>[(i(!0),f(C,null,z(g(Ue),t=>(i(),b(E,{key:t,value:t},{default:a(()=>[p(u(t),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.valueLabel"),required:""},{default:a(()=>[l(Le,{value:_.value,"onUpdate:value":n[18]||(n[18]=t=>_.value=t),min:0,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),l(A,{label:e.$t("tenant.record_modal.periodLabel")},{default:a(()=>[l(Y,{value:_.period,"onUpdate:value":n[19]||(n[19]=t=>_.period=t),placeholder:e.$t("tenant.record_modal.periodPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},ra=et(aa,[["__scopeId","data-v-7210f1ac"]]);export{ra as default};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./xterm-BZcWGsqw.js","./markdown-CsiA8-E5.js","./markdown-Dfs9RUU9.css","./addon-fit-CK6X9sAG.js","./xterm-DFuMZ0ql.css"])))=>i.map(i=>d[i]);
2
- import{u as le,_ as re,d as Q,e as V}from"./index-D0d2TS5o.js";import{o as ie,e as ce,w as de,M as S,R as h,O,Q as Z,N as M,S as D,c as T,F as j,Y as G,P as R,r as k,K as L,f as ue,n as N,L as w,u as U,Z as fe,a1 as ve,a2 as me,a3 as ye}from"./vendor-DhFY8mDK.js";import{as as he,R as we,b as pe}from"./icons--SBOhPAi.js";const C=new Map,A=new Map,$=new Set,F=new Set;let H=!1;function _e(u){H||(H=!0,u.onMessage(l=>{if(!(!l||typeof l.type!="string")){if(l.type==="terminal.stdout"){const{sessionId:n,data:s,seq:g}=l.payload||{};if(!n)return;let v;try{const i=atob(s||""),b=new Uint8Array(i.length);for(let t=0;t<i.length;t++)b[t]=i.charCodeAt(t);v=new TextDecoder("utf-8").decode(b)}catch{v=""}const m={sessionId:n,data:v,seq:g};C.get(n)?.forEach(i=>i(m)),$.forEach(i=>i(m))}else if(l.type==="terminal.exit"){const{sessionId:n,exitCode:s,signal:g}=l.payload||{};if(!n)return;const v={sessionId:n,exitCode:s,signal:g};A.get(n)?.forEach(m=>m(v)),F.forEach(m=>m(v))}}}))}function I(u){const l=new TextEncoder().encode(u);let n="";for(let s=0;s<l.length;s++)n+=String.fromCharCode(l[s]);return btoa(n)}function J(u){const l=atob(u||""),n=new Uint8Array(l.length);for(let s=0;s<l.length;s++)n[s]=l.charCodeAt(s);return new TextDecoder("utf-8").decode(n)}function ge(){const u=le();_e(u);async function l(t={}){const o=await u.sendRaw({type:"terminal.create",payload:{shell:t.shell,cwd:t.cwd,env:t.env,cols:t.cols,rows:t.rows}});if(o.ok===!1)throw new Error(o.error||"terminal_create_failed");return o.result??o}async function n(){const t=await u.sendRaw({type:"terminal.list",payload:{}});if(t.ok===!1)throw new Error(t.error||"terminal_list_failed");const o=t.result??t;return Array.isArray(o.sessions)?o.sessions:[]}async function s(t,o){const r=await u.sendRaw({type:"terminal.stdin",payload:{sessionId:t,data:I(String(o))}});if(r.ok===!1)throw new Error(r.error||"terminal_stdin_failed");return r.result??r}async function g(t,o,r){const x=await u.sendRaw({type:"terminal.resize",payload:{sessionId:t,cols:o,rows:r}});if(x.ok===!1)throw new Error(x.error||"terminal_resize_failed");return x.result??x}async function v(t){const o=await u.sendRaw({type:"terminal.close",payload:{sessionId:t}});if(o.ok===!1)throw new Error(o.error||"terminal_close_failed");return o.result??o}async function m(t,o=0){const r=await u.sendRaw({type:"terminal.history",payload:{sessionId:t,fromSeq:o}});if(r.ok===!1)throw new Error(r.error||"terminal_history_failed");const x=r.result??r;return{truncated:!!x.truncated,chunks:(x.chunks||[]).map(E=>({seq:E.seq,data:J(E.data)}))}}function i(t,o){return t?(C.has(t)||C.set(t,new Set),C.get(t).add(o),()=>{C.get(t)?.delete(o),C.get(t)?.size===0&&C.delete(t)}):($.add(o),()=>$.delete(o))}function b(t,o){return t?(A.has(t)||A.set(t,new Set),A.get(t).add(o),()=>{A.get(t)?.delete(o),A.get(t)?.size===0&&A.delete(t)}):(F.add(o),()=>F.delete(o))}return{create:l,list:n,stdin:s,resize:g,close:v,history:m,onStdout:i,onExit:b,_internal:{stdoutSubs:C,exitSubs:A,toBase64Utf8:I,fromBase64Utf8:J}}}const xe={class:"terminal-page"},Se={class:"terminal-header"},be={class:"page-sub"},ke={class:"terminal-body"},Ce={class:"session-tabs"},Ae=["onClick"],Ee={class:"session-shell"},Te={class:"session-id"},Re={key:0,class:"session-empty"},ze={class:"xterm-host"},Me=["data-session-id"],De={key:0,class:"xterm-placeholder"},Le={key:1,class:"terminal-footer"},Oe={key:0,class:"footer-exit"},qe={__name:"Terminal",setup(u){const l=ge(),n=k([]),s=k(null),g=k("pwsh"),v=k(!1),m=k(!1),i=k(""),b=k(""),t=k([]),o=[{value:"pwsh",label:"PowerShell"},{value:"cmd",label:"CMD"},{value:"bash",label:"Bash"},{value:"wsl",label:"WSL"}],r=ue(()=>n.value.find(e=>e.id===s.value));function x(e){return e?e.slice(0,8):""}let E=null,q=null;async function ee(){if(E)return{xtermMod:E,fitAddonMod:q};try{E=await V(()=>import("./xterm-BZcWGsqw.js").then(e=>e.x),__vite__mapDeps([0,1,2]),import.meta.url),q=await V(()=>import("./addon-fit-CK6X9sAG.js").then(e=>e.a),__vite__mapDeps([3,1,2]),import.meta.url),await V(()=>Promise.resolve({}),__vite__mapDeps([4]),import.meta.url)}catch(e){throw b.value="xterm 资源加载失败:"+(e?.message||"未知错误"),e}return{xtermMod:E,fitAddonMod:q}}async function W(e){await N();const{xtermMod:a,fitAddonMod:y}=await ee(),p=t.value.find(f=>f?.dataset?.sessionId===e.id);if(!p)return;const c=new a.Terminal({cursorBlink:!0,fontFamily:'Consolas, "Courier New", monospace',fontSize:13,theme:{background:"#1e1e1e",foreground:"#d4d4d4"},convertEol:!1}),z=new y.FitAddon;c.loadAddon(z),c.open(p);try{z.fit()}catch{}e.xterm=c,e.fitAddon=z;const B=c.onData(f=>{l.stdin(e.id,f).catch(_=>{String(_?.message||"").includes("dangerous_keyword_blocked")?Q.warning("该命令被桌面端拦截(高危关键字)"):Q.error("stdin 失败: "+(_?.message||_))})}),d=l.onStdout(e.id,({data:f,seq:_})=>{e.lastSeq=_,c.write(f)}),P=l.onExit(e.id,({exitCode:f,signal:_})=>{e.alive=!1,e.exitCode=f,e.signal=_,c.writeln(`\r
3
- \x1B[33m[session exited, code=${f}, signal=${_??"-"}]\x1B[0m`)});e.offs=()=>{try{B.dispose?.()}catch{}d(),P()};try{const{chunks:f,truncated:_}=await l.history(e.id,0);_&&c.writeln("\x1B[2m[history truncated — earlier output was evicted]\x1B[0m");for(const K of f)c.write(K.data),e.lastSeq=K.seq}catch(f){c.writeln(`\x1B[31m[history fetch failed: ${f?.message||f}]\x1B[0m`)}const Y=new ResizeObserver(()=>{try{z.fit(),l.resize(e.id,c.cols,c.rows).catch(()=>{})}catch{}});Y.observe(p);const se=e.offs;e.offs=()=>{try{Y.disconnect()}catch{}se()}}async function te(){v.value=!0,i.value="";try{const e=await l.create({shell:g.value,cols:80,rows:24}),a={id:e.sessionId,shell:e.shell,cwd:"",alive:!0,lastSeq:0,exitCode:null,xterm:null,fitAddon:null,offs:()=>{}};n.value.push(a),s.value=a.id,await W(a)}catch(e){i.value=e?.message||String(e)}finally{v.value=!1}}async function ae(e){try{await l.close(e)}catch(a){i.value=a?.message||String(a)}setTimeout(()=>ne(e),500)}function ne(e){const a=n.value.findIndex(p=>p.id===e);if(a===-1)return;const y=n.value[a];try{y.offs?.()}catch{}try{y.xterm?.dispose?.()}catch{}n.value.splice(a,1),s.value===e&&(s.value=n.value[0]?.id||null)}function oe(e){s.value=e,N(()=>{const a=n.value.find(y=>y.id===e);try{a?.fitAddon?.fit()}catch{}})}async function X(){m.value=!0,i.value="";try{const e=await l.list();for(const a of e){const y=n.value.find(c=>c.id===a.id);if(y){y.alive=a.alive,y.lastSeq=a.lastSeq;continue}const p={id:a.id,shell:a.shell,cwd:a.cwd,alive:a.alive,lastSeq:a.lastSeq,exitCode:null,xterm:null,fitAddon:null,offs:()=>{}};n.value.push(p),await W(p)}!s.value&&n.value.length>0&&(s.value=n.value[0].id)}catch(e){i.value=e?.message||String(e)}finally{m.value=!1}}return ie(async()=>{await X()}),ce(()=>{for(const e of n.value){try{e.offs?.()}catch{}try{e.xterm?.dispose?.()}catch{}}}),de(s,()=>{N(()=>{const e=r.value;try{e?.fitAddon?.fit()}catch{}})}),(e,a)=>{const y=L("a-tag"),p=L("a-select"),c=L("a-button"),z=L("a-space"),B=L("a-alert");return w(),S("div",xe,[h("div",Se,[h("div",null,[a[3]||(a[3]=h("h2",{class:"page-title"},"远程终端",-1)),h("p",be,[a[2]||(a[2]=O(" 桌面端托管的 PTY 会话;Android 端可远程操控同一通道 ",-1)),b.value?(w(),Z(y,{key:0,color:"orange",style:{"margin-left":"8px"}},{default:M(()=>[O(R(b.value),1)]),_:1})):D("",!0)])]),T(z,null,{default:M(()=>[T(p,{value:g.value,"onUpdate:value":a[0]||(a[0]=d=>g.value=d),style:{width:"130px"},size:"small",options:o},null,8,["value"]),T(c,{type:"primary",size:"small",loading:v.value,onClick:te},{icon:M(()=>[T(U(he))]),default:M(()=>[a[4]||(a[4]=O(" 新会话 ",-1))]),_:1},8,["loading"]),T(c,{size:"small",loading:m.value,onClick:X},{icon:M(()=>[T(U(we))]),default:M(()=>[a[5]||(a[5]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),i.value?(w(),Z(B,{key:0,message:i.value,type:"error","show-icon":"",closable:"",style:{"margin-bottom":"12px"},onClose:a[1]||(a[1]=d=>i.value="")},null,8,["message"])):D("",!0),h("div",ke,[h("div",Ce,[(w(!0),S(j,null,G(n.value,d=>(w(),S("div",{key:d.id,class:fe(["session-tab",{active:d.id===s.value,dead:!d.alive}]),onClick:P=>oe(d.id)},[h("span",Ee,R(d.shell),1),h("span",Te,R(x(d.id)),1),T(U(pe),{class:"session-close",onClick:ve(P=>ae(d.id),["stop"])},null,8,["onClick"])],10,Ae))),128)),n.value.length===0?(w(),S("div",Re,' 点击 "新会话" 创建第一个终端 ')):D("",!0)]),h("div",ze,[(w(!0),S(j,null,G(n.value,d=>me((w(),S("div",{key:d.id,ref_for:!0,ref_key:"xtermContainers",ref:t,"data-session-id":d.id,class:"xterm-container"},null,8,Me)),[[ye,d.id===s.value]])),128)),n.value.length===0?(w(),S("div",De,[...a[6]||(a[6]=[h("span",null,"无活跃会话",-1)])])):D("",!0)])]),r.value?(w(),S("div",Le,[h("span",null,R(r.value.shell)+" · "+R(r.value.cwd||"(默认 cwd)")+" · seq "+R(r.value.lastSeq),1),r.value.alive?D("",!0):(w(),S("span",Oe,"已退出 (code="+R(r.value.exitCode??"-")+")",1))])):D("",!0)])}}},Ne=re(qe,[["__scopeId","data-v-2b31fd4d"]]);export{Ne as default};
@@ -1 +0,0 @@
1
- .terminal-page[data-v-2b31fd4d]{display:flex;flex-direction:column;height:calc(100vh - 110px)}.terminal-header[data-v-2b31fd4d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.terminal-body[data-v-2b31fd4d]{flex:1;display:flex;flex-direction:column;border:1px solid var(--border, #d9d9d9);border-radius:6px;overflow:hidden;background:#1e1e1e;min-height:0}.session-tabs[data-v-2b31fd4d]{display:flex;gap:4px;padding:6px 6px 0;background:#2d2d2d;flex-wrap:wrap}.session-tab[data-v-2b31fd4d]{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#1e1e1e;border-radius:4px 4px 0 0;font-size:12px;color:#ccc;cursor:pointer;border:1px solid transparent;border-bottom:none;-webkit-user-select:none;user-select:none}.session-tab.active[data-v-2b31fd4d]{background:#1e1e1e;color:#fff;border-color:#555}.session-tab.dead[data-v-2b31fd4d]{opacity:.5;font-style:italic}.session-shell[data-v-2b31fd4d]{font-weight:500}.session-id[data-v-2b31fd4d]{font-family:Consolas,monospace;color:#888;font-size:11px}.session-close[data-v-2b31fd4d]{color:#888;cursor:pointer}.session-close[data-v-2b31fd4d]:hover{color:#ff6b6b}.session-empty[data-v-2b31fd4d]{padding:10px 14px;color:#777;font-size:12px}.xterm-host[data-v-2b31fd4d]{flex:1;position:relative;min-height:0}.xterm-container[data-v-2b31fd4d]{position:absolute;inset:0;padding:8px}.xterm-placeholder[data-v-2b31fd4d]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#666;font-size:14px}.terminal-footer[data-v-2b31fd4d]{display:flex;justify-content:space-between;padding:6px 12px;font-size:11px;color:var(--text-muted, #999);background:var(--bg-secondary, #fafafa);border-top:1px solid var(--border, #eee)}.footer-exit[data-v-2b31fd4d]{color:#ff7a45;font-style:italic}
@@ -1 +0,0 @@
1
- import{_ as T}from"./index-D0d2TS5o.js";import{aH as x,aD as D}from"./icons--SBOhPAi.js";import{K as b,L as s,M as r,R as l,Q as g,u as $,P as n,c,N as v,O as d,S as y,f as a}from"./vendor-DhFY8mDK.js";const B={class:"timeline-event"},C={class:"dot"},O={class:"card"},V={class:"head"},M={class:"time"},R={class:"primary"},j={key:0},w={key:1},A={key:2},E={key:0,class:"trip-no"},H={key:1,class:"extra"},W={__name:"TimelineRenderer",props:{event:{type:Object,required:!0}},setup(i){const o=i,e=a(()=>o.event.content||{}),k=a(()=>{const t=o.event.source.adapter||"";return t.startsWith("travel-12306")||t.startsWith("travel-ctrip")}),p=a(()=>e.value.from&&e.value.to?`${e.value.from} → ${e.value.to}`:e.value.origin&&e.value.destination?`${e.value.origin} → ${e.value.destination}`:null),_=a(()=>o.event.place||e.value.placeName||e.value.poi),m=a(()=>e.value.trainNo),f=a(()=>e.value.flightNo),N=a(()=>e.value.title||e.value.text||e.value.description||"—"),h=a(()=>{const t=[];return e.value.departureTime&&t.push(`出发 ${e.value.departureTime}`),e.value.arrivalTime&&t.push(`到达 ${e.value.arrivalTime}`),e.value.duration&&t.push(`${e.value.duration}`),e.value.distance&&t.push(`${e.value.distance}`),t.length?t.join(" · "):null}),S=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`});return(t,q)=>{const u=b("a-tag");return s(),r("div",B,[l("div",C,[k.value?(s(),g($(x),{key:0})):(s(),g($(D),{key:1}))]),l("div",O,[l("div",V,[l("span",M,n(S.value),1),c(u,{color:"cyan"},{default:v(()=>[d(n(i.event.source.adapter),1)]),_:1}),c(u,null,{default:v(()=>[d(n(i.event.subtype),1)]),_:1})]),l("div",R,[p.value?(s(),r("span",j,n(p.value),1)):_.value?(s(),r("span",w,"📍 "+n(_.value),1)):(s(),r("span",A,n(N.value),1))]),m.value||f.value?(s(),r("div",E,[c(u,{color:"blue"},{default:v(()=>[d(n(m.value||f.value),1)]),_:1})])):y("",!0),h.value?(s(),r("div",H,n(h.value),1)):y("",!0)])])}}},L=T(W,[["__scopeId","data-v-ed65ec10"]]);export{L as default};
@@ -1 +0,0 @@
1
- .timeline-event[data-v-ed65ec10]{display:flex;margin-bottom:8px;position:relative}.dot[data-v-ed65ec10]{width:32px;flex-shrink:0;display:flex;justify-content:center;padding-top:12px;color:#1677ff;font-size:18px}.card[data-v-ed65ec10]{flex:1;background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:12px 16px;position:relative}.card[data-v-ed65ec10]:before{content:"";position:absolute;left:-8px;top:18px;width:8px;height:1px;background:#d9d9d9}.head[data-v-ed65ec10]{display:flex;gap:8px;align-items:center;margin-bottom:8px}.time[data-v-ed65ec10]{font-size:12px;color:#999}.primary[data-v-ed65ec10]{font-size:14px;color:#333;font-weight:500;margin-bottom:6px}.trip-no[data-v-ed65ec10]{margin-bottom:4px}.extra[data-v-ed65ec10]{font-size:12px;color:#666}
@@ -1 +0,0 @@
1
- .page-title[data-v-605706da]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-605706da]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.tokens-tabs[data-v-605706da] .ant-tabs-nav{margin-bottom:16px}.stat-sub[data-v-605706da]{margin-top:4px;color:var(--text-muted);font-size:11px}.bd-row[data-v-605706da]{display:flex;align-items:center;margin-bottom:8px}
@@ -1 +0,0 @@
1
- import{_ as zt,b as Bt,u as Ot,d as A}from"./index-D0d2TS5o.js";import{s as rt}from"./community-parser-CO25nZFt.js";import{R as At,n as Rt,N as ot,z as st,w as Ut,aQ as at}from"./icons--SBOhPAi.js";import{o as Et,M as y,R as m,P as c,u as a,c as o,N as n,Q as w,S as _,K as v,r as O,L as p,O as S,F as U,Y as K,f as G}from"./vendor-DhFY8mDK.js";function D(e){const t=rt(e);if(!t)return null;try{return JSON.parse(t)}catch{}const l=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!l)return null;try{return JSON.parse(l[0])}catch{return null}}const Mt=Object.freeze(["today","week","month","all"]),ct=Object.freeze(["planning","active","suspended","archived"]),ut=Object.freeze(["pending","recorded","billed","rejected","refunded"]);function i(e,t=0){return typeof e=="number"&&Number.isFinite(e)?e:t}function V(e){if(!e)return{noDb:!1,error:""};const t=rt(e),l=/Database not available/i.test(t);return{noDb:l,error:l?"Database not available":""}}const Q={totalCalls:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,avgResponseTimeMs:0};function nt(e){const t={...Q};return!e||typeof e!="object"||Array.isArray(e)||(t.totalCalls=i(e.total_calls??e.totalCalls,0),t.totalInputTokens=i(e.total_input_tokens??e.totalInputTokens,0),t.totalOutputTokens=i(e.total_output_tokens??e.totalOutputTokens,0),t.totalTokens=i(e.total_tokens??e.totalTokens,0),t.totalCostUsd=i(e.total_cost_usd??e.totalCostUsd,0),t.avgResponseTimeMs=i(e.avg_response_time_ms??e.avgResponseTimeMs,0)),t}function lt(e){const t=D(e);return!t||typeof t!="object"||Array.isArray(t)?{stats:{...Q},today:{...Q}}:{stats:nt(t.stats),today:nt(t.today)}}function wt(e,t=0){if(!e||typeof e!="object")return null;const l=e.provider||"",f=e.model||"";return!l&&!f?null:{key:`${l}/${f}/${t}`,provider:String(l),model:String(f),calls:i(e.calls,0),inputTokens:i(e.input_tokens??e.inputTokens,0),outputTokens:i(e.output_tokens??e.outputTokens,0),totalTokens:i(e.total_tokens??e.totalTokens,0),costUsd:i(e.cost_usd??e.costUsd,0),_idx:t}}function Dt(e){const t=D(e);return Array.isArray(t)?t.map(wt).filter(Boolean):[]}function jt(e,t=0){if(!e||typeof e!="object")return null;const l=e.id||"";return l?{key:l,id:l,provider:String(e.provider||""),model:String(e.model||""),inputTokens:i(e.input_tokens??e.inputTokens,0),outputTokens:i(e.output_tokens??e.outputTokens,0),totalTokens:i(e.total_tokens??e.totalTokens,0),costUsd:i(e.cost_usd??e.costUsd,0),responseTimeMs:i(e.response_time_ms??e.responseTimeMs,0),endpoint:String(e.endpoint||""),createdAt:e.created_at??e.createdAt??"",_idx:t}:null}function Nt(e){const t=D(e);return Array.isArray(t)?t.map(jt).filter(Boolean):[]}const It={totalEntries:0,totalHits:0,totalTokensSaved:0,expiredEntries:0};function Vt(e){const t={...It},l=D(e);return!l||typeof l!="object"||Array.isArray(l)||(t.totalEntries=i(l.total_entries??l.totalEntries,0),t.totalHits=i(l.total_hits??l.totalHits,0),t.totalTokensSaved=i(l.total_tokens_saved??l.totalTokensSaved,0),t.expiredEntries=i(l.expired_entries??l.expiredEntries,0)),t}const Pt={totalBudgetsV2:0,totalRecordsV2:0,maxActiveBudgetsPerOwner:0,maxPendingRecordsPerBudget:0,budgetIdleMs:0,recordStuckMs:0,budgetsByStatus:{},recordsByStatus:{}};function Ft(e){const t=JSON.parse(JSON.stringify(Pt));for(const f of ct)t.budgetsByStatus[f]=0;for(const f of ut)t.recordsByStatus[f]=0;const l=D(e);if(!l||typeof l!="object"||Array.isArray(l))return t;if(t.totalBudgetsV2=i(l.totalBudgetsV2,0),t.totalRecordsV2=i(l.totalRecordsV2,0),t.maxActiveBudgetsPerOwner=i(l.maxActiveBudgetsPerOwner,0),t.maxPendingRecordsPerBudget=i(l.maxPendingRecordsPerBudget,0),t.budgetIdleMs=i(l.budgetIdleMs,0),t.recordStuckMs=i(l.recordStuckMs,0),l.budgetsByStatus&&typeof l.budgetsByStatus=="object")for(const[f,b]of Object.entries(l.budgetsByStatus))typeof b=="number"&&Number.isFinite(b)&&(t.budgetsByStatus[f]=b);if(l.recordsByStatus&&typeof l.recordsByStatus=="object")for(const[f,b]of Object.entries(l.recordsByStatus))typeof b=="number"&&Number.isFinite(b)&&(t.recordsByStatus[f]=b);return t}function Lt(e){if(e==null||e==="")return"—";const t=String(e),l=t.includes(" ")&&!t.includes("T")?t.replace(" ","T")+"Z":t,f=typeof e=="number"?new Date(e):new Date(l);return isNaN(f.getTime())?t:f.toLocaleString("zh-CN",{hour12:!1})}function P(e){return typeof e!="number"||!Number.isFinite(e)?"$0":"$"+(Math.abs(e)<1?e.toFixed(4):e.toFixed(2))}const $t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ht={class:"page-title"},Jt={class:"page-sub"},Kt={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Gt={style:{color:"var(--text-secondary)","font-size":"12px"}},Qt={class:"stat-sub"},Yt={class:"stat-sub"},Wt={class:"stat-sub"},Zt={class:"stat-sub"},qt={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Xt={key:2,style:{color:"var(--text-secondary)"}},te={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ee={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},oe={style:{color:"#faad14","font-weight":"500","font-family":"monospace"}},se={key:5,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"12px"}},ae={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ne={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},le={key:2,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},re={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ce={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},ue={key:4,style:{color:"#faad14","font-weight":"500","font-family":"monospace"}},ie={key:0,style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},de={key:1,style:{color:"var(--text-muted)"}},pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},fe={style:{"font-size":"12px",color:"var(--text-secondary)",margin:"0 0 8px"}},ke={style:{"font-size":"12px",color:"var(--text-secondary)",margin:"0 0 8px"}},me={__name:"Tokens",setup(e){const{t}=Bt(),l=Ot(),f=O(!1),b=O("all"),g=O({stats:{totalCalls:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,avgResponseTimeMs:0},today:{totalCalls:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,avgResponseTimeMs:0}}),F=O([]),Y=O([]),h=O({totalEntries:0,totalHits:0,totalTokensSaved:0,expiredEntries:0}),R=O({totalBudgetsV2:0,totalRecordsV2:0,maxActiveBudgetsPerOwner:0,maxPendingRecordsPerBudget:0,budgetIdleMs:0,recordStuckMs:0,budgetsByStatus:{},recordsByStatus:{}}),j=O({noDb:!1,error:""}),W=O("breakdown"),it=G(()=>[{title:t("tokens.breakdownColumns.provider"),key:"provider",width:"130px"},{title:t("tokens.breakdownColumns.model"),key:"model"},{title:t("tokens.breakdownColumns.calls"),key:"calls",width:"90px"},{title:t("tokens.breakdownColumns.totalTokens"),key:"totalTokens",width:"180px"},{title:t("tokens.breakdownColumns.costUsd"),key:"costUsd",width:"180px"},{title:t("tokens.breakdownColumns.avgCost"),key:"avgCost",width:"110px"}]),dt=G(()=>[{title:t("tokens.recentColumns.createdAt"),key:"createdAt",width:"160px"},{title:t("tokens.recentColumns.provider"),key:"provider",width:"130px"},{title:t("tokens.recentColumns.model"),key:"model",width:"180px"},{title:t("tokens.recentColumns.tokens"),key:"tokens",width:"160px"},{title:t("tokens.recentColumns.costUsd"),key:"costUsd",width:"110px"},{title:t("tokens.recentColumns.responseTimeMs"),key:"responseTimeMs",width:"100px"},{title:t("tokens.recentColumns.endpoint"),key:"endpoint"}]),Z=G(()=>F.value.reduce((s,u)=>s+u.costUsd,0));function pt(s){const u=`tokens.period.${s}`,k=t(u);return k===u?s:k}function q(s){const u=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let k=0;for(let z=0;z<(s||"").length;z++)k=k*31+s.charCodeAt(z)>>>0;return u[k%u.length]}function ft(s){return s<=500?"#52c41a":s<=1500?"#1677ff":s<=3e3?"#faad14":"#ff4d4f"}function kt(s){return s<=500?"green":s<=1500?"blue":s<=3e3?"gold":"red"}function C(s){return typeof s!="number"||!Number.isFinite(s)?"0":s.toLocaleString("en-US")}function mt(s){return!Z.value||s<=0?0:Math.min(100,Math.round(s/Z.value*100))}function X(s,u){return u?Math.round(s/u*100):0}function yt(s){const u=`tokens.budgetStatus.${s}`,k=t(u);return k===u?s:k}function vt(s){return{planning:"default",active:"green",suspended:"orange",archived:"default"}[s]||"default"}function _t(s){return{planning:"#888",active:"#52c41a",suspended:"#faad14",archived:"#666"}[s]||"#888"}function bt(s){const u=`tokens.recordStatus.${s}`,k=t(u);return k===u?s:k}function gt(s){return{pending:"default",recorded:"blue",billed:"green",rejected:"red",refunded:"orange"}[s]||"default"}function xt(s){return{pending:"#888",recorded:"#1677ff",billed:"#52c41a",rejected:"#ff4d4f",refunded:"#faad14"}[s]||"#888"}async function N(){f.value=!0,j.value={noDb:!1,error:""};try{const[s,u,k,z,L]=await Promise.all([l.execute(`tokens show --period ${b.value} --json`,8e3).catch(()=>({output:""})),l.execute("tokens breakdown --json",8e3).catch(()=>({output:""})),l.execute("tokens recent -n 100 --json",1e4).catch(()=>({output:""})),l.execute("tokens cache --json",6e3).catch(()=>({output:""})),l.execute("tokens stats-v2",6e3).catch(()=>({output:""}))]),I=[s,u,k,z].map(E=>V(E.output)).find(E=>E.noDb);I&&(j.value=I),g.value=lt(s.output),F.value=Dt(u.output),Y.value=Nt(k.output),h.value=Vt(z.output),R.value=Ft(L.output)}catch(s){A.error(t("tokens.messages.loadFailed",{err:s?.message||s}))}finally{f.value=!1}}async function ht(){try{const{output:s}=await l.execute(`tokens show --period ${b.value} --json`,8e3),u=V(s);if(u.noDb){j.value=u;return}g.value=lt(s)}catch(s){A.error(t("tokens.messages.loadShowFailed",{err:s?.message||s}))}}async function Tt(){try{const{output:s}=await l.execute("tokens cache --cleanup",8e3);if(V(s).noDb){A.error(t("tokens.messages.needInit"));return}A.success(t("tokens.messages.cleanupOk")),await N()}catch(s){A.error(t("tokens.messages.cleanupFailed",{err:s?.message||s}))}}async function St(){try{const{output:s}=await l.execute("tokens cache --clear",8e3);if(V(s).noDb){A.error(t("tokens.messages.needInit"));return}A.success(t("tokens.messages.clearOk")),await N()}catch(s){A.error(t("tokens.messages.clearFailed",{err:s?.message||s}))}}return Et(N),(s,u)=>{const k=v("a-button"),z=v("a-space"),L=v("a-alert"),I=v("a-radio-button"),E=v("a-radio-group"),x=v("a-card"),B=v("a-statistic"),T=v("a-col"),$=v("a-row"),M=v("a-tag"),H=v("a-progress"),tt=v("a-table"),J=v("a-tab-pane"),et=v("a-popconfirm"),Ct=v("a-tabs");return p(),y("div",null,[m("div",$t,[m("div",null,[m("h2",Ht,c(a(t)("tokens.title")),1),m("p",Jt,c(a(t)("tokens.subtitle")),1)]),o(z,null,{default:n(()=>[o(k,{loading:f.value,onClick:N},{icon:n(()=>[o(a(At))]),default:n(()=>[S(" "+c(a(t)("tokens.refresh")),1)]),_:1},8,["loading"])]),_:1})]),j.value.noDb?(p(),w(L,{key:0,type:"info","show-icon":"",message:a(t)("tokens.noDb.message"),description:a(t)("tokens.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):_("",!0),o(x,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:n(()=>[m("div",Kt,[m("span",Gt,c(a(t)("tokens.periodLabel")),1),o(E,{value:b.value,"onUpdate:value":u[0]||(u[0]=r=>b.value=r),size:"small","button-style":"solid",onChange:ht},{default:n(()=>[(p(!0),y(U,null,K(a(Mt),r=>(p(),w(I,{key:r,value:r},{default:n(()=>[S(c(pt(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),o($,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(T,{xs:12,sm:8,lg:5},{default:n(()=>[o(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.stats.calls"),value:g.value.stats.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(a(Rt))]),_:1},8,["title","value"]),m("div",Qt,c(a(t)("tokens.stats.callsToday",{count:g.value.today.totalCalls})),1)]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:n(()=>[o(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.stats.totalTokens"),value:g.value.stats.totalTokens,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(a(ot))]),_:1},8,["title","value"]),m("div",Yt,c(a(t)("tokens.stats.tokensInOut",{inputs:C(g.value.stats.totalInputTokens),outputs:C(g.value.stats.totalOutputTokens)})),1)]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:n(()=>[o(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.stats.totalCost"),value:g.value.stats.totalCostUsd,precision:g.value.stats.totalCostUsd<1?4:2,prefix:"$","value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value","precision"]),m("div",Wt,c(a(t)("tokens.stats.costToday",{amount:a(P)(g.value.today.totalCostUsd)})),1)]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:n(()=>[o(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.stats.avgResponse"),value:g.value.stats.avgResponseTimeMs,suffix:"ms",precision:0,"value-style":{color:ft(g.value.stats.avgResponseTimeMs),fontSize:"20px"}},{prefix:n(()=>[o(a(st))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(T,{xs:24,sm:8,lg:4},{default:n(()=>[o(x,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.stats.cacheHits"),value:h.value.totalHits,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(a(Ut))]),_:1},8,["title","value"]),m("div",Zt,c(a(t)("tokens.stats.cacheTokensSaved",{count:C(h.value.totalTokensSaved)})),1)]),_:1})]),_:1})]),_:1}),o(Ct,{activeKey:W.value,"onUpdate:activeKey":u[1]||(u[1]=r=>W.value=r),class:"tokens-tabs"},{default:n(()=>[o(J,{key:"breakdown",tab:a(t)("tokens.tabs.breakdown")},{default:n(()=>[o(tt,{columns:it.value,"data-source":F.value,pagination:{pageSize:20,showTotal:r=>a(t)("tokens.totals.models",{count:r})},size:"small",loading:f.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:d})=>[r.key==="provider"?(p(),w(M,{key:0,color:q(d.provider),style:{"font-family":"monospace"}},{default:n(()=>[S(c(d.provider),1)]),_:2},1032,["color"])):_("",!0),r.key==="model"?(p(),y("span",qt,c(d.model),1)):_("",!0),r.key==="calls"?(p(),y("span",Xt,c(C(d.calls)),1)):_("",!0),r.key==="totalTokens"?(p(),y(U,{key:3},[m("span",te,c(C(d.totalTokens)),1),m("div",ee,c(a(t)("tokens.breakdownDetails.tokensInOut",{inputs:C(d.inputTokens),outputs:C(d.outputTokens)})),1)],64)):_("",!0),r.key==="costUsd"?(p(),y(U,{key:4},[m("span",oe,c(a(P)(d.costUsd)),1),o(H,{percent:mt(d.costUsd),"show-info":!1,"stroke-color":"#faad14",size:"small",style:{"margin-top":"2px"}},null,8,["percent"])],64)):_("",!0),r.key==="avgCost"?(p(),y("span",se,c(d.calls>0?a(P)(d.costUsd/d.calls):"—"),1)):_("",!0)]),emptyText:n(()=>[m("div",ae,[o(a(ot),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),S(" "+c(a(t)("tokens.empty.breakdown")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),o(J,{key:"recent",tab:a(t)("tokens.tabs.recent")},{default:n(()=>[o(tt,{columns:dt.value,"data-source":Y.value,pagination:{pageSize:20,showTotal:r=>a(t)("tokens.totals.rows",{count:r})},size:"small",loading:f.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:d})=>[r.key==="createdAt"?(p(),y("span",ne,c(a(Lt)(d.createdAt)),1)):_("",!0),r.key==="provider"?(p(),w(M,{key:1,color:q(d.provider),style:{"font-family":"monospace"}},{default:n(()=>[S(c(d.provider),1)]),_:2},1032,["color"])):_("",!0),r.key==="model"?(p(),y("span",le,c(d.model),1)):_("",!0),r.key==="tokens"?(p(),y(U,{key:3},[m("span",re,c(C(d.totalTokens)),1),m("div",ce,c(C(d.inputTokens))+" / "+c(C(d.outputTokens)),1)],64)):_("",!0),r.key==="costUsd"?(p(),y("span",ue,c(a(P)(d.costUsd)),1)):_("",!0),r.key==="responseTimeMs"?(p(),w(M,{key:5,color:kt(d.responseTimeMs)},{default:n(()=>[S(c(d.responseTimeMs)+"ms",1)]),_:2},1032,["color"])):_("",!0),r.key==="endpoint"?(p(),y(U,{key:6},[d.endpoint?(p(),y("span",ie,c(d.endpoint),1)):(p(),y("span",de,"—"))],64)):_("",!0)]),emptyText:n(()=>[m("div",pe,[o(a(st),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),S(" "+c(a(t)("tokens.empty.recent")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),o(J,{key:"cache",tab:a(t)("tokens.tabs.cache")},{default:n(()=>[o($,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:n(()=>[o(T,{xs:12,sm:6},{default:n(()=>[o(x,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.cache.totalEntries"),value:h.value.totalEntries,"value-style":{color:"#1677ff",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:6},{default:n(()=>[o(x,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.cache.totalHits"),value:h.value.totalHits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:6},{default:n(()=>[o(x,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.cache.totalTokensSaved"),value:h.value.totalTokensSaved,"value-style":{color:"#13c2c2",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:6},{default:n(()=>[o(x,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(B,{title:a(t)("tokens.cache.expiredEntries"),value:h.value.expiredEntries,"value-style":{color:h.value.expiredEntries>0?"#faad14":"#888",fontSize:"18px"}},null,8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),o(x,{title:a(t)("tokens.cache.maintenanceTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(z,null,{default:n(()=>[o(et,{title:a(t)("tokens.cache.cleanupConfirm"),"ok-text":a(t)("tokens.cache.cleanupOk"),"cancel-text":a(t)("common.cancel"),onConfirm:Tt},{default:n(()=>[o(k,{disabled:h.value.expiredEntries===0},{icon:n(()=>[o(a(at))]),default:n(()=>[S(" "+c(a(t)("tokens.cache.cleanupButton",{count:h.value.expiredEntries})),1)]),_:1},8,["disabled"])]),_:1},8,["title","ok-text","cancel-text"]),o(et,{title:a(t)("tokens.cache.clearConfirm"),"ok-text":a(t)("tokens.cache.clearOk"),"ok-type":"danger","cancel-text":a(t)("common.cancel"),onConfirm:St},{default:n(()=>[o(k,{danger:"",disabled:h.value.totalEntries===0},{icon:n(()=>[o(a(at))]),default:n(()=>[S(" "+c(a(t)("tokens.cache.clearButton")),1)]),_:1},8,["disabled"])]),_:1},8,["title","ok-text","cancel-text"])]),_:1})]),_:1},8,["title"]),o(x,{title:a(t)("tokens.v2.cardTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:n(()=>[o($,{gutter:[16,16]},{default:n(()=>[o(T,{xs:24,lg:12},{default:n(()=>[m("h5",fe,c(a(t)("tokens.v2.budgetsTitle")),1),(p(!0),y(U,null,K(a(ct),r=>(p(),y("div",{key:r,class:"bd-row"},[o(M,{color:vt(r),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[S(c(yt(r)),1)]),_:2},1032,["color"]),o(H,{percent:X(R.value.budgetsByStatus[r]||0,R.value.totalBudgetsV2),"stroke-color":_t(r),format:()=>`${R.value.budgetsByStatus[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1}),o(T,{xs:24,lg:12},{default:n(()=>[m("h5",ke,c(a(t)("tokens.v2.recordsTitle")),1),(p(!0),y(U,null,K(a(ut),r=>(p(),y("div",{key:r,class:"bd-row"},[o(M,{color:gt(r),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[S(c(bt(r)),1)]),_:2},1032,["color"]),o(H,{percent:X(R.value.recordsByStatus[r]||0,R.value.totalRecordsV2),"stroke-color":xt(r),format:()=>`${R.value.recordsByStatus[r]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["tab"])]),_:1},8,["activeKey"])])}}},ge=zt(me,[["__scopeId","data-v-605706da"]]);export{ge as default};