chainlesschain 0.166.139 → 0.166.140
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.
- package/README.md +18 -8
- package/package.json +1 -1
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-CHItp4vg.js → AIOps-BefmcZw2.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-nhMNWW_d.js → ActionButton-BBlS9rmj.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DRc81BBI.js → Analytics-DfNjXT9e.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-CVt7HMkp.js → AppLayout-CIBZPPMS.js} +2 -2
- package/src/assets/web-panel/assets/{Artifacts-BuJgG5jf.js → Artifacts-CE66rTTZ.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-msNg0aH-.js → Audit-DOC8Lt8U.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BpcV8yWC.js → BackgroundAgents-9TMG041Q.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-P53DADwG.js → Backup-us3KWb9F.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DFxT2yWN.js → BaseInput-D6Q95Wr5.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-BXoHisHW.js → Chat-BPrM5ARp.js} +1 -1
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-DMGtSdDx.js → ChatBubbleRenderer-Drs9vSc4.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-B4g_ckJq.js → Checkbox-DqZGMV0o.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-C6SSSOfp.js → Codegen-CmolL6wr.js} +1 -1
- package/src/assets/web-panel/assets/{Col-IO1NEUYL.js → Col-BwHSmoYQ.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CdEBl93F.js → Community-DGWqobpd.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DYs0a9k7.js → Compact-t_yy09-r.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BPnk7948.js → Compliance-D0S8-EsN.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-VLOTGbza.js → Cowork-Y1LiuRwP.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-_9GgQLJo.js → Cron-FTqEw7QV.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-B21yn0qy.js → Crosschain-C3rPZ4Qu.js} +1 -1
- package/src/assets/web-panel/assets/{DID-mBeDgRZ7.js → DID-Ba2zySM-.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-BckYYzhP.js → Dashboard-D6xyN2ND.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DEedqFiE.js → Dropdown-BF4QuXJw.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-CMs0k9TB.js → EmailListRenderer-s9dUxq14.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-B00Qd0fN.js → EvolutionSettings-CoAKOfqZ.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DxMTAMa8.js → FamilyGuardDashboard-CEznwH1c.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-B-UZw0LO.js → Federation-rIzOt8-a.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-CkafazEw.js → FormItemContext-BARFiExr.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DEUG25ZJ.js → GenericCardRenderer-DI0A4swS.js} +1 -1
- package/src/assets/web-panel/assets/{Git-D7dr9oz9.js → Git-DdmysND4.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-DKlUJ1wg.js → Governance-DrdhwUz2.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BJKqplap.js → Inference-Scm8tumd.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-B78fB-bz.js → KnowledgeGraph-_6bgPs4W.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DJGcHYH_.js → Logs-DW_v7bSo.js} +1 -1
- package/src/assets/web-panel/assets/{MarkdownRenderer-DkcG_MxW.js → MarkdownRenderer-7JABuv1j.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-ucTbwByD.js → Marketplace-0h3YSvME.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-Cu1xZYYk.js → McpTools-Byrg0Y3e.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-DCGpXmi-.js → Memory-Cyoq-o29.js} +1 -1
- package/src/assets/web-panel/assets/{MobileBridge-BnKr0aAS.js → MobileBridge-ISIlploU.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-C5UvYJTP.js → MobileProjects-04EncaRx.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-D1UUl4WH.js → Mtc-BMzkpyOF.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-D3aa8XP4.js → MtcAudit-Cx7BR5sz.js} +1 -1
- package/src/assets/web-panel/assets/{Multisig-DiXdfJjO.js → Multisig-D4pmkSX4.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-DbWABgSE.js → NLProgramming-CCfaaWNu.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BP1DPl-R.js → Notes-Mq-1ZyaH.js} +1 -1
- package/src/assets/web-panel/assets/{NotificationSettings-xaB6ONe7.js → NotificationSettings-rzf5V1TR.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-D1uNcz3b.js → OrderTableRenderer-OREUs5ue.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DMLDGaf1.js → Organization-BQfOATgw.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-DH4QPEoI.js → Overflow-D7Pa6aaA.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-Bl4OS10o.js → P2P-CaJ79ZsC.js} +1 -1
- package/src/assets/web-panel/assets/{PdhVaultBrowser-D9XSE2YI.js → PdhVaultBrowser-CtimQQN3.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-CUaPlr6d.js → Permissions-AzmmkLZ0.js} +1 -1
- package/src/assets/web-panel/assets/{PersonalDataHub-Ba92dZk-.js → PersonalDataHub-BRU8ME7z.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-Bh2okm-8.js → Pipeline-BnNqutXh.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-Bmq3p4gC.js → Privacy-gMyZcxsz.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BPu2fdKR.js → ProjectInit-CkK-Fvr0.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-D6ABLpmt.js → ProjectSettings-CGY_uiIX.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-qWHEve0z.js → Projects-DBNC7xXG.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-D9DI-2hc.js → Providers-BVgWawtE.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CxifoeD5.js → QrScannerModal-DZILESCa.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DC1BvwR7.js → QuickAsk-DwRBzFWW.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CKqbMB5o.js → Recommend-B3VxvUih.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BGGzPdS5.js → RemoteSession-DM74lufU.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-DH90O9-5.js → Reputation-DOOEuGHh.js} +1 -1
- package/src/assets/web-panel/assets/{Row-h7ovueJc.js → Row-BZJYAo0S.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DaHxXTZg.js → RssFeed-CYw44jcD.js} +1 -1
- package/src/assets/web-panel/assets/{Search-Bn6Nqpn4.js → Search-CbypjDNG.js} +1 -1
- package/src/assets/web-panel/assets/{Security-ClbBmPJi.js → Security-0rSBDrXh.js} +1 -1
- package/src/assets/web-panel/assets/{Services-ChHLQwRn.js → Services-kqP79CBD.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-DfN6BFzt.js → Skeleton-BjxvGVfI.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-C926wDev.js → Skills-SOoWyPCO.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DJzi1l1M.js → Sla-kdRVAT19.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-_GSyVjm_.js → SpeechSettings-DILtcMaJ.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-B67xnERe.js → SyncSettings-C98Jauc4.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-BaYZadcG.js → Tasks-Bw-KaQAs.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Bu8kN1Xt.js → Templates-CDJ027Hd.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BM9qufw1.js → Tenant-BqNV62UA.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-MEdd5DjB.js → Terminal-B8aQ3GLO.js} +1 -1
- package/src/assets/web-panel/assets/{TimelineRenderer-C27kL2oU.js → TimelineRenderer-BSpccq11.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Cvjd98VC.js → Tokens-BbGMoFO6.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CLym84HI.js → Trigger-D75Mawa_.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bv2JTaNN.js → Trust-BiK_Pk05.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CSCkNbtm.js → UkeySign-Dv2xX_b9.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BFDXB4xh.js → VideoEditing-CdBWfeEE.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CMEFrG_b.js → Wallet-Cvrp4agg.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-x4eO_Q4y.js → WebAuthn-D0Htlf3v.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-ClWEPgV1.js → WorkflowEditor-nuUBOHIF.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BdYOI4gM.js → chat-C6MLShIo.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DcTBrGvS.js → colors-9G5FqFOC.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Dn2ktVuj.js → compact-item-0M49EurU.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-XTreuyqp.js → createContext-CiDDLED_.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-CFRNsYQd.js → hasIn-wZvUczmn.js} +1 -1
- package/src/assets/web-panel/assets/{index-ir2ZwWz5.js → index-8jz-X3xg.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFl_a0n5.js → index-B0JZ_ccM.js} +1 -1
- package/src/assets/web-panel/assets/{index-kzyCd8a0.js → index-B6TAOS4G.js} +1 -1
- package/src/assets/web-panel/assets/{index-CsnYp4qF.js → index-BCfxxScC.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbaPXyNc.js → index-BTCIIdoS.js} +1 -1
- package/src/assets/web-panel/assets/{index-ma-rJkfE.js → index-BVV2mBbo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DQEu7uW0.js → index-BWTcG128.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW9XncMy.js → index-BXIY2BIN.js} +1 -1
- package/src/assets/web-panel/assets/{index-D45vulkq.js → index-B_XOMujL.js} +1 -1
- package/src/assets/web-panel/assets/{index-DNdiAymC.js → index-BfwJm0DU.js} +1 -1
- package/src/assets/web-panel/assets/{index-CjHA_Q7s.js → index-BlcOkfzz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Daa1yCt_.js → index-BmS2P_eX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdVpoNEQ.js → index-BzeA3eRQ.js} +1 -1
- package/src/assets/web-panel/assets/index-C101Sec6.js +1 -0
- package/src/assets/web-panel/assets/{index-BBd64wj8.js → index-C63qiwQz.js} +1 -1
- package/src/assets/web-panel/assets/{index-lnTt0Jps.js → index-CTy9gD3m.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRW3AWdS.js → index-CdUmgLxP.js} +1 -1
- package/src/assets/web-panel/assets/{index-Vo7A4aiN.js → index-CdaLWIz-.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUT4h5JB.js → index-CoxzvhoN.js} +1 -1
- package/src/assets/web-panel/assets/{index-3RqDry-K.js → index-Cs66y4oC.js} +3 -3
- package/src/assets/web-panel/assets/{index-BMLpP8QQ.js → index-CtbFv3Et.js} +1 -1
- package/src/assets/web-panel/assets/{index-CG9YLDmI.js → index-Cz1SAgnb.js} +1 -1
- package/src/assets/web-panel/assets/index-D23TaGOp.js +1 -0
- package/src/assets/web-panel/assets/{index-Brc0BF-k.js → index-D2wN6VIq.js} +1 -1
- package/src/assets/web-panel/assets/{index-BSqydcDa.js → index-D51V5vmz.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXMa7Z-S.js → index-D9J_tLGk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BV6LojRv.js → index-DN9t1qjW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNHWMMDX.js → index-DOxTmc3k.js} +1 -1
- package/src/assets/web-panel/assets/{index-BEyVNbNE.js → index-DcZxOXd8.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9kPBEqD.js → index-Dclwd_lj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDTSgpXz.js → index-DeHSwWVG.js} +1 -1
- package/src/assets/web-panel/assets/{index-XdlYkgCa.js → index-DvWRS-s7.js} +1 -1
- package/src/assets/web-panel/assets/{index-r5sNECM5.js → index-DwUOiN8M.js} +1 -1
- package/src/assets/web-panel/assets/{index-8METW_Wr.js → index-DwX9cOL6.js} +1 -1
- package/src/assets/web-panel/assets/{index-uT4fRDzU.js → index-JhfNEldK.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbMWvjLZ.js → index-dJ_V_Fqy.js} +1 -1
- package/src/assets/web-panel/assets/{index-COuEJdmr.js → index-k0BVfcwQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dhi4Oybt.js → index-qJcOtd8J.js} +1 -1
- package/src/assets/web-panel/assets/{index-oE4jTpHK.js → index-sBsJaBmM.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-mdL0oeZa.js → initDefaultProps-DyIyjurJ.js} +1 -1
- package/src/assets/web-panel/assets/{motion-ZgVCKcEX.js → motion-B2D0PuTM.js} +1 -1
- package/src/assets/web-panel/assets/{move-A_28O5T2.js → move-B22T5MnN.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-0zlMjabo.js → mtc-parser-i4b7HNzF.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DF7mU3yG.js → omit-ByNIr_gz.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Cmt8liJP.js → pickAttrs-_xP2RvxA.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DaMDC57b.js → placementArrow-CVDvzK0z.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CHw_f2d3.js → responsiveObserve-CI1toXJ_.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DJS9fFQq.js → slide-2_VosSRQ.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Bk3XdZwh.js → statusUtils-CMiWWrZC.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DMybAFsA.js → styleChecker-DY8wTVCe.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-_tbIIFMu.js → useFlexGapSupport-DkdcgIyl.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-KPklVptS.js → useFs-gpl11PEF.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-C7FrKDhD.js → usePersonalDataHub-DqnQ0H9y.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DB3JBusp.js → vnode-CgY9xUvr.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-C8rAdf81.js → zoom-Ch0jan5_.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +14 -1
- package/src/lib/evolution/agent-model-projection.js +17 -0
- package/src/lib/evolution/evolution-evidence-projector.js +85 -8
- package/src/runtime/agent-core.js +41 -18
- package/src/runtime/tool-argument-recovery.js +111 -0
- package/src/assets/web-panel/assets/index-DoVoNjtJ.js +0 -1
- package/src/assets/web-panel/assets/index-xlS8pDS2.js +0 -1
package/README.md
CHANGED
|
@@ -2,17 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
Command-line interface for installing, configuring, and managing [ChainlessChain](https://www.chainlesschain.com), including the coding agent, governed tools, sessions, memory, and IDE integrations.
|
|
4
4
|
|
|
5
|
-
<!--
|
|
5
|
+
<!-- release140-pairing:start -->
|
|
6
6
|
|
|
7
|
-
## CLI 0.166.
|
|
7
|
+
## CLI 0.166.140 / rejected tool argument recovery
|
|
8
8
|
|
|
9
|
-
This package is CLI **0.166.
|
|
9
|
+
This package is CLI **0.166.140**, paired with Open VSX **0.37.176** and JetBrains **0.4.193**. Install `npm i -g chainlesschain@0.166.140 --registry https://registry.npmjs.org`, restart the CLI and IDE chat hosts, then check `cc --version` and `cc doctor`.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Malformed provider tool arguments are rejected before tool execution. A uniquely paired pre-execution rejection produces a model-only placeholder so the next turn can continue through strict self-evolution projection. Legacy run_code snapshot rejections can resume without replaying the rejected call; original durable history stays unchanged. Valid object arguments, duplicate-key rejection, nested JSON checks, redaction and decoding budgets retain their existing boundaries.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Publication uses GitHub Actions OIDC after the exact release commit passes CLI CI and CLI Strict Sandbox on every configured Linux, Windows and macOS runner. IDE publication follows verified public CLI installation and its own exact-source host gates. JetBrains upload, Marketplace approval and public availability are reported separately.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
The focused Windows checks passed 129 tests. Two bounded real Volcengine recovery scenarios passed through the installed runtime with five physical requests and 6,401 tokens; the first scenario explicitly injected the exact logged malformed argument into one inbound model response. These results cover this recovery defect and do not rescore historical model-task acceptance. SDK 0.2.17, Protocol 0.1.12, Kernel 0.1.11 and the other child packages retain their published versions. Microsoft Marketplace and the independent PC/mobile product release are outside this patch.
|
|
16
|
+
|
|
17
|
+
[Focused live recovery evidence](../../docs/research/cli/evidence/tool-argument-recovery-20261103/live-volcengine.json).
|
|
18
|
+
|
|
19
|
+
Agent projection v10 also prevents genuine image and reasoning transport SHA-256 digests from being mistaken for phone numbers. Only authenticated protocol metadata uses the scan view; the original digest and byte-length restoration binding is unchanged. Real phone numbers, user-supplied digest-like text and forged markers retain their existing checks, and v1-v9 historical rules are preserved.
|
|
20
|
+
|
|
21
|
+
The v10 candidate passed both recovery scenarios again with **five real Volcengine requests and 6,501 tokens**, using runtime source hashes matching this candidate. See the [additional live evidence](https://github.com/chainlesschain/chainlesschain/blob/main/docs/research/cli/evidence/tool-argument-recovery-20261103/live-volcengine-v10.json).
|
|
22
|
+
|
|
23
|
+
Earlier candidate `eb0fe7a8a1` stopped at a Windows ArtifactStore post-index integrity guard, then passed a complete three-OS loopback rerun. The exact rejected condition remains unresolved, and the guard stays enforced. The [original failure](https://github.com/chainlesschain/chainlesschain/blob/main/docs/research/cli/evidence/tool-argument-recovery-20261103/windows-eb-trajectory-attempt1-failure.json) and [complete rerun](https://github.com/chainlesschain/chainlesschain/blob/main/docs/research/cli/evidence/tool-argument-recovery-20261103/windows-eb-trajectory-attempt2-aggregate.json) retain their historical source scope.
|
|
24
|
+
|
|
25
|
+
<!-- release140-pairing:end -->
|
|
16
26
|
|
|
17
27
|
<!-- release138-current:start -->
|
|
18
28
|
|
|
@@ -100,7 +110,7 @@ This release adds isolated hermetic change-review context and a shared experimen
|
|
|
100
110
|
|
|
101
111
|
Exact CLI source `fd8a21637ab188dae0c777442d312ae85d420a9b` passed complete Linux, Windows and macOS CLI CI and Strict Sandbox. [OIDC publication](https://github.com/chainlesschain/chainlesschain/actions/runs/40693655894) and [independent public readback](https://github.com/chainlesschain/chainlesschain/actions/runs/40723568902) verified registry bytes against the immutable CI artifact, signed provenance and ten direct child pins. Both IDEs have their own exact-source gates at `800e9cc99711f9f02eb3bbd78eb14600406bdba5` and verified public downloads; JetBrains is approved and listed. [Publication evidence](../../docs/research/cli/evidence/release129-public/publication.json).
|
|
102
112
|
|
|
103
|
-
Child pins are unchanged; experimental routing and `--review-changes` remain off by default. Cumulative accepted deliverables are **34/45**, with **11** unfinished (ordinary **27/36**, first-run **7/9**); this is not a `.129` single-version success rate. **NOT_PAID_READY / NOT_ADMITTED / HOLD** remain. Independent `verify:` Goal checks, the subsequent Memory disk/cache fixes and Terra profile/cache billing are main-branch work, not part of `.129`. PC/mobile remain on the separate **v5.0.3.143** release. [Historical .129 upgrade guide](../../docs-site/docs/chainlesschain/cli-ide-update-2026-10-29.md) · [Current task status](../../docs/research/cli-ide-codex-claude-gap-review-2026-10-27.md). The dated release notes below retain their historical scope.
|
|
113
|
+
Child pins are unchanged; experimental routing and `--review-changes` remain off by default. Cumulative accepted deliverables are **34/45**, with **11** unfinished (ordinary **27/36**, first-run **7/9**); this is not a `.129` single-version success rate. **NOT_PAID_READY / NOT_ADMITTED / HOLD** remain. Independent `verify:` Goal checks, the subsequent Memory disk/cache fixes and Terra profile/cache billing are main-branch work, not part of `.129`. PC/mobile remain on the separate **v5.0.3.143** release. [Historical .129 upgrade guide](../../docs-site/docs/chainlesschain/cli-ide-update-2026-10-29.md) · [Current task status](../../docs/research/cli-ide/cli-ide-codex-claude-gap-review-2026-10-27.md). The dated release notes below retain their historical scope.
|
|
104
114
|
|
|
105
115
|
Read-only Git inspections such as `status`, `diff`, `log`, `show` and `rev-parse` now skip workspace snapshots in IDE and CLI agent sessions. Mutations and commands with explicit output files or external drivers retain checkpoints. Conversation persistence and permission checks remain active; end-to-end latency still depends on the repository, model and tools.
|
|
106
116
|
|
|
@@ -110,7 +120,7 @@ This release adds evidence-based goal evaluation, visible checkpoint persistence
|
|
|
110
120
|
|
|
111
121
|
It also adds explicit `cc agent -p "task" --review-changes` for one completion-review opportunity after successful write/edit tool changes. Inspection and repairs use the same remaining request, permission and cost budgets; incomplete usage blocks additional review. This mode publishes final text only, including when partial messages were requested. It is off by default, supports headless and stream-json input, and does not claim test or native acceptance success.
|
|
112
122
|
|
|
113
|
-
Install the verified public CLI: `npm i -g chainlesschain@0.166.128 --registry https://registry.npmjs.org`. Open VSX **0.37.166** and JetBrains **0.4.183** are public and recommend `.128`. Their exact-source release gates and public artifact readback passed; the VSIX matches CI byte for byte, and every original JetBrains ZIP payload entry matches. Child package pins are unchanged. [Release progress](../../docs/research/cli-ide-release128-progress-2026-10-27.md).
|
|
123
|
+
Install the verified public CLI: `npm i -g chainlesschain@0.166.128 --registry https://registry.npmjs.org`. Open VSX **0.37.166** and JetBrains **0.4.183** are public and recommend `.128`. Their exact-source release gates and public artifact readback passed; the VSIX matches CI byte for byte, and every original JetBrains ZIP payload entry matches. Child package pins are unchanged. [Release progress](../../docs/research/cli-ide/cli-ide-release128-progress-2026-10-27.md).
|
|
114
124
|
|
|
115
125
|
Exact source `dfa158e36171e347a40e23356c2ed7bd04e0c061` passed complete Linux, Windows and macOS CLI CI and Strict Sandbox. [GitHub Actions OIDC publication](https://github.com/chainlesschain/chainlesschain/actions/runs/40552876222) and [independent public readback](https://github.com/chainlesschain/chainlesschain/actions/runs/40556529770) passed: registry bytes match the immutable CI artifact, with signed provenance and ten direct child pins verified. [Publication evidence](../../docs/research/cli/evidence/release128-public/publication.json). Mobile and PC [v5.0.3.143](https://github.com/chainlesschain/chainlesschain/releases/tag/v5.0.3.143) is public from frozen source `036d2b8be2048c98e56e917c93380f169e6a9d7b`; five platform builds, all 22 public assets and three desktop updater metadata sets are verified in [Release 40565272034](https://github.com/chainlesschain/chainlesschain/actions/runs/40565272034). Microsoft Marketplace remains unpublished; cumulative task acceptance **32/45**, **13** unfinished, and **NOT_PAID_READY / NOT_ADMITTED / HOLD** remain.
|
|
116
126
|
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as B,_ as Ye,u as We,b as Ze,d as m}from"./index-3RqDry-K.js";import{R as Ge,at as He,A as re,j as ue,aY as de,b3 as Xe,c as et,f as tt}from"./icons-DlxlFL4g.js";import at from"./index-Vo7A4aiN.js";import{o as ot,M as v,R as z,P as r,c as a,N as l,Q as C,S as y,K as b,r as x,L as d,O as c,u as k,F as R,Y as J,f as M,h as lt,a as H}from"./vendor-BXcBOG8b.js";import"./KeyCode-D63Tfrq7.js";import"./omit-DF7mU3yG.js";import"./pickAttrs-Cmt8liJP.js";import"./initDefaultProps-mdL0oeZa.js";import"./motion-ZgVCKcEX.js";import"./raf-Deuc0E8-.js";import"./index-ma-rJkfE.js";import"./index-CsnYp4qF.js";import"./isVisible-C7tPsqfj.js";import"./useState-Dlgl7fUg.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-Dn2ktVuj.js";import"./createContext-XTreuyqp.js";import"./Compact-DYs0a9k7.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-DMybAFsA.js";import"./zoom-C8rAdf81.js";import"./ActionButton-nhMNWW_d.js";import"./vnode-DB3JBusp.js";const pe=Object.freeze(["P0","P1","P2","P3"]),st=Object.freeze(["open","acknowledged","resolved","closed"]);function g(i,n=0){return typeof i=="number"&&Number.isFinite(i)?i:n}function it(i,n=0){if(!i||typeof i!="object")return null;const t=i.id||"";return t?{key:t,id:t,anomalyMetric:i.anomalyMetric??i.anomaly_metric??"",severity:String(i.severity||"P3"),status:String(i.status||"open").toLowerCase(),description:String(i.description||""),anomalyData:i.anomalyData??i.anomaly_data??null,remediationId:i.remediationId??i.remediation_id??null,postmortem:i.postmortem||"",acknowledgedAt:i.acknowledgedAt??i.acknowledged_at??null,resolvedAt:i.resolvedAt??i.resolved_at??null,createdAt:i.createdAt??i.created_at??null,_idx:n}:null}function nt(i){const n=B(i);return Array.isArray(n)?n.map(it).filter(Boolean):[]}function rt(i,n=0){if(!i||typeof i!="object")return null;const t=i.id||"";if(!t)return null;const _=i.enabled;let S=!1;return _===!0||_===1||_==="1"?S=!0:_===!1||_===0||_==="0"?S=!1:S=!!_,{key:t,id:t,name:String(i.name||""),triggerCondition:i.triggerCondition??i.trigger_condition??"",steps:i.steps||"",enabled:S,successCount:g(i.successCount??i.success_count,0),failureCount:g(i.failureCount??i.failure_count,0),createdAt:i.createdAt??i.created_at??null,_idx:n}}function ut(i){const n=B(i);return Array.isArray(n)?n.map(rt).filter(Boolean):[]}function dt(i,n=0){if(!i||typeof i!="object")return null;const t=i.metricName??i.metric_name??"";return t?{key:t,metricName:t,mean:g(i.mean,0),stdDev:g(i.stdDev??i.std_dev,0),q1:g(i.q1,0),q3:g(i.q3,0),sampleCount:g(i.sampleCount??i.sample_count,0),updatedAt:i.updatedAt??i.updated_at??null,_idx:n}:null}function pt(i){const n=B(i);return Array.isArray(n)?n.map(dt).filter(Boolean):[]}function ct(i){const n=B(i);return!n||typeof n!="object"||Array.isArray(n)?null:{anomaly:!!n.anomaly,reason:n.reason||null,metricName:n.metricName??n.metric_name??"",value:g(n.value,0),algorithm:String(n.algorithm||""),score:g(n.score,0),threshold:g(n.threshold,0),baseline:n.baseline?{mean:g(n.baseline.mean,0),stdDev:g(n.baseline.stdDev??n.baseline.std_dev,0),q1:g(n.baseline.q1,0),q3:g(n.baseline.q3,0)}:null,incidentId:n.incidentId??n.incident_id??null,severity:n.severity||null}}const mt={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 yt(i){const n=JSON.parse(JSON.stringify(mt)),t=B(i);if(!t||typeof t!="object"||Array.isArray(t))return n;if(t.incidents&&typeof t.incidents=="object"){if(n.incidents.total=g(t.incidents.total,0),n.incidents.avgResolveMs=g(t.incidents.avgResolveMs??t.incidents.avg_resolve_ms,0),t.incidents.bySeverity&&typeof t.incidents.bySeverity=="object")for(const _ of Object.keys(n.incidents.bySeverity))n.incidents.bySeverity[_]=g(t.incidents.bySeverity[_],0);if(t.incidents.byStatus&&typeof t.incidents.byStatus=="object")for(const _ of Object.keys(n.incidents.byStatus))n.incidents.byStatus[_]=g(t.incidents.byStatus[_],0)}return t.playbooks&&typeof t.playbooks=="object"&&(n.playbooks.total=g(t.playbooks.total,0),n.playbooks.enabled=g(t.playbooks.enabled,0),n.playbooks.totalSuccess=g(t.playbooks.totalSuccess??t.playbooks.total_success,0),n.playbooks.totalFailure=g(t.playbooks.totalFailure??t.playbooks.total_failure,0)),t.baselines&&typeof t.baselines=="object"&&(n.baselines.total=g(t.baselines.total,0),Array.isArray(t.baselines.metrics)&&(n.baselines.metrics=[...t.baselines.metrics])),n}function ce(i){if(i==null||i==="")return"—";const n=typeof i=="number"?new Date(i):new Date(String(i));return isNaN(n.getTime())?String(i):n.toLocaleString("zh-CN",{hour12:!1})}const ft={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},vt={class:"page-title"},bt={class:"page-sub"},gt={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},kt={class:"filter-bar"},_t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},$t={key:1,style:{color:"var(--text-muted)"}},ht={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},xt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},St={style:{color:"var(--text-primary)","font-weight":"500"}},wt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},zt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},At={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Pt={style:{color:"#1677ff"}},Rt={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},jt={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},It={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Lt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={key:0,style:{color:"var(--text-secondary)","font-size":"12px","margin-top":"8px"}},Ot={key:1,style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Tt={key:2,style:{"margin-top":"8px"}},Ut={__name:"AIOps",setup(i){const n=We(),{t}=Ze(),_=x(!1),S=x(!1),X=x(!1),me=x([]),ye=x([]),ee=x([]),A=x({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:[]}}),K=x("incidents"),q=x(""),D=x(""),V=x(!1),Q=x(!1),Y=x(!1),te=x(!1),w=H({severity:"P3",metric:"",description:""}),$=H({name:"",triggerJson:"",stepsJson:""}),I=H({metric:"",values:""}),F=H({metric:"",value:null,algorithm:"z_score"}),h=x(null),xe=M(()=>[{title:t("aiops.incidentCols.severity"),key:"severity",width:"90px"},{title:t("aiops.incidentCols.metric"),key:"metric",width:"160px"},{title:t("aiops.incidentCols.description"),key:"description"},{title:t("aiops.incidentCols.status"),key:"status",width:"100px"},{title:t("aiops.incidentCols.createdAt"),key:"createdAt",width:"160px"},{title:t("aiops.incidentCols.action"),key:"action",width:"220px"}]),Se=M(()=>[{title:t("aiops.playbookCols.name"),key:"name"},{title:t("aiops.playbookCols.enabled"),key:"enabled",width:"80px"},{title:t("aiops.playbookCols.stats"),key:"stats",width:"180px"},{title:t("aiops.playbookCols.createdAt"),key:"createdAt",width:"160px"},{title:t("aiops.playbookCols.action"),key:"action",width:"160px"}]),we=M(()=>[{title:t("aiops.baselineCols.metric"),key:"metric"},{title:t("aiops.baselineCols.mean"),key:"mean",width:"180px"},{title:t("aiops.baselineCols.iqr"),key:"iqr",width:"180px"},{title:t("aiops.baselineCols.sampleCount"),key:"sampleCount",width:"90px"},{title:t("aiops.baselineCols.updatedAt"),key:"updatedAt",width:"160px"}]),ze=M(()=>A.value.incidents.byStatus.open+A.value.incidents.byStatus.acknowledged),Ae=M(()=>{let e=me.value;return q.value&&(e=e.filter(o=>o.severity===q.value)),D.value&&(e=e.filter(o=>o.status===D.value)),e});function fe(e){const o=`aiops.statusLabels.${e}`,u=t(o);return u===o?e:u}function Fe(e){return{open:"red",acknowledged:"orange",resolved:"cyan",closed:"default"}[e]||"default"}function ae(e){return{P0:"red",P1:"volcano",P2:"orange",P3:"gold"}[e]||"default"}function Pe(e){const o=`aiops.reasonLabels.${e}`,u=t(o);return u===o?e:u}function ve(e,o){return e?e.length>o?e.slice(0,o)+"...":e:""}function Re(e){return!e||e<=0?t("aiops.duration.none"):e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:e<36e5?`${(e/6e4).toFixed(1)}min`:`${(e/36e5).toFixed(1)}h`}function je({key:e}){e==="incident"?V.value=!0:e==="playbook"?Q.value=!0:e==="baseline"?Y.value=!0:e==="detect"&&(h.value=null,te.value=!0)}async function j(){_.value=!0;try{const[e,o,u,f]=await Promise.all([n.execute("ops incidents --limit 200 --json",1e4).catch(()=>({output:""})),n.execute("ops playbooks --limit 200 --json",1e4).catch(()=>({output:""})),n.execute("ops baselines --json",1e4).catch(()=>({output:""})),n.execute("ops stats --json",8e3).catch(()=>({output:""}))]);me.value=nt(e.output),ye.value=ut(o.output),ee.value=pt(u.output),A.value=yt(f.output)}catch(e){m.error(t("aiops.msg.loadFailed")+": "+(e?.message||e))}finally{_.value=!1}}async function Ie(){if(!w.description.trim()){m.warning(t("aiops.msg.descEmpty"));return}S.value=!0;try{const e=[`ops incident-create --severity ${w.severity}`];w.metric.trim()&&e.push(`--metric "${w.metric.trim().replace(/"/g,'\\"')}"`),e.push(`--description "${w.description.trim().replace(/"/g,'\\"')}"`),e.push("--json");const{output:o}=await n.execute(e.join(" "),1e4);if(/error|失败/i.test(o)&&!/"incidentId"/.test(o)){m.error(t("aiops.msg.createFailed")+": "+o.slice(0,120));return}m.success(t("aiops.msg.incidentCreated")),V.value=!1,ge(),await j()}catch(e){m.error(t("aiops.msg.createFailed")+": "+(e?.message||e))}finally{S.value=!1}}async function Le(){if(!$.name.trim()){m.warning(t("aiops.msg.playbookNameEmpty"));return}for(const[e,o]of[[$.triggerJson,"triggerLabel"],[$.stepsJson,"stepsLabel"]])if(e.trim())try{JSON.parse(e)}catch{m.warning(t("aiops.msg.jsonInvalid",{label:t(`aiops.msg.${o}`)}));return}S.value=!0;try{const e=[`ops playbook-create --name "${$.name.trim().replace(/"/g,'\\"')}"`];$.triggerJson.trim()&&e.push(`--trigger '${$.triggerJson.trim().replace(/'/g,"'\\''")}'`),$.stepsJson.trim()&&e.push(`--steps '${$.stepsJson.trim().replace(/'/g,"'\\''")}'`),e.push("--json");const{output:o}=await n.execute(e.join(" "),1e4);if(/error|失败/i.test(o)&&!/"playbookId"/.test(o)){m.error(t("aiops.msg.createFailed")+": "+o.slice(0,120));return}m.success(t("aiops.msg.playbookCreated")),Q.value=!1,ke(),K.value="playbooks",await j()}catch(e){m.error(t("aiops.msg.createFailed")+": "+(e?.message||e))}finally{S.value=!1}}async function Ne(){const e=I.metric.trim();if(!e){m.warning(t("aiops.msg.metricEmpty"));return}const o=I.values.split(/[\s,]+/).map(u=>u.trim()).filter(Boolean).map(u=>Number(u));if(o.length===0||o.some(u=>!Number.isFinite(u))){m.warning(t("aiops.msg.valuesInvalid"));return}S.value=!0;try{const u=`ops baseline-update "${e.replace(/"/g,'\\"')}" --values ${o.join(",")} --json`,{output:f}=await n.execute(u,1e4);if(/error|失败/i.test(f)&&!/"updated"/.test(f)){m.error(t("aiops.msg.baselineUpdateFailed")+": "+f.slice(0,120));return}m.success(t("aiops.msg.baselineUpdated",{n:o.length})),Y.value=!1,_e(),K.value="baselines",await j()}catch(u){m.error(t("aiops.msg.baselineUpdateFailed")+": "+(u?.message||u))}finally{S.value=!1}}async function Oe(){if(!F.metric||F.value==null){m.warning(t("aiops.msg.detectFieldsEmpty"));return}X.value=!0,h.value=null;try{const e=`ops detect "${F.metric.replace(/"/g,'\\"')}" ${F.value} --algorithm ${F.algorithm} --json`,{output:o}=await n.execute(e,8e3),u=ct(o);if(!u){m.error(t("aiops.msg.detectFailed")+": "+o.slice(0,120));return}h.value=u,u.anomaly&&(m.warning(t("aiops.msg.detectAnomaly",{severity:u.severity||"P3"})),j())}catch(e){m.error(t("aiops.msg.detectFailed")+": "+(e?.message||e))}finally{X.value=!1}}async function Te(e){await oe(e,"incident-ack",t("aiops.msg.incidentAcked"))}async function Ue(e){await oe(e,"incident-resolve",t("aiops.msg.incidentResolved"))}async function qe(e){await oe(e,"incident-close",t("aiops.msg.incidentClosed"))}async function oe(e,o,u){try{const{output:f}=await n.execute(`ops ${o} ${e.id} --json`,8e3);if(/error|失败|invalid/i.test(f)&&!/"acknowledged"|"resolved"|"closed"/.test(f)){m.error(t("aiops.msg.incidentTransitionFailed")+": "+f.slice(0,120));return}m.success(u),await j()}catch(f){m.error(t("aiops.msg.incidentTransitionFailed")+": "+(f?.message||f))}}async function De(e){try{const{output:o}=await n.execute(`ops postmortem ${e.id}`,12e3);at.info({title:t("aiops.msg.postmortemTitle",{id:e.id.slice(0,8)}),width:720,content:()=>lt("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;"},o||t("aiops.msg.postmortemEmpty"))})}catch(o){m.error(t("aiops.msg.postmortemFailed")+": "+(o?.message||o))}}async function Ee(e,o){const u=o?"on":"off";try{const{output:f}=await n.execute(`ops playbook-toggle ${e.id} ${u} --json`,8e3);if(/error|失败/i.test(f)&&!/"enabled"/.test(f)){m.error(t("aiops.msg.playbookToggleFailed")+": "+f.slice(0,120));return}m.success(t(o?"aiops.msg.playbookEnabled":"aiops.msg.playbookDisabled")),await j()}catch(f){m.error(t("aiops.msg.playbookToggleFailed")+": "+(f?.message||f))}}async function be(e,o){try{const{output:u}=await n.execute(`ops playbook-record ${e.id} ${o} --json`,8e3);if(/error|失败/i.test(u)&&!/"recorded"/.test(u)){m.error(t("aiops.msg.playbookRecordFailed")+": "+u.slice(0,120));return}m.success(t(o==="success"?"aiops.msg.playbookRecordSuccess":"aiops.msg.playbookRecordFailure")),await j()}catch(u){m.error(t("aiops.msg.playbookRecordFailed")+": "+(u?.message||u))}}function ge(){w.severity="P3",w.metric="",w.description=""}function ke(){$.name="",$.triggerJson="",$.stepsJson=""}function _e(){I.metric="",I.values=""}return ot(j),(e,o)=>{const u=b("a-button"),f=b("a-menu-item"),Je=b("a-menu"),Me=b("a-dropdown"),$e=b("a-space"),T=b("a-statistic"),L=b("a-card"),E=b("a-col"),Be=b("a-row"),N=b("a-tag"),U=b("a-radio-button"),le=b("a-radio-group"),se=b("a-table"),ie=b("a-tab-pane"),Ke=b("a-switch"),Ve=b("a-tabs"),he=b("a-select-option"),Ce=b("a-select"),P=b("a-form-item"),ne=b("a-input"),W=b("a-textarea"),Z=b("a-form"),G=b("a-modal"),Qe=b("a-input-number");return d(),v("div",null,[z("div",ft,[z("div",null,[z("h2",vt,r(e.$t("aiops.title")),1),z("p",bt,r(e.$t("aiops.subtitle")),1)]),a($e,null,{default:l(()=>[a(u,{loading:_.value,onClick:j},{icon:l(()=>[a(k(Ge))]),default:l(()=>[c(" "+r(e.$t("aiops.refresh")),1)]),_:1},8,["loading"]),a(Me,{trigger:["click"]},{overlay:l(()=>[a(Je,{onClick:je},{default:l(()=>[a(f,{key:"incident"},{default:l(()=>[a(k(re)),c(" "+r(e.$t("aiops.actions.incident")),1)]),_:1}),a(f,{key:"playbook"},{default:l(()=>[a(k(ue)),c(" "+r(e.$t("aiops.actions.playbook")),1)]),_:1}),a(f,{key:"baseline"},{default:l(()=>[a(k(de)),c(" "+r(e.$t("aiops.actions.baseline")),1)]),_:1}),a(f,{key:"detect"},{default:l(()=>[a(k(Xe)),c(" "+r(e.$t("aiops.actions.detect")),1)]),_:1})]),_:1})]),default:l(()=>[a(u,{type:"primary"},{icon:l(()=>[a(k(He))]),default:l(()=>[c(" "+r(e.$t("aiops.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),a(Be,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.incidents"),value:A.value.incidents.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[a(k(re))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.pending"),value:A.value.incidents.byStatus.open+A.value.incidents.byStatus.acknowledged,"value-style":{color:ze.value>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[a(k(et))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.playbooks"),value:A.value.playbooks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[a(k(ue))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.enabled"),value:A.value.playbooks.enabled,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:l(()=>[a(k(tt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:24,sm:8,lg:4},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.baselines"),value:A.value.baselines.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[a(k(de))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),A.value.incidents.total>0?(d(),C(L,{key:0,title:e.$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(()=>[a($e,{size:[12,8],wrap:""},{default:l(()=>[(d(!0),v(R,null,J(k(pe),s=>(d(),C(N,{key:s,color:ae(s),style:{"font-size":"13px",padding:"2px 10px"}},{default:l(()=>[c(r(s)+": "+r(A.value.incidents.bySeverity[s]||0),1)]),_:2},1032,["color"]))),128)),z("span",gt,r(e.$t("aiops.avgResolveLabel",{time:Re(A.value.incidents.avgResolveMs)})),1)]),_:1})]),_:1},8,["title"])):y("",!0),a(Ve,{activeKey:K.value,"onUpdate:activeKey":o[2]||(o[2]=s=>K.value=s),class:"aiops-tabs"},{default:l(()=>[a(ie,{key:"incidents",tab:e.$t("aiops.tabs.incidents")},{default:l(()=>[z("div",kt,[a(le,{value:q.value,"onUpdate:value":o[0]||(o[0]=s=>q.value=s),size:"small","button-style":"solid"},{default:l(()=>[a(U,{value:""},{default:l(()=>[c(r(e.$t("aiops.filter.all")),1)]),_:1}),(d(!0),v(R,null,J(k(pe),s=>(d(),C(U,{key:s,value:s},{default:l(()=>[c(r(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(le,{value:D.value,"onUpdate:value":o[1]||(o[1]=s=>D.value=s),size:"small"},{default:l(()=>[a(U,{value:""},{default:l(()=>[c(r(e.$t("aiops.filter.allStatuses")),1)]),_:1}),(d(!0),v(R,null,J(k(st),s=>(d(),C(U,{key:s,value:s},{default:l(()=>[c(r(fe(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(se,{columns:xe.value,"data-source":Ae.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="severity"?(d(),C(N,{key:0,color:ae(p.severity),style:{"font-weight":"600"}},{default:l(()=>[c(r(p.severity),1)]),_:2},1032,["color"])):y("",!0),s.key==="metric"?(d(),v(R,{key:1},[p.anomalyMetric?(d(),v("span",_t,r(p.anomalyMetric),1)):(d(),v("span",$t,"—"))],64)):y("",!0),s.key==="description"?(d(),v("span",ht,r(ve(p.description,80)||"—"),1)):y("",!0),s.key==="status"?(d(),C(N,{key:3,color:Fe(p.status)},{default:l(()=>[c(r(fe(p.status)),1)]),_:2},1032,["color"])):y("",!0),s.key==="createdAt"?(d(),v("span",Ct,r(k(ce)(p.createdAt)),1)):y("",!0),s.key==="action"?(d(),v(R,{key:5},[p.status==="open"?(d(),C(u,{key:0,size:"small",type:"link",onClick:O=>Te(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.ack")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="open"||p.status==="acknowledged"?(d(),C(u,{key:1,size:"small",type:"link",onClick:O=>Ue(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.resolve")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="resolved"?(d(),C(u,{key:2,size:"small",type:"link",onClick:O=>qe(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.close")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="resolved"||p.status==="closed"?(d(),C(u,{key:3,size:"small",type:"link",onClick:O=>De(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.postmortem")),1)]),_:1},8,["onClick"])):y("",!0)],64)):y("",!0)]),emptyText:l(()=>[z("div",xt,[a(k(re),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(q.value||D.value?e.$t("aiops.table.incidentEmptyFiltered"):e.$t("aiops.table.incidentEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(ie,{key:"playbooks",tab:e.$t("aiops.tabs.playbooks")},{default:l(()=>[a(se,{columns:Se.value,"data-source":ye.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="name"?(d(),v(R,{key:0},[z("span",St,r(p.name),1),p.triggerCondition?(d(),v("div",wt,r(ve(p.triggerCondition,80)),1)):y("",!0)],64)):y("",!0),s.key==="enabled"?(d(),C(Ke,{key:1,checked:p.enabled,size:"small",onChange:O=>Ee(p,O)},null,8,["checked","onChange"])):y("",!0),s.key==="stats"?(d(),v(R,{key:2},[a(N,{color:"green",style:{"font-size":"11px"}},{default:l(()=>[c(r(e.$t("aiops.table.successCount",{n:p.successCount})),1)]),_:2},1024),p.failureCount>0?(d(),C(N,{key:0,color:"red",style:{"font-size":"11px","margin-left":"4px"}},{default:l(()=>[c(r(e.$t("aiops.table.failureCount",{n:p.failureCount})),1)]),_:2},1024)):y("",!0)],64)):y("",!0),s.key==="createdAt"?(d(),v("span",zt,r(k(ce)(p.createdAt)),1)):y("",!0),s.key==="action"?(d(),v(R,{key:4},[a(u,{size:"small",type:"link",onClick:O=>be(p,"success")},{default:l(()=>[c(r(e.$t("aiops.playbookActions.success")),1)]),_:1},8,["onClick"]),a(u,{size:"small",type:"link",danger:"",onClick:O=>be(p,"failure")},{default:l(()=>[c(r(e.$t("aiops.playbookActions.failure")),1)]),_:1},8,["onClick"])],64)):y("",!0)]),emptyText:l(()=>[z("div",At,[a(k(ue),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(e.$t("aiops.table.playbookEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(ie,{key:"baselines",tab:e.$t("aiops.tabs.baselines")},{default:l(()=>[a(se,{columns:we.value,"data-source":ee.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="metric"?(d(),v("span",Ft,r(p.metricName),1)):y("",!0),s.key==="mean"?(d(),v(R,{key:1},[z("span",Pt,r(p.mean),1),z("span",Rt,"σ "+r(p.stdDev),1)],64)):y("",!0),s.key==="iqr"?(d(),v("span",jt," Q1 "+r(p.q1)+" / Q3 "+r(p.q3),1)):y("",!0),s.key==="sampleCount"?(d(),C(N,{key:3,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[c(r(p.sampleCount),1)]),_:2},1024)):y("",!0),s.key==="updatedAt"?(d(),v("span",It,r(k(ce)(p.updatedAt)),1)):y("",!0)]),emptyText:l(()=>[z("div",Lt,[a(k(de),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(e.$t("aiops.table.baselineEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(G,{open:V.value,"onUpdate:open":o[6]||(o[6]=s=>V.value=s),title:e.$t("aiops.incident_modal.title"),"confirm-loading":S.value,width:520,"ok-text":e.$t("aiops.incident_modal.ok"),"cancel-text":e.$t("aiops.incident_modal.cancel"),onOk:Ie,onCancel:ge},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.incident_modal.severityLabel")},{default:l(()=>[a(Ce,{value:w.severity,"onUpdate:value":o[3]||(o[3]=s=>w.severity=s)},{default:l(()=>[(d(!0),v(R,null,J(k(pe),s=>(d(),C(he,{key:s,value:s},{default:l(()=>[c(r(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.incident_modal.metricLabel")},{default:l(()=>[a(ne,{value:w.metric,"onUpdate:value":o[4]||(o[4]=s=>w.metric=s),placeholder:e.$t("aiops.incident_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.incident_modal.descLabel"),required:""},{default:l(()=>[a(W,{value:w.description,"onUpdate:value":o[5]||(o[5]=s=>w.description=s),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(G,{open:Q.value,"onUpdate:open":o[10]||(o[10]=s=>Q.value=s),title:e.$t("aiops.playbook_modal.title"),"confirm-loading":S.value,width:540,"ok-text":e.$t("aiops.playbook_modal.ok"),"cancel-text":e.$t("aiops.playbook_modal.cancel"),onOk:Le,onCancel:ke},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.playbook_modal.nameLabel"),required:""},{default:l(()=>[a(ne,{value:$.name,"onUpdate:value":o[7]||(o[7]=s=>$.name=s),placeholder:e.$t("aiops.playbook_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.playbook_modal.triggerLabel")},{default:l(()=>[a(W,{value:$.triggerJson,"onUpdate:value":o[8]||(o[8]=s=>$.triggerJson=s),placeholder:e.$t("aiops.playbook_modal.triggerPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.playbook_modal.stepsLabel")},{default:l(()=>[a(W,{value:$.stepsJson,"onUpdate:value":o[9]||(o[9]=s=>$.stepsJson=s),placeholder:e.$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"]),a(G,{open:Y.value,"onUpdate:open":o[13]||(o[13]=s=>Y.value=s),title:e.$t("aiops.baseline_modal.title"),"confirm-loading":S.value,width:500,"ok-text":e.$t("aiops.baseline_modal.ok"),"cancel-text":e.$t("aiops.baseline_modal.cancel"),onOk:Ne,onCancel:_e},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.baseline_modal.metricLabel"),required:""},{default:l(()=>[a(ne,{value:I.metric,"onUpdate:value":o[11]||(o[11]=s=>I.metric=s),placeholder:e.$t("aiops.baseline_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.baseline_modal.valuesLabel"),required:""},{default:l(()=>[a(W,{value:I.values,"onUpdate:value":o[12]||(o[12]=s=>I.values=s),placeholder:e.$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"]),a(G,{open:te.value,"onUpdate:open":o[17]||(o[17]=s=>te.value=s),title:e.$t("aiops.detect_modal.title"),"confirm-loading":X.value,width:500,"ok-text":e.$t("aiops.detect_modal.ok"),"cancel-text":e.$t("aiops.detect_modal.cancel"),onOk:Oe},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.detect_modal.metricLabel"),required:""},{default:l(()=>[a(Ce,{value:F.metric,"onUpdate:value":o[14]||(o[14]=s=>F.metric=s),"show-search":"",placeholder:e.$t("aiops.detect_modal.metricPlaceholder")},{default:l(()=>[(d(!0),v(R,null,J(ee.value,s=>(d(),C(he,{key:s.metricName,value:s.metricName},{default:l(()=>[c(r(e.$t("aiops.detect_modal.metricOptionLabel",{name:s.metricName,count:s.sampleCount})),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.detect_modal.valueLabel"),required:""},{default:l(()=>[a(Qe,{value:F.value,"onUpdate:value":o[15]||(o[15]=s=>F.value=s),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.detect_modal.algorithmLabel")},{default:l(()=>[a(le,{value:F.algorithm,"onUpdate:value":o[16]||(o[16]=s=>F.algorithm=s)},{default:l(()=>[a(U,{value:"z_score"},{default:l(()=>[...o[18]||(o[18]=[c("Z-Score (3σ)",-1)])]),_:1}),a(U,{value:"iqr"},{default:l(()=>[...o[19]||(o[19]=[c("IQR (1.5×)",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),h.value?(d(),C(L,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[a(T,{title:e.$t("aiops.detect_modal.resultTitle"),value:h.value.anomaly?e.$t("aiops.detect_modal.anomaly"):e.$t("aiops.detect_modal.normal"),"value-style":{color:h.value.anomaly?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),h.value.reason&&!h.value.anomaly?(d(),v("div",Nt,r(e.$t("aiops.detect_modal.reasonLine",{reason:Pe(h.value.reason)})),1)):y("",!0),h.value.baseline?(d(),v("div",Ot,[z("div",null,r(e.$t("aiops.detect_modal.scoreLine",{score:h.value.score,threshold:h.value.threshold})),1),z("div",null,r(e.$t("aiops.detect_modal.baselineLine",{mean:h.value.baseline.mean,stdDev:h.value.baseline.stdDev})),1)])):y("",!0),h.value.incidentId?(d(),v("div",Tt,[a(N,{color:ae(h.value.severity)},{default:l(()=>[c(r(e.$t("aiops.detect_modal.incidentCreated",{severity:h.value.severity})),1)]),_:1},8,["color"])])):y("",!0)]),_:1})):y("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},ua=Ye(Ut,[["__scopeId","data-v-ecfcab22"]]);export{ua as default};
|
|
1
|
+
import{t as B,_ as Ye,u as We,b as Ze,d as m}from"./index-Cs66y4oC.js";import{R as Ge,at as He,A as re,j as ue,aY as de,b3 as Xe,c as et,f as tt}from"./icons-DlxlFL4g.js";import at from"./index-CdaLWIz-.js";import{o as ot,M as v,R as z,P as r,c as a,N as l,Q as C,S as y,K as b,r as x,L as d,O as c,u as k,F as R,Y as J,f as M,h as lt,a as H}from"./vendor-BXcBOG8b.js";import"./KeyCode-D63Tfrq7.js";import"./omit-ByNIr_gz.js";import"./pickAttrs-_xP2RvxA.js";import"./initDefaultProps-DyIyjurJ.js";import"./motion-B2D0PuTM.js";import"./raf-Deuc0E8-.js";import"./index-BVV2mBbo.js";import"./index-BCfxxScC.js";import"./isVisible-C7tPsqfj.js";import"./useState-Dlgl7fUg.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-0M49EurU.js";import"./createContext-CiDDLED_.js";import"./Compact-t_yy09-r.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-DY8wTVCe.js";import"./zoom-Ch0jan5_.js";import"./ActionButton-BBlS9rmj.js";import"./vnode-CgY9xUvr.js";const pe=Object.freeze(["P0","P1","P2","P3"]),st=Object.freeze(["open","acknowledged","resolved","closed"]);function g(i,n=0){return typeof i=="number"&&Number.isFinite(i)?i:n}function it(i,n=0){if(!i||typeof i!="object")return null;const t=i.id||"";return t?{key:t,id:t,anomalyMetric:i.anomalyMetric??i.anomaly_metric??"",severity:String(i.severity||"P3"),status:String(i.status||"open").toLowerCase(),description:String(i.description||""),anomalyData:i.anomalyData??i.anomaly_data??null,remediationId:i.remediationId??i.remediation_id??null,postmortem:i.postmortem||"",acknowledgedAt:i.acknowledgedAt??i.acknowledged_at??null,resolvedAt:i.resolvedAt??i.resolved_at??null,createdAt:i.createdAt??i.created_at??null,_idx:n}:null}function nt(i){const n=B(i);return Array.isArray(n)?n.map(it).filter(Boolean):[]}function rt(i,n=0){if(!i||typeof i!="object")return null;const t=i.id||"";if(!t)return null;const _=i.enabled;let S=!1;return _===!0||_===1||_==="1"?S=!0:_===!1||_===0||_==="0"?S=!1:S=!!_,{key:t,id:t,name:String(i.name||""),triggerCondition:i.triggerCondition??i.trigger_condition??"",steps:i.steps||"",enabled:S,successCount:g(i.successCount??i.success_count,0),failureCount:g(i.failureCount??i.failure_count,0),createdAt:i.createdAt??i.created_at??null,_idx:n}}function ut(i){const n=B(i);return Array.isArray(n)?n.map(rt).filter(Boolean):[]}function dt(i,n=0){if(!i||typeof i!="object")return null;const t=i.metricName??i.metric_name??"";return t?{key:t,metricName:t,mean:g(i.mean,0),stdDev:g(i.stdDev??i.std_dev,0),q1:g(i.q1,0),q3:g(i.q3,0),sampleCount:g(i.sampleCount??i.sample_count,0),updatedAt:i.updatedAt??i.updated_at??null,_idx:n}:null}function pt(i){const n=B(i);return Array.isArray(n)?n.map(dt).filter(Boolean):[]}function ct(i){const n=B(i);return!n||typeof n!="object"||Array.isArray(n)?null:{anomaly:!!n.anomaly,reason:n.reason||null,metricName:n.metricName??n.metric_name??"",value:g(n.value,0),algorithm:String(n.algorithm||""),score:g(n.score,0),threshold:g(n.threshold,0),baseline:n.baseline?{mean:g(n.baseline.mean,0),stdDev:g(n.baseline.stdDev??n.baseline.std_dev,0),q1:g(n.baseline.q1,0),q3:g(n.baseline.q3,0)}:null,incidentId:n.incidentId??n.incident_id??null,severity:n.severity||null}}const mt={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 yt(i){const n=JSON.parse(JSON.stringify(mt)),t=B(i);if(!t||typeof t!="object"||Array.isArray(t))return n;if(t.incidents&&typeof t.incidents=="object"){if(n.incidents.total=g(t.incidents.total,0),n.incidents.avgResolveMs=g(t.incidents.avgResolveMs??t.incidents.avg_resolve_ms,0),t.incidents.bySeverity&&typeof t.incidents.bySeverity=="object")for(const _ of Object.keys(n.incidents.bySeverity))n.incidents.bySeverity[_]=g(t.incidents.bySeverity[_],0);if(t.incidents.byStatus&&typeof t.incidents.byStatus=="object")for(const _ of Object.keys(n.incidents.byStatus))n.incidents.byStatus[_]=g(t.incidents.byStatus[_],0)}return t.playbooks&&typeof t.playbooks=="object"&&(n.playbooks.total=g(t.playbooks.total,0),n.playbooks.enabled=g(t.playbooks.enabled,0),n.playbooks.totalSuccess=g(t.playbooks.totalSuccess??t.playbooks.total_success,0),n.playbooks.totalFailure=g(t.playbooks.totalFailure??t.playbooks.total_failure,0)),t.baselines&&typeof t.baselines=="object"&&(n.baselines.total=g(t.baselines.total,0),Array.isArray(t.baselines.metrics)&&(n.baselines.metrics=[...t.baselines.metrics])),n}function ce(i){if(i==null||i==="")return"—";const n=typeof i=="number"?new Date(i):new Date(String(i));return isNaN(n.getTime())?String(i):n.toLocaleString("zh-CN",{hour12:!1})}const ft={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},vt={class:"page-title"},bt={class:"page-sub"},gt={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},kt={class:"filter-bar"},_t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},$t={key:1,style:{color:"var(--text-muted)"}},ht={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ct={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},xt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},St={style:{color:"var(--text-primary)","font-weight":"500"}},wt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},zt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},At={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},Pt={style:{color:"#1677ff"}},Rt={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},jt={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},It={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Lt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={key:0,style:{color:"var(--text-secondary)","font-size":"12px","margin-top":"8px"}},Ot={key:1,style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Tt={key:2,style:{"margin-top":"8px"}},Ut={__name:"AIOps",setup(i){const n=We(),{t}=Ze(),_=x(!1),S=x(!1),X=x(!1),me=x([]),ye=x([]),ee=x([]),A=x({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:[]}}),K=x("incidents"),q=x(""),D=x(""),V=x(!1),Q=x(!1),Y=x(!1),te=x(!1),w=H({severity:"P3",metric:"",description:""}),$=H({name:"",triggerJson:"",stepsJson:""}),I=H({metric:"",values:""}),F=H({metric:"",value:null,algorithm:"z_score"}),h=x(null),xe=M(()=>[{title:t("aiops.incidentCols.severity"),key:"severity",width:"90px"},{title:t("aiops.incidentCols.metric"),key:"metric",width:"160px"},{title:t("aiops.incidentCols.description"),key:"description"},{title:t("aiops.incidentCols.status"),key:"status",width:"100px"},{title:t("aiops.incidentCols.createdAt"),key:"createdAt",width:"160px"},{title:t("aiops.incidentCols.action"),key:"action",width:"220px"}]),Se=M(()=>[{title:t("aiops.playbookCols.name"),key:"name"},{title:t("aiops.playbookCols.enabled"),key:"enabled",width:"80px"},{title:t("aiops.playbookCols.stats"),key:"stats",width:"180px"},{title:t("aiops.playbookCols.createdAt"),key:"createdAt",width:"160px"},{title:t("aiops.playbookCols.action"),key:"action",width:"160px"}]),we=M(()=>[{title:t("aiops.baselineCols.metric"),key:"metric"},{title:t("aiops.baselineCols.mean"),key:"mean",width:"180px"},{title:t("aiops.baselineCols.iqr"),key:"iqr",width:"180px"},{title:t("aiops.baselineCols.sampleCount"),key:"sampleCount",width:"90px"},{title:t("aiops.baselineCols.updatedAt"),key:"updatedAt",width:"160px"}]),ze=M(()=>A.value.incidents.byStatus.open+A.value.incidents.byStatus.acknowledged),Ae=M(()=>{let e=me.value;return q.value&&(e=e.filter(o=>o.severity===q.value)),D.value&&(e=e.filter(o=>o.status===D.value)),e});function fe(e){const o=`aiops.statusLabels.${e}`,u=t(o);return u===o?e:u}function Fe(e){return{open:"red",acknowledged:"orange",resolved:"cyan",closed:"default"}[e]||"default"}function ae(e){return{P0:"red",P1:"volcano",P2:"orange",P3:"gold"}[e]||"default"}function Pe(e){const o=`aiops.reasonLabels.${e}`,u=t(o);return u===o?e:u}function ve(e,o){return e?e.length>o?e.slice(0,o)+"...":e:""}function Re(e){return!e||e<=0?t("aiops.duration.none"):e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:e<36e5?`${(e/6e4).toFixed(1)}min`:`${(e/36e5).toFixed(1)}h`}function je({key:e}){e==="incident"?V.value=!0:e==="playbook"?Q.value=!0:e==="baseline"?Y.value=!0:e==="detect"&&(h.value=null,te.value=!0)}async function j(){_.value=!0;try{const[e,o,u,f]=await Promise.all([n.execute("ops incidents --limit 200 --json",1e4).catch(()=>({output:""})),n.execute("ops playbooks --limit 200 --json",1e4).catch(()=>({output:""})),n.execute("ops baselines --json",1e4).catch(()=>({output:""})),n.execute("ops stats --json",8e3).catch(()=>({output:""}))]);me.value=nt(e.output),ye.value=ut(o.output),ee.value=pt(u.output),A.value=yt(f.output)}catch(e){m.error(t("aiops.msg.loadFailed")+": "+(e?.message||e))}finally{_.value=!1}}async function Ie(){if(!w.description.trim()){m.warning(t("aiops.msg.descEmpty"));return}S.value=!0;try{const e=[`ops incident-create --severity ${w.severity}`];w.metric.trim()&&e.push(`--metric "${w.metric.trim().replace(/"/g,'\\"')}"`),e.push(`--description "${w.description.trim().replace(/"/g,'\\"')}"`),e.push("--json");const{output:o}=await n.execute(e.join(" "),1e4);if(/error|失败/i.test(o)&&!/"incidentId"/.test(o)){m.error(t("aiops.msg.createFailed")+": "+o.slice(0,120));return}m.success(t("aiops.msg.incidentCreated")),V.value=!1,ge(),await j()}catch(e){m.error(t("aiops.msg.createFailed")+": "+(e?.message||e))}finally{S.value=!1}}async function Le(){if(!$.name.trim()){m.warning(t("aiops.msg.playbookNameEmpty"));return}for(const[e,o]of[[$.triggerJson,"triggerLabel"],[$.stepsJson,"stepsLabel"]])if(e.trim())try{JSON.parse(e)}catch{m.warning(t("aiops.msg.jsonInvalid",{label:t(`aiops.msg.${o}`)}));return}S.value=!0;try{const e=[`ops playbook-create --name "${$.name.trim().replace(/"/g,'\\"')}"`];$.triggerJson.trim()&&e.push(`--trigger '${$.triggerJson.trim().replace(/'/g,"'\\''")}'`),$.stepsJson.trim()&&e.push(`--steps '${$.stepsJson.trim().replace(/'/g,"'\\''")}'`),e.push("--json");const{output:o}=await n.execute(e.join(" "),1e4);if(/error|失败/i.test(o)&&!/"playbookId"/.test(o)){m.error(t("aiops.msg.createFailed")+": "+o.slice(0,120));return}m.success(t("aiops.msg.playbookCreated")),Q.value=!1,ke(),K.value="playbooks",await j()}catch(e){m.error(t("aiops.msg.createFailed")+": "+(e?.message||e))}finally{S.value=!1}}async function Ne(){const e=I.metric.trim();if(!e){m.warning(t("aiops.msg.metricEmpty"));return}const o=I.values.split(/[\s,]+/).map(u=>u.trim()).filter(Boolean).map(u=>Number(u));if(o.length===0||o.some(u=>!Number.isFinite(u))){m.warning(t("aiops.msg.valuesInvalid"));return}S.value=!0;try{const u=`ops baseline-update "${e.replace(/"/g,'\\"')}" --values ${o.join(",")} --json`,{output:f}=await n.execute(u,1e4);if(/error|失败/i.test(f)&&!/"updated"/.test(f)){m.error(t("aiops.msg.baselineUpdateFailed")+": "+f.slice(0,120));return}m.success(t("aiops.msg.baselineUpdated",{n:o.length})),Y.value=!1,_e(),K.value="baselines",await j()}catch(u){m.error(t("aiops.msg.baselineUpdateFailed")+": "+(u?.message||u))}finally{S.value=!1}}async function Oe(){if(!F.metric||F.value==null){m.warning(t("aiops.msg.detectFieldsEmpty"));return}X.value=!0,h.value=null;try{const e=`ops detect "${F.metric.replace(/"/g,'\\"')}" ${F.value} --algorithm ${F.algorithm} --json`,{output:o}=await n.execute(e,8e3),u=ct(o);if(!u){m.error(t("aiops.msg.detectFailed")+": "+o.slice(0,120));return}h.value=u,u.anomaly&&(m.warning(t("aiops.msg.detectAnomaly",{severity:u.severity||"P3"})),j())}catch(e){m.error(t("aiops.msg.detectFailed")+": "+(e?.message||e))}finally{X.value=!1}}async function Te(e){await oe(e,"incident-ack",t("aiops.msg.incidentAcked"))}async function Ue(e){await oe(e,"incident-resolve",t("aiops.msg.incidentResolved"))}async function qe(e){await oe(e,"incident-close",t("aiops.msg.incidentClosed"))}async function oe(e,o,u){try{const{output:f}=await n.execute(`ops ${o} ${e.id} --json`,8e3);if(/error|失败|invalid/i.test(f)&&!/"acknowledged"|"resolved"|"closed"/.test(f)){m.error(t("aiops.msg.incidentTransitionFailed")+": "+f.slice(0,120));return}m.success(u),await j()}catch(f){m.error(t("aiops.msg.incidentTransitionFailed")+": "+(f?.message||f))}}async function De(e){try{const{output:o}=await n.execute(`ops postmortem ${e.id}`,12e3);at.info({title:t("aiops.msg.postmortemTitle",{id:e.id.slice(0,8)}),width:720,content:()=>lt("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;"},o||t("aiops.msg.postmortemEmpty"))})}catch(o){m.error(t("aiops.msg.postmortemFailed")+": "+(o?.message||o))}}async function Ee(e,o){const u=o?"on":"off";try{const{output:f}=await n.execute(`ops playbook-toggle ${e.id} ${u} --json`,8e3);if(/error|失败/i.test(f)&&!/"enabled"/.test(f)){m.error(t("aiops.msg.playbookToggleFailed")+": "+f.slice(0,120));return}m.success(t(o?"aiops.msg.playbookEnabled":"aiops.msg.playbookDisabled")),await j()}catch(f){m.error(t("aiops.msg.playbookToggleFailed")+": "+(f?.message||f))}}async function be(e,o){try{const{output:u}=await n.execute(`ops playbook-record ${e.id} ${o} --json`,8e3);if(/error|失败/i.test(u)&&!/"recorded"/.test(u)){m.error(t("aiops.msg.playbookRecordFailed")+": "+u.slice(0,120));return}m.success(t(o==="success"?"aiops.msg.playbookRecordSuccess":"aiops.msg.playbookRecordFailure")),await j()}catch(u){m.error(t("aiops.msg.playbookRecordFailed")+": "+(u?.message||u))}}function ge(){w.severity="P3",w.metric="",w.description=""}function ke(){$.name="",$.triggerJson="",$.stepsJson=""}function _e(){I.metric="",I.values=""}return ot(j),(e,o)=>{const u=b("a-button"),f=b("a-menu-item"),Je=b("a-menu"),Me=b("a-dropdown"),$e=b("a-space"),T=b("a-statistic"),L=b("a-card"),E=b("a-col"),Be=b("a-row"),N=b("a-tag"),U=b("a-radio-button"),le=b("a-radio-group"),se=b("a-table"),ie=b("a-tab-pane"),Ke=b("a-switch"),Ve=b("a-tabs"),he=b("a-select-option"),Ce=b("a-select"),P=b("a-form-item"),ne=b("a-input"),W=b("a-textarea"),Z=b("a-form"),G=b("a-modal"),Qe=b("a-input-number");return d(),v("div",null,[z("div",ft,[z("div",null,[z("h2",vt,r(e.$t("aiops.title")),1),z("p",bt,r(e.$t("aiops.subtitle")),1)]),a($e,null,{default:l(()=>[a(u,{loading:_.value,onClick:j},{icon:l(()=>[a(k(Ge))]),default:l(()=>[c(" "+r(e.$t("aiops.refresh")),1)]),_:1},8,["loading"]),a(Me,{trigger:["click"]},{overlay:l(()=>[a(Je,{onClick:je},{default:l(()=>[a(f,{key:"incident"},{default:l(()=>[a(k(re)),c(" "+r(e.$t("aiops.actions.incident")),1)]),_:1}),a(f,{key:"playbook"},{default:l(()=>[a(k(ue)),c(" "+r(e.$t("aiops.actions.playbook")),1)]),_:1}),a(f,{key:"baseline"},{default:l(()=>[a(k(de)),c(" "+r(e.$t("aiops.actions.baseline")),1)]),_:1}),a(f,{key:"detect"},{default:l(()=>[a(k(Xe)),c(" "+r(e.$t("aiops.actions.detect")),1)]),_:1})]),_:1})]),default:l(()=>[a(u,{type:"primary"},{icon:l(()=>[a(k(He))]),default:l(()=>[c(" "+r(e.$t("aiops.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),a(Be,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.incidents"),value:A.value.incidents.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[a(k(re))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.pending"),value:A.value.incidents.byStatus.open+A.value.incidents.byStatus.acknowledged,"value-style":{color:ze.value>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[a(k(et))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.playbooks"),value:A.value.playbooks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[a(k(ue))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:12,sm:8,lg:5},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.enabled"),value:A.value.playbooks.enabled,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:l(()=>[a(k(tt))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(E,{xs:24,sm:8,lg:4},{default:l(()=>[a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[a(T,{title:e.$t("aiops.stats.baselines"),value:A.value.baselines.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[a(k(de))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),A.value.incidents.total>0?(d(),C(L,{key:0,title:e.$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(()=>[a($e,{size:[12,8],wrap:""},{default:l(()=>[(d(!0),v(R,null,J(k(pe),s=>(d(),C(N,{key:s,color:ae(s),style:{"font-size":"13px",padding:"2px 10px"}},{default:l(()=>[c(r(s)+": "+r(A.value.incidents.bySeverity[s]||0),1)]),_:2},1032,["color"]))),128)),z("span",gt,r(e.$t("aiops.avgResolveLabel",{time:Re(A.value.incidents.avgResolveMs)})),1)]),_:1})]),_:1},8,["title"])):y("",!0),a(Ve,{activeKey:K.value,"onUpdate:activeKey":o[2]||(o[2]=s=>K.value=s),class:"aiops-tabs"},{default:l(()=>[a(ie,{key:"incidents",tab:e.$t("aiops.tabs.incidents")},{default:l(()=>[z("div",kt,[a(le,{value:q.value,"onUpdate:value":o[0]||(o[0]=s=>q.value=s),size:"small","button-style":"solid"},{default:l(()=>[a(U,{value:""},{default:l(()=>[c(r(e.$t("aiops.filter.all")),1)]),_:1}),(d(!0),v(R,null,J(k(pe),s=>(d(),C(U,{key:s,value:s},{default:l(()=>[c(r(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(le,{value:D.value,"onUpdate:value":o[1]||(o[1]=s=>D.value=s),size:"small"},{default:l(()=>[a(U,{value:""},{default:l(()=>[c(r(e.$t("aiops.filter.allStatuses")),1)]),_:1}),(d(!0),v(R,null,J(k(st),s=>(d(),C(U,{key:s,value:s},{default:l(()=>[c(r(fe(s)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(se,{columns:xe.value,"data-source":Ae.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="severity"?(d(),C(N,{key:0,color:ae(p.severity),style:{"font-weight":"600"}},{default:l(()=>[c(r(p.severity),1)]),_:2},1032,["color"])):y("",!0),s.key==="metric"?(d(),v(R,{key:1},[p.anomalyMetric?(d(),v("span",_t,r(p.anomalyMetric),1)):(d(),v("span",$t,"—"))],64)):y("",!0),s.key==="description"?(d(),v("span",ht,r(ve(p.description,80)||"—"),1)):y("",!0),s.key==="status"?(d(),C(N,{key:3,color:Fe(p.status)},{default:l(()=>[c(r(fe(p.status)),1)]),_:2},1032,["color"])):y("",!0),s.key==="createdAt"?(d(),v("span",Ct,r(k(ce)(p.createdAt)),1)):y("",!0),s.key==="action"?(d(),v(R,{key:5},[p.status==="open"?(d(),C(u,{key:0,size:"small",type:"link",onClick:O=>Te(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.ack")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="open"||p.status==="acknowledged"?(d(),C(u,{key:1,size:"small",type:"link",onClick:O=>Ue(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.resolve")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="resolved"?(d(),C(u,{key:2,size:"small",type:"link",onClick:O=>qe(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.close")),1)]),_:1},8,["onClick"])):y("",!0),p.status==="resolved"||p.status==="closed"?(d(),C(u,{key:3,size:"small",type:"link",onClick:O=>De(p)},{default:l(()=>[c(r(e.$t("aiops.incidentActions.postmortem")),1)]),_:1},8,["onClick"])):y("",!0)],64)):y("",!0)]),emptyText:l(()=>[z("div",xt,[a(k(re),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(q.value||D.value?e.$t("aiops.table.incidentEmptyFiltered"):e.$t("aiops.table.incidentEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(ie,{key:"playbooks",tab:e.$t("aiops.tabs.playbooks")},{default:l(()=>[a(se,{columns:Se.value,"data-source":ye.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="name"?(d(),v(R,{key:0},[z("span",St,r(p.name),1),p.triggerCondition?(d(),v("div",wt,r(ve(p.triggerCondition,80)),1)):y("",!0)],64)):y("",!0),s.key==="enabled"?(d(),C(Ke,{key:1,checked:p.enabled,size:"small",onChange:O=>Ee(p,O)},null,8,["checked","onChange"])):y("",!0),s.key==="stats"?(d(),v(R,{key:2},[a(N,{color:"green",style:{"font-size":"11px"}},{default:l(()=>[c(r(e.$t("aiops.table.successCount",{n:p.successCount})),1)]),_:2},1024),p.failureCount>0?(d(),C(N,{key:0,color:"red",style:{"font-size":"11px","margin-left":"4px"}},{default:l(()=>[c(r(e.$t("aiops.table.failureCount",{n:p.failureCount})),1)]),_:2},1024)):y("",!0)],64)):y("",!0),s.key==="createdAt"?(d(),v("span",zt,r(k(ce)(p.createdAt)),1)):y("",!0),s.key==="action"?(d(),v(R,{key:4},[a(u,{size:"small",type:"link",onClick:O=>be(p,"success")},{default:l(()=>[c(r(e.$t("aiops.playbookActions.success")),1)]),_:1},8,["onClick"]),a(u,{size:"small",type:"link",danger:"",onClick:O=>be(p,"failure")},{default:l(()=>[c(r(e.$t("aiops.playbookActions.failure")),1)]),_:1},8,["onClick"])],64)):y("",!0)]),emptyText:l(()=>[z("div",At,[a(k(ue),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(e.$t("aiops.table.playbookEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(ie,{key:"baselines",tab:e.$t("aiops.tabs.baselines")},{default:l(()=>[a(se,{columns:we.value,"data-source":ee.value,pagination:{pageSize:20,showTotal:s=>e.$t("aiops.table.totalSuffix",{n:s})},size:"small",loading:_.value,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:s,record:p})=>[s.key==="metric"?(d(),v("span",Ft,r(p.metricName),1)):y("",!0),s.key==="mean"?(d(),v(R,{key:1},[z("span",Pt,r(p.mean),1),z("span",Rt,"σ "+r(p.stdDev),1)],64)):y("",!0),s.key==="iqr"?(d(),v("span",jt," Q1 "+r(p.q1)+" / Q3 "+r(p.q3),1)):y("",!0),s.key==="sampleCount"?(d(),C(N,{key:3,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[c(r(p.sampleCount),1)]),_:2},1024)):y("",!0),s.key==="updatedAt"?(d(),v("span",It,r(k(ce)(p.updatedAt)),1)):y("",!0)]),emptyText:l(()=>[z("div",Lt,[a(k(de),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),c(" "+r(e.$t("aiops.table.baselineEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(G,{open:V.value,"onUpdate:open":o[6]||(o[6]=s=>V.value=s),title:e.$t("aiops.incident_modal.title"),"confirm-loading":S.value,width:520,"ok-text":e.$t("aiops.incident_modal.ok"),"cancel-text":e.$t("aiops.incident_modal.cancel"),onOk:Ie,onCancel:ge},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.incident_modal.severityLabel")},{default:l(()=>[a(Ce,{value:w.severity,"onUpdate:value":o[3]||(o[3]=s=>w.severity=s)},{default:l(()=>[(d(!0),v(R,null,J(k(pe),s=>(d(),C(he,{key:s,value:s},{default:l(()=>[c(r(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.incident_modal.metricLabel")},{default:l(()=>[a(ne,{value:w.metric,"onUpdate:value":o[4]||(o[4]=s=>w.metric=s),placeholder:e.$t("aiops.incident_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.incident_modal.descLabel"),required:""},{default:l(()=>[a(W,{value:w.description,"onUpdate:value":o[5]||(o[5]=s=>w.description=s),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(G,{open:Q.value,"onUpdate:open":o[10]||(o[10]=s=>Q.value=s),title:e.$t("aiops.playbook_modal.title"),"confirm-loading":S.value,width:540,"ok-text":e.$t("aiops.playbook_modal.ok"),"cancel-text":e.$t("aiops.playbook_modal.cancel"),onOk:Le,onCancel:ke},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.playbook_modal.nameLabel"),required:""},{default:l(()=>[a(ne,{value:$.name,"onUpdate:value":o[7]||(o[7]=s=>$.name=s),placeholder:e.$t("aiops.playbook_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.playbook_modal.triggerLabel")},{default:l(()=>[a(W,{value:$.triggerJson,"onUpdate:value":o[8]||(o[8]=s=>$.triggerJson=s),placeholder:e.$t("aiops.playbook_modal.triggerPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.playbook_modal.stepsLabel")},{default:l(()=>[a(W,{value:$.stepsJson,"onUpdate:value":o[9]||(o[9]=s=>$.stepsJson=s),placeholder:e.$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"]),a(G,{open:Y.value,"onUpdate:open":o[13]||(o[13]=s=>Y.value=s),title:e.$t("aiops.baseline_modal.title"),"confirm-loading":S.value,width:500,"ok-text":e.$t("aiops.baseline_modal.ok"),"cancel-text":e.$t("aiops.baseline_modal.cancel"),onOk:Ne,onCancel:_e},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.baseline_modal.metricLabel"),required:""},{default:l(()=>[a(ne,{value:I.metric,"onUpdate:value":o[11]||(o[11]=s=>I.metric=s),placeholder:e.$t("aiops.baseline_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.baseline_modal.valuesLabel"),required:""},{default:l(()=>[a(W,{value:I.values,"onUpdate:value":o[12]||(o[12]=s=>I.values=s),placeholder:e.$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"]),a(G,{open:te.value,"onUpdate:open":o[17]||(o[17]=s=>te.value=s),title:e.$t("aiops.detect_modal.title"),"confirm-loading":X.value,width:500,"ok-text":e.$t("aiops.detect_modal.ok"),"cancel-text":e.$t("aiops.detect_modal.cancel"),onOk:Oe},{default:l(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[a(P,{label:e.$t("aiops.detect_modal.metricLabel"),required:""},{default:l(()=>[a(Ce,{value:F.metric,"onUpdate:value":o[14]||(o[14]=s=>F.metric=s),"show-search":"",placeholder:e.$t("aiops.detect_modal.metricPlaceholder")},{default:l(()=>[(d(!0),v(R,null,J(ee.value,s=>(d(),C(he,{key:s.metricName,value:s.metricName},{default:l(()=>[c(r(e.$t("aiops.detect_modal.metricOptionLabel",{name:s.metricName,count:s.sampleCount})),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.detect_modal.valueLabel"),required:""},{default:l(()=>[a(Qe,{value:F.value,"onUpdate:value":o[15]||(o[15]=s=>F.value=s),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),a(P,{label:e.$t("aiops.detect_modal.algorithmLabel")},{default:l(()=>[a(le,{value:F.algorithm,"onUpdate:value":o[16]||(o[16]=s=>F.algorithm=s)},{default:l(()=>[a(U,{value:"z_score"},{default:l(()=>[...o[18]||(o[18]=[c("Z-Score (3σ)",-1)])]),_:1}),a(U,{value:"iqr"},{default:l(()=>[...o[19]||(o[19]=[c("IQR (1.5×)",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),h.value?(d(),C(L,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[a(T,{title:e.$t("aiops.detect_modal.resultTitle"),value:h.value.anomaly?e.$t("aiops.detect_modal.anomaly"):e.$t("aiops.detect_modal.normal"),"value-style":{color:h.value.anomaly?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),h.value.reason&&!h.value.anomaly?(d(),v("div",Nt,r(e.$t("aiops.detect_modal.reasonLine",{reason:Pe(h.value.reason)})),1)):y("",!0),h.value.baseline?(d(),v("div",Ot,[z("div",null,r(e.$t("aiops.detect_modal.scoreLine",{score:h.value.score,threshold:h.value.threshold})),1),z("div",null,r(e.$t("aiops.detect_modal.baselineLine",{mean:h.value.baseline.mean,stdDev:h.value.baseline.stdDev})),1)])):y("",!0),h.value.incidentId?(d(),v("div",Tt,[a(N,{color:ae(h.value.severity)},{default:l(()=>[c(r(e.$t("aiops.detect_modal.incidentCreated",{severity:h.value.severity})),1)]),_:1},8,["color"])])):y("",!0)]),_:1})):y("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},ua=Ye(Ut,[["__scopeId","data-v-ecfcab22"]]);export{ua as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{O as b,f as i,v as p}from"./index-
|
|
1
|
+
import{O as b,f as i,v as p}from"./index-Cs66y4oC.js";import{B as O,c as y}from"./index-BVV2mBbo.js";import{e as m,s as r,d as P,o as R,c as x}from"./vendor-BXcBOG8b.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=P({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();R(()=>{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 x(O,i(i(i({},y(e)),{},{onClick:C,loading:a.value,prefixCls:t},o),{},{ref:c}),B)}}});export{j as A};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as fe,b as _e,u as ge,t as xe,d as I}from"./index-
|
|
1
|
+
import{_ as fe,b as _e,u as ge,t as xe,d as I}from"./index-Cs66y4oC.js";import{R as ee,a6 as te,i as ae,aD as Te,w as he,aR as oe}from"./icons-DlxlFL4g.js";import{w as be,o as we,M as v,R,P as r,u as n,c as a,N as o,r as g,K as x,a as Q,L as c,O as y,Q as z,S as T,F as Ce,f as W}from"./vendor-BXcBOG8b.js";const Se={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},ze={class:"page-sub"},Re={style:{display:"flex","align-items":"center",gap:"12px"}},Me={key:0,style:{"text-align":"center",padding:"60px"}},Oe={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},je={key:2,style:{color:"#faad14"}},Fe={key:3,style:{color:"var(--text-secondary)"}},Ne={key:0,style:{"text-align":"center",padding:"60px"}},Ue={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Ae={key:2,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Be={key:3,style:{color:"#faad14"}},Le={key:4,style:{color:"var(--text-secondary)"}},De={key:0,style:{"text-align":"center",padding:"40px"}},Pe={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Je={key:0,style:{"text-align":"center",padding:"40px"}},$e={__name:"Analytics",setup(Ee){const{t:l}=_e(),C=ge(),M=g("all"),U=g(!1),A=g(!1),B=g(!1),L=g(!1),D=g(!1),P=g(!1),J=g(20),f=Q({totalCalls:0,totalTokens:0,totalCost:0,avgResponseTime:0}),O=g([]),j=g([]),_=Q({entries:0,hits:0,tokensSaved:0,expired:0}),F=g(!1),b=Q({totalCalls:0,inputTokens:0,outputTokens:0,totalTokens:0}),q=g([]),se=W(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:l("analytics.sessionUsageColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,t)=>(e.calls||0)-(t.calls||0)},{title:"Input",key:"inputTokens",dataIndex:"inputTokens",width:"110px",sorter:(e,t)=>(e.inputTokens||0)-(t.inputTokens||0)},{title:"Output",key:"outputTokens",dataIndex:"outputTokens",width:"110px",sorter:(e,t)=>(e.outputTokens||0)-(t.outputTokens||0)},{title:"Total",key:"totalTokens",dataIndex:"totalTokens",width:"110px",sorter:(e,t)=>(e.totalTokens||0)-(t.totalTokens||0)}]),le=W(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px",sorter:(e,t)=>(e.provider||"").localeCompare(t.provider||"")},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0,sorter:(e,t)=>(e.model||"").localeCompare(t.model||"")},{title:l("analytics.breakdownColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,t)=>(e.calls||0)-(t.calls||0)},{title:l("analytics.breakdownColumns.inputTokens"),key:"inputTokens",dataIndex:"inputTokens",width:"120px",sorter:(e,t)=>(e.inputTokens||0)-(t.inputTokens||0)},{title:l("analytics.breakdownColumns.outputTokens"),key:"outputTokens",dataIndex:"outputTokens",width:"130px",sorter:(e,t)=>(e.outputTokens||0)-(t.outputTokens||0)},{title:l("analytics.breakdownColumns.totalTokens"),key:"totalTokens",dataIndex:"totalTokens",width:"120px",sorter:(e,t)=>(e.totalTokens||0)-(t.totalTokens||0)},{title:l("analytics.breakdownColumns.cost"),key:"cost",dataIndex:"cost",width:"110px",sorter:(e,t)=>(e.cost||0)-(t.cost||0)},{title:l("analytics.breakdownColumns.avgResponseTime"),key:"avgResponseTime",dataIndex:"avgResponseTime",width:"110px",sorter:(e,t)=>(e.avgResponseTime||0)-(t.avgResponseTime||0)}]),ne=W(()=>[{title:l("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:l("analytics.recentColumns.input"),key:"inputTokens",dataIndex:"inputTokens",width:"90px"},{title:l("analytics.recentColumns.output"),key:"outputTokens",dataIndex:"outputTokens",width:"90px"},{title:l("analytics.recentColumns.cost"),key:"cost",dataIndex:"cost",width:"100px"},{title:l("analytics.recentColumns.responseTime"),key:"responseTime",dataIndex:"responseTime",width:"100px"}]);function w(e){return(e||"").replace(/,/g,"")}function S(e){return xe(e)}function re(e){const t=(e||"").split(`
|
|
2
2
|
`);for(const s of t){const u=s.trim(),h=u.match(/total\s*calls?\s*[::]\s*([\d,]+)/i);h&&(f.totalCalls=parseInt(w(h[1]),10)||0);const d=u.match(/total\s*tokens?\s*[::]\s*([\d,]+)/i);d&&(f.totalTokens=parseInt(w(d[1]),10)||0);const k=u.match(/cost\s*[::]\s*\$?([\d,.]+)/i);k&&(f.totalCost=parseFloat(w(k[1]))||0);const p=u.match(/(?:avg|average)\s*(?:response\s*)?time\s*[::]\s*([\d,.]+)/i);p&&(f.avgResponseTime=parseFloat(w(p[1]))||0)}}function ie(e){f.totalCalls=e.totalCalls??e.total_calls??e.calls??0,f.totalTokens=e.totalTokens??e.total_tokens??e.tokens??0,f.totalCost=e.totalCost??e.total_cost??e.cost??0,f.avgResponseTime=e.avgResponseTime??e.avg_response_time??e.avgTime??0}function ce(e){return(Array.isArray(e)?e:e.breakdown||e.providers||e.rows||[]).map((s,u)=>({key:u,provider:s.provider||"-",model:s.model||"-",calls:s.calls||s.count||0,inputTokens:s.inputTokens??s.input_tokens??0,outputTokens:s.outputTokens??s.output_tokens??0,totalTokens:s.totalTokens??s.total_tokens??(s.inputTokens??0)+(s.outputTokens??0),cost:s.cost??s.total_cost??0,avgResponseTime:s.avgResponseTime??s.avg_response_time??0}))}function ue(e){return(Array.isArray(e)?e:e.recent||e.records||e.rows||[]).map((s,u)=>({key:u,timestamp:s.timestamp||s.time||s.created_at||"-",provider:s.provider||"-",model:s.model||"-",inputTokens:s.inputTokens??s.input_tokens??0,outputTokens:s.outputTokens??s.output_tokens??0,cost:s.cost??0,responseTime:s.responseTime??s.response_time??0}))}function de(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 pe(e){const t=(e||"").split(`
|
|
3
3
|
`);for(const s of t){const u=s.trim(),h=u.match(/entries?\s*[::]\s*([\d,]+)/i);h&&(_.entries=parseInt(w(h[1]),10)||0);const d=u.match(/hits?\s*[::]\s*([\d,]+)/i);d&&(_.hits=parseInt(w(d[1]),10)||0);const k=u.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);k&&(_.tokensSaved=parseInt(w(k[1]),10)||0);const p=u.match(/expired?\s*[::]\s*([\d,]+)/i);p&&(_.expired=parseInt(w(p[1]),10)||0)}}async function G(){U.value=!0;try{const{output:e}=await C.execute(`tokens show --period ${M.value} --json`,15e3),t=S(e);t?ie(t):re(e)}catch(e){console.error("loadSummary failed:",e)}finally{U.value=!1}}async function ye(){A.value=!0;try{const{output:e}=await C.execute("tokens breakdown --json",15e3),t=S(e);t?O.value=ce(t):O.value=[]}catch(e){console.error("loadBreakdown failed:",e),O.value=[]}finally{A.value=!1}}async function X(){B.value=!0;try{const{output:e}=await C.execute(`tokens recent --limit ${J.value} --json`,15e3),t=S(e);t?j.value=ue(t):j.value=[]}catch(e){console.error("loadRecent failed:",e),j.value=[]}finally{B.value=!1}}async function $(){L.value=!0;try{const{output:e}=await C.execute("tokens cache --json",15e3),t=S(e);t?de(t):pe(e)}catch(e){console.error("loadCache failed:",e)}finally{L.value=!1}}async function ke(){D.value=!0;try{const{output:e}=await C.execute("tokens cache --clear --json",15e3),t=S(e);t&&t.error?I.error(l("analytics.messages.cacheClearFailed",{err:t.error})):(I.success(l("analytics.messages.cacheClearOk")),await $())}catch(e){I.error(l("analytics.messages.cacheClearFailed",{err:e.message}))}finally{D.value=!1}}async function ve(){P.value=!0;try{const{output:e}=await C.execute("tokens cache --cleanup --json",15e3),t=S(e);t&&t.error?I.error(l("analytics.messages.cacheCleanupFailed",{err:t.error})):(I.success(l("analytics.messages.cacheCleanupOk")),await $())}catch(e){I.error(l("analytics.messages.cacheCleanupFailed",{err:e.message}))}finally{P.value=!1}}async function Y(){F.value=!0;try{const e=await C.sendRaw({type:"usage.global",limit:1e3},15e3);if(e.ok&&e.usage){const t=e.usage.total||{};b.totalCalls=t.calls??0,b.inputTokens=t.inputTokens??t.input_tokens??0,b.outputTokens=t.outputTokens??t.output_tokens??0,b.totalTokens=t.totalTokens??t.total_tokens??0,q.value=(e.usage.byModel||[]).map((s,u)=>({key:u,provider:s.provider||"-",model:s.model||"-",calls:s.calls??0,inputTokens:s.inputTokens??s.input_tokens??0,outputTokens:s.outputTokens??s.output_tokens??0,totalTokens:s.totalTokens??s.total_tokens??0}))}}catch(e){console.warn("loadSessionUsage failed (route may not be available):",e.message)}finally{F.value=!1}}async function Z(){await Promise.all([G(),ye(),X(),$(),Y()])}return be(M,()=>{G()}),we(Z),(e,t)=>{const s=x("a-radio-button"),u=x("a-radio-group"),h=x("a-button"),d=x("a-statistic"),k=x("a-card"),p=x("a-col"),E=x("a-row"),N=x("a-spin"),V=x("a-tag"),H=x("a-empty"),K=x("a-table"),me=x("a-space");return c(),v("div",null,[R("div",Se,[R("div",null,[R("h2",Ie,r(n(l)("analytics.title")),1),R("p",ze,r(n(l)("analytics.subtitle")),1)]),R("div",Re,[a(u,{value:M.value,"onUpdate:value":t[0]||(t[0]=i=>M.value=i),"button-style":"solid",size:"small"},{default:o(()=>[a(s,{value:"today"},{default:o(()=>[y(r(n(l)("analytics.period.today")),1)]),_:1}),a(s,{value:"week"},{default:o(()=>[y(r(n(l)("analytics.period.week")),1)]),_:1}),a(s,{value:"month"},{default:o(()=>[y(r(n(l)("analytics.period.month")),1)]),_:1}),a(s,{value:"all"},{default:o(()=>[y(r(n(l)("analytics.period.all")),1)]),_:1})]),_:1},8,["value"]),a(h,{type:"primary",ghost:"",loading:U.value,onClick:Z},{icon:o(()=>[a(n(ee))]),default:o(()=>[y(" "+r(n(l)("analytics.refresh")),1)]),_:1},8,["loading"])])]),a(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(p,{xs:24,sm:12,lg:6},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(d,{title:n(l)("analytics.summary.totalCalls"),value:f.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(n(te))]),suffix:o(()=>[y(r(n(l)("analytics.summary.callsSuffix")),1)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(p,{xs:24,sm:12,lg:6},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(d,{title:n(l)("analytics.summary.totalTokens"),value:f.totalTokens,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(n(ae))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(p,{xs:24,sm:12,lg:6},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(d,{title:n(l)("analytics.summary.totalCost"),value:f.totalCost,precision:4,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(n(Te))]),suffix:o(()=>[...t[2]||(t[2]=[y("USD",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1}),a(p,{xs:24,sm:12,lg:6},{default:o(()=>[a(k,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(d,{title:n(l)("analytics.summary.avgResponseTime"),value:f.avgResponseTime,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(n(ae))]),suffix:o(()=>[...t[3]||(t[3]=[y("ms",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),a(k,{title:n(l)("analytics.providerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:o(()=>[A.value?(c(),v("div",Me,[a(N,{size:"large"})])):(c(),z(K,{key:1,columns:le.value,"data-source":O.value,pagination:{pageSize:20,showTotal:i=>n(l)("analytics.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:i,record:m})=>[i.key==="provider"?(c(),z(V,{key:0,color:"blue"},{default:o(()=>[y(r(m.provider),1)]),_:2},1024)):T("",!0),i.key==="model"?(c(),v("span",Oe,r(m.model),1)):T("",!0),i.key==="cost"?(c(),v("span",je,"$"+r((m.cost||0).toFixed(4)),1)):T("",!0),i.key==="avgResponseTime"?(c(),v("span",Fe,r(m.avgResponseTime||0)+" ms",1)):T("",!0)]),emptyText:o(()=>[a(H,{description:n(l)("analytics.providerEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),a(k,{title:n(l)("analytics.recentCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(u,{value:J.value,"onUpdate:value":t[1]||(t[1]=i=>J.value=i),size:"small",onChange:X},{default:o(()=>[a(s,{value:10},{default:o(()=>[...t[4]||(t[4]=[y("10",-1)])]),_:1}),a(s,{value:20},{default:o(()=>[...t[5]||(t[5]=[y("20",-1)])]),_:1}),a(s,{value:50},{default:o(()=>[...t[6]||(t[6]=[y("50",-1)])]),_:1})]),_:1},8,["value"])]),default:o(()=>[B.value?(c(),v("div",Ne,[a(N,{size:"large"})])):(c(),z(K,{key:1,columns:ne.value,"data-source":j.value,pagination:{pageSize:20,showTotal:i=>n(l)("analytics.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:i,record:m})=>[i.key==="timestamp"?(c(),v("span",Ue,r(m.timestamp),1)):T("",!0),i.key==="provider"?(c(),z(V,{key:1,color:"blue"},{default:o(()=>[y(r(m.provider),1)]),_:2},1024)):T("",!0),i.key==="model"?(c(),v("span",Ae,r(m.model),1)):T("",!0),i.key==="cost"?(c(),v("span",Be,"$"+r((m.cost||0).toFixed(4)),1)):T("",!0),i.key==="responseTime"?(c(),v("span",Le,r(m.responseTime||0)+" ms",1)):T("",!0)]),emptyText:o(()=>[a(H,{description:n(l)("analytics.recentEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),a(k,{title:n(l)("analytics.sessionCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(h,{size:"small",loading:F.value,onClick:Y,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(n(ee))]),default:o(()=>[y(" "+r(n(l)("analytics.refresh")),1)]),_:1},8,["loading"])]),default:o(()=>[F.value?(c(),v("div",De,[a(N)])):(c(),v(Ce,{key:1},[a(E,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:o(()=>[a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.sessionStats.totalCalls"),value:b.totalCalls,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(n(te))]),_:1},8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.sessionStats.inputTokens"),value:b.inputTokens,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.sessionStats.outputTokens"),value:b.outputTokens,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.sessionStats.totalTokens"),value:b.totalTokens,"value-style":{color:"#722ed1",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),a(K,{columns:se.value,"data-source":q.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:i,record:m})=>[i.key==="provider"?(c(),z(V,{key:0,color:"blue"},{default:o(()=>[y(r(m.provider),1)]),_:2},1024)):T("",!0),i.key==="model"?(c(),v("span",Pe,r(m.model),1)):T("",!0)]),emptyText:o(()=>[a(H,{description:n(l)("analytics.sessionEmpty")},null,8,["description"])]),_:1},8,["columns","data-source"])],64))]),_:1},8,["title"]),a(k,{title:n(l)("analytics.cacheCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(me,null,{default:o(()=>[a(h,{size:"small",loading:P.value,onClick:ve,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(n(oe))]),default:o(()=>[y(" "+r(n(l)("analytics.cacheActions.cleanup")),1)]),_:1},8,["loading"]),a(h,{size:"small",danger:"",loading:D.value,onClick:ke,style:{"border-color":"var(--border-color)"}},{icon:o(()=>[a(n(oe))]),default:o(()=>[y(" "+r(n(l)("analytics.cacheActions.clear")),1)]),_:1},8,["loading"])]),_:1})]),default:o(()=>[L.value?(c(),v("div",Je,[a(N)])):(c(),z(E,{key:1,gutter:[16,16]},{default:o(()=>[a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.cacheStats.entries"),value:_.entries,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(n(he))]),_:1},8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.cacheStats.hits"),value:_.hits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.cacheStats.tokensSaved"),value:_.tokensSaved,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(p,{xs:12,sm:6},{default:o(()=>[a(d,{title:n(l)("analytics.cacheStats.expired"),value:_.expired,"value-style":{color:"#ff4d4f",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}))]),_:1},8,["title"])])}}},Qe=fe($e,[["__scopeId","data-v-c636a5e0"]]);export{Qe as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{f as O,r as K,o as ge,x as ft,K as p,L as c,M as g,c as e,N as t,u as a,R as l,O as i,P as s,Q as C,F as V,Y as it,Z as J,S as M,I as lt,e as kt,_ as _t,w as gt,H as vt,$ as ht}from"./vendor-BXcBOG8b.js";import{u as ve,_ as he,E as bt,a as wt,b as Lt,T as $t,c as Ot,d as G}from"./index-
|
|
1
|
+
import{f as O,r as K,o as ge,x as ft,K as p,L as c,M as g,c as e,N as t,u as a,R as l,O as i,P as s,Q as C,F as V,Y as it,Z as J,S as M,I as lt,e as kt,_ as _t,w as gt,H as vt,$ as ht}from"./vendor-BXcBOG8b.js";import{u as ve,_ as he,E as bt,a as wt,b as Lt,T as $t,c as Ot,d as G}from"./index-Cs66y4oC.js";import{u as q}from"./useShellMode-CgR0wCYM.js";import{B as _e,R as St,M as ye,F as Y,G as te,D as ae,h as we,i as oe,j as ne,k as se,A as Le,N as $e,l as Oe,m as Se,n as ie,o as Ce,p as Ee,S as Ae,q as Re,r as Ne,s as le,t as je,u as Te,v as Be,w as De,U as Me,x as Z,y as Pe,z as Ue,H as Ie,P as Ke,J as ze,K as re,O as ue,Q as I,V as Fe,W as Ve,X as qe,Y as We,Z as ce,_ as de,$ as He,a0 as Je,a1 as pe,a2 as Ge,a3 as Ye,a4 as Ze,a5 as Qe,a6 as Xe,a7 as xe,a8 as et,a9 as tt,aa as at,ab as ot,ac as Ct,ad as nt,e as Et}from"./icons-DlxlFL4g.js";import At from"./index-CdaLWIz-.js";import"./KeyCode-D63Tfrq7.js";import"./omit-ByNIr_gz.js";import"./pickAttrs-_xP2RvxA.js";import"./initDefaultProps-DyIyjurJ.js";import"./motion-B2D0PuTM.js";import"./raf-Deuc0E8-.js";import"./index-BVV2mBbo.js";import"./index-BCfxxScC.js";import"./isVisible-C7tPsqfj.js";import"./useState-Dlgl7fUg.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-0M49EurU.js";import"./createContext-CiDDLED_.js";import"./Compact-t_yy09-r.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-DY8wTVCe.js";import"./zoom-Ch0jan5_.js";import"./ActionButton-BBlS9rmj.js";import"./vnode-CgY9xUvr.js";const Rt=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,$={notifications:K([]),unreadCount:K(0)};function Q(h){if(h&&h.ok===!1)throw new Error(h.error||"notification handler failed");return h?.result??h}function Nt(){const h=ve();async function T({limit:u=50,offset:d=0,isRead:k}={}){if(!q().isEmbedded)return $.notifications.value=[],$.unreadCount.value=0,$.notifications.value;const y=await h.sendRaw({type:"notification.list",limit:u,offset:d,isRead:k},15e3),w=Q(y);if(w?.success===!1)throw new Error(w.error||"notification.list failed");return $.notifications.value=Array.isArray(w?.notifications)?w.notifications:[],await E(),$.notifications.value}async function E(){if(!q().isEmbedded)return $.unreadCount.value=0,0;const u=await h.sendRaw({type:"notification.unread-count"},1e4),d=Q(u);return $.unreadCount.value=Number(d?.count)||0,$.unreadCount.value}async function _(u){if(u==null||u==="")throw new Error("id is required");if(!q().isEmbedded)return;const d=await h.sendRaw({type:"notification.mark-read",id:u},1e4),k=Q(d);if(k?.success===!1)throw new Error(k.error||"notification.mark-read failed");const y=$.notifications.value.find(w=>w.id===u);y&&(y.is_read=1),await E()}async function S(){if(!q().isEmbedded)return;const u=await h.sendRaw({type:"notification.mark-all-read"},1e4),d=Q(u);if(d?.success===!1)throw new Error(d.error||"notification.mark-all-read failed");for(const k of $.notifications.value)k.is_read=1;$.unreadCount.value=0}async function b(u,d=""){if(!q().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const k=await h.sendRaw({type:"notification.send-desktop",title:u,body:d},1e4),y=Q(k);if(y?.success===!1)throw new Error(y.error||"notification.send-desktop failed")}return{notifications:O(()=>$.notifications.value),unreadCount:O(()=>$.unreadCount.value),refresh:T,refreshUnreadCount:E,markRead:_,markAllRead:S,sendDesktop:b}}const jt={class:"notif-toolbar"},Tt={class:"notif-body"},Bt={key:2,class:"notif-list"},Dt=["onClick"],Mt={class:"notif-row"},Pt={class:"notif-title"},Ut={class:"notif-time"},It={key:0,class:"notif-message"},Kt={__name:"NotificationBell",setup(h){const T=K(!1),E=K("all"),_=K(!1),{notifications:S,unreadCount:b,refresh:u,markRead:d,markAllRead:k}=Nt();function y(){N()}ge(()=>{window.addEventListener("cc:open-notification-drawer",y)}),ft(()=>{window.removeEventListener("cc:open-notification-drawer",y)});const w=O(()=>E.value==="unread"?S.value.filter(m=>!m.is_read):S.value);async function A(){if(q().isEmbedded){_.value=!0;try{await u({limit:100})}catch{}finally{_.value=!1}}}async function N(){T.value=!0,await A()}async function j(m){if(!m.is_read)try{await d(m.id)}catch{}}async function L(){try{await k()}catch(m){console.warn("[NotificationBell] markAllRead failed:",m?.message||m)}}function R(m){if(!m)return"";const f=typeof m=="string"?Date.parse(m):Number(m);if(!Number.isFinite(f))return String(m);const B=Date.now()-f,z=6e4,P=60*z,W=24*P;return B<z?"刚刚":B<P?`${Math.floor(B/z)} 分钟前`:B<W?`${Math.floor(B/P)} 小时前`:new Date(f).toLocaleDateString()}return(m,f)=>{const B=p("a-badge"),z=p("a-tooltip"),P=p("a-radio-button"),W=p("a-radio-group"),H=p("a-space"),X=p("a-button"),me=p("a-empty"),fe=p("a-spin"),ke=p("a-drawer");return c(),g(V,null,[e(z,{title:"通知"},{default:t(()=>[e(B,{count:a(b),"overflow-count":99,offset:[-4,4]},{default:t(()=>[l("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:N},[e(a(_e))])]),_:1},8,["count"])]),_:1}),e(ke,{open:T.value,"onUpdate:open":f[1]||(f[1]=v=>T.value=v),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[l("div",jt,[e(H,null,{default:t(()=>[e(W,{value:E.value,"onUpdate:value":f[0]||(f[0]=v=>E.value=v),size:"small","button-style":"solid"},{default:t(()=>[e(P,{value:"all"},{default:t(()=>[i("全部 ("+s(a(S).length)+")",1)]),_:1}),e(P,{value:"unread"},{default:t(()=>[i("未读 ("+s(a(b))+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(H,null,{default:t(()=>[e(X,{size:"small",loading:_.value,onClick:A},{icon:t(()=>[e(a(St))]),_:1},8,["loading"]),e(X,{size:"small",disabled:a(b)===0,onClick:L},{default:t(()=>[...f[2]||(f[2]=[i(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),l("div",Tt,[!_.value&&w.value.length===0?(c(),C(me,{key:0,description:"暂无通知",image:a(bt).PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):_.value?(c(),C(fe,{key:1,style:{display:"block",padding:"60px"}})):(c(),g("ul",Bt,[(c(!0),g(V,null,it(w.value,v=>(c(),g("li",{key:v.id,class:J(["notif-item",{unread:!v.is_read}]),onClick:n=>j(v)},[l("div",Mt,[l("div",Pt,s(v.title||v.message||"(无标题)"),1),l("span",Ut,s(R(v.created_at)),1)]),v.message&&v.title?(c(),g("div",It,s(v.message),1)):M("",!0)],10,Dt))),128))]))])]),_:1},8,["open"])],64)}}},zt=he(Kt,[["__scopeId","data-v-af539070"]]),Ft={key:0,class:"mbh-count"},Vt={__name:"MobileBridgeHeaderStatus",setup(h){function T(A){if(!A)return[];try{return JSON.parse(A)}catch{}const N=String(A).split(`
|
|
2
2
|
`),j=N.findIndex(L=>{const R=L.trim();if(!R)return!1;const m=R[0];if(m!=="["&&m!=="{")return!1;if(R.length===1)return!0;const f=R[1];return!(f>="A"&&f<="Z"||f>="a"&&f<="z")});if(j<0)return[];for(let L=N.length-1;L>=j;L--){const R=N[L].trim();if(/^[\]\}]/.test(R)&&!/^[\]\}][A-Za-z]/.test(R))try{return JSON.parse(N.slice(j,L+1).join(`
|
|
3
|
-
`))}catch{return[]}}return[]}const E=lt(),_=ve(),S=K([]);let b=null;const u=O(()=>S.value.length),d=O(()=>u.value===0?"var(--text-muted, #999)":"#52c41a"),k=O(()=>u.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${u.value} 台手机 — 点击进入管理`);async function y(){if(_.status==="connected")try{const{output:A}=await _.execute("p2p devices --type mobile --json",1e4);S.value=T(A)||[]}catch{}}function w(){E.push("/mobile-bridge")}return ge(()=>{y(),b=setInterval(y,5e3)}),kt(()=>{b&&(clearInterval(b),b=null)}),(A,N)=>{const j=p("a-badge"),L=p("a-tooltip");return c(),C(L,{title:k.value},{default:t(()=>[e(j,{count:u.value,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[l("button",{type:"button",class:J(["mbh-btn",{"mbh-btn--active":u.value>0}]),onClick:w},[e(a(ye),{style:_t({color:d.value,fontSize:"14px"})},null,8,["style"]),u.value>0?(c(),g("span",Ft,s(u.value),1)):M("",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}}},qt=he(Vt,[["__scopeId","data-v-05eb475d"]]),Wt=["src"],Ht={key:0,class:"logo-text"},Jt={key:0,class:"mode-banner project"},Gt={class:"banner-info"},Yt={class:"banner-name"},Zt={class:"banner-sub"},Qt={key:1,class:"mode-banner global"},Xt={class:"banner-name"},xt=["title"],ea={class:"group-label"},ta={class:"group-label"},aa={class:"group-label"},oa={class:"group-label"},na={class:"group-label"},sa={class:"group-label"},ia={class:"group-label"},la={class:"group-label"},ra={class:"group-label"},ua={key:0,class:"footer-text"},ca={class:"header-left"},da={class:"header-right"},pa={class:"theme-switcher"},ya=["data-theme-key","onClick"],ma=["data-locale"],fa={class:"lang-switch-label"},ka={class:"version-tag"},st="cc.web-panel.sidebar.openKeys",_a={__name:"AppLayout",setup(h){const T=lt(),E=vt(),_=ve(),S=wt(),{t:b}=Lt(),u=q(),d=K(!1),k=window.__CC_CONFIG__||{},y=O(()=>k.mode==="project"),w="v5.0.3.143",A=O(()=>S.current),N=O(()=>S.config.vars["--menu-mode"]),j=O(()=>{const n=E.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[n]||n]}),L=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function R(){try{const n=localStorage.getItem(st);if(n){const r=JSON.parse(n);if(Array.isArray(r))return r.filter(o=>L.includes(o))}}catch{}return[...L]}const m=K(R());gt(m,n=>{try{localStorage.setItem(st,JSON.stringify(n))}catch{}},{deep:!0});const f=O(()=>_.status),B=O(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[_.status]||"default"),z=O(()=>{const n=`appLayout.footerStatus.${_.status}`,r=b(n);return r===n?b("appLayout.footerStatus.unknown"):r});function P(n){S.setTheme(n)}const{current:W,supported:H,setLocale:X}=Ot();function me(){const n=H[(H.indexOf(W.value)+1)%H.length];X(n)}async function fe(n){try{const r=await _.sendRaw({type:"window.open",role:n},1e4);if(r?.ok===!1){G.error(`打开失败:${r.error||"未知"}`);return}const o=r?.result??r;o?.reason==="role_reserved"?G.warning("该窗口角色被保留"):o?.reason}catch(r){G.error(`打开桌面窗口失败:${r.message||r}`)}}async function ke(){At.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const n=await _.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(n?.ok===!1)throw new Error(n.error||"shell.switch returned failure");G.loading({content:"正在重启…",duration:0})}catch(n){const r=n instanceof Error?n.message:String(n);G.error("切换失败:"+r)}}})}function v({key:n}){if(typeof n=="string"&&n.startsWith("desktop:")){fe(n);return}T.push({mcp:"/mcp"}[n]||`/${n}`)}return ge(()=>_.connect()),(n,r)=>{const o=p("a-menu-item"),D=p("a-sub-menu"),F=p("a-menu-divider"),rt=p("a-menu"),ut=p("a-badge"),ct=p("a-layout-sider"),x=p("a-tooltip"),dt=p("a-tag"),pt=p("a-layout-header"),yt=p("router-view"),mt=p("a-layout-content"),be=p("a-layout");return c(),C(be,{class:"app-root"},{default:t(()=>[e(ct,{collapsed:d.value,"onUpdate:collapsed":r[2]||(r[2]=U=>d.value=U),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[l("div",{class:J(["logo",{collapsed:d.value}])},[l("img",{src:a(Rt),alt:"ChainlessChain",class:"logo-icon"},null,8,Wt),d.value?M("",!0):(c(),g("span",Ht,"ChainlessChain"))],2),d.value?(c(),g("div",{key:1,class:"mode-icon-sm",title:y.value?a(k).projectName:n.$t("appLayout.scope.global")},[y.value?(c(),C(a(Y),{key:0,style:{color:"#1677ff"}})):(c(),C(a(te),{key:1,style:{color:"#722ed1"}}))],8,xt)):(c(),g(V,{key:0},[y.value?(c(),g("div",Jt,[e(a(Y),{class:"banner-icon"}),l("div",Gt,[l("div",Yt,s(a(k).projectName||n.$t("appLayout.scope.fallbackProject")),1),l("div",Zt,s(n.$t("appLayout.scope.projectPanel")),1)])])):(c(),g("div",Qt,[e(a(te),{class:"banner-icon"}),l("span",Xt,s(n.$t("appLayout.scope.global")),1)]))],64)),e(rt,{selectedKeys:j.value,"onUpdate:selectedKeys":r[0]||(r[0]=U=>j.value=U),openKeys:m.value,"onUpdate:openKeys":r[1]||(r[1]=U=>m.value=U),theme:N.value,mode:"inline","inline-collapsed":d.value,class:"side-menu",onClick:v},{default:t(()=>[d.value?(c(),g(V,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(a(et))]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),_:1}),a(u).isEmbedded?(c(),g(V,{key:0},[e(F,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),_:1})],64)):M("",!0)],64)):(c(),g(V,{key:0},[e(D,{key:"g-overview"},{title:t(()=>[l("span",ea,s(n.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),default:t(()=>[i(s(n.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),default:t(()=>[i(s(n.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),default:t(()=>[i(s(n.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),default:t(()=>[i(s(n.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(D,{key:"g-config"},{title:t(()=>[l("span",ta,s(n.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),default:t(()=>[i(s(n.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.evolutionSettings")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),default:t(()=>[i(s(n.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),default:t(()=>[i(s(n.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),default:t(()=>[i(s(n.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),default:t(()=>[i(s(n.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),default:t(()=>[i(s(n.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),default:t(()=>[i(s(n.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),default:t(()=>[i(s(n.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(D,{key:"g-data"},{title:t(()=>[l("span",aa,s(n.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),default:t(()=>[i(s(n.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),default:t(()=>[i(s(n.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),default:t(()=>[i(s(n.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),default:t(()=>[r[3]||(r[3]=i("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),default:t(()=>[r[4]||(r[4]=i("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(a(Z))]),default:t(()=>[r[5]||(r[5]=i("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),default:t(()=>[i(s(n.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),default:t(()=>[i(s(n.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),default:t(()=>[i(s(n.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),default:t(()=>[i(s(n.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),default:t(()=>[r[6]||(r[6]=i("后台 Agent",-1))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),default:t(()=>[r[7]||(r[7]=i("交付物",-1))]),_:1})]),_:1}),e(D,{key:"g-advanced"},{title:t(()=>[l("span",oa,s(n.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),default:t(()=>[i(s(n.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),default:t(()=>[i(s(n.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),default:t(()=>[i(s(n.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),default:t(()=>[i(s(n.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),default:t(()=>[i(s(n.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),default:t(()=>[i(s(n.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),default:t(()=>[i(s(n.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),default:t(()=>[i(s(n.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(D,{key:"g-enterprise"},{title:t(()=>[l("span",na,s(n.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),default:t(()=>[i(s(n.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),default:t(()=>[i(s(n.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),default:t(()=>[i(s(n.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),default:t(()=>[i(s(n.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(D,{key:"g-social"},{title:t(()=>[l("span",sa,s(n.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(a(et))]),default:t(()=>[i(s(n.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),default:t(()=>[i(s(n.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),default:t(()=>[i(s(n.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),default:t(()=>[i(s(n.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(D,{key:"g-media"},{title:t(()=>[l("span",ia,s(n.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(a(Ct))]),default:t(()=>[i(s(n.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(D,{key:"g-extension"},{title:t(()=>[l("span",la,s(n.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),default:t(()=>[i(s(n.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),a(u).isEmbedded?(c(),C(D,{key:"g-desktop"},{title:t(()=>[l("span",ra,s(n.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):M("",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),l("div",{class:J(["sidebar-footer",{collapsed:d.value}])},[e(ut,{status:B.value},null,8,["status"]),d.value?M("",!0):(c(),g("span",ua,s(z.value),1))],2)]),_:1},8,["collapsed"]),e(be,{class:"main-area"},{default:t(()=>[e(pt,{class:"app-header"},{default:t(()=>[l("div",ca,[l("div",{class:J(["scope-tag",y.value?"project":"global"])},[(c(),C(ht(y.value?a(Y):a(te)))),l("span",null,s(y.value?a(k).projectName||n.$t("appLayout.scope.fallbackProject"):n.$t("appLayout.scope.global")),1),y.value&&a(k).projectRoot?(c(),C(x,{key:0,title:a(k).projectRoot},{default:t(()=>[e(a(Et),{class:"info-icon"})]),_:1},8,["title"])):M("",!0)],2)]),l("div",da,[l("div",pa,[(c(!0),g(V,null,it(a($t),(U,ee)=>(c(),C(x,{key:ee,title:U.label},{default:t(()=>[l("button",{class:J(["theme-btn",{active:A.value===ee}]),"data-theme-key":ee,onClick:ga=>P(ee)},s(U.icon),11,ya)]),_:2},1032,["title"]))),128))]),e(x,{title:n.$t("language.label")},{default:t(()=>[l("button",{class:"lang-switch-btn","data-locale":a(W),onClick:me},[e(a(te),{class:"lang-switch-icon"}),l("span",fa,s(n.$t("language.switch")),1)],8,ma)]),_:1},8,["title"]),e(qt),a(u).isEmbedded?(c(),C(zt,{key:0})):M("",!0),l("span",ka,s(a(w)),1),a(u).isEmbedded?(c(),C(x,{key:1,title:n.$t("appLayout.shellSwitch")},{default:t(()=>[l("button",{type:"button",class:"shell-switch-btn",onClick:ke},[e(a(ce))])]),_:1},8,["title"])):M("",!0),e(dt,{color:f.value==="connected"?"green":f.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[i(s(f.value==="connected"?n.$t("appLayout.wsStatus.connected"):f.value==="connecting"?n.$t("appLayout.wsStatus.connecting"):n.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),e(mt,{class:"page-content"},{default:t(()=>[e(yt)]),_:1})]),_:1})]),_:1})}}},qa=he(_a,[["__scopeId","data-v-563989a5"]]);export{qa as default};
|
|
3
|
+
`))}catch{return[]}}return[]}const E=lt(),_=ve(),S=K([]);let b=null;const u=O(()=>S.value.length),d=O(()=>u.value===0?"var(--text-muted, #999)":"#52c41a"),k=O(()=>u.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${u.value} 台手机 — 点击进入管理`);async function y(){if(_.status==="connected")try{const{output:A}=await _.execute("p2p devices --type mobile --json",1e4);S.value=T(A)||[]}catch{}}function w(){E.push("/mobile-bridge")}return ge(()=>{y(),b=setInterval(y,5e3)}),kt(()=>{b&&(clearInterval(b),b=null)}),(A,N)=>{const j=p("a-badge"),L=p("a-tooltip");return c(),C(L,{title:k.value},{default:t(()=>[e(j,{count:u.value,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[l("button",{type:"button",class:J(["mbh-btn",{"mbh-btn--active":u.value>0}]),onClick:w},[e(a(ye),{style:_t({color:d.value,fontSize:"14px"})},null,8,["style"]),u.value>0?(c(),g("span",Ft,s(u.value),1)):M("",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}}},qt=he(Vt,[["__scopeId","data-v-05eb475d"]]),Wt=["src"],Ht={key:0,class:"logo-text"},Jt={key:0,class:"mode-banner project"},Gt={class:"banner-info"},Yt={class:"banner-name"},Zt={class:"banner-sub"},Qt={key:1,class:"mode-banner global"},Xt={class:"banner-name"},xt=["title"],ea={class:"group-label"},ta={class:"group-label"},aa={class:"group-label"},oa={class:"group-label"},na={class:"group-label"},sa={class:"group-label"},ia={class:"group-label"},la={class:"group-label"},ra={class:"group-label"},ua={key:0,class:"footer-text"},ca={class:"header-left"},da={class:"header-right"},pa={class:"theme-switcher"},ya=["data-theme-key","onClick"],ma=["data-locale"],fa={class:"lang-switch-label"},ka={class:"version-tag"},st="cc.web-panel.sidebar.openKeys",_a={__name:"AppLayout",setup(h){const T=lt(),E=vt(),_=ve(),S=wt(),{t:b}=Lt(),u=q(),d=K(!1),k=window.__CC_CONFIG__||{},y=O(()=>k.mode==="project"),w="v5.0.3.144",A=O(()=>S.current),N=O(()=>S.config.vars["--menu-mode"]),j=O(()=>{const n=E.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[n]||n]}),L=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function R(){try{const n=localStorage.getItem(st);if(n){const r=JSON.parse(n);if(Array.isArray(r))return r.filter(o=>L.includes(o))}}catch{}return[...L]}const m=K(R());gt(m,n=>{try{localStorage.setItem(st,JSON.stringify(n))}catch{}},{deep:!0});const f=O(()=>_.status),B=O(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[_.status]||"default"),z=O(()=>{const n=`appLayout.footerStatus.${_.status}`,r=b(n);return r===n?b("appLayout.footerStatus.unknown"):r});function P(n){S.setTheme(n)}const{current:W,supported:H,setLocale:X}=Ot();function me(){const n=H[(H.indexOf(W.value)+1)%H.length];X(n)}async function fe(n){try{const r=await _.sendRaw({type:"window.open",role:n},1e4);if(r?.ok===!1){G.error(`打开失败:${r.error||"未知"}`);return}const o=r?.result??r;o?.reason==="role_reserved"?G.warning("该窗口角色被保留"):o?.reason}catch(r){G.error(`打开桌面窗口失败:${r.message||r}`)}}async function ke(){At.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const n=await _.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(n?.ok===!1)throw new Error(n.error||"shell.switch returned failure");G.loading({content:"正在重启…",duration:0})}catch(n){const r=n instanceof Error?n.message:String(n);G.error("切换失败:"+r)}}})}function v({key:n}){if(typeof n=="string"&&n.startsWith("desktop:")){fe(n);return}T.push({mcp:"/mcp"}[n]||`/${n}`)}return ge(()=>_.connect()),(n,r)=>{const o=p("a-menu-item"),D=p("a-sub-menu"),F=p("a-menu-divider"),rt=p("a-menu"),ut=p("a-badge"),ct=p("a-layout-sider"),x=p("a-tooltip"),dt=p("a-tag"),pt=p("a-layout-header"),yt=p("router-view"),mt=p("a-layout-content"),be=p("a-layout");return c(),C(be,{class:"app-root"},{default:t(()=>[e(ct,{collapsed:d.value,"onUpdate:collapsed":r[2]||(r[2]=U=>d.value=U),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[l("div",{class:J(["logo",{collapsed:d.value}])},[l("img",{src:a(Rt),alt:"ChainlessChain",class:"logo-icon"},null,8,Wt),d.value?M("",!0):(c(),g("span",Ht,"ChainlessChain"))],2),d.value?(c(),g("div",{key:1,class:"mode-icon-sm",title:y.value?a(k).projectName:n.$t("appLayout.scope.global")},[y.value?(c(),C(a(Y),{key:0,style:{color:"#1677ff"}})):(c(),C(a(te),{key:1,style:{color:"#722ed1"}}))],8,xt)):(c(),g(V,{key:0},[y.value?(c(),g("div",Jt,[e(a(Y),{class:"banner-icon"}),l("div",Gt,[l("div",Yt,s(a(k).projectName||n.$t("appLayout.scope.fallbackProject")),1),l("div",Zt,s(n.$t("appLayout.scope.projectPanel")),1)])])):(c(),g("div",Qt,[e(a(te),{class:"banner-icon"}),l("span",Xt,s(n.$t("appLayout.scope.global")),1)]))],64)),e(rt,{selectedKeys:j.value,"onUpdate:selectedKeys":r[0]||(r[0]=U=>j.value=U),openKeys:m.value,"onUpdate:openKeys":r[1]||(r[1]=U=>m.value=U),theme:N.value,mode:"inline","inline-collapsed":d.value,class:"side-menu",onClick:v},{default:t(()=>[d.value?(c(),g(V,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(a(et))]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),_:1}),e(F,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),_:1}),a(u).isEmbedded?(c(),g(V,{key:0},[e(F,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),_:1})],64)):M("",!0)],64)):(c(),g(V,{key:0},[e(D,{key:"g-overview"},{title:t(()=>[l("span",ea,s(n.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(a(we))]),default:t(()=>[i(s(n.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(a(ne))]),default:t(()=>[i(s(n.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(a(Le))]),default:t(()=>[i(s(n.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(a($e))]),default:t(()=>[i(s(n.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(a(Oe))]),default:t(()=>[i(s(n.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(D,{key:"g-config"},{title:t(()=>[l("span",ta,s(n.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(a(Se))]),default:t(()=>[i(s(n.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"evolution-settings"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.evolutionSettings")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(a(Ce))]),default:t(()=>[i(s(n.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(a(Ee))]),default:t(()=>[i(s(n.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(a(Y))]),default:t(()=>[i(s(n.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(a(Ae))]),default:t(()=>[i(s(n.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(a(_e))]),default:t(()=>[i(s(n.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(a(Re))]),default:t(()=>[i(s(n.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(a(Ne))]),default:t(()=>[i(s(n.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(D,{key:"g-data"},{title:t(()=>[l("span",aa,s(n.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(a(je))]),default:t(()=>[i(s(n.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(a(Te))]),default:t(()=>[i(s(n.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(a(ie))]),default:t(()=>[i(s(n.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(a(Be))]),default:t(()=>[i(s(n.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(a(De))]),default:t(()=>[r[3]||(r[3]=i("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(a(Me))]),default:t(()=>[r[4]||(r[4]=i("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(a(Z))]),default:t(()=>[r[5]||(r[5]=i("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(a(Pe))]),default:t(()=>[i(s(n.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(a(Ue))]),default:t(()=>[i(s(n.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(a(Ie))]),default:t(()=>[i(s(n.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(a(Ke))]),default:t(()=>[i(s(n.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(a(oe))]),default:t(()=>[i(s(n.$t("appLayout.items.tasks")),1)]),_:1}),e(o,{key:"background-agents"},{icon:t(()=>[e(a(ne))]),default:t(()=>[r[6]||(r[6]=i("后台 Agent",-1))]),_:1}),e(o,{key:"artifacts"},{icon:t(()=>[e(a(ze))]),default:t(()=>[r[7]||(r[7]=i("交付物",-1))]),_:1})]),_:1}),e(D,{key:"g-advanced"},{title:t(()=>[l("span",oa,s(n.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(a(Fe))]),default:t(()=>[i(s(n.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(a(Ve))]),default:t(()=>[i(s(n.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(a(qe))]),default:t(()=>[i(s(n.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(a(We))]),default:t(()=>[i(s(n.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"remote-session"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.remoteSession","远程会话")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(a(ye))]),default:t(()=>[i(s(n.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(a(ce))]),default:t(()=>[i(s(n.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(a(le))]),default:t(()=>[i(s(n.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(a(He))]),default:t(()=>[i(s(n.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(a(Je))]),default:t(()=>[i(s(n.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(a(I))]),default:t(()=>[i(s(n.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(a(Ge))]),default:t(()=>[i(s(n.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(a(Ye))]),default:t(()=>[i(s(n.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(D,{key:"g-enterprise"},{title:t(()=>[l("span",na,s(n.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(a(Ze))]),default:t(()=>[i(s(n.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(a(Z))]),default:t(()=>[i(s(n.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(a(Qe))]),default:t(()=>[i(s(n.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(a(ae))]),default:t(()=>[i(s(n.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(a(Xe))]),default:t(()=>[i(s(n.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(a(xe))]),default:t(()=>[i(s(n.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(D,{key:"g-social"},{title:t(()=>[l("span",sa,s(n.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(a(et))]),default:t(()=>[i(s(n.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(a(tt))]),default:t(()=>[i(s(n.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(a(at))]),default:t(()=>[i(s(n.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(a(ot))]),default:t(()=>[i(s(n.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(D,{key:"g-media"},{title:t(()=>[l("span",ia,s(n.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(a(Ct))]),default:t(()=>[i(s(n.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(D,{key:"g-extension"},{title:t(()=>[l("span",la,s(n.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(a(nt))]),default:t(()=>[i(s(n.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(a(ue))]),default:t(()=>[i(s(n.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),a(u).isEmbedded?(c(),C(D,{key:"g-desktop"},{title:t(()=>[l("span",ra,s(n.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(a(re))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(a(de))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(a(pe))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(a(se))]),default:t(()=>[i(s(n.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):M("",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),l("div",{class:J(["sidebar-footer",{collapsed:d.value}])},[e(ut,{status:B.value},null,8,["status"]),d.value?M("",!0):(c(),g("span",ua,s(z.value),1))],2)]),_:1},8,["collapsed"]),e(be,{class:"main-area"},{default:t(()=>[e(pt,{class:"app-header"},{default:t(()=>[l("div",ca,[l("div",{class:J(["scope-tag",y.value?"project":"global"])},[(c(),C(ht(y.value?a(Y):a(te)))),l("span",null,s(y.value?a(k).projectName||n.$t("appLayout.scope.fallbackProject"):n.$t("appLayout.scope.global")),1),y.value&&a(k).projectRoot?(c(),C(x,{key:0,title:a(k).projectRoot},{default:t(()=>[e(a(Et),{class:"info-icon"})]),_:1},8,["title"])):M("",!0)],2)]),l("div",da,[l("div",pa,[(c(!0),g(V,null,it(a($t),(U,ee)=>(c(),C(x,{key:ee,title:U.label},{default:t(()=>[l("button",{class:J(["theme-btn",{active:A.value===ee}]),"data-theme-key":ee,onClick:ga=>P(ee)},s(U.icon),11,ya)]),_:2},1032,["title"]))),128))]),e(x,{title:n.$t("language.label")},{default:t(()=>[l("button",{class:"lang-switch-btn","data-locale":a(W),onClick:me},[e(a(te),{class:"lang-switch-icon"}),l("span",fa,s(n.$t("language.switch")),1)],8,ma)]),_:1},8,["title"]),e(qt),a(u).isEmbedded?(c(),C(zt,{key:0})):M("",!0),l("span",ka,s(a(w)),1),a(u).isEmbedded?(c(),C(x,{key:1,title:n.$t("appLayout.shellSwitch")},{default:t(()=>[l("button",{type:"button",class:"shell-switch-btn",onClick:ke},[e(a(ce))])]),_:1},8,["title"])):M("",!0),e(dt,{color:f.value==="connected"?"green":f.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[i(s(f.value==="connected"?n.$t("appLayout.wsStatus.connected"):f.value==="connecting"?n.$t("appLayout.wsStatus.connecting"):n.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),e(mt,{class:"page-content"},{default:t(()=>[e(yt)]),_:1})]),_:1})]),_:1})}}},qa=he(_a,[["__scopeId","data-v-563989a5"]]);export{qa as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as D}from"./MarkdownRenderer-
|
|
1
|
+
import{M as D}from"./MarkdownRenderer-7JABuv1j.js";import{E as K,r as _,f as B,o as G,e as Q,M as w,R as v,c as r,N as o,u as i,Q as x,S as z,K as m,L as c,O as d,P as f,F as V}from"./vendor-BXcBOG8b.js";import{u as S,_ as W,d as R}from"./index-Cs66y4oC.js";import{R as q}from"./icons-DlxlFL4g.js";import"./markdown-Bq2x0XsR.js";import"./markdown-DUKxbhE4.js";const H=K("artifacts",()=>{const A=_([]),t=_(!1),g=_(""),b=_(""),u=_(null),C=_(!1),I=B(()=>[...new Set(A.value.map(a=>a.kind).filter(Boolean))].sort());async function l(){const e=S();t.value=!0;try{const a={type:"artifact-list"};g.value&&(a.kind=g.value),b.value&&(a.session=b.value);const s=await e.sendRaw(a);s&&Array.isArray(s.artifacts)&&(A.value=[...s.artifacts].reverse())}catch{}finally{t.value=!1}}async function n(e){const a=S();C.value=!0,u.value={entry:e,previewable:!1};try{const s=await a.sendRaw({type:"artifact-content",artifactId:e.id});u.value={entry:e,previewable:s?.previewable===!0,encoding:s?.encoding||null,content:s?.content||"",truncated:s?.truncated===!0,reason:s?.reason||null}}catch(s){u.value={entry:e,previewable:!1,reason:s?.message||"preview failed"}}finally{C.value=!1}}function F(){u.value=null}const p=B(()=>{const e=u.value;return!e?.previewable||e.encoding!=="base64"?null:`data:${e.entry?.mime||"image/png"};base64,${e.content}`}),$=B(()=>{const e=u.value;return e?.previewable===!0&&e.encoding==="utf8"&&String(e.entry?.mime||"").toLowerCase()==="text/markdown"});async function k(e,a={}){if(!e?.id)return!1;const s=a.fetch||globalThis.fetch,P=a.document||globalThis.document,T=a.URL||globalThis.URL,O=(a.config||globalThis.window?.__CC_CONFIG__)??{};try{const E=await s(`/api/artifacts/${e.id}/download`,{headers:O.wsToken?{Authorization:`Bearer ${O.wsToken}`}:{}});if(!E.ok)return!1;const j=await E.blob(),U=T.createObjectURL(j),h=P.createElement("a");return h.href=U,h.download=e.title||e.id,P.body.appendChild(h),h.click(),h.remove(),T.revokeObjectURL(U),!0}catch{return!1}}async function y(e){const a=S();if(!e)return!1;try{const s=await a.sendRaw({type:"artifact-remove",artifactId:e});return u.value?.entry?.id===e&&(u.value=null),await l(),s?.found===!0}catch{return!1}}async function M(){const e=S();try{const a=await e.sendRaw({type:"artifact-clean"});return await l(),Number(a?.removed)||0}catch{return 0}}function L(e){const a=Number(e)||0;return a<1024?`${a} B`:a<1024*1024?`${(a/1024).toFixed(1)} KB`:`${(a/(1024*1024)).toFixed(1)} MB`}function N(e){switch(e){case"report":return"blue";case"patch":return"purple";case"screenshot":return"cyan";case"log":return"default";case"data":return"green";default:return"default"}}return{artifacts:A,loading:t,kindFilter:g,sessionFilter:b,kinds:I,preview:u,previewLoading:C,previewImageSrc:p,previewIsMarkdown:$,fetchArtifacts:l,openPreview:n,closePreview:F,removeArtifact:y,cleanExpired:M,downloadArtifact:k,formatSize:L,kindColor:N}}),J={class:"page-header"},X=["onClick"],Y=["src"],Z={key:1,class:"preview-markdown"},ee={key:2,class:"preview-text"},te={class:"preview-meta"},ne={key:0},ae={__name:"Artifacts",setup(A){const t=H(),g=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"类型",key:"kind",dataIndex:"kind",width:110},{title:"MIME",dataIndex:"mime",width:160,ellipsis:!0},{title:"大小",key:"size",dataIndex:"size",width:90},{title:"发布时间",key:"createdAt",dataIndex:"createdAt",width:170},{title:"会话",dataIndex:"sessionId",width:160,ellipsis:!0},{title:"操作",key:"actions",width:150}],b=B(()=>t.kinds.map(l=>({label:l,value:l})));async function u(l){await t.removeArtifact(l)?R.success("已删除"):R.error("删除失败")}async function C(){const l=await t.cleanExpired();R.info(l>0?`清理了 ${l} 个过期交付物`:"没有过期交付物")}async function I(l){await t.downloadArtifact(l)||R.error("下载失败")}return G(()=>{t.fetchArtifacts()}),Q(()=>{t.closePreview()}),(l,n)=>{const F=m("a-select"),p=m("a-button"),$=m("a-popconfirm"),k=m("a-space"),y=m("a-tag"),M=m("a-table"),L=m("a-empty"),N=m("a-card");return c(),w("div",null,[v("div",J,[n[7]||(n[7]=v("div",null,[v("h2",{class:"page-title"},"交付物"),v("p",{class:"page-sub"}," agent 用 publish_artifact 发布的交付物(报告 / patch / 截图 / 日志),在这里预览与管理(cc artifacts 同源)。 ")],-1)),r(k,null,{default:o(()=>[r(F,{value:i(t).kindFilter,"onUpdate:value":n[0]||(n[0]=e=>i(t).kindFilter=e),style:{"min-width":"120px"},placeholder:"全部类型","allow-clear":"",options:b.value,onChange:n[1]||(n[1]=e=>i(t).fetchArtifacts())},null,8,["value","options"]),r($,{title:"删除所有过期交付物?",onConfirm:C},{default:o(()=>[r(p,null,{default:o(()=>[...n[5]||(n[5]=[d("清理过期",-1)])]),_:1})]),_:1}),r(p,{ghost:"",loading:i(t).loading,onClick:n[2]||(n[2]=e=>i(t).fetchArtifacts())},{icon:o(()=>[r(i(q))]),default:o(()=>[n[6]||(n[6]=d(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),r(M,{"data-source":i(t).artifacts,columns:g,"row-key":"id",size:"small",pagination:{pageSize:10,hideOnSinglePage:!0}},{bodyCell:o(({column:e,record:a})=>[e.key==="title"?(c(),w("a",{key:0,onClick:s=>i(t).openPreview(a)},f(a.title),9,X)):e.key==="kind"?(c(),x(y,{key:1,color:i(t).kindColor(a.kind)},{default:o(()=>[d(f(a.kind),1)]),_:2},1032,["color"])):e.key==="size"?(c(),w(V,{key:2},[d(f(i(t).formatSize(a.size)),1)],64)):e.key==="createdAt"?(c(),w(V,{key:3},[d(f((a.createdAt||"").replace("T"," ").slice(0,19)),1)],64)):e.key==="actions"?(c(),x(k,{key:4},{default:o(()=>[r(p,{size:"small",onClick:s=>i(t).openPreview(a)},{default:o(()=>[...n[8]||(n[8]=[d("预览",-1)])]),_:1},8,["onClick"]),r(p,{size:"small",onClick:s=>I(a)},{default:o(()=>[...n[9]||(n[9]=[d("下载",-1)])]),_:1},8,["onClick"]),r($,{title:"删除该交付物?",onConfirm:s=>u(a.id)},{default:o(()=>[r(p,{size:"small",danger:""},{default:o(()=>[...n[10]||(n[10]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)):z("",!0)]),_:1},8,["data-source"]),i(t).preview?(c(),x(N,{key:0,size:"small",class:"preview-card",loading:i(t).previewLoading},{title:o(()=>[r(k,null,{default:o(()=>[v("span",null,f(i(t).preview.entry?.title),1),r(y,{color:i(t).kindColor(i(t).preview.entry?.kind)},{default:o(()=>[d(f(i(t).preview.entry?.kind),1)]),_:1},8,["color"]),r(y,{color:"default"},{default:o(()=>[d(f(i(t).preview.entry?.mime),1)]),_:1}),i(t).preview.truncated?(c(),x(y,{key:0,color:"warning"},{default:o(()=>[...n[11]||(n[11]=[d("已截断预览",-1)])]),_:1})):z("",!0)]),_:1})]),extra:o(()=>[r(k,null,{default:o(()=>[r(p,{size:"small",onClick:n[3]||(n[3]=e=>I(i(t).preview.entry))},{default:o(()=>[...n[12]||(n[12]=[d("下载",-1)])]),_:1}),r(p,{size:"small",onClick:n[4]||(n[4]=e=>i(t).closePreview())},{default:o(()=>[...n[13]||(n[13]=[d("关闭",-1)])]),_:1})]),_:1})]),default:o(()=>[i(t).previewImageSrc?(c(),w("img",{key:0,src:i(t).previewImageSrc,class:"preview-image",alt:"artifact preview"},null,8,Y)):i(t).previewIsMarkdown?(c(),w("div",Z,[r(D,{content:i(t).preview.content||""},null,8,["content"])])):i(t).preview.previewable?(c(),w("pre",ee,f(i(t).preview.content||"(空文件)"),1)):(c(),x(L,{key:3,description:i(t).preview.reason||"该类型不支持在线预览,可在本机用 cc artifacts open <id> 打开"},null,8,["description"])),v("div",te,[v("span",null,f(i(t).preview.entry?.id),1),i(t).preview.entry?.sessionId?(c(),w("span",ne," · session "+f(i(t).preview.entry.sessionId),1)):z("",!0),v("span",null," · sha256 "+f((i(t).preview.entry?.sha256||"").slice(0,12))+"…",1)])]),_:1},8,["loading"])):z("",!0)])}}},de=W(ae,[["__scopeId","data-v-c5692fe9"]]);export{de as default};
|