chainlesschain 0.162.193 → 0.162.198

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 (215) hide show
  1. package/README.md +29 -6
  2. package/completions/_cc +2 -2
  3. package/completions/cc.bash +2 -2
  4. package/completions/cc.fish +2 -2
  5. package/completions/cc.ps1 +2 -2
  6. package/package.json +1 -1
  7. package/src/assets/web-panel/assets/{AIOps-DBLkaTje.js → AIOps-CSN-D2xb.js} +1 -1
  8. package/src/assets/web-panel/assets/{ActionButton-BAy-Qebo.js → ActionButton-CBSMlGzv.js} +1 -1
  9. package/src/assets/web-panel/assets/{Analytics-Dfb1Mlau.js → Analytics-3yr3Nt2t.js} +3 -3
  10. package/src/assets/web-panel/assets/{AppLayout-BbFkN8m0.js → AppLayout-1b-o3lMH.js} +4 -4
  11. package/src/assets/web-panel/assets/{Artifacts-kM4-cEEH.js → Artifacts-Dr8rJi17.js} +1 -1
  12. package/src/assets/web-panel/assets/{Audit-BSQfYWf3.js → Audit-2V689HC2.js} +1 -1
  13. package/src/assets/web-panel/assets/{BackgroundAgents-CWDbI_fG.js → BackgroundAgents-DIxkNrD_.js} +1 -1
  14. package/src/assets/web-panel/assets/{Backup-BxLPbq_Q.js → Backup-Pg6BcwrE.js} +1 -1
  15. package/src/assets/web-panel/assets/{BaseInput-DuIbdrp6.js → BaseInput-CLUpqyfH.js} +1 -1
  16. package/src/assets/web-panel/assets/{Chat-NEmjGahU.js → Chat-qVS8rD4G.js} +5 -5
  17. package/src/assets/web-panel/assets/{ChatBubbleRenderer-DfJEo-5_.js → ChatBubbleRenderer-ti49X12Q.js} +1 -1
  18. package/src/assets/web-panel/assets/{Checkbox-CaoeG3Ns.js → Checkbox-Bs9AaEay.js} +1 -1
  19. package/src/assets/web-panel/assets/{Codegen-BFf_g3xY.js → Codegen-Dvc1mq8q.js} +1 -1
  20. package/src/assets/web-panel/assets/{Col-CNOd8mdQ.js → Col-C4_biO7A.js} +1 -1
  21. package/src/assets/web-panel/assets/{Community-BhpDqz-i.js → Community-al25XQUV.js} +1 -1
  22. package/src/assets/web-panel/assets/{Compact-CQ42T7Z6.js → Compact-D-ZDB8M1.js} +1 -1
  23. package/src/assets/web-panel/assets/{Compliance-DI5PcLMN.js → Compliance-6lIfDz1W.js} +1 -1
  24. package/src/assets/web-panel/assets/{Cowork-wYYZe0wR.js → Cowork-DdI48XMJ.js} +3 -3
  25. package/src/assets/web-panel/assets/{Cron-Dlq03DD_.js → Cron-DF5HZd2g.js} +2 -2
  26. package/src/assets/web-panel/assets/{Crosschain-BzqS8PP3.js → Crosschain-DuxeSvt3.js} +1 -1
  27. package/src/assets/web-panel/assets/{DID-It55Yem7.js → DID-B9yHkUTd.js} +2 -2
  28. package/src/assets/web-panel/assets/{Dashboard-9HkH6oxn.js → Dashboard-Z5EuI3IM.js} +2 -2
  29. package/src/assets/web-panel/assets/{Dropdown-00e2YWRB.js → Dropdown-vuRfO3dY.js} +1 -1
  30. package/src/assets/web-panel/assets/{EmailListRenderer-By-ugRDL.js → EmailListRenderer-QFLCc1uL.js} +1 -1
  31. package/src/assets/web-panel/assets/{FamilyGuardDashboard-C396yu5m.js → FamilyGuardDashboard-BZ7EXkFJ.js} +1 -1
  32. package/src/assets/web-panel/assets/{Federation-BME5sbZY.js → Federation-DycIEg2s.js} +1 -1
  33. package/src/assets/web-panel/assets/{FormItemContext-B4TEZCr-.js → FormItemContext-Ba0H_7yG.js} +1 -1
  34. package/src/assets/web-panel/assets/{GenericCardRenderer-_9CX9ieY.js → GenericCardRenderer--JgSTK-C.js} +1 -1
  35. package/src/assets/web-panel/assets/{Git-BrS6WVSr.js → Git-DEvTbldE.js} +2 -2
  36. package/src/assets/web-panel/assets/{Governance-BMdCWnKF.js → Governance-BJIljy18.js} +1 -1
  37. package/src/assets/web-panel/assets/{Inference-Bcp3vzcA.js → Inference-CVyW3G3q.js} +1 -1
  38. package/src/assets/web-panel/assets/{KnowledgeGraph-DlLuqGY5.js → KnowledgeGraph-v8-borge.js} +1 -1
  39. package/src/assets/web-panel/assets/{Logs-D-W_6x09.js → Logs-BCdS7gGo.js} +2 -2
  40. package/src/assets/web-panel/assets/{MarkdownRenderer-DElGPxCZ.js → MarkdownRenderer-CU-JB2Ns.js} +1 -1
  41. package/src/assets/web-panel/assets/{Marketplace-Dzn2guvI.js → Marketplace-AN6tGA2B.js} +1 -1
  42. package/src/assets/web-panel/assets/{McpTools-uPict-KL.js → McpTools-DGViXASN.js} +6 -6
  43. package/src/assets/web-panel/assets/{Memory-BCw43kOb.js → Memory-Bpvmx9X4.js} +2 -2
  44. package/src/assets/web-panel/assets/{MobileBridge-DmV8Wv7F.js → MobileBridge-CTP-DOTC.js} +1 -1
  45. package/src/assets/web-panel/assets/{MobileProjects-C-HaCmSM.js → MobileProjects-C8qfktxn.js} +1 -1
  46. package/src/assets/web-panel/assets/{Mtc-C6jxJ34Y.js → Mtc-ndYr0M1s.js} +5 -5
  47. package/src/assets/web-panel/assets/{MtcAudit-Za8ExwhQ.js → MtcAudit-Ci0-YK7W.js} +5 -5
  48. package/src/assets/web-panel/assets/{Multisig-KKDbuEgb.js → Multisig-BehSTFW7.js} +3 -3
  49. package/src/assets/web-panel/assets/{NLProgramming-Dj97zbCk.js → NLProgramming-B91_YBLv.js} +1 -1
  50. package/src/assets/web-panel/assets/{Notes-DBXvMraU.js → Notes-BQlJ0-gq.js} +4 -4
  51. package/src/assets/web-panel/assets/{NotificationSettings-DOxITLYl.js → NotificationSettings-CDgYMjYK.js} +1 -1
  52. package/src/assets/web-panel/assets/{OrderTableRenderer-7DVjZwMM.js → OrderTableRenderer-BJkSlKeH.js} +1 -1
  53. package/src/assets/web-panel/assets/{Organization-D1i73mjb.js → Organization-B-b3cWCp.js} +4 -4
  54. package/src/assets/web-panel/assets/{Overflow-kW6Q3rvg.js → Overflow-CILUL4nL.js} +1 -1
  55. package/src/assets/web-panel/assets/{P2P-C-v_8p2v.js → P2P-BTCFBkF0.js} +2 -2
  56. package/src/assets/web-panel/assets/{PdhVaultBrowser-tUbbY64W.js → PdhVaultBrowser-BAR6AUx5.js} +5 -5
  57. package/src/assets/web-panel/assets/{Permissions-DkHxEZ58.js → Permissions-RRf6HbWJ.js} +4 -4
  58. package/src/assets/web-panel/assets/{PersonalDataHub-DWuMPGrK.js → PersonalDataHub-BGTMiICa.js} +4 -4
  59. package/src/assets/web-panel/assets/{Pipeline-30IYXWWm.js → Pipeline-945qY9YF.js} +1 -1
  60. package/src/assets/web-panel/assets/{Privacy-DZNQ4RrH.js → Privacy-DPZwI6lJ.js} +1 -1
  61. package/src/assets/web-panel/assets/{ProjectInit-De2MCElf.js → ProjectInit-BPH2NRKc.js} +2 -2
  62. package/src/assets/web-panel/assets/{ProjectSettings-5uHk9wsC.js → ProjectSettings-BZCRNCvb.js} +2 -2
  63. package/src/assets/web-panel/assets/{Projects-XjDfrFLb.js → Projects-BTI__tBt.js} +1 -1
  64. package/src/assets/web-panel/assets/{Providers-Bgwj6gcE.js → Providers-DDCf_nIw.js} +1 -1
  65. package/src/assets/web-panel/assets/{QrScannerModal-gKql9umv.js → QrScannerModal-N6rbqt1r.js} +1 -1
  66. package/src/assets/web-panel/assets/{QuickAsk-BWvmwkh7.js → QuickAsk-DrwjPS7M.js} +1 -1
  67. package/src/assets/web-panel/assets/{Recommend-Uok4hZPd.js → Recommend-Cog9Wd99.js} +1 -1
  68. package/src/assets/web-panel/assets/{RemoteSession-DLJzTk9a.js → RemoteSession-DC9pynjM.js} +3 -3
  69. package/src/assets/web-panel/assets/{Reputation-ZVwIPMSO.js → Reputation-D4th4gKS.js} +1 -1
  70. package/src/assets/web-panel/assets/{Row-CN04HxWR.js → Row-ogiWR6v9.js} +1 -1
  71. package/src/assets/web-panel/assets/{RssFeed-BdSrEG4g.js → RssFeed-uYlk-2Oj.js} +3 -3
  72. package/src/assets/web-panel/assets/{Search-5PwVd0IR.js → Search-DYzzwvtM.js} +1 -1
  73. package/src/assets/web-panel/assets/{Security-DdBo4zjN.js → Security-Da7YOyX6.js} +4 -4
  74. package/src/assets/web-panel/assets/{Services-D3letU7M.js → Services-CLI1VM1X.js} +2 -2
  75. package/src/assets/web-panel/assets/{Skeleton--Jb83f1v.js → Skeleton-DK77dzDC.js} +1 -1
  76. package/src/assets/web-panel/assets/{Skills-Bg-CulHX.js → Skills-C_z7Lmhl.js} +1 -1
  77. package/src/assets/web-panel/assets/{Sla-7QOa7S-X.js → Sla-D6413Q8L.js} +1 -1
  78. package/src/assets/web-panel/assets/{SpeechSettings-DQwppjRw.js → SpeechSettings-C07ydbj2.js} +1 -1
  79. package/src/assets/web-panel/assets/{SyncSettings-dNPQGL-s.js → SyncSettings-DGOm2W22.js} +2 -2
  80. package/src/assets/web-panel/assets/{Tasks-Ggs-Z48q.js → Tasks-Cr_PVyLM.js} +1 -1
  81. package/src/assets/web-panel/assets/{Templates-78TYHgRO.js → Templates-BhL2mZ0t.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tenant-xHwwv9vO.js → Tenant-CPk5oyUr.js} +1 -1
  83. package/src/assets/web-panel/assets/{Terminal-BJXSJfm4.js → Terminal-ClhqUsqV.js} +2 -2
  84. package/src/assets/web-panel/assets/{TimelineRenderer-fLbjRhJw.js → TimelineRenderer-BCC7MV5a.js} +1 -1
  85. package/src/assets/web-panel/assets/{Tokens-oMSBSBmB.js → Tokens-DD1Jt4oO.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trigger-CfnY_wX_.js → Trigger-BCydFvN2.js} +1 -1
  87. package/src/assets/web-panel/assets/{Trust-AdyTgYKO.js → Trust-DDHT1noa.js} +1 -1
  88. package/src/assets/web-panel/assets/{UkeySign-C5K_81dS.js → UkeySign-CWPZC7oI.js} +1 -1
  89. package/src/assets/web-panel/assets/{VideoEditing-vcGVDqki.js → VideoEditing-9Ea0nJR0.js} +1 -1
  90. package/src/assets/web-panel/assets/{Wallet-hhOc3hlY.js → Wallet-BjxhLxTf.js} +4 -4
  91. package/src/assets/web-panel/assets/{WebAuthn-CVloC11s.js → WebAuthn-C6uCye67.js} +4 -4
  92. package/src/assets/web-panel/assets/{WorkflowEditor-CYeE32R5.js → WorkflowEditor-d2g4reYo.js} +1 -1
  93. package/src/assets/web-panel/assets/{chat-CNROR5bN.js → chat-frTc6ScX.js} +1 -1
  94. package/src/assets/web-panel/assets/{colors-Cjx-cnwU.js → colors-B5K6lG3v.js} +1 -1
  95. package/src/assets/web-panel/assets/{compact-item-DOIfelvD.js → compact-item-Cdn46r8D.js} +1 -1
  96. package/src/assets/web-panel/assets/{createContext-DfA7UZ8u.js → createContext-DU1jqVQi.js} +1 -1
  97. package/src/assets/web-panel/assets/devWarning-CP-jEUyw.js +1 -0
  98. package/src/assets/web-panel/assets/{hasIn-BMSCzcfM.js → hasIn-DdNH-aW_.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CAnvhwg6.js → index-32ajXmTb.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BEMwBBHk.js → index-7ehytj1K.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CVL27kXC.js → index-BC4eGkar.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-FBc_CJBd.js → index-BVLL-mq_.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-dCd8cSUq.js → index-BXKhhx9V.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BemJ2u_E.js → index-BcGwGIaR.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-CVm1_i3t.js → index-Be4OtL-N.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Cs6l7uRu.js → index-BoFak7le.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DPAWBrMf.js → index-BwlIxAmX.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DLmn0BoK.js → index-CGiwfwB9.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-B7gf77CJ.js → index-CHmkkdfT.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-m2vG9gG_.js → index-CQorP1Ng.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-ClNMrqEY.js → index-CUoNAmE8.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DHtpHZAQ.js → index-Cj6P9Nst.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-C2K9SNVX.js → index-CtRPi4YC.js} +1 -1
  114. package/src/assets/web-panel/assets/index-CzrCHrFy.js +1 -0
  115. package/src/assets/web-panel/assets/{index-BolaOQxx.js → index-D1qIC4GR.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BM1y_9hM.js → index-D23xGYjM.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Cyweh0Hy.js → index-D4l82Me1.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-By61ojUx.js → index-D4miNkWv.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BbQ2eQ8H.js → index-DIVyTmZ3.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Icdoqmzt.js → index-DM5FmPZU.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DjEsxO5h.js → index-DRzBBdQ0.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B4iYzpkL.js → index-Dca_i7H8.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-C3L5gdiD.js → index-DftZuyA7.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CdYBye8B.js → index-DtBCCkC4.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-AWg-0M1S.js → index-HjCvXHf5.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CEKMcOyU.js → index-LaivuXyF.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BxOk9vkG.js → index-MM4Zz2OE.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CNC5onm4.js → index-NmEXVjzt.js} +1 -1
  129. package/src/assets/web-panel/assets/index-OJsGskZw.js +1 -0
  130. package/src/assets/web-panel/assets/{index-BUonmKSE.js → index-PjAS0sIZ.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-B5Udeb_6.js → index-VDM2KKo9.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-5-HXgOX5.js → index-cYaWV4Mq.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DBpWXFed.js → index-gg3QPC3i.js} +3 -3
  134. package/src/assets/web-panel/assets/{index-C7xn0Nub.js → index-kVO_MDm-.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-ti_lnTWl.js → index-mgU3Q-lN.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-CshQbilz.js → index-t_OBzIP4.js} +1 -1
  137. package/src/assets/web-panel/assets/{index-mTpHoEzr.js → index-yZRuZpwK.js} +1 -1
  138. package/src/assets/web-panel/assets/{initDefaultProps-Bu8k7H1Y.js → initDefaultProps-DwLTRNdo.js} +1 -1
  139. package/src/assets/web-panel/assets/{motion-s3iVK41k.js → motion-BchZDXnh.js} +1 -1
  140. package/src/assets/web-panel/assets/{move-B6B-E5Jz.js → move-e8M-zZFl.js} +1 -1
  141. package/src/assets/web-panel/assets/{mtc-parser-BiYgTidA.js → mtc-parser-Ci40fQb3.js} +1 -1
  142. package/src/assets/web-panel/assets/{omit-pU1RdUDA.js → omit-C7110_f2.js} +1 -1
  143. package/src/assets/web-panel/assets/{pickAttrs-Cdoq_SeM.js → pickAttrs-skteMgnM.js} +1 -1
  144. package/src/assets/web-panel/assets/{placementArrow-DIuvAn2K.js → placementArrow-MGZ-lh2B.js} +1 -1
  145. package/src/assets/web-panel/assets/{responsiveObserve-8w16YR2D.js → responsiveObserve-N4Sd7uy-.js} +1 -1
  146. package/src/assets/web-panel/assets/{slide-VZ01cZe3.js → slide-C7HDGRaa.js} +1 -1
  147. package/src/assets/web-panel/assets/{statusUtils-lh8YMN8Z.js → statusUtils-BhRexlgy.js} +1 -1
  148. package/src/assets/web-panel/assets/{styleChecker-CmDyreec.js → styleChecker-ChEoQkN2.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFlexGapSupport-hiJWMU5y.js → useFlexGapSupport-CDbG1s2Y.js} +1 -1
  150. package/src/assets/web-panel/assets/{useFs-Thnu-Iaj.js → useFs-CUIx0tcJ.js} +1 -1
  151. package/src/assets/web-panel/assets/{usePersonalDataHub-LBdOxjwY.js → usePersonalDataHub-bkO7L7ec.js} +1 -1
  152. package/src/assets/web-panel/assets/{vnode-Cg6lFY_X.js → vnode-B_ZvABIG.js} +1 -1
  153. package/src/assets/web-panel/assets/{zoom-DVfsR1YO.js → zoom-D5shjpS8.js} +1 -1
  154. package/src/assets/web-panel/index.html +1 -1
  155. package/src/command-help-index.json +4 -4
  156. package/src/command-manifest.json +214 -50
  157. package/src/command-surface-policy.js +115 -0
  158. package/src/commands/agent.js +3 -3
  159. package/src/commands/background-session.js +145 -0
  160. package/src/commands/mcp.js +125 -7
  161. package/src/commands/serve.js +1 -1
  162. package/src/commands/session-show.js +131 -0
  163. package/src/commands/session.js +50 -106
  164. package/src/commands/skill.js +87 -50
  165. package/src/data/changelog.json +18 -5
  166. package/src/gateways/ws/ws-agent-handler.js +8 -1
  167. package/src/harness/jsonl-session-store.js +428 -25
  168. package/src/harness/mcp-client.js +2652 -404
  169. package/src/harness/session-list-index.js +65 -7
  170. package/src/lazy-dispatch.js +76 -8
  171. package/src/lib/abort-utils.js +68 -0
  172. package/src/lib/agent-core.js +1 -59
  173. package/src/lib/chat-core.js +24 -6
  174. package/src/lib/cowork-mcp-tools.js +47 -2
  175. package/src/lib/cowork-task-runner.js +11 -3
  176. package/src/lib/doctor-checkup.js +9 -7
  177. package/src/lib/learning/skill-improver.js +21 -2
  178. package/src/lib/mcp-call-ledger-store.js +116 -3
  179. package/src/lib/mcp-call-ledger.js +59 -14
  180. package/src/lib/mcp-client.js +1 -0
  181. package/src/lib/mcp-stdio-executable-identity.js +598 -0
  182. package/src/lib/mcp-stdio-execution-authority.js +363 -0
  183. package/src/lib/mcp-tool-metadata.js +436 -0
  184. package/src/lib/mcp-tool-result.js +367 -0
  185. package/src/lib/observability/index.js +71 -0
  186. package/src/lib/pr-link-ledger.js +8 -27
  187. package/src/lib/pr-link-store.js +26 -0
  188. package/src/lib/process-execution-broker/index.js +14 -0
  189. package/src/lib/process-tree-termination.js +253 -0
  190. package/src/lib/public-ide-capability-manifest.js +6 -0
  191. package/src/lib/session-host-snapshot.js +9 -5
  192. package/src/lib/session-projection.js +5 -1
  193. package/src/lib/session-tail.js +31 -1
  194. package/src/lib/skill-budget.js +222 -0
  195. package/src/lib/skill-execution-authority.js +381 -0
  196. package/src/lib/skill-execution-identity.js +39 -2
  197. package/src/lib/skill-loader.js +322 -86
  198. package/src/lib/skill-mcp.js +43 -1
  199. package/src/repl/agent-repl.js +349 -46
  200. package/src/repl/bg-dashboard.js +81 -28
  201. package/src/repl/chat-repl.js +77 -12
  202. package/src/repl/prompt-interactions.js +67 -7
  203. package/src/repl/slash-command-registry.js +3 -4
  204. package/src/runtime/agent-core.js +340 -108
  205. package/src/runtime/agent-runtime.js +26 -3
  206. package/src/runtime/headless-runner.js +150 -23
  207. package/src/runtime/headless-stream.js +309 -59
  208. package/src/runtime/mcp-config.js +157 -10
  209. package/src/runtime/mcp-tool-search.js +0 -0
  210. package/src/runtime/output-backpressure.js +366 -0
  211. package/src/runtime/pipe-safety.js +56 -21
  212. package/src/assets/web-panel/assets/devWarning-ChcCBGs7.js +0 -1
  213. package/src/assets/web-panel/assets/index-Q2IajL54.js +0 -1
  214. package/src/assets/web-panel/assets/index-bRkHgOMc.js +0 -1
  215. package/src/lib/skill-process-broker.js +0 -85
package/README.md CHANGED
@@ -65,12 +65,35 @@ source (npm root -g)/chainlesschain/completions/cc.fish
65
65
 
66
66
  ### Compatibility namespace and command lifecycle
67
67
 
68
- The registered Commander graph contains **175** top-level commands (net growth **0** against the 175-command baseline). After excluding 2 deprecated compatibility entries and adding `lab` as their recommended namespace, the recommended top-level surface contains **174** commands. `lab` is phase-0 only, not another eagerly registered command.
69
-
70
- | Legacy entry | Replacement | Deprecated since | Removal not before | Minimum window |
71
- | ------------ | ------------ | ---------------- | ------------------ | -------------- |
72
- | `dao` | `lab dao` | `0.162.189` | `0.164.0` | 2 minor cycles |
73
- | `evomap` | `lab evomap` | `0.162.189` | `0.164.0` | 2 minor cycles |
68
+ The registered Commander graph contains **175** top-level commands (net growth **0** against the 175-command baseline). After excluding 25 deprecated compatibility entries and adding `lab` as their recommended namespace, the recommended top-level surface contains **151** commands. `lab` is phase-0 only, not another eagerly registered command.
69
+
70
+ | Legacy entry | Replacement | Deprecated since | Removal not before | Minimum window |
71
+ | ------------ | ---------------- | ---------------- | ------------------ | -------------- |
72
+ | `bm25` | `lab bm25` | `0.162.194` | `0.164.0` | 2 minor cycles |
73
+ | `ccron` | `lab ccron` | `0.162.194` | `0.164.0` | 2 minor cycles |
74
+ | `compt` | `lab compt` | `0.162.194` | `0.164.0` | 2 minor cycles |
75
+ | `consol` | `lab consol` | `0.162.194` | `0.164.0` | 2 minor cycles |
76
+ | `dao` | `lab dao` | `0.162.189` | `0.164.0` | 2 minor cycles |
77
+ | `evomap` | `lab evomap` | `0.162.189` | `0.164.0` | 2 minor cycles |
78
+ | `execbe` | `lab execbe` | `0.162.194` | `0.164.0` | 2 minor cycles |
79
+ | `fflag` | `lab fflag` | `0.162.194` | `0.164.0` | 2 minor cycles |
80
+ | `itbudget` | `lab itbudget` | `0.162.194` | `0.164.0` | 2 minor cycles |
81
+ | `mcpscaf` | `lab mcpscaf` | `0.162.194` | `0.164.0` | 2 minor cycles |
82
+ | `meminj` | `lab meminj` | `0.162.194` | `0.164.0` | 2 minor cycles |
83
+ | `orchgov` | `lab orchgov` | `0.162.194` | `0.164.0` | 2 minor cycles |
84
+ | `pdfp` | `lab pdfp` | `0.162.194` | `0.164.0` | 2 minor cycles |
85
+ | `promcomp` | `lab promcomp` | `0.162.194` | `0.164.0` | 2 minor cycles |
86
+ | `seshhook` | `lab seshhook` | `0.162.194` | `0.164.0` | 2 minor cycles |
87
+ | `seshsearch` | `lab seshsearch` | `0.162.194` | `0.164.0` | 2 minor cycles |
88
+ | `seshtail` | `lab seshtail` | `0.162.194` | `0.164.0` | 2 minor cycles |
89
+ | `seshu` | `lab seshu` | `0.162.194` | `0.164.0` | 2 minor cycles |
90
+ | `sganal` | `lab sganal` | `0.162.194` | `0.164.0` | 2 minor cycles |
91
+ | `slotfill` | `lab slotfill` | `0.162.194` | `0.164.0` | 2 minor cycles |
92
+ | `svccont` | `lab svccont` | `0.162.194` | `0.164.0` | 2 minor cycles |
93
+ | `tms` | `lab tms` | `0.162.194` | `0.164.0` | 2 minor cycles |
94
+ | `topiccls` | `lab topiccls` | `0.162.194` | `0.164.0` | 2 minor cycles |
95
+ | `uprof` | `lab uprof` | `0.162.194` | `0.164.0` | 2 minor cycles |
96
+ | `vcheck` | `lab vcheck` | `0.162.194` | `0.164.0` | 2 minor cycles |
74
97
 
75
98
  Both forms route to the same lazy command registrar during the compatibility window. Legacy invocations emit their migration notice on stderr only.
76
99
 
package/completions/_cc CHANGED
@@ -1,5 +1,5 @@
1
1
  # Generated from src/command-manifest.json; do not edit.
2
- # manifest-sha256: e989e4e22dc918cc8f60a1857957f9e4cfdfd4ced4ca6ab8f956156e441ba528
2
+ # manifest-sha256: a342dc48c6d65ef81a96c7df387418e739a51c2a82b9a626d39882387bd2e999
3
3
  #compdef cc chainlesschain clc clchain
4
4
 
5
5
  _chainlesschain() {
@@ -202,7 +202,7 @@ _chainlesschain() {
202
202
  'zkp'
203
203
  elif (( CURRENT == 3 )); then
204
204
  case "$words[2]" in
205
- 'lab') compadd -- 'dao' 'evomap' ;;
205
+ 'lab') compadd -- 'bm25' 'ccron' 'compt' 'consol' 'dao' 'evomap' 'execbe' 'fflag' 'itbudget' 'mcpscaf' 'meminj' 'orchgov' 'pdfp' 'promcomp' 'seshhook' 'seshsearch' 'seshtail' 'seshu' 'sganal' 'slotfill' 'svccont' 'tms' 'topiccls' 'uprof' 'vcheck' ;;
206
206
  esac
207
207
  fi
208
208
  }
@@ -1,5 +1,5 @@
1
1
  # Generated from src/command-manifest.json; do not edit.
2
- # manifest-sha256: e989e4e22dc918cc8f60a1857957f9e4cfdfd4ced4ca6ab8f956156e441ba528
2
+ # manifest-sha256: a342dc48c6d65ef81a96c7df387418e739a51c2a82b9a626d39882387bd2e999
3
3
 
4
4
  _chainlesschain_complete() {
5
5
  local current
@@ -8,7 +8,7 @@ _chainlesschain_complete() {
8
8
  COMPREPLY=( $(compgen -W 'a a2a activitypub agenda agent agent-network agents android anet ap artifact artifacts ask attach audit auth auto auto-mode autoagent automation automode batch bi bm25 browse ccron changelog chat checkpoint checkup ci cli-anything cloud cmd code-intel codegen collab command compact complete compliance compt config consol context cost cowork crosschain daemon dao db dbevo decrypt dev did did-v2 didv2 dlp doctor eco economy ecosystem encrypt eval evolution evomap execbe export federation fflag fusion git goal governance hardening hmemory hook hub ide import incentive inference infra init insights instinct ipfs itbudget kg lab learning llm logs loop lowcode marketplace matrix mcp mcpscaf meminj memory mm mtc multimodal multisig nlprog nostr note notif notification ops orchestrate orchgov org output-style output-styles p2p pack pair pdfp pdh perception perf perm permissions permmem perms persona pipe pipeline planmode plugin pqc privacy project promcomp quantize rc rcache recommend remote-control rep reputation review router routine runtime sandbox scim search serve services seshhook seshsearch seshtail seshu session setup sganal siem skill sla slotfill social sso start status status-line statusline stop stream stress subagent svccont sync team tech tenant terminal-setup terraform tms todo tokens topiccls trust ui update uprof vcheck video wallet webfetch whatsnew workflow zkp' -- "$current") )
9
9
  elif (( COMP_CWORD == 2 )); then
10
10
  case "${COMP_WORDS[1]}" in
11
- 'lab') COMPREPLY=( $(compgen -W 'dao evomap' -- "$current") ) ;;
11
+ 'lab') COMPREPLY=( $(compgen -W 'bm25 ccron compt consol dao evomap execbe fflag itbudget mcpscaf meminj orchgov pdfp promcomp seshhook seshsearch seshtail seshu sganal slotfill svccont tms topiccls uprof vcheck' -- "$current") ) ;;
12
12
  *) COMPREPLY=() ;;
13
13
  esac
14
14
  else
@@ -1,5 +1,5 @@
1
1
  # Generated from src/command-manifest.json; do not edit.
2
- # manifest-sha256: e989e4e22dc918cc8f60a1857957f9e4cfdfd4ced4ca6ab8f956156e441ba528
2
+ # manifest-sha256: a342dc48c6d65ef81a96c7df387418e739a51c2a82b9a626d39882387bd2e999
3
3
  set -l chainlesschain_commands 'a' 'a2a' 'activitypub' 'agenda' 'agent' 'agent-network' 'agents' 'android' 'anet' 'ap' 'artifact' 'artifacts' 'ask' 'attach' 'audit' 'auth' 'auto' 'auto-mode' 'autoagent' 'automation' 'automode' 'batch' 'bi' 'bm25' 'browse' 'ccron' 'changelog' 'chat' 'checkpoint' 'checkup' 'ci' 'cli-anything' 'cloud' 'cmd' 'code-intel' 'codegen' 'collab' 'command' 'compact' 'complete' 'compliance' 'compt' 'config' 'consol' 'context' 'cost' 'cowork' 'crosschain' 'daemon' 'dao' 'db' 'dbevo' 'decrypt' 'dev' 'did' 'did-v2' 'didv2' 'dlp' 'doctor' 'eco' 'economy' 'ecosystem' 'encrypt' 'eval' 'evolution' 'evomap' 'execbe' 'export' 'federation' 'fflag' 'fusion' 'git' 'goal' 'governance' 'hardening' 'hmemory' 'hook' 'hub' 'ide' 'import' 'incentive' 'inference' 'infra' 'init' 'insights' 'instinct' 'ipfs' 'itbudget' 'kg' 'lab' 'learning' 'llm' 'logs' 'loop' 'lowcode' 'marketplace' 'matrix' 'mcp' 'mcpscaf' 'meminj' 'memory' 'mm' 'mtc' 'multimodal' 'multisig' 'nlprog' 'nostr' 'note' 'notif' 'notification' 'ops' 'orchestrate' 'orchgov' 'org' 'output-style' 'output-styles' 'p2p' 'pack' 'pair' 'pdfp' 'pdh' 'perception' 'perf' 'perm' 'permissions' 'permmem' 'perms' 'persona' 'pipe' 'pipeline' 'planmode' 'plugin' 'pqc' 'privacy' 'project' 'promcomp' 'quantize' 'rc' 'rcache' 'recommend' 'remote-control' 'rep' 'reputation' 'review' 'router' 'routine' 'runtime' 'sandbox' 'scim' 'search' 'serve' 'services' 'seshhook' 'seshsearch' 'seshtail' 'seshu' 'session' 'setup' 'sganal' 'siem' 'skill' 'sla' 'slotfill' 'social' 'sso' 'start' 'status' 'status-line' 'statusline' 'stop' 'stream' 'stress' 'subagent' 'svccont' 'sync' 'team' 'tech' 'tenant' 'terminal-setup' 'terraform' 'tms' 'todo' 'tokens' 'topiccls' 'trust' 'ui' 'update' 'uprof' 'vcheck' 'video' 'wallet' 'webfetch' 'whatsnew' 'workflow' 'zkp'
4
4
 
5
5
  function __chainlesschain_needs_lab_command
@@ -9,5 +9,5 @@ end
9
9
 
10
10
  for executable in cc chainlesschain clc clchain
11
11
  complete -c $executable -f -n '__fish_use_subcommand' -a "$chainlesschain_commands"
12
- complete -c $executable -f -n '__chainlesschain_needs_lab_command' -a 'dao evomap'
12
+ complete -c $executable -f -n '__chainlesschain_needs_lab_command' -a 'bm25 ccron compt consol dao evomap execbe fflag itbudget mcpscaf meminj orchgov pdfp promcomp seshhook seshsearch seshtail seshu sganal slotfill svccont tms topiccls uprof vcheck'
13
13
  end
@@ -1,5 +1,5 @@
1
1
  # Generated from src/command-manifest.json; do not edit.
2
- # manifest-sha256: e989e4e22dc918cc8f60a1857957f9e4cfdfd4ced4ca6ab8f956156e441ba528
2
+ # manifest-sha256: a342dc48c6d65ef81a96c7df387418e739a51c2a82b9a626d39882387bd2e999
3
3
  using namespace System.Management.Automation
4
4
 
5
5
  $ChainlessChainCommands = @(
@@ -201,7 +201,7 @@ $ChainlessChainCommands = @(
201
201
  )
202
202
 
203
203
  $ChainlessChainNamespaceCommands = @{
204
- 'lab' = @('dao', 'evomap')
204
+ 'lab' = @('bm25', 'ccron', 'compt', 'consol', 'dao', 'evomap', 'execbe', 'fflag', 'itbudget', 'mcpscaf', 'meminj', 'orchgov', 'pdfp', 'promcomp', 'seshhook', 'seshsearch', 'seshtail', 'seshu', 'sganal', 'slotfill', 'svccont', 'tms', 'topiccls', 'uprof', 'vcheck')
205
205
  }
206
206
 
207
207
  $ChainlessChainCompleter = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chainlesschain",
3
- "version": "0.162.193",
3
+ "version": "0.162.198",
4
4
  "description": "CLI for ChainlessChain - install, configure, and manage your personal AI management system",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +1 @@
1
- import{I as b,J as v,U as S,R as r,c as o,K as l,V as p,S as h,o as se,h as re,a as G,b as Q,r as C,P as u,Q as y,F as z,Z as H}from"./vendor-Bn1JzzAn.js";import{t as X,_ as ze,u as de,b as ce,d as f}from"./index-DBpWXFed.js";import ue from"./index-C2K9SNVX.js";import{f as Ie,c as Oe,b3 as Pe,aZ as Te,ab as Ee,t as Le,at as je,R as Ne}from"./icons-DG5UD-6K.js";import"./KeyCode-D63Tfrq7.js";import"./omit-pU1RdUDA.js";import"./pickAttrs-Cdoq_SeM.js";import"./initDefaultProps-Bu8k7H1Y.js";import"./motion-s3iVK41k.js";import"./raf-Deuc0E8-.js";import"./index-Icdoqmzt.js";import"./index-DPAWBrMf.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-ChcCBGs7.js";import"./compact-item-DOIfelvD.js";import"./createContext-DfA7UZ8u.js";import"./Compact-CQ42T7Z6.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-CmDyreec.js";import"./zoom-DVfsR1YO.js";import"./ActionButton-BAy-Qebo.js";import"./vnode-Cg6lFY_X.js";const Ue=Object.freeze(["P0","P1","P2","P3"]),De=Object.freeze(["open","acknowledged","resolved","closed"]);function g(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function Me(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,anomalyMetric:t.anomalyMetric??t.anomaly_metric??"",severity:String(t.severity||"P3"),status:String(t.status||"open").toLowerCase(),description:String(t.description||""),anomalyData:t.anomalyData??t.anomaly_data??null,remediationId:t.remediationId??t.remediation_id??null,postmortem:t.postmortem||"",acknowledgedAt:t.acknowledgedAt??t.acknowledged_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,createdAt:t.createdAt??t.created_at??null,_idx:a}:null}function pe(t){const a=X(t);return Array.isArray(a)?a.map(Me).filter(Boolean):[]}function qe(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;const e=t.enabled;let P=!1;return e===!0||e===1||e==="1"?P=!0:e===!1||e===0||e==="0"?P=!1:P=!!e,{key:s,id:s,name:String(t.name||""),triggerCondition:t.triggerCondition??t.trigger_condition??"",steps:t.steps||"",enabled:P,successCount:g(t.successCount??t.success_count,0),failureCount:g(t.failureCount??t.failure_count,0),createdAt:t.createdAt??t.created_at??null,_idx:a}}function me(t){const a=X(t);return Array.isArray(a)?a.map(qe).filter(Boolean):[]}function Be(t,a=0){if(!t||typeof t!="object")return null;const s=t.metricName??t.metric_name??"";return s?{key:s,metricName:s,mean:g(t.mean,0),stdDev:g(t.stdDev??t.std_dev,0),q1:g(t.q1,0),q3:g(t.q3,0),sampleCount:g(t.sampleCount??t.sample_count,0),updatedAt:t.updatedAt??t.updated_at??null,_idx:a}:null}function ye(t){const a=X(t);return Array.isArray(a)?a.map(Be).filter(Boolean):[]}function fe(t){const a=X(t);return!a||typeof a!="object"||Array.isArray(a)?null:{anomaly:!!a.anomaly,reason:a.reason||null,metricName:a.metricName??a.metric_name??"",value:g(a.value,0),algorithm:String(a.algorithm||""),score:g(a.score,0),threshold:g(a.threshold,0),baseline:a.baseline?{mean:g(a.baseline.mean,0),stdDev:g(a.baseline.stdDev??a.baseline.std_dev,0),q1:g(a.baseline.q1,0),q3:g(a.baseline.q3,0)}:null,incidentId:a.incidentId??a.incident_id??null,severity:a.severity||null}}const Je={incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}};function be(t){const a=JSON.parse(JSON.stringify(Je)),s=X(t);if(!s||typeof s!="object"||Array.isArray(s))return a;if(s.incidents&&typeof s.incidents=="object"){if(a.incidents.total=g(s.incidents.total,0),a.incidents.avgResolveMs=g(s.incidents.avgResolveMs??s.incidents.avg_resolve_ms,0),s.incidents.bySeverity&&typeof s.incidents.bySeverity=="object")for(const e of Object.keys(a.incidents.bySeverity))a.incidents.bySeverity[e]=g(s.incidents.bySeverity[e],0);if(s.incidents.byStatus&&typeof s.incidents.byStatus=="object")for(const e of Object.keys(a.incidents.byStatus))a.incidents.byStatus[e]=g(s.incidents.byStatus[e],0)}return s.playbooks&&typeof s.playbooks=="object"&&(a.playbooks.total=g(s.playbooks.total,0),a.playbooks.enabled=g(s.playbooks.enabled,0),a.playbooks.totalSuccess=g(s.playbooks.totalSuccess??s.playbooks.total_success,0),a.playbooks.totalFailure=g(s.playbooks.totalFailure??s.playbooks.total_failure,0)),s.baselines&&typeof s.baselines=="object"&&(a.baselines.total=g(s.baselines.total,0),Array.isArray(s.baselines.metrics)&&(a.baselines.metrics=[...s.baselines.metrics])),a}function Ve(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"AIOps",setup(t,{expose:a}){a();const s=de(),{t:e}=ce(),P=C(!1),j=C(!1),w=C(!1),N=C([]),Y=C([]),$=C([]),D=C({incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}}),I=C("incidents"),R=C(""),T=C(""),Z=C(!1),A=C(!1),O=C(!1),B=C(!1),x=G({severity:"P3",metric:"",description:""}),_=G({name:"",triggerJson:"",stepsJson:""}),M=G({metric:"",values:""}),U=G({metric:"",value:null,algorithm:"z_score"}),q=C(null),ee=Q(()=>[{title:e("aiops.incidentCols.severity"),key:"severity",width:"90px"},{title:e("aiops.incidentCols.metric"),key:"metric",width:"160px"},{title:e("aiops.incidentCols.description"),key:"description"},{title:e("aiops.incidentCols.status"),key:"status",width:"100px"},{title:e("aiops.incidentCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.incidentCols.action"),key:"action",width:"220px"}]),F=Q(()=>[{title:e("aiops.playbookCols.name"),key:"name"},{title:e("aiops.playbookCols.enabled"),key:"enabled",width:"80px"},{title:e("aiops.playbookCols.stats"),key:"stats",width:"180px"},{title:e("aiops.playbookCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.playbookCols.action"),key:"action",width:"160px"}]),W=Q(()=>[{title:e("aiops.baselineCols.metric"),key:"metric"},{title:e("aiops.baselineCols.mean"),key:"mean",width:"180px"},{title:e("aiops.baselineCols.iqr"),key:"iqr",width:"180px"},{title:e("aiops.baselineCols.sampleCount"),key:"sampleCount",width:"90px"},{title:e("aiops.baselineCols.updatedAt"),key:"updatedAt",width:"160px"}]),J=Q(()=>D.value.incidents.byStatus.open+D.value.incidents.byStatus.acknowledged),V=Q(()=>{let n=N.value;return R.value&&(n=n.filter(d=>d.severity===R.value)),T.value&&(n=n.filter(d=>d.status===T.value)),n});function K(n){const d=`aiops.statusLabels.${n}`,m=e(d);return m===d?n:m}function ae(n){return{open:"red",acknowledged:"orange",resolved:"cyan",closed:"default"}[n]||"default"}function i(n){return{P0:"red",P1:"volcano",P2:"orange",P3:"gold"}[n]||"default"}function c(n){const d=`aiops.reasonLabels.${n}`,m=e(d);return m===d?n:m}function E(n,d){return n?n.length>d?n.slice(0,d)+"...":n:""}function ve(n){return!n||n<=0?e("aiops.duration.none"):n<1e3?`${n}ms`:n<6e4?`${(n/1e3).toFixed(1)}s`:n<36e5?`${(n/6e4).toFixed(1)}min`:`${(n/36e5).toFixed(1)}h`}function ge({key:n}){n==="incident"?Z.value=!0:n==="playbook"?A.value=!0:n==="baseline"?O.value=!0:n==="detect"&&(q.value=null,B.value=!0)}async function L(){P.value=!0;try{const[n,d,m,k]=await Promise.all([s.execute("ops incidents --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops playbooks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops baselines --json",1e4).catch(()=>({output:""})),s.execute("ops stats --json",8e3).catch(()=>({output:""}))]);N.value=pe(n.output),Y.value=me(d.output),$.value=ye(m.output),D.value=be(k.output)}catch(n){f.error(e("aiops.msg.loadFailed")+": "+(n?.message||n))}finally{P.value=!1}}async function ke(){if(!x.description.trim()){f.warning(e("aiops.msg.descEmpty"));return}j.value=!0;try{const n=[`ops incident-create --severity ${x.severity}`];x.metric.trim()&&n.push(`--metric "${x.metric.trim().replace(/"/g,'\\"')}"`),n.push(`--description "${x.description.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"incidentId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.incidentCreated")),Z.value=!1,oe(),await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function _e(){if(!_.name.trim()){f.warning(e("aiops.msg.playbookNameEmpty"));return}for(const[n,d]of[[_.triggerJson,"triggerLabel"],[_.stepsJson,"stepsLabel"]])if(n.trim())try{JSON.parse(n)}catch{f.warning(e("aiops.msg.jsonInvalid",{label:e(`aiops.msg.${d}`)}));return}j.value=!0;try{const n=[`ops playbook-create --name "${_.name.trim().replace(/"/g,'\\"')}"`];_.triggerJson.trim()&&n.push(`--trigger '${_.triggerJson.trim().replace(/'/g,"'\\''")}'`),_.stepsJson.trim()&&n.push(`--steps '${_.stepsJson.trim().replace(/'/g,"'\\''")}'`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"playbookId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.playbookCreated")),A.value=!1,le(),I.value="playbooks",await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function he(){const n=M.metric.trim();if(!n){f.warning(e("aiops.msg.metricEmpty"));return}const d=M.values.split(/[\s,]+/).map(m=>m.trim()).filter(Boolean).map(m=>Number(m));if(d.length===0||d.some(m=>!Number.isFinite(m))){f.warning(e("aiops.msg.valuesInvalid"));return}j.value=!0;try{const m=`ops baseline-update "${n.replace(/"/g,'\\"')}" --values ${d.join(",")} --json`,{output:k}=await s.execute(m,1e4);if(/error|失败/i.test(k)&&!/"updated"/.test(k)){f.error(e("aiops.msg.baselineUpdateFailed")+": "+k.slice(0,120));return}f.success(e("aiops.msg.baselineUpdated",{n:d.length})),O.value=!1,ie(),I.value="baselines",await L()}catch(m){f.error(e("aiops.msg.baselineUpdateFailed")+": "+(m?.message||m))}finally{j.value=!1}}async function Ce(){if(!U.metric||U.value==null){f.warning(e("aiops.msg.detectFieldsEmpty"));return}w.value=!0,q.value=null;try{const n=`ops detect "${U.metric.replace(/"/g,'\\"')}" ${U.value} --algorithm ${U.algorithm} --json`,{output:d}=await s.execute(n,8e3),m=fe(d);if(!m){f.error(e("aiops.msg.detectFailed")+": "+d.slice(0,120));return}q.value=m,m.anomaly&&(f.warning(e("aiops.msg.detectAnomaly",{severity:m.severity||"P3"})),L())}catch(n){f.error(e("aiops.msg.detectFailed")+": "+(n?.message||n))}finally{w.value=!1}}async function Se(n){await te(n,"incident-ack",e("aiops.msg.incidentAcked"))}async function xe(n){await te(n,"incident-resolve",e("aiops.msg.incidentResolved"))}async function Fe(n){await te(n,"incident-close",e("aiops.msg.incidentClosed"))}async function te(n,d,m){try{const{output:k}=await s.execute(`ops ${d} ${n.id} --json`,8e3);if(/error|失败|invalid/i.test(k)&&!/"acknowledged"|"resolved"|"closed"/.test(k)){f.error(e("aiops.msg.incidentTransitionFailed")+": "+k.slice(0,120));return}f.success(m),await L()}catch(k){f.error(e("aiops.msg.incidentTransitionFailed")+": "+(k?.message||k))}}async function we(n){try{const{output:d}=await s.execute(`ops postmortem ${n.id}`,12e3);ue.info({title:e("aiops.msg.postmortemTitle",{id:n.id.slice(0,8)}),width:720,content:()=>re("pre",{style:"white-space: pre-wrap; max-height: 60vh; overflow: auto; font-size: 12px; padding: 8px; background: rgba(0,0,0,.04); border-radius: 4px;"},d||e("aiops.msg.postmortemEmpty"))})}catch(d){f.error(e("aiops.msg.postmortemFailed")+": "+(d?.message||d))}}async function Re(n,d){const m=d?"on":"off";try{const{output:k}=await s.execute(`ops playbook-toggle ${n.id} ${m} --json`,8e3);if(/error|失败/i.test(k)&&!/"enabled"/.test(k)){f.error(e("aiops.msg.playbookToggleFailed")+": "+k.slice(0,120));return}f.success(e(d?"aiops.msg.playbookEnabled":"aiops.msg.playbookDisabled")),await L()}catch(k){f.error(e("aiops.msg.playbookToggleFailed")+": "+(k?.message||k))}}async function Ae(n,d){try{const{output:m}=await s.execute(`ops playbook-record ${n.id} ${d} --json`,8e3);if(/error|失败/i.test(m)&&!/"recorded"/.test(m)){f.error(e("aiops.msg.playbookRecordFailed")+": "+m.slice(0,120));return}f.success(e(d==="success"?"aiops.msg.playbookRecordSuccess":"aiops.msg.playbookRecordFailure")),await L()}catch(m){f.error(e("aiops.msg.playbookRecordFailed")+": "+(m?.message||m))}}function oe(){x.severity="P3",x.metric="",x.description=""}function le(){_.name="",_.triggerJson="",_.stepsJson=""}function ie(){M.metric="",M.values=""}se(L);const ne={ws:s,t:e,loading:P,creating:j,detecting:w,incidents:N,playbooks:Y,baselines:$,stats:D,activeTab:I,incidentSeverityFilter:R,incidentStatusFilter:T,showIncidentModal:Z,showPlaybookModal:A,showBaselineModal:O,showDetectModal:B,incidentForm:x,playbookForm:_,baselineForm:M,detectForm:U,detectResult:q,incidentColumns:ee,playbookColumns:F,baselineColumns:W,openCount:J,filteredIncidents:V,statusLabel:K,statusColor:ae,severityColor:i,reasonLabel:c,truncate:E,formatDurationMs:ve,handleNewClick:ge,loadAll:L,createIncident:ke,createPlaybook:_e,updateBaseline:he,detectAnomaly:Ce,ackIncident:Se,resolveIncident:xe,closeIncident:Fe,runIncidentTransition:te,generatePostmortem:we,togglePlaybook:Re,recordRun:Ae,resetIncidentForm:oe,resetPlaybookForm:le,resetBaselineForm:ie,ref:C,computed:Q,onMounted:se,reactive:G,h:re,get ReloadOutlined(){return Ne},get PlusOutlined(){return je},get AlertOutlined(){return Le},get RocketOutlined(){return Ee},get LineChartOutlined(){return Te},get FundOutlined(){return Pe},get ExclamationCircleOutlined(){return Oe},get CheckCircleOutlined(){return Ie},get message(){return f},get Modal(){return ue},get useI18n(){return ce},get useWsStore(){return de},get parseIncidents(){return pe},get parsePlaybooks(){return me},get parseBaselines(){return ye},get parseDetectResult(){return fe},get parseStats(){return be},get formatOpsTime(){return Ve},get SEVERITIES(){return Ue},get INCIDENT_STATUSES(){return De}};return Object.defineProperty(ne,"__isScriptSetup",{enumerable:!1,value:!0}),ne}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},We={class:"page-sub"},Ge={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Xe={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Ye={key:1,style:{color:"var(--text-muted)"}},$e={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},et={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},tt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},at={style:{color:"var(--text-primary)","font-weight":"500"}},ot={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},lt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},st={style:{color:"#1677ff"}},rt={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},dt={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pt={key:0,style:{color:"var(--text-secondary)","font-size":"12px","margin-top":"8px"}},mt={key:1,style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},yt={key:2,style:{"margin-top":"8px"}};function ft(t,a,s,e,P,j){const w=b("a-button"),N=b("a-menu-item"),Y=b("a-menu"),$=b("a-dropdown"),D=b("a-space"),I=b("a-statistic"),R=b("a-card"),T=b("a-col"),Z=b("a-row"),A=b("a-tag"),O=b("a-radio-button"),B=b("a-radio-group"),x=b("a-table"),_=b("a-tab-pane"),M=b("a-switch"),U=b("a-tabs"),q=b("a-select-option"),ee=b("a-select"),F=b("a-form-item"),W=b("a-input"),J=b("a-textarea"),V=b("a-form"),K=b("a-modal"),ae=b("a-input-number");return u(),v("div",null,[S("div",Qe,[S("div",null,[S("h2",Ze,r(t.$t("aiops.title")),1),S("p",We,r(t.$t("aiops.subtitle")),1)]),o(D,null,{default:l(()=>[o(w,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.refresh")),1)]),_:1},8,["loading"]),o($,{trigger:["click"]},{overlay:l(()=>[o(Y,{onClick:e.handleNewClick},{default:l(()=>[o(N,{key:"incident"},{default:l(()=>[o(e.AlertOutlined),y(" "+r(t.$t("aiops.actions.incident")),1)]),_:1}),o(N,{key:"playbook"},{default:l(()=>[o(e.RocketOutlined),y(" "+r(t.$t("aiops.actions.playbook")),1)]),_:1}),o(N,{key:"baseline"},{default:l(()=>[o(e.LineChartOutlined),y(" "+r(t.$t("aiops.actions.baseline")),1)]),_:1}),o(N,{key:"detect"},{default:l(()=>[o(e.FundOutlined),y(" "+r(t.$t("aiops.actions.detect")),1)]),_:1})]),_:1})]),default:l(()=>[o(w,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),p(" Stats overview "),o(Z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(R,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.incidents"),value:e.stats.incidents.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.AlertOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(R,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.pending"),value:e.stats.incidents.byStatus.open+e.stats.incidents.byStatus.acknowledged,"value-style":{color:e.openCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.ExclamationCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(R,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.playbooks"),value:e.stats.playbooks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.RocketOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(R,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.enabled"),value:e.stats.playbooks.enabled,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:24,sm:8,lg:4},{default:l(()=>[o(R,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.baselines"),value:e.stats.baselines.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.LineChartOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Severity breakdown bar "),e.stats.incidents.total>0?(u(),h(R,{key:0,title:t.$t("aiops.severityCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(D,{size:[12,8],wrap:""},{default:l(()=>[(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(A,{key:i,color:e.severityColor(i),style:{"font-size":"13px",padding:"2px 10px"}},{default:l(()=>[y(r(i)+": "+r(e.stats.incidents.bySeverity[i]||0),1)]),_:2},1032,["color"]))),128)),S("span",Ge,r(t.$t("aiops.avgResolveLabel",{time:e.formatDurationMs(e.stats.incidents.avgResolveMs)})),1)]),_:1})]),_:1},8,["title"])):p("v-if",!0),p(" Tabs "),o(U,{activeKey:e.activeTab,"onUpdate:activeKey":a[2]||(a[2]=i=>e.activeTab=i),class:"aiops-tabs"},{default:l(()=>[p(" ── Incidents tab ─────────────────────────────────────────── "),o(_,{key:"incidents",tab:t.$t("aiops.tabs.incidents")},{default:l(()=>[S("div",He,[o(B,{value:e.incidentSeverityFilter,"onUpdate:value":a[0]||(a[0]=i=>e.incidentSeverityFilter=i),size:"small","button-style":"solid"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.all")),1)]),_:1}),(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(B,{value:e.incidentStatusFilter,"onUpdate:value":a[1]||(a[1]=i=>e.incidentStatusFilter=i),size:"small"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.allStatuses")),1)]),_:1}),(u(!0),v(z,null,H(e.INCIDENT_STATUSES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(e.statusLabel(i)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(x,{columns:e.incidentColumns,"data-source":e.filteredIncidents,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="severity"?(u(),h(A,{key:0,color:e.severityColor(c.severity),style:{"font-weight":"600"}},{default:l(()=>[y(r(c.severity),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="metric"?(u(),v(z,{key:1},[c.anomalyMetric?(u(),v("span",Xe,r(c.anomalyMetric),1)):(u(),v("span",Ye,"—"))],64)):p("v-if",!0),i.key==="description"?(u(),v("span",$e,r(e.truncate(c.description,80)||"—"),1)):p("v-if",!0),i.key==="status"?(u(),h(A,{key:3,color:e.statusColor(c.status)},{default:l(()=>[y(r(e.statusLabel(c.status)),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="createdAt"?(u(),v("span",et,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:5},[c.status==="open"?(u(),h(w,{key:0,size:"small",type:"link",onClick:E=>e.ackIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.ack")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="open"||c.status==="acknowledged"?(u(),h(w,{key:1,size:"small",type:"link",onClick:E=>e.resolveIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.resolve")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"?(u(),h(w,{key:2,size:"small",type:"link",onClick:E=>e.closeIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.close")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"||c.status==="closed"?(u(),h(w,{key:3,size:"small",type:"link",onClick:E=>e.generatePostmortem(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.postmortem")),1)]),_:1},8,["onClick"])):p("v-if",!0)],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",tt,[o(e.AlertOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(e.incidentSeverityFilter||e.incidentStatusFilter?t.$t("aiops.table.incidentEmptyFiltered"):t.$t("aiops.table.incidentEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Playbooks tab ─────────────────────────────────────────── "),o(_,{key:"playbooks",tab:t.$t("aiops.tabs.playbooks")},{default:l(()=>[o(x,{columns:e.playbookColumns,"data-source":e.playbooks,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="name"?(u(),v(z,{key:0},[S("span",at,r(c.name),1),c.triggerCondition?(u(),v("div",ot,r(e.truncate(c.triggerCondition,80)),1)):p("v-if",!0)],64)):p("v-if",!0),i.key==="enabled"?(u(),h(M,{key:1,checked:c.enabled,size:"small",onChange:E=>e.togglePlaybook(c,E)},null,8,["checked","onChange"])):p("v-if",!0),i.key==="stats"?(u(),v(z,{key:2},[o(A,{color:"green",style:{"font-size":"11px"}},{default:l(()=>[y(r(t.$t("aiops.table.successCount",{n:c.successCount})),1)]),_:2},1024),c.failureCount>0?(u(),h(A,{key:0,color:"red",style:{"font-size":"11px","margin-left":"4px"}},{default:l(()=>[y(r(t.$t("aiops.table.failureCount",{n:c.failureCount})),1)]),_:2},1024)):p("v-if",!0)],64)):p("v-if",!0),i.key==="createdAt"?(u(),v("span",lt,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:4},[o(w,{size:"small",type:"link",onClick:E=>e.recordRun(c,"success")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.success")),1)]),_:1},8,["onClick"]),o(w,{size:"small",type:"link",danger:"",onClick:E=>e.recordRun(c,"failure")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.failure")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",it,[o(e.RocketOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.playbookEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Baselines tab ─────────────────────────────────────────── "),o(_,{key:"baselines",tab:t.$t("aiops.tabs.baselines")},{default:l(()=>[o(x,{columns:e.baselineColumns,"data-source":e.baselines,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="metric"?(u(),v("span",nt,r(c.metricName),1)):p("v-if",!0),i.key==="mean"?(u(),v(z,{key:1},[S("span",st,r(c.mean),1),S("span",rt,"σ "+r(c.stdDev),1)],64)):p("v-if",!0),i.key==="iqr"?(u(),v("span",dt," Q1 "+r(c.q1)+" / Q3 "+r(c.q3),1)):p("v-if",!0),i.key==="sampleCount"?(u(),h(A,{key:3,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[y(r(c.sampleCount),1)]),_:2},1024)):p("v-if",!0),i.key==="updatedAt"?(u(),v("span",ct,r(e.formatOpsTime(c.updatedAt)),1)):p("v-if",!0)]),emptyText:l(()=>[S("div",ut,[o(e.LineChartOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.baselineEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create incident modal ─────────────────────────────────── "),o(K,{open:e.showIncidentModal,"onUpdate:open":a[6]||(a[6]=i=>e.showIncidentModal=i),title:t.$t("aiops.incident_modal.title"),"confirm-loading":e.creating,width:520,"ok-text":t.$t("aiops.incident_modal.ok"),"cancel-text":t.$t("aiops.incident_modal.cancel"),onOk:e.createIncident,onCancel:e.resetIncidentForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.incident_modal.severityLabel")},{default:l(()=>[o(ee,{value:e.incidentForm.severity,"onUpdate:value":a[3]||(a[3]=i=>e.incidentForm.severity=i)},{default:l(()=>[(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(q,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.metricLabel")},{default:l(()=>[o(W,{value:e.incidentForm.metric,"onUpdate:value":a[4]||(a[4]=i=>e.incidentForm.metric=i),placeholder:t.$t("aiops.incident_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.descLabel"),required:""},{default:l(()=>[o(J,{value:e.incidentForm.description,"onUpdate:value":a[5]||(a[5]=i=>e.incidentForm.description=i),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Create playbook modal ─────────────────────────────────── "),o(K,{open:e.showPlaybookModal,"onUpdate:open":a[10]||(a[10]=i=>e.showPlaybookModal=i),title:t.$t("aiops.playbook_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("aiops.playbook_modal.ok"),"cancel-text":t.$t("aiops.playbook_modal.cancel"),onOk:e.createPlaybook,onCancel:e.resetPlaybookForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.playbook_modal.nameLabel"),required:""},{default:l(()=>[o(W,{value:e.playbookForm.name,"onUpdate:value":a[7]||(a[7]=i=>e.playbookForm.name=i),placeholder:t.$t("aiops.playbook_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.triggerLabel")},{default:l(()=>[o(J,{value:e.playbookForm.triggerJson,"onUpdate:value":a[8]||(a[8]=i=>e.playbookForm.triggerJson=i),placeholder:t.$t("aiops.playbook_modal.triggerPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.stepsLabel")},{default:l(()=>[o(J,{value:e.playbookForm.stepsJson,"onUpdate:value":a[9]||(a[9]=i=>e.playbookForm.stepsJson=i),placeholder:t.$t("aiops.playbook_modal.stepsPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Update baseline modal ─────────────────────────────────── "),o(K,{open:e.showBaselineModal,"onUpdate:open":a[13]||(a[13]=i=>e.showBaselineModal=i),title:t.$t("aiops.baseline_modal.title"),"confirm-loading":e.creating,width:500,"ok-text":t.$t("aiops.baseline_modal.ok"),"cancel-text":t.$t("aiops.baseline_modal.cancel"),onOk:e.updateBaseline,onCancel:e.resetBaselineForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.baseline_modal.metricLabel"),required:""},{default:l(()=>[o(W,{value:e.baselineForm.metric,"onUpdate:value":a[11]||(a[11]=i=>e.baselineForm.metric=i),placeholder:t.$t("aiops.baseline_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.baseline_modal.valuesLabel"),required:""},{default:l(()=>[o(J,{value:e.baselineForm.values,"onUpdate:value":a[12]||(a[12]=i=>e.baselineForm.values=i),placeholder:t.$t("aiops.baseline_modal.valuesPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Detect anomaly modal ──────────────────────────────────── "),o(K,{open:e.showDetectModal,"onUpdate:open":a[17]||(a[17]=i=>e.showDetectModal=i),title:t.$t("aiops.detect_modal.title"),"confirm-loading":e.detecting,width:500,"ok-text":t.$t("aiops.detect_modal.ok"),"cancel-text":t.$t("aiops.detect_modal.cancel"),onOk:e.detectAnomaly},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.detect_modal.metricLabel"),required:""},{default:l(()=>[o(ee,{value:e.detectForm.metric,"onUpdate:value":a[14]||(a[14]=i=>e.detectForm.metric=i),"show-search":"",placeholder:t.$t("aiops.detect_modal.metricPlaceholder")},{default:l(()=>[(u(!0),v(z,null,H(e.baselines,i=>(u(),h(q,{key:i.metricName,value:i.metricName},{default:l(()=>[y(r(t.$t("aiops.detect_modal.metricOptionLabel",{name:i.metricName,count:i.sampleCount})),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.valueLabel"),required:""},{default:l(()=>[o(ae,{value:e.detectForm.value,"onUpdate:value":a[15]||(a[15]=i=>e.detectForm.value=i),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.algorithmLabel")},{default:l(()=>[o(B,{value:e.detectForm.algorithm,"onUpdate:value":a[16]||(a[16]=i=>e.detectForm.algorithm=i)},{default:l(()=>[o(O,{value:"z_score"},{default:l(()=>[...a[18]||(a[18]=[y("Z-Score (3σ)",-1)])]),_:1}),o(O,{value:"iqr"},{default:l(()=>[...a[19]||(a[19]=[y("IQR (1.5×)",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),e.detectResult?(u(),h(R,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[o(I,{title:t.$t("aiops.detect_modal.resultTitle"),value:e.detectResult.anomaly?t.$t("aiops.detect_modal.anomaly"):t.$t("aiops.detect_modal.normal"),"value-style":{color:e.detectResult.anomaly?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),e.detectResult.reason&&!e.detectResult.anomaly?(u(),v("div",pt,r(t.$t("aiops.detect_modal.reasonLine",{reason:e.reasonLabel(e.detectResult.reason)})),1)):p("v-if",!0),e.detectResult.baseline?(u(),v("div",mt,[S("div",null,r(t.$t("aiops.detect_modal.scoreLine",{score:e.detectResult.score,threshold:e.detectResult.threshold})),1),S("div",null,r(t.$t("aiops.detect_modal.baselineLine",{mean:e.detectResult.baseline.mean,stdDev:e.detectResult.baseline.stdDev})),1)])):p("v-if",!0),e.detectResult.incidentId?(u(),v("div",yt,[o(A,{color:e.severityColor(e.detectResult.severity)},{default:l(()=>[y(r(t.$t("aiops.detect_modal.incidentCreated",{severity:e.detectResult.severity})),1)]),_:1},8,["color"])])):p("v-if",!0)]),_:1})):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Dt=ze(Ke,[["render",ft],["__scopeId","data-v-b804918b"],["__file","/tmp/cc-web-panel-RQTT6I/repo/packages/web-panel/src/views/AIOps.vue"]]);export{Dt as default};
1
+ import{I as b,J as v,U as S,R as r,c as o,K as l,V as p,S as h,o as se,h as re,a as G,b as Q,r as C,P as u,Q as y,F as z,Z as H}from"./vendor-Bn1JzzAn.js";import{t as X,_ as ze,u as de,b as ce,d as f}from"./index-gg3QPC3i.js";import ue from"./index-CtRPi4YC.js";import{f as Ie,c as Oe,b3 as Pe,aZ as Te,ab as Ee,t as Le,at as je,R as Ne}from"./icons-DG5UD-6K.js";import"./KeyCode-D63Tfrq7.js";import"./omit-C7110_f2.js";import"./pickAttrs-skteMgnM.js";import"./initDefaultProps-DwLTRNdo.js";import"./motion-BchZDXnh.js";import"./raf-Deuc0E8-.js";import"./index-DM5FmPZU.js";import"./index-BwlIxAmX.js";import"./isVisible-C7tPsqfj.js";import"./useState-CnxtbLoC.js";import"./devWarning-CP-jEUyw.js";import"./compact-item-Cdn46r8D.js";import"./createContext-DU1jqVQi.js";import"./Compact-D-ZDB8M1.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-ChEoQkN2.js";import"./zoom-D5shjpS8.js";import"./ActionButton-CBSMlGzv.js";import"./vnode-B_ZvABIG.js";const De=Object.freeze(["P0","P1","P2","P3"]),Ue=Object.freeze(["open","acknowledged","resolved","closed"]);function g(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function Me(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,anomalyMetric:t.anomalyMetric??t.anomaly_metric??"",severity:String(t.severity||"P3"),status:String(t.status||"open").toLowerCase(),description:String(t.description||""),anomalyData:t.anomalyData??t.anomaly_data??null,remediationId:t.remediationId??t.remediation_id??null,postmortem:t.postmortem||"",acknowledgedAt:t.acknowledgedAt??t.acknowledged_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,createdAt:t.createdAt??t.created_at??null,_idx:a}:null}function pe(t){const a=X(t);return Array.isArray(a)?a.map(Me).filter(Boolean):[]}function qe(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;const e=t.enabled;let P=!1;return e===!0||e===1||e==="1"?P=!0:e===!1||e===0||e==="0"?P=!1:P=!!e,{key:s,id:s,name:String(t.name||""),triggerCondition:t.triggerCondition??t.trigger_condition??"",steps:t.steps||"",enabled:P,successCount:g(t.successCount??t.success_count,0),failureCount:g(t.failureCount??t.failure_count,0),createdAt:t.createdAt??t.created_at??null,_idx:a}}function me(t){const a=X(t);return Array.isArray(a)?a.map(qe).filter(Boolean):[]}function Be(t,a=0){if(!t||typeof t!="object")return null;const s=t.metricName??t.metric_name??"";return s?{key:s,metricName:s,mean:g(t.mean,0),stdDev:g(t.stdDev??t.std_dev,0),q1:g(t.q1,0),q3:g(t.q3,0),sampleCount:g(t.sampleCount??t.sample_count,0),updatedAt:t.updatedAt??t.updated_at??null,_idx:a}:null}function ye(t){const a=X(t);return Array.isArray(a)?a.map(Be).filter(Boolean):[]}function fe(t){const a=X(t);return!a||typeof a!="object"||Array.isArray(a)?null:{anomaly:!!a.anomaly,reason:a.reason||null,metricName:a.metricName??a.metric_name??"",value:g(a.value,0),algorithm:String(a.algorithm||""),score:g(a.score,0),threshold:g(a.threshold,0),baseline:a.baseline?{mean:g(a.baseline.mean,0),stdDev:g(a.baseline.stdDev??a.baseline.std_dev,0),q1:g(a.baseline.q1,0),q3:g(a.baseline.q3,0)}:null,incidentId:a.incidentId??a.incident_id??null,severity:a.severity||null}}const Je={incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}};function be(t){const a=JSON.parse(JSON.stringify(Je)),s=X(t);if(!s||typeof s!="object"||Array.isArray(s))return a;if(s.incidents&&typeof s.incidents=="object"){if(a.incidents.total=g(s.incidents.total,0),a.incidents.avgResolveMs=g(s.incidents.avgResolveMs??s.incidents.avg_resolve_ms,0),s.incidents.bySeverity&&typeof s.incidents.bySeverity=="object")for(const e of Object.keys(a.incidents.bySeverity))a.incidents.bySeverity[e]=g(s.incidents.bySeverity[e],0);if(s.incidents.byStatus&&typeof s.incidents.byStatus=="object")for(const e of Object.keys(a.incidents.byStatus))a.incidents.byStatus[e]=g(s.incidents.byStatus[e],0)}return s.playbooks&&typeof s.playbooks=="object"&&(a.playbooks.total=g(s.playbooks.total,0),a.playbooks.enabled=g(s.playbooks.enabled,0),a.playbooks.totalSuccess=g(s.playbooks.totalSuccess??s.playbooks.total_success,0),a.playbooks.totalFailure=g(s.playbooks.totalFailure??s.playbooks.total_failure,0)),s.baselines&&typeof s.baselines=="object"&&(a.baselines.total=g(s.baselines.total,0),Array.isArray(s.baselines.metrics)&&(a.baselines.metrics=[...s.baselines.metrics])),a}function Ve(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Ke={__name:"AIOps",setup(t,{expose:a}){a();const s=de(),{t:e}=ce(),P=C(!1),j=C(!1),w=C(!1),N=C([]),Y=C([]),$=C([]),U=C({incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}}),I=C("incidents"),A=C(""),T=C(""),Z=C(!1),R=C(!1),O=C(!1),B=C(!1),x=G({severity:"P3",metric:"",description:""}),_=G({name:"",triggerJson:"",stepsJson:""}),M=G({metric:"",values:""}),D=G({metric:"",value:null,algorithm:"z_score"}),q=C(null),ee=Q(()=>[{title:e("aiops.incidentCols.severity"),key:"severity",width:"90px"},{title:e("aiops.incidentCols.metric"),key:"metric",width:"160px"},{title:e("aiops.incidentCols.description"),key:"description"},{title:e("aiops.incidentCols.status"),key:"status",width:"100px"},{title:e("aiops.incidentCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.incidentCols.action"),key:"action",width:"220px"}]),F=Q(()=>[{title:e("aiops.playbookCols.name"),key:"name"},{title:e("aiops.playbookCols.enabled"),key:"enabled",width:"80px"},{title:e("aiops.playbookCols.stats"),key:"stats",width:"180px"},{title:e("aiops.playbookCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.playbookCols.action"),key:"action",width:"160px"}]),W=Q(()=>[{title:e("aiops.baselineCols.metric"),key:"metric"},{title:e("aiops.baselineCols.mean"),key:"mean",width:"180px"},{title:e("aiops.baselineCols.iqr"),key:"iqr",width:"180px"},{title:e("aiops.baselineCols.sampleCount"),key:"sampleCount",width:"90px"},{title:e("aiops.baselineCols.updatedAt"),key:"updatedAt",width:"160px"}]),J=Q(()=>U.value.incidents.byStatus.open+U.value.incidents.byStatus.acknowledged),V=Q(()=>{let n=N.value;return A.value&&(n=n.filter(d=>d.severity===A.value)),T.value&&(n=n.filter(d=>d.status===T.value)),n});function K(n){const d=`aiops.statusLabels.${n}`,m=e(d);return m===d?n:m}function ae(n){return{open:"red",acknowledged:"orange",resolved:"cyan",closed:"default"}[n]||"default"}function i(n){return{P0:"red",P1:"volcano",P2:"orange",P3:"gold"}[n]||"default"}function c(n){const d=`aiops.reasonLabels.${n}`,m=e(d);return m===d?n:m}function E(n,d){return n?n.length>d?n.slice(0,d)+"...":n:""}function ve(n){return!n||n<=0?e("aiops.duration.none"):n<1e3?`${n}ms`:n<6e4?`${(n/1e3).toFixed(1)}s`:n<36e5?`${(n/6e4).toFixed(1)}min`:`${(n/36e5).toFixed(1)}h`}function ge({key:n}){n==="incident"?Z.value=!0:n==="playbook"?R.value=!0:n==="baseline"?O.value=!0:n==="detect"&&(q.value=null,B.value=!0)}async function L(){P.value=!0;try{const[n,d,m,k]=await Promise.all([s.execute("ops incidents --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops playbooks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops baselines --json",1e4).catch(()=>({output:""})),s.execute("ops stats --json",8e3).catch(()=>({output:""}))]);N.value=pe(n.output),Y.value=me(d.output),$.value=ye(m.output),U.value=be(k.output)}catch(n){f.error(e("aiops.msg.loadFailed")+": "+(n?.message||n))}finally{P.value=!1}}async function ke(){if(!x.description.trim()){f.warning(e("aiops.msg.descEmpty"));return}j.value=!0;try{const n=[`ops incident-create --severity ${x.severity}`];x.metric.trim()&&n.push(`--metric "${x.metric.trim().replace(/"/g,'\\"')}"`),n.push(`--description "${x.description.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"incidentId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.incidentCreated")),Z.value=!1,oe(),await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function _e(){if(!_.name.trim()){f.warning(e("aiops.msg.playbookNameEmpty"));return}for(const[n,d]of[[_.triggerJson,"triggerLabel"],[_.stepsJson,"stepsLabel"]])if(n.trim())try{JSON.parse(n)}catch{f.warning(e("aiops.msg.jsonInvalid",{label:e(`aiops.msg.${d}`)}));return}j.value=!0;try{const n=[`ops playbook-create --name "${_.name.trim().replace(/"/g,'\\"')}"`];_.triggerJson.trim()&&n.push(`--trigger '${_.triggerJson.trim().replace(/'/g,"'\\''")}'`),_.stepsJson.trim()&&n.push(`--steps '${_.stepsJson.trim().replace(/'/g,"'\\''")}'`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"playbookId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.playbookCreated")),R.value=!1,le(),I.value="playbooks",await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function he(){const n=M.metric.trim();if(!n){f.warning(e("aiops.msg.metricEmpty"));return}const d=M.values.split(/[\s,]+/).map(m=>m.trim()).filter(Boolean).map(m=>Number(m));if(d.length===0||d.some(m=>!Number.isFinite(m))){f.warning(e("aiops.msg.valuesInvalid"));return}j.value=!0;try{const m=`ops baseline-update "${n.replace(/"/g,'\\"')}" --values ${d.join(",")} --json`,{output:k}=await s.execute(m,1e4);if(/error|失败/i.test(k)&&!/"updated"/.test(k)){f.error(e("aiops.msg.baselineUpdateFailed")+": "+k.slice(0,120));return}f.success(e("aiops.msg.baselineUpdated",{n:d.length})),O.value=!1,ie(),I.value="baselines",await L()}catch(m){f.error(e("aiops.msg.baselineUpdateFailed")+": "+(m?.message||m))}finally{j.value=!1}}async function Ce(){if(!D.metric||D.value==null){f.warning(e("aiops.msg.detectFieldsEmpty"));return}w.value=!0,q.value=null;try{const n=`ops detect "${D.metric.replace(/"/g,'\\"')}" ${D.value} --algorithm ${D.algorithm} --json`,{output:d}=await s.execute(n,8e3),m=fe(d);if(!m){f.error(e("aiops.msg.detectFailed")+": "+d.slice(0,120));return}q.value=m,m.anomaly&&(f.warning(e("aiops.msg.detectAnomaly",{severity:m.severity||"P3"})),L())}catch(n){f.error(e("aiops.msg.detectFailed")+": "+(n?.message||n))}finally{w.value=!1}}async function Se(n){await te(n,"incident-ack",e("aiops.msg.incidentAcked"))}async function xe(n){await te(n,"incident-resolve",e("aiops.msg.incidentResolved"))}async function Fe(n){await te(n,"incident-close",e("aiops.msg.incidentClosed"))}async function te(n,d,m){try{const{output:k}=await s.execute(`ops ${d} ${n.id} --json`,8e3);if(/error|失败|invalid/i.test(k)&&!/"acknowledged"|"resolved"|"closed"/.test(k)){f.error(e("aiops.msg.incidentTransitionFailed")+": "+k.slice(0,120));return}f.success(m),await L()}catch(k){f.error(e("aiops.msg.incidentTransitionFailed")+": "+(k?.message||k))}}async function we(n){try{const{output:d}=await s.execute(`ops postmortem ${n.id}`,12e3);ue.info({title:e("aiops.msg.postmortemTitle",{id:n.id.slice(0,8)}),width:720,content:()=>re("pre",{style:"white-space: pre-wrap; max-height: 60vh; overflow: auto; font-size: 12px; padding: 8px; background: rgba(0,0,0,.04); border-radius: 4px;"},d||e("aiops.msg.postmortemEmpty"))})}catch(d){f.error(e("aiops.msg.postmortemFailed")+": "+(d?.message||d))}}async function Ae(n,d){const m=d?"on":"off";try{const{output:k}=await s.execute(`ops playbook-toggle ${n.id} ${m} --json`,8e3);if(/error|失败/i.test(k)&&!/"enabled"/.test(k)){f.error(e("aiops.msg.playbookToggleFailed")+": "+k.slice(0,120));return}f.success(e(d?"aiops.msg.playbookEnabled":"aiops.msg.playbookDisabled")),await L()}catch(k){f.error(e("aiops.msg.playbookToggleFailed")+": "+(k?.message||k))}}async function Re(n,d){try{const{output:m}=await s.execute(`ops playbook-record ${n.id} ${d} --json`,8e3);if(/error|失败/i.test(m)&&!/"recorded"/.test(m)){f.error(e("aiops.msg.playbookRecordFailed")+": "+m.slice(0,120));return}f.success(e(d==="success"?"aiops.msg.playbookRecordSuccess":"aiops.msg.playbookRecordFailure")),await L()}catch(m){f.error(e("aiops.msg.playbookRecordFailed")+": "+(m?.message||m))}}function oe(){x.severity="P3",x.metric="",x.description=""}function le(){_.name="",_.triggerJson="",_.stepsJson=""}function ie(){M.metric="",M.values=""}se(L);const ne={ws:s,t:e,loading:P,creating:j,detecting:w,incidents:N,playbooks:Y,baselines:$,stats:U,activeTab:I,incidentSeverityFilter:A,incidentStatusFilter:T,showIncidentModal:Z,showPlaybookModal:R,showBaselineModal:O,showDetectModal:B,incidentForm:x,playbookForm:_,baselineForm:M,detectForm:D,detectResult:q,incidentColumns:ee,playbookColumns:F,baselineColumns:W,openCount:J,filteredIncidents:V,statusLabel:K,statusColor:ae,severityColor:i,reasonLabel:c,truncate:E,formatDurationMs:ve,handleNewClick:ge,loadAll:L,createIncident:ke,createPlaybook:_e,updateBaseline:he,detectAnomaly:Ce,ackIncident:Se,resolveIncident:xe,closeIncident:Fe,runIncidentTransition:te,generatePostmortem:we,togglePlaybook:Ae,recordRun:Re,resetIncidentForm:oe,resetPlaybookForm:le,resetBaselineForm:ie,ref:C,computed:Q,onMounted:se,reactive:G,h:re,get ReloadOutlined(){return Ne},get PlusOutlined(){return je},get AlertOutlined(){return Le},get RocketOutlined(){return Ee},get LineChartOutlined(){return Te},get FundOutlined(){return Pe},get ExclamationCircleOutlined(){return Oe},get CheckCircleOutlined(){return Ie},get message(){return f},get Modal(){return ue},get useI18n(){return ce},get useWsStore(){return de},get parseIncidents(){return pe},get parsePlaybooks(){return me},get parseBaselines(){return ye},get parseDetectResult(){return fe},get parseStats(){return be},get formatOpsTime(){return Ve},get SEVERITIES(){return De},get INCIDENT_STATUSES(){return Ue}};return Object.defineProperty(ne,"__isScriptSetup",{enumerable:!1,value:!0}),ne}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},We={class:"page-sub"},Ge={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Xe={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Ye={key:1,style:{color:"var(--text-muted)"}},$e={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},et={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},tt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},at={style:{color:"var(--text-primary)","font-weight":"500"}},ot={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},lt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},it={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},nt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},st={style:{color:"#1677ff"}},rt={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},dt={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},pt={key:0,style:{color:"var(--text-secondary)","font-size":"12px","margin-top":"8px"}},mt={key:1,style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},yt={key:2,style:{"margin-top":"8px"}};function ft(t,a,s,e,P,j){const w=b("a-button"),N=b("a-menu-item"),Y=b("a-menu"),$=b("a-dropdown"),U=b("a-space"),I=b("a-statistic"),A=b("a-card"),T=b("a-col"),Z=b("a-row"),R=b("a-tag"),O=b("a-radio-button"),B=b("a-radio-group"),x=b("a-table"),_=b("a-tab-pane"),M=b("a-switch"),D=b("a-tabs"),q=b("a-select-option"),ee=b("a-select"),F=b("a-form-item"),W=b("a-input"),J=b("a-textarea"),V=b("a-form"),K=b("a-modal"),ae=b("a-input-number");return u(),v("div",null,[S("div",Qe,[S("div",null,[S("h2",Ze,r(t.$t("aiops.title")),1),S("p",We,r(t.$t("aiops.subtitle")),1)]),o(U,null,{default:l(()=>[o(w,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.refresh")),1)]),_:1},8,["loading"]),o($,{trigger:["click"]},{overlay:l(()=>[o(Y,{onClick:e.handleNewClick},{default:l(()=>[o(N,{key:"incident"},{default:l(()=>[o(e.AlertOutlined),y(" "+r(t.$t("aiops.actions.incident")),1)]),_:1}),o(N,{key:"playbook"},{default:l(()=>[o(e.RocketOutlined),y(" "+r(t.$t("aiops.actions.playbook")),1)]),_:1}),o(N,{key:"baseline"},{default:l(()=>[o(e.LineChartOutlined),y(" "+r(t.$t("aiops.actions.baseline")),1)]),_:1}),o(N,{key:"detect"},{default:l(()=>[o(e.FundOutlined),y(" "+r(t.$t("aiops.actions.detect")),1)]),_:1})]),_:1})]),default:l(()=>[o(w,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),p(" Stats overview "),o(Z,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.incidents"),value:e.stats.incidents.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.AlertOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.pending"),value:e.stats.incidents.byStatus.open+e.stats.incidents.byStatus.acknowledged,"value-style":{color:e.openCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.ExclamationCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.playbooks"),value:e.stats.playbooks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.RocketOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.enabled"),value:e.stats.playbooks.enabled,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:24,sm:8,lg:4},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.baselines"),value:e.stats.baselines.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.LineChartOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Severity breakdown bar "),e.stats.incidents.total>0?(u(),h(A,{key:0,title:t.$t("aiops.severityCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(U,{size:[12,8],wrap:""},{default:l(()=>[(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(R,{key:i,color:e.severityColor(i),style:{"font-size":"13px",padding:"2px 10px"}},{default:l(()=>[y(r(i)+": "+r(e.stats.incidents.bySeverity[i]||0),1)]),_:2},1032,["color"]))),128)),S("span",Ge,r(t.$t("aiops.avgResolveLabel",{time:e.formatDurationMs(e.stats.incidents.avgResolveMs)})),1)]),_:1})]),_:1},8,["title"])):p("v-if",!0),p(" Tabs "),o(D,{activeKey:e.activeTab,"onUpdate:activeKey":a[2]||(a[2]=i=>e.activeTab=i),class:"aiops-tabs"},{default:l(()=>[p(" ── Incidents tab ─────────────────────────────────────────── "),o(_,{key:"incidents",tab:t.$t("aiops.tabs.incidents")},{default:l(()=>[S("div",He,[o(B,{value:e.incidentSeverityFilter,"onUpdate:value":a[0]||(a[0]=i=>e.incidentSeverityFilter=i),size:"small","button-style":"solid"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.all")),1)]),_:1}),(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(B,{value:e.incidentStatusFilter,"onUpdate:value":a[1]||(a[1]=i=>e.incidentStatusFilter=i),size:"small"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.allStatuses")),1)]),_:1}),(u(!0),v(z,null,H(e.INCIDENT_STATUSES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(e.statusLabel(i)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(x,{columns:e.incidentColumns,"data-source":e.filteredIncidents,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="severity"?(u(),h(R,{key:0,color:e.severityColor(c.severity),style:{"font-weight":"600"}},{default:l(()=>[y(r(c.severity),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="metric"?(u(),v(z,{key:1},[c.anomalyMetric?(u(),v("span",Xe,r(c.anomalyMetric),1)):(u(),v("span",Ye,"—"))],64)):p("v-if",!0),i.key==="description"?(u(),v("span",$e,r(e.truncate(c.description,80)||"—"),1)):p("v-if",!0),i.key==="status"?(u(),h(R,{key:3,color:e.statusColor(c.status)},{default:l(()=>[y(r(e.statusLabel(c.status)),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="createdAt"?(u(),v("span",et,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:5},[c.status==="open"?(u(),h(w,{key:0,size:"small",type:"link",onClick:E=>e.ackIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.ack")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="open"||c.status==="acknowledged"?(u(),h(w,{key:1,size:"small",type:"link",onClick:E=>e.resolveIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.resolve")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"?(u(),h(w,{key:2,size:"small",type:"link",onClick:E=>e.closeIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.close")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"||c.status==="closed"?(u(),h(w,{key:3,size:"small",type:"link",onClick:E=>e.generatePostmortem(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.postmortem")),1)]),_:1},8,["onClick"])):p("v-if",!0)],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",tt,[o(e.AlertOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(e.incidentSeverityFilter||e.incidentStatusFilter?t.$t("aiops.table.incidentEmptyFiltered"):t.$t("aiops.table.incidentEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Playbooks tab ─────────────────────────────────────────── "),o(_,{key:"playbooks",tab:t.$t("aiops.tabs.playbooks")},{default:l(()=>[o(x,{columns:e.playbookColumns,"data-source":e.playbooks,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="name"?(u(),v(z,{key:0},[S("span",at,r(c.name),1),c.triggerCondition?(u(),v("div",ot,r(e.truncate(c.triggerCondition,80)),1)):p("v-if",!0)],64)):p("v-if",!0),i.key==="enabled"?(u(),h(M,{key:1,checked:c.enabled,size:"small",onChange:E=>e.togglePlaybook(c,E)},null,8,["checked","onChange"])):p("v-if",!0),i.key==="stats"?(u(),v(z,{key:2},[o(R,{color:"green",style:{"font-size":"11px"}},{default:l(()=>[y(r(t.$t("aiops.table.successCount",{n:c.successCount})),1)]),_:2},1024),c.failureCount>0?(u(),h(R,{key:0,color:"red",style:{"font-size":"11px","margin-left":"4px"}},{default:l(()=>[y(r(t.$t("aiops.table.failureCount",{n:c.failureCount})),1)]),_:2},1024)):p("v-if",!0)],64)):p("v-if",!0),i.key==="createdAt"?(u(),v("span",lt,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:4},[o(w,{size:"small",type:"link",onClick:E=>e.recordRun(c,"success")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.success")),1)]),_:1},8,["onClick"]),o(w,{size:"small",type:"link",danger:"",onClick:E=>e.recordRun(c,"failure")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.failure")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",it,[o(e.RocketOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.playbookEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Baselines tab ─────────────────────────────────────────── "),o(_,{key:"baselines",tab:t.$t("aiops.tabs.baselines")},{default:l(()=>[o(x,{columns:e.baselineColumns,"data-source":e.baselines,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="metric"?(u(),v("span",nt,r(c.metricName),1)):p("v-if",!0),i.key==="mean"?(u(),v(z,{key:1},[S("span",st,r(c.mean),1),S("span",rt,"σ "+r(c.stdDev),1)],64)):p("v-if",!0),i.key==="iqr"?(u(),v("span",dt," Q1 "+r(c.q1)+" / Q3 "+r(c.q3),1)):p("v-if",!0),i.key==="sampleCount"?(u(),h(R,{key:3,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[y(r(c.sampleCount),1)]),_:2},1024)):p("v-if",!0),i.key==="updatedAt"?(u(),v("span",ct,r(e.formatOpsTime(c.updatedAt)),1)):p("v-if",!0)]),emptyText:l(()=>[S("div",ut,[o(e.LineChartOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.baselineEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create incident modal ─────────────────────────────────── "),o(K,{open:e.showIncidentModal,"onUpdate:open":a[6]||(a[6]=i=>e.showIncidentModal=i),title:t.$t("aiops.incident_modal.title"),"confirm-loading":e.creating,width:520,"ok-text":t.$t("aiops.incident_modal.ok"),"cancel-text":t.$t("aiops.incident_modal.cancel"),onOk:e.createIncident,onCancel:e.resetIncidentForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.incident_modal.severityLabel")},{default:l(()=>[o(ee,{value:e.incidentForm.severity,"onUpdate:value":a[3]||(a[3]=i=>e.incidentForm.severity=i)},{default:l(()=>[(u(!0),v(z,null,H(e.SEVERITIES,i=>(u(),h(q,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.metricLabel")},{default:l(()=>[o(W,{value:e.incidentForm.metric,"onUpdate:value":a[4]||(a[4]=i=>e.incidentForm.metric=i),placeholder:t.$t("aiops.incident_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.descLabel"),required:""},{default:l(()=>[o(J,{value:e.incidentForm.description,"onUpdate:value":a[5]||(a[5]=i=>e.incidentForm.description=i),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Create playbook modal ─────────────────────────────────── "),o(K,{open:e.showPlaybookModal,"onUpdate:open":a[10]||(a[10]=i=>e.showPlaybookModal=i),title:t.$t("aiops.playbook_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("aiops.playbook_modal.ok"),"cancel-text":t.$t("aiops.playbook_modal.cancel"),onOk:e.createPlaybook,onCancel:e.resetPlaybookForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.playbook_modal.nameLabel"),required:""},{default:l(()=>[o(W,{value:e.playbookForm.name,"onUpdate:value":a[7]||(a[7]=i=>e.playbookForm.name=i),placeholder:t.$t("aiops.playbook_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.triggerLabel")},{default:l(()=>[o(J,{value:e.playbookForm.triggerJson,"onUpdate:value":a[8]||(a[8]=i=>e.playbookForm.triggerJson=i),placeholder:t.$t("aiops.playbook_modal.triggerPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.stepsLabel")},{default:l(()=>[o(J,{value:e.playbookForm.stepsJson,"onUpdate:value":a[9]||(a[9]=i=>e.playbookForm.stepsJson=i),placeholder:t.$t("aiops.playbook_modal.stepsPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Update baseline modal ─────────────────────────────────── "),o(K,{open:e.showBaselineModal,"onUpdate:open":a[13]||(a[13]=i=>e.showBaselineModal=i),title:t.$t("aiops.baseline_modal.title"),"confirm-loading":e.creating,width:500,"ok-text":t.$t("aiops.baseline_modal.ok"),"cancel-text":t.$t("aiops.baseline_modal.cancel"),onOk:e.updateBaseline,onCancel:e.resetBaselineForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.baseline_modal.metricLabel"),required:""},{default:l(()=>[o(W,{value:e.baselineForm.metric,"onUpdate:value":a[11]||(a[11]=i=>e.baselineForm.metric=i),placeholder:t.$t("aiops.baseline_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.baseline_modal.valuesLabel"),required:""},{default:l(()=>[o(J,{value:e.baselineForm.values,"onUpdate:value":a[12]||(a[12]=i=>e.baselineForm.values=i),placeholder:t.$t("aiops.baseline_modal.valuesPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Detect anomaly modal ──────────────────────────────────── "),o(K,{open:e.showDetectModal,"onUpdate:open":a[17]||(a[17]=i=>e.showDetectModal=i),title:t.$t("aiops.detect_modal.title"),"confirm-loading":e.detecting,width:500,"ok-text":t.$t("aiops.detect_modal.ok"),"cancel-text":t.$t("aiops.detect_modal.cancel"),onOk:e.detectAnomaly},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.detect_modal.metricLabel"),required:""},{default:l(()=>[o(ee,{value:e.detectForm.metric,"onUpdate:value":a[14]||(a[14]=i=>e.detectForm.metric=i),"show-search":"",placeholder:t.$t("aiops.detect_modal.metricPlaceholder")},{default:l(()=>[(u(!0),v(z,null,H(e.baselines,i=>(u(),h(q,{key:i.metricName,value:i.metricName},{default:l(()=>[y(r(t.$t("aiops.detect_modal.metricOptionLabel",{name:i.metricName,count:i.sampleCount})),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.valueLabel"),required:""},{default:l(()=>[o(ae,{value:e.detectForm.value,"onUpdate:value":a[15]||(a[15]=i=>e.detectForm.value=i),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.algorithmLabel")},{default:l(()=>[o(B,{value:e.detectForm.algorithm,"onUpdate:value":a[16]||(a[16]=i=>e.detectForm.algorithm=i)},{default:l(()=>[o(O,{value:"z_score"},{default:l(()=>[...a[18]||(a[18]=[y("Z-Score (3σ)",-1)])]),_:1}),o(O,{value:"iqr"},{default:l(()=>[...a[19]||(a[19]=[y("IQR (1.5×)",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),e.detectResult?(u(),h(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[o(I,{title:t.$t("aiops.detect_modal.resultTitle"),value:e.detectResult.anomaly?t.$t("aiops.detect_modal.anomaly"):t.$t("aiops.detect_modal.normal"),"value-style":{color:e.detectResult.anomaly?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),e.detectResult.reason&&!e.detectResult.anomaly?(u(),v("div",pt,r(t.$t("aiops.detect_modal.reasonLine",{reason:e.reasonLabel(e.detectResult.reason)})),1)):p("v-if",!0),e.detectResult.baseline?(u(),v("div",mt,[S("div",null,r(t.$t("aiops.detect_modal.scoreLine",{score:e.detectResult.score,threshold:e.detectResult.threshold})),1),S("div",null,r(t.$t("aiops.detect_modal.baselineLine",{mean:e.detectResult.baseline.mean,stdDev:e.detectResult.baseline.stdDev})),1)])):p("v-if",!0),e.detectResult.incidentId?(u(),v("div",yt,[o(R,{color:e.severityColor(e.detectResult.severity)},{default:l(()=>[y(r(t.$t("aiops.detect_modal.incidentCreated",{severity:e.detectResult.severity})),1)]),_:1},8,["color"])])):p("v-if",!0)]),_:1})):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Ut=ze(Ke,[["render",ft],["__scopeId","data-v-b804918b"],["__file","/tmp/cc-web-panel-qGOFsD/repo/packages/web-panel/src/views/AIOps.vue"]]);export{Ut as default};
@@ -1 +1 @@
1
- import{O as b,f as i,v as p}from"./index-DBpWXFed.js";import{f as m,s as r,d as O,o as y,c as P}from"./vendor-Bn1JzzAn.js";import{B as R,c as x}from"./index-Icdoqmzt.js";const A=()=>{const n=r(!1);return m(()=>{n.value=!0}),n},D={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:p(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function d(n){return!!(n&&n.then)}const j=O({compatConfig:{MODE:3},name:"ActionButton",props:D,setup(n,g){let{slots:B}=g;const l=r(!1),c=r(),a=r(!1);let f;const v=A();y(()=>{n.autofocus&&(f=setTimeout(()=>{var e,t;return(t=(e=b(c.value))===null||e===void 0?void 0:e.focus)===null||t===void 0?void 0:t.call(e)}))}),m(()=>{clearTimeout(f)});const u=function(){for(var e,t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];(e=n.close)===null||e===void 0||e.call(n,...o)},h=e=>{d(e)&&(a.value=!0,e.then(function(){v.value||(a.value=!1),u(...arguments),l.value=!1},t=>(v.value||(a.value=!1),l.value=!1,Promise.reject(t))))},C=e=>{const{actionFn:t}=n;if(l.value)return;if(l.value=!0,!t){u();return}let o;if(n.emitEvent){if(o=t(e),n.quitOnNullishReturnValue&&!d(o)){l.value=!1,u(e);return}}else if(t.length)o=t(n.close),l.value=!1;else if(o=t(),!o){u();return}h(o)};return()=>{const{type:e,prefixCls:t,buttonProps:o}=n;return P(R,i(i(i({},x(e)),{},{onClick:C,loading:a.value,prefixCls:t},o),{},{ref:c}),B)}}});export{j as A};
1
+ import{O as b,f as i,v as p}from"./index-gg3QPC3i.js";import{f as m,s as r,d as O,o as y,c as P}from"./vendor-Bn1JzzAn.js";import{B as R,c as x}from"./index-DM5FmPZU.js";const A=()=>{const n=r(!1);return m(()=>{n.value=!0}),n},D={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:p(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function d(n){return!!(n&&n.then)}const j=O({compatConfig:{MODE:3},name:"ActionButton",props:D,setup(n,g){let{slots:B}=g;const l=r(!1),c=r(),a=r(!1);let f;const v=A();y(()=>{n.autofocus&&(f=setTimeout(()=>{var e,t;return(t=(e=b(c.value))===null||e===void 0?void 0:e.focus)===null||t===void 0?void 0:t.call(e)}))}),m(()=>{clearTimeout(f)});const u=function(){for(var e,t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];(e=n.close)===null||e===void 0||e.call(n,...o)},h=e=>{d(e)&&(a.value=!0,e.then(function(){v.value||(a.value=!1),u(...arguments),l.value=!1},t=>(v.value||(a.value=!1),l.value=!1,Promise.reject(t))))},C=e=>{const{actionFn:t}=n;if(l.value)return;if(l.value=!0,!t){u();return}let o;if(n.emitEvent){if(o=t(e),n.quitOnNullishReturnValue&&!d(o)){l.value=!1,u(e);return}}else if(t.length)o=t(n.close),l.value=!1;else if(o=t(),!o){u();return}h(o)};return()=>{const{type:e,prefixCls:t,buttonProps:o}=n;return P(R,i(i(i({},x(e)),{},{onClick:C,loading:a.value,prefixCls:t},o),{},{ref:c}),B)}}});export{j as A};
@@ -1,3 +1,3 @@
1
- import{I as T,J as f,U as J,R as r,c as a,K as o,V as y,w as ae,o as oe,a as V,b as E,r as x,P as c,Q as d,S as D,F as pe}from"./vendor-Bn1JzzAn.js";import{_ as ye,b as se,u as ne,t as le,d as U}from"./index-DBpWXFed.js";import{aR as me,D as ke,a0 as ve,R as fe,aD as ge,J as _e}from"./icons-DG5UD-6K.js";const xe={__name:"Analytics",setup(re,{expose:u}){u();const{t:i}=se(),t=ne(),P=x("all"),F=x(!1),b=x(!1),L=x(!1),S=x(!1),p=x(!1),h=x(!1),m=x(20),g=V({totalCalls:0,totalTokens:0,totalCost:0,avgResponseTime:0}),C=x([]),I=x([]),_=V({entries:0,hits:0,tokensSaved:0,expired:0}),O=x(!1),z=V({totalCalls:0,inputTokens:0,outputTokens:0,totalTokens:0}),l=x([]),k=E(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.sessionUsageColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:"Input",key:"inputTokens",dataIndex:"inputTokens",width:"110px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:"Output",key:"outputTokens",dataIndex:"outputTokens",width:"110px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:"Total",key:"totalTokens",dataIndex:"totalTokens",width:"110px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)}]),ie=E(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px",sorter:(e,s)=>(e.provider||"").localeCompare(s.provider||"")},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0,sorter:(e,s)=>(e.model||"").localeCompare(s.model||"")},{title:i("analytics.breakdownColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:i("analytics.breakdownColumns.inputTokens"),key:"inputTokens",dataIndex:"inputTokens",width:"120px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:i("analytics.breakdownColumns.outputTokens"),key:"outputTokens",dataIndex:"outputTokens",width:"130px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:i("analytics.breakdownColumns.totalTokens"),key:"totalTokens",dataIndex:"totalTokens",width:"120px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)},{title:i("analytics.breakdownColumns.cost"),key:"cost",dataIndex:"cost",width:"110px",sorter:(e,s)=>(e.cost||0)-(s.cost||0)},{title:i("analytics.breakdownColumns.avgResponseTime"),key:"avgResponseTime",dataIndex:"avgResponseTime",width:"110px",sorter:(e,s)=>(e.avgResponseTime||0)-(s.avgResponseTime||0)}]),ce=E(()=>[{title:i("analytics.recentColumns.timestamp"),key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"Provider",key:"provider",dataIndex:"provider",width:"110px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.recentColumns.input"),key:"inputTokens",dataIndex:"inputTokens",width:"90px"},{title:i("analytics.recentColumns.output"),key:"outputTokens",dataIndex:"outputTokens",width:"90px"},{title:i("analytics.recentColumns.cost"),key:"cost",dataIndex:"cost",width:"100px"},{title:i("analytics.recentColumns.responseTime"),key:"responseTime",dataIndex:"responseTime",width:"100px"}]);function w(e){return(e||"").replace(/,/g,"")}function R(e){return le(e)}function W(e){const s=(e||"").split(`
2
- `);for(const n of s){const v=n.trim(),M=v.match(/total\s*calls?\s*[::]\s*([\d,]+)/i);M&&(g.totalCalls=parseInt(w(M[1]),10)||0);const j=v.match(/total\s*tokens?\s*[::]\s*([\d,]+)/i);j&&(g.totalTokens=parseInt(w(j[1]),10)||0);const B=v.match(/cost\s*[::]\s*\$?([\d,.]+)/i);B&&(g.totalCost=parseFloat(w(B[1]))||0);const A=v.match(/(?:avg|average)\s*(?:response\s*)?time\s*[::]\s*([\d,.]+)/i);A&&(g.avgResponseTime=parseFloat(w(A[1]))||0)}}function H(e){g.totalCalls=e.totalCalls??e.total_calls??e.calls??0,g.totalTokens=e.totalTokens??e.total_tokens??e.tokens??0,g.totalCost=e.totalCost??e.total_cost??e.cost??0,g.avgResponseTime=e.avgResponseTime??e.avg_response_time??e.avgTime??0}function K(e){return(Array.isArray(e)?e:e.breakdown||e.providers||e.rows||[]).map((n,v)=>({key:v,provider:n.provider||"-",model:n.model||"-",calls:n.calls||n.count||0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??(n.inputTokens??0)+(n.outputTokens??0),cost:n.cost??n.total_cost??0,avgResponseTime:n.avgResponseTime??n.avg_response_time??0}))}function q(e){return(Array.isArray(e)?e:e.recent||e.records||e.rows||[]).map((n,v)=>({key:v,timestamp:n.timestamp||n.time||n.created_at||"-",provider:n.provider||"-",model:n.model||"-",inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,cost:n.cost??0,responseTime:n.responseTime??n.response_time??0}))}function G(e){_.entries=e.entries??e.count??e.size??0,_.hits=e.hits??e.cacheHits??e.cache_hits??0,_.tokensSaved=e.tokensSaved??e.tokens_saved??0,_.expired=e.expired??e.expiredCount??e.expired_count??0}function X(e){const s=(e||"").split(`
3
- `);for(const n of s){const v=n.trim(),M=v.match(/entries?\s*[::]\s*([\d,]+)/i);M&&(_.entries=parseInt(w(M[1]),10)||0);const j=v.match(/hits?\s*[::]\s*([\d,]+)/i);j&&(_.hits=parseInt(w(j[1]),10)||0);const B=v.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);B&&(_.tokensSaved=parseInt(w(B[1]),10)||0);const A=v.match(/expired?\s*[::]\s*([\d,]+)/i);A&&(_.expired=parseInt(w(A[1]),10)||0)}}async function Q(){F.value=!0;try{const{output:e}=await t.execute(`tokens show --period ${P.value} --json`,15e3),s=R(e);s?H(s):W(e)}catch(e){console.error("loadSummary failed:",e)}finally{F.value=!1}}async function Y(){b.value=!0;try{const{output:e}=await t.execute("tokens breakdown --json",15e3),s=R(e);s?C.value=K(s):C.value=[]}catch(e){console.error("loadBreakdown failed:",e),C.value=[]}finally{b.value=!1}}async function Z(){L.value=!0;try{const{output:e}=await t.execute(`tokens recent --limit ${m.value} --json`,15e3),s=R(e);s?I.value=q(s):I.value=[]}catch(e){console.error("loadRecent failed:",e),I.value=[]}finally{L.value=!1}}async function N(){S.value=!0;try{const{output:e}=await t.execute("tokens cache --json",15e3),s=R(e);s?G(s):X(e)}catch(e){console.error("loadCache failed:",e)}finally{S.value=!1}}async function de(){p.value=!0;try{const{output:e}=await t.execute("tokens cache --clear --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheClearFailed",{err:s.error})):(U.success(i("analytics.messages.cacheClearOk")),await N())}catch(e){U.error(i("analytics.messages.cacheClearFailed",{err:e.message}))}finally{p.value=!1}}async function ue(){h.value=!0;try{const{output:e}=await t.execute("tokens cache --cleanup --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheCleanupFailed",{err:s.error})):(U.success(i("analytics.messages.cacheCleanupOk")),await N())}catch(e){U.error(i("analytics.messages.cacheCleanupFailed",{err:e.message}))}finally{h.value=!1}}async function $(){O.value=!0;try{const e=await t.sendRaw({type:"usage.global",limit:1e3},15e3);if(e.ok&&e.usage){const s=e.usage.total||{};z.totalCalls=s.calls??0,z.inputTokens=s.inputTokens??s.input_tokens??0,z.outputTokens=s.outputTokens??s.output_tokens??0,z.totalTokens=s.totalTokens??s.total_tokens??0,l.value=(e.usage.byModel||[]).map((n,v)=>({key:v,provider:n.provider||"-",model:n.model||"-",calls:n.calls??0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??0}))}}catch(e){console.warn("loadSessionUsage failed (route may not be available):",e.message)}finally{O.value=!1}}async function ee(){await Promise.all([Q(),Y(),Z(),N(),$()])}ae(P,()=>{Q()}),oe(ee);const te={t:i,ws:t,period:P,summaryLoading:F,breakdownLoading:b,recentLoading:L,cacheLoading:S,cacheClearLoading:p,cacheCleanupLoading:h,recentLimit:m,summary:g,breakdownData:C,recentData:I,cacheStats:_,sessionUsageLoading:O,sessionUsageSummary:z,sessionUsageByModel:l,sessionUsageColumns:k,breakdownColumns:ie,recentColumns:ce,stripCommas:w,tryParseJSON:R,parseSummaryText:W,parseSummaryJSON:H,parseBreakdownJSON:K,parseRecentJSON:q,parseCacheJSON:G,parseCacheText:X,loadSummary:Q,loadBreakdown:Y,loadRecent:Z,loadCache:N,cacheClear:de,cacheCleanup:ue,loadSessionUsage:$,loadAll:ee,ref:x,computed:E,reactive:V,watch:ae,onMounted:oe,get useI18n(){return se},get BarChartOutlined(){return _e},get DollarOutlined(){return ge},get ReloadOutlined(){return fe},get ThunderboltOutlined(){return ve},get DatabaseOutlined(){return ke},get DeleteOutlined(){return me},get message(){return U},get useWsStore(){return ne},get tryParseJson(){return le}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},he={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-title"},be={class:"page-sub"},Ce={style:{display:"flex","align-items":"center",gap:"12px"}},we={key:0,style:{"text-align":"center",padding:"60px"}},Se={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ie={key:2,style:{color:"#faad14"}},Oe={key:3,style:{color:"var(--text-secondary)"}},ze={key:0,style:{"text-align":"center",padding:"60px"}},Re={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Ue={key:2,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Le={key:3,style:{color:"#faad14"}},De={key:4,style:{color:"var(--text-secondary)"}},Me={key:0,style:{"text-align":"center",padding:"40px"}},je={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Be={key:0,style:{"text-align":"center",padding:"40px"}};function Ae(re,u,i,t,P,F){const b=T("a-radio-button"),L=T("a-radio-group"),S=T("a-button"),p=T("a-statistic"),h=T("a-card"),m=T("a-col"),g=T("a-row"),C=T("a-spin"),I=T("a-tag"),_=T("a-empty"),O=T("a-table"),z=T("a-space");return c(),f("div",null,[J("div",he,[J("div",null,[J("h2",Te,r(t.t("analytics.title")),1),J("p",be,r(t.t("analytics.subtitle")),1)]),J("div",Ce,[a(L,{value:t.period,"onUpdate:value":u[0]||(u[0]=l=>t.period=l),"button-style":"solid",size:"small"},{default:o(()=>[a(b,{value:"today"},{default:o(()=>[d(r(t.t("analytics.period.today")),1)]),_:1}),a(b,{value:"week"},{default:o(()=>[d(r(t.t("analytics.period.week")),1)]),_:1}),a(b,{value:"month"},{default:o(()=>[d(r(t.t("analytics.period.month")),1)]),_:1}),a(b,{value:"all"},{default:o(()=>[d(r(t.t("analytics.period.all")),1)]),_:1})]),_:1},8,["value"]),a(S,{type:"primary",ghost:"",loading:t.summaryLoading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])])]),y(" Top row: 4 stat cards "),a(g,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCalls"),value:t.summary.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),suffix:o(()=>[d(r(t.t("analytics.summary.callsSuffix")),1)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalTokens"),value:t.summary.totalTokens,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCost"),value:t.summary.totalCost,precision:4,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(t.DollarOutlined)]),suffix:o(()=>[...u[2]||(u[2]=[d("USD",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.avgResponseTime"),value:t.summary.avgResponseTime,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),suffix:o(()=>[...u[3]||(u[3]=[d("ms",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),y(" Section 2: Provider Breakdown "),a(h,{title:t.t("analytics.providerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:o(()=>[t.breakdownLoading?(c(),f("div",we,[a(C,{size:"large"})])):(c(),D(O,{key:1,columns:t.breakdownColumns,"data-source":t.breakdownData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),D(I,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",Se,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),f("span",Ie,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="avgResponseTime"?(c(),f("span",Oe,r(k.avgResponseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.providerEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 3: Recent Calls "),a(h,{title:t.t("analytics.recentCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(L,{value:t.recentLimit,"onUpdate:value":u[1]||(u[1]=l=>t.recentLimit=l),size:"small",onChange:t.loadRecent},{default:o(()=>[a(b,{value:10},{default:o(()=>[...u[4]||(u[4]=[d("10",-1)])]),_:1}),a(b,{value:20},{default:o(()=>[...u[5]||(u[5]=[d("20",-1)])]),_:1}),a(b,{value:50},{default:o(()=>[...u[6]||(u[6]=[d("50",-1)])]),_:1})]),_:1},8,["value"])]),default:o(()=>[t.recentLoading?(c(),f("div",ze,[a(C,{size:"large"})])):(c(),D(O,{key:1,columns:t.recentColumns,"data-source":t.recentData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="timestamp"?(c(),f("span",Re,r(k.timestamp),1)):y("v-if",!0),l.key==="provider"?(c(),D(I,{key:1,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",Ue,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),f("span",Le,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="responseTime"?(c(),f("span",De,r(k.responseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.recentEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 4: Session Token Usage (Phase J — from JSONL sessions) "),a(h,{title:t.t("analytics.sessionCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(S,{size:"small",loading:t.sessionUsageLoading,onClick:t.loadSessionUsage,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])]),default:o(()=>[t.sessionUsageLoading?(c(),f("div",Me,[a(C)])):(c(),f(pe,{key:1},[a(g,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalCalls"),value:t.sessionUsageSummary.totalCalls,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.inputTokens"),value:t.sessionUsageSummary.inputTokens,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.outputTokens"),value:t.sessionUsageSummary.outputTokens,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalTokens"),value:t.sessionUsageSummary.totalTokens,"value-style":{color:"#722ed1",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),a(O,{columns:t.sessionUsageColumns,"data-source":t.sessionUsageByModel,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),D(I,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",je,r(k.model),1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.sessionEmpty")},null,8,["description"])]),_:1},8,["columns","data-source"])],64))]),_:1},8,["title"]),y(" Section 5: Cache Status "),a(h,{title:t.t("analytics.cacheCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(z,null,{default:o(()=>[a(S,{size:"small",loading:t.cacheCleanupLoading,onClick:t.cacheCleanup,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.cleanup")),1)]),_:1},8,["loading"]),a(S,{size:"small",danger:"",loading:t.cacheClearLoading,onClick:t.cacheClear,style:{"border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.clear")),1)]),_:1},8,["loading"])]),_:1})]),default:o(()=>[t.cacheLoading?(c(),f("div",Be,[a(C)])):(c(),D(g,{key:1,gutter:[16,16]},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.entries"),value:t.cacheStats.entries,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.hits"),value:t.cacheStats.hits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.tokensSaved"),value:t.cacheStats.tokensSaved,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.expired"),value:t.cacheStats.expired,"value-style":{color:"#ff4d4f",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}))]),_:1},8,["title"])])}const Ne=ye(xe,[["render",Ae],["__scopeId","data-v-cab07171"],["__file","/tmp/cc-web-panel-RQTT6I/repo/packages/web-panel/src/views/Analytics.vue"]]);export{Ne as default};
1
+ import{I as T,J as f,U as F,R as r,c as a,K as o,V as y,w as ae,o as oe,a as V,b as E,r as x,P as c,Q as d,S as L,F as pe}from"./vendor-Bn1JzzAn.js";import{_ as ye,b as se,u as ne,t as le,d as U}from"./index-gg3QPC3i.js";import{aR as me,D as ke,a0 as ve,R as fe,aD as ge,J as _e}from"./icons-DG5UD-6K.js";const xe={__name:"Analytics",setup(re,{expose:u}){u();const{t:i}=se(),t=ne(),J=x("all"),P=x(!1),b=x(!1),D=x(!1),S=x(!1),p=x(!1),h=x(!1),m=x(20),g=V({totalCalls:0,totalTokens:0,totalCost:0,avgResponseTime:0}),C=x([]),O=x([]),_=V({entries:0,hits:0,tokensSaved:0,expired:0}),I=x(!1),z=V({totalCalls:0,inputTokens:0,outputTokens:0,totalTokens:0}),l=x([]),k=E(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.sessionUsageColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:"Input",key:"inputTokens",dataIndex:"inputTokens",width:"110px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:"Output",key:"outputTokens",dataIndex:"outputTokens",width:"110px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:"Total",key:"totalTokens",dataIndex:"totalTokens",width:"110px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)}]),ie=E(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px",sorter:(e,s)=>(e.provider||"").localeCompare(s.provider||"")},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0,sorter:(e,s)=>(e.model||"").localeCompare(s.model||"")},{title:i("analytics.breakdownColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:i("analytics.breakdownColumns.inputTokens"),key:"inputTokens",dataIndex:"inputTokens",width:"120px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:i("analytics.breakdownColumns.outputTokens"),key:"outputTokens",dataIndex:"outputTokens",width:"130px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:i("analytics.breakdownColumns.totalTokens"),key:"totalTokens",dataIndex:"totalTokens",width:"120px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)},{title:i("analytics.breakdownColumns.cost"),key:"cost",dataIndex:"cost",width:"110px",sorter:(e,s)=>(e.cost||0)-(s.cost||0)},{title:i("analytics.breakdownColumns.avgResponseTime"),key:"avgResponseTime",dataIndex:"avgResponseTime",width:"110px",sorter:(e,s)=>(e.avgResponseTime||0)-(s.avgResponseTime||0)}]),ce=E(()=>[{title:i("analytics.recentColumns.timestamp"),key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"Provider",key:"provider",dataIndex:"provider",width:"110px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.recentColumns.input"),key:"inputTokens",dataIndex:"inputTokens",width:"90px"},{title:i("analytics.recentColumns.output"),key:"outputTokens",dataIndex:"outputTokens",width:"90px"},{title:i("analytics.recentColumns.cost"),key:"cost",dataIndex:"cost",width:"100px"},{title:i("analytics.recentColumns.responseTime"),key:"responseTime",dataIndex:"responseTime",width:"100px"}]);function w(e){return(e||"").replace(/,/g,"")}function R(e){return le(e)}function q(e){const s=(e||"").split(`
2
+ `);for(const n of s){const v=n.trim(),M=v.match(/total\s*calls?\s*[::]\s*([\d,]+)/i);M&&(g.totalCalls=parseInt(w(M[1]),10)||0);const j=v.match(/total\s*tokens?\s*[::]\s*([\d,]+)/i);j&&(g.totalTokens=parseInt(w(j[1]),10)||0);const B=v.match(/cost\s*[::]\s*\$?([\d,.]+)/i);B&&(g.totalCost=parseFloat(w(B[1]))||0);const A=v.match(/(?:avg|average)\s*(?:response\s*)?time\s*[::]\s*([\d,.]+)/i);A&&(g.avgResponseTime=parseFloat(w(A[1]))||0)}}function G(e){g.totalCalls=e.totalCalls??e.total_calls??e.calls??0,g.totalTokens=e.totalTokens??e.total_tokens??e.tokens??0,g.totalCost=e.totalCost??e.total_cost??e.cost??0,g.avgResponseTime=e.avgResponseTime??e.avg_response_time??e.avgTime??0}function H(e){return(Array.isArray(e)?e:e.breakdown||e.providers||e.rows||[]).map((n,v)=>({key:v,provider:n.provider||"-",model:n.model||"-",calls:n.calls||n.count||0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??(n.inputTokens??0)+(n.outputTokens??0),cost:n.cost??n.total_cost??0,avgResponseTime:n.avgResponseTime??n.avg_response_time??0}))}function K(e){return(Array.isArray(e)?e:e.recent||e.records||e.rows||[]).map((n,v)=>({key:v,timestamp:n.timestamp||n.time||n.created_at||"-",provider:n.provider||"-",model:n.model||"-",inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,cost:n.cost??0,responseTime:n.responseTime??n.response_time??0}))}function Q(e){_.entries=e.entries??e.count??e.size??0,_.hits=e.hits??e.cacheHits??e.cache_hits??0,_.tokensSaved=e.tokensSaved??e.tokens_saved??0,_.expired=e.expired??e.expiredCount??e.expired_count??0}function X(e){const s=(e||"").split(`
3
+ `);for(const n of s){const v=n.trim(),M=v.match(/entries?\s*[::]\s*([\d,]+)/i);M&&(_.entries=parseInt(w(M[1]),10)||0);const j=v.match(/hits?\s*[::]\s*([\d,]+)/i);j&&(_.hits=parseInt(w(j[1]),10)||0);const B=v.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);B&&(_.tokensSaved=parseInt(w(B[1]),10)||0);const A=v.match(/expired?\s*[::]\s*([\d,]+)/i);A&&(_.expired=parseInt(w(A[1]),10)||0)}}async function W(){P.value=!0;try{const{output:e}=await t.execute(`tokens show --period ${J.value} --json`,15e3),s=R(e);s?G(s):q(e)}catch(e){console.error("loadSummary failed:",e)}finally{P.value=!1}}async function Y(){b.value=!0;try{const{output:e}=await t.execute("tokens breakdown --json",15e3),s=R(e);s?C.value=H(s):C.value=[]}catch(e){console.error("loadBreakdown failed:",e),C.value=[]}finally{b.value=!1}}async function Z(){D.value=!0;try{const{output:e}=await t.execute(`tokens recent --limit ${m.value} --json`,15e3),s=R(e);s?O.value=K(s):O.value=[]}catch(e){console.error("loadRecent failed:",e),O.value=[]}finally{D.value=!1}}async function N(){S.value=!0;try{const{output:e}=await t.execute("tokens cache --json",15e3),s=R(e);s?Q(s):X(e)}catch(e){console.error("loadCache failed:",e)}finally{S.value=!1}}async function de(){p.value=!0;try{const{output:e}=await t.execute("tokens cache --clear --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheClearFailed",{err:s.error})):(U.success(i("analytics.messages.cacheClearOk")),await N())}catch(e){U.error(i("analytics.messages.cacheClearFailed",{err:e.message}))}finally{p.value=!1}}async function ue(){h.value=!0;try{const{output:e}=await t.execute("tokens cache --cleanup --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheCleanupFailed",{err:s.error})):(U.success(i("analytics.messages.cacheCleanupOk")),await N())}catch(e){U.error(i("analytics.messages.cacheCleanupFailed",{err:e.message}))}finally{h.value=!1}}async function $(){I.value=!0;try{const e=await t.sendRaw({type:"usage.global",limit:1e3},15e3);if(e.ok&&e.usage){const s=e.usage.total||{};z.totalCalls=s.calls??0,z.inputTokens=s.inputTokens??s.input_tokens??0,z.outputTokens=s.outputTokens??s.output_tokens??0,z.totalTokens=s.totalTokens??s.total_tokens??0,l.value=(e.usage.byModel||[]).map((n,v)=>({key:v,provider:n.provider||"-",model:n.model||"-",calls:n.calls??0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??0}))}}catch(e){console.warn("loadSessionUsage failed (route may not be available):",e.message)}finally{I.value=!1}}async function ee(){await Promise.all([W(),Y(),Z(),N(),$()])}ae(J,()=>{W()}),oe(ee);const te={t:i,ws:t,period:J,summaryLoading:P,breakdownLoading:b,recentLoading:D,cacheLoading:S,cacheClearLoading:p,cacheCleanupLoading:h,recentLimit:m,summary:g,breakdownData:C,recentData:O,cacheStats:_,sessionUsageLoading:I,sessionUsageSummary:z,sessionUsageByModel:l,sessionUsageColumns:k,breakdownColumns:ie,recentColumns:ce,stripCommas:w,tryParseJSON:R,parseSummaryText:q,parseSummaryJSON:G,parseBreakdownJSON:H,parseRecentJSON:K,parseCacheJSON:Q,parseCacheText:X,loadSummary:W,loadBreakdown:Y,loadRecent:Z,loadCache:N,cacheClear:de,cacheCleanup:ue,loadSessionUsage:$,loadAll:ee,ref:x,computed:E,reactive:V,watch:ae,onMounted:oe,get useI18n(){return se},get BarChartOutlined(){return _e},get DollarOutlined(){return ge},get ReloadOutlined(){return fe},get ThunderboltOutlined(){return ve},get DatabaseOutlined(){return ke},get DeleteOutlined(){return me},get message(){return U},get useWsStore(){return ne},get tryParseJson(){return le}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},he={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-title"},be={class:"page-sub"},Ce={style:{display:"flex","align-items":"center",gap:"12px"}},we={key:0,style:{"text-align":"center",padding:"60px"}},Se={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Oe={key:2,style:{color:"#faad14"}},Ie={key:3,style:{color:"var(--text-secondary)"}},ze={key:0,style:{"text-align":"center",padding:"60px"}},Re={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Ue={key:2,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},De={key:3,style:{color:"#faad14"}},Le={key:4,style:{color:"var(--text-secondary)"}},Me={key:0,style:{"text-align":"center",padding:"40px"}},je={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Be={key:0,style:{"text-align":"center",padding:"40px"}};function Ae(re,u,i,t,J,P){const b=T("a-radio-button"),D=T("a-radio-group"),S=T("a-button"),p=T("a-statistic"),h=T("a-card"),m=T("a-col"),g=T("a-row"),C=T("a-spin"),O=T("a-tag"),_=T("a-empty"),I=T("a-table"),z=T("a-space");return c(),f("div",null,[F("div",he,[F("div",null,[F("h2",Te,r(t.t("analytics.title")),1),F("p",be,r(t.t("analytics.subtitle")),1)]),F("div",Ce,[a(D,{value:t.period,"onUpdate:value":u[0]||(u[0]=l=>t.period=l),"button-style":"solid",size:"small"},{default:o(()=>[a(b,{value:"today"},{default:o(()=>[d(r(t.t("analytics.period.today")),1)]),_:1}),a(b,{value:"week"},{default:o(()=>[d(r(t.t("analytics.period.week")),1)]),_:1}),a(b,{value:"month"},{default:o(()=>[d(r(t.t("analytics.period.month")),1)]),_:1}),a(b,{value:"all"},{default:o(()=>[d(r(t.t("analytics.period.all")),1)]),_:1})]),_:1},8,["value"]),a(S,{type:"primary",ghost:"",loading:t.summaryLoading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])])]),y(" Top row: 4 stat cards "),a(g,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCalls"),value:t.summary.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),suffix:o(()=>[d(r(t.t("analytics.summary.callsSuffix")),1)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalTokens"),value:t.summary.totalTokens,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCost"),value:t.summary.totalCost,precision:4,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(t.DollarOutlined)]),suffix:o(()=>[...u[2]||(u[2]=[d("USD",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.avgResponseTime"),value:t.summary.avgResponseTime,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),suffix:o(()=>[...u[3]||(u[3]=[d("ms",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),y(" Section 2: Provider Breakdown "),a(h,{title:t.t("analytics.providerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:o(()=>[t.breakdownLoading?(c(),f("div",we,[a(C,{size:"large"})])):(c(),L(I,{key:1,columns:t.breakdownColumns,"data-source":t.breakdownData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),L(O,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",Se,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),f("span",Oe,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="avgResponseTime"?(c(),f("span",Ie,r(k.avgResponseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.providerEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 3: Recent Calls "),a(h,{title:t.t("analytics.recentCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(D,{value:t.recentLimit,"onUpdate:value":u[1]||(u[1]=l=>t.recentLimit=l),size:"small",onChange:t.loadRecent},{default:o(()=>[a(b,{value:10},{default:o(()=>[...u[4]||(u[4]=[d("10",-1)])]),_:1}),a(b,{value:20},{default:o(()=>[...u[5]||(u[5]=[d("20",-1)])]),_:1}),a(b,{value:50},{default:o(()=>[...u[6]||(u[6]=[d("50",-1)])]),_:1})]),_:1},8,["value"])]),default:o(()=>[t.recentLoading?(c(),f("div",ze,[a(C,{size:"large"})])):(c(),L(I,{key:1,columns:t.recentColumns,"data-source":t.recentData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="timestamp"?(c(),f("span",Re,r(k.timestamp),1)):y("v-if",!0),l.key==="provider"?(c(),L(O,{key:1,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",Ue,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),f("span",De,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="responseTime"?(c(),f("span",Le,r(k.responseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.recentEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 4: Session Token Usage (Phase J — from JSONL sessions) "),a(h,{title:t.t("analytics.sessionCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(S,{size:"small",loading:t.sessionUsageLoading,onClick:t.loadSessionUsage,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])]),default:o(()=>[t.sessionUsageLoading?(c(),f("div",Me,[a(C)])):(c(),f(pe,{key:1},[a(g,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalCalls"),value:t.sessionUsageSummary.totalCalls,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.inputTokens"),value:t.sessionUsageSummary.inputTokens,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.outputTokens"),value:t.sessionUsageSummary.outputTokens,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalTokens"),value:t.sessionUsageSummary.totalTokens,"value-style":{color:"#722ed1",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),a(I,{columns:t.sessionUsageColumns,"data-source":t.sessionUsageByModel,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),L(O,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),f("span",je,r(k.model),1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.sessionEmpty")},null,8,["description"])]),_:1},8,["columns","data-source"])],64))]),_:1},8,["title"]),y(" Section 5: Cache Status "),a(h,{title:t.t("analytics.cacheCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(z,null,{default:o(()=>[a(S,{size:"small",loading:t.cacheCleanupLoading,onClick:t.cacheCleanup,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.cleanup")),1)]),_:1},8,["loading"]),a(S,{size:"small",danger:"",loading:t.cacheClearLoading,onClick:t.cacheClear,style:{"border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.clear")),1)]),_:1},8,["loading"])]),_:1})]),default:o(()=>[t.cacheLoading?(c(),f("div",Be,[a(C)])):(c(),L(g,{key:1,gutter:[16,16]},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.entries"),value:t.cacheStats.entries,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.hits"),value:t.cacheStats.hits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.tokensSaved"),value:t.cacheStats.tokensSaved,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.expired"),value:t.cacheStats.expired,"value-style":{color:"#ff4d4f",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}))]),_:1},8,["title"])])}const Ne=ye(xe,[["render",Ae],["__scopeId","data-v-cab07171"],["__file","/tmp/cc-web-panel-qGOFsD/repo/packages/web-panel/src/views/Analytics.vue"]]);export{Ne as default};