chainlesschain 0.162.130 → 0.162.132
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 +12 -3
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AIOps-DlBanM-D.js → AIOps-C3EMV_C8.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-yoBaBWJy.js → ActionButton-BnChvwOT.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BmrOyYD0.js → Analytics-4qJF0UgZ.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-GFuM9A3X.js → AppLayout-BNvZIVu2.js} +5 -5
- package/src/assets/web-panel/assets/Audit-XK9SNjI1.js +1 -0
- package/src/assets/web-panel/assets/Backup-DpG3a6_C.js +1 -0
- package/src/assets/web-panel/assets/{BaseInput-Be6KNmhp.js → BaseInput-DRFAaZU4.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DwsFF4yj.js → Chat-BBx7bBGe.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-BBiURq4R.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CJMgWRaw.js → Checkbox-MSz5cYJs.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DmUTxgww.js → Codegen-IYShumwd.js} +1 -1
- package/src/assets/web-panel/assets/{Col-DKiqcZD4.js → Col-Bmv6mthP.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DwkBuQJ9.js → Community-CHeLo7dI.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-ClnINh4j.js → Compact-BkJNQs7E.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CiT8aABn.js → Compliance-C25JJC2u.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CSdl80o1.js → Cowork-Dla0k0Ww.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-EpM2_dN5.js → Cron-DGkuHZUa.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-D0k0wjwX.js → Crosschain-cX_-njSd.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CC4U6GEI.js → DID-BKS-omUL.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-BoFR9biz.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-z6Y524uk.js → Dropdown-Cmpq1SBD.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bs_NxIAQ.js → EmailListRenderer-DyJhg_Vk.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-BdMikomZ.js → FamilyGuardDashboard-B0MWkRfs.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BaBybFmU.js → Federation-po5WbpBo.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-bOifggcW.js → FormItemContext-w8jmOFY0.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BEhi1SaZ.js → GenericCardRenderer-C8x1Xukd.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BoISA30j.js → Git-DRHr1S-_.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-D8XZcZmr.js → Governance-DS24dY8i.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DF0zfQ35.js → Inference-BLg0DmZ-.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-Bx28A0s9.js → KnowledgeGraph-DhKarFuO.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CxP6elqM.js → Logs-DJEThUCf.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-BhyVR9xn.js → Marketplace-DEyDcNY0.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-TYU8DcM5.js → McpTools-BFmO9TXt.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-UDwDvKuv.js → Memory-C1JB4k5K.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-DEa4DTPm.js → MobileBridge-B5gsBjMt.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-BU-T_VO4.js → MobileProjects-DdmW0Pq3.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-hYAzBWQi.js → Mtc-fUpipvt9.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-0417bzil.js → MtcAudit-B3dAe-X-.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-C8mNrESc.js → Multisig-Ck0yvwfE.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Cq73NSD-.js → NLProgramming-KkotDdq3.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-CuyXdYfG.js → Notes-DpYODayK.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-4dP5jtLG.js → NotificationSettings-M5iEaYts.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BVcICQBo.js +1 -0
- package/src/assets/web-panel/assets/{Organization-DM8-EgzR.js → Organization-EyZ6nhjD.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-B9pMMIE8.js → Overflow-yvn3oxJl.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CNxt3m8G.js → P2P-B0GwW04x.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-BbppiJQa.js → PdhVaultBrowser-0Cm-xe1W.js} +5 -5
- package/src/assets/web-panel/assets/{Permissions-CkbU4k5w.js → Permissions-CWtOiGDk.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-CTP1cWxo.js → PersonalDataHub-BrU4PqRW.js} +2 -2
- package/src/assets/web-panel/assets/{Pipeline-DOXykOA8.js → Pipeline-BeZNtjqS.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BWrp8ZRY.js → Privacy-DFLhKDT4.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-B6OQPTTl.js → ProjectInit-7P8fYCPr.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CYu0yAVQ.js → ProjectSettings-rGtMRQ0z.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-Dcu-tF8M.js → Projects-UMCUiwar.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-mR6PwgKV.js → Providers-DyjvkuWD.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-EWtGuBnr.js → QuickAsk-Bkm8QioD.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-YKMSZwfC.js → Recommend-Br1CiFuH.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-yK5aobGy.js → Reputation-BEFYjLix.js} +1 -1
- package/src/assets/web-panel/assets/{Row-D1s181ke.js → Row-D3CZf-GP.js} +1 -1
- package/src/assets/web-panel/assets/RssFeed-eRS7lVjf.js +3 -0
- package/src/assets/web-panel/assets/{Search-CN4DO-B5.js → Search-VvFALPmV.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DU7zt02X.js → Security-D1WEaJQi.js} +4 -4
- package/src/assets/web-panel/assets/{Services-ithSFJ8m.js → Services-ChKY66HU.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-AdnDEpv-.js → Skeleton-FNnDIIwx.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DbzSM7vB.js → Skills-mK0_kv2B.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-DX54_u0l.js → Sla-DIi5A7gn.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CRHZuDqy.js → SpeechSettings-Sc1lCVFY.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DbFnDg_K.js → SyncSettings-B2hi5KhL.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-Dhsmw2CQ.js → Tasks-Bk4qH2Fh.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DeBl9D2A.js → Templates-F6_MGKtm.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CF-RiJ0g.js → Tenant-016H5VNi.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-_66-j6JZ.js → Terminal-CfDOP3qx.js} +2 -2
- package/src/assets/web-panel/assets/TimelineRenderer-cScSUp9s.js +1 -0
- package/src/assets/web-panel/assets/{Tokens-Bv1_BfYT.js → Tokens-BBorZAWd.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CCYW_wGy.js → Trigger-Bw6PqkhA.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-C8NW132a.js → Trust-DrwSI5ES.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-C4VPSFe9.js → UkeySign-BcTNMCvx.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-1zzclNfS.js → VideoEditing-DegU0PBJ.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DafZQtOh.js → Wallet-Dag7x_Lu.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-we7YNPUy.js → WebAuthn-BZNuN4K8.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-C0ufqV_h.js → WorkflowEditor-Bg640TSc.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D-OyV5Td.js → chat-BGl_G5G0.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DfY_daVD.js → colors-BkWmah_5.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BZGEQaH7.js → compact-item-D4VOkMUL.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-Ha9KgHfb.js → createContext-ChPtvrwq.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Cw_2FlQ9.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DGcsqYDb.js → hasIn-Cw0H6G0n.js} +1 -1
- package/src/assets/web-panel/assets/{index-BhX3LQ5F.js → index--xcO8suF.js} +1 -1
- package/src/assets/web-panel/assets/{index-CLAWGH1Z.js → index-5CPgvuH8.js} +1 -1
- package/src/assets/web-panel/assets/{index-DMggRtTA.js → index-9wpIl6bu.js} +1 -1
- package/src/assets/web-panel/assets/{index-i7FGX3Og.js → index-B6BPVZR9.js} +1 -1
- package/src/assets/web-panel/assets/{index-C4PD8V1s.js → index-BCCYbwmv.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiHUtyKj.js → index-BDruxhx0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCDaH6SF.js → index-BF1vTqzW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZ18sJL-.js → index-BVbkWEOb.js} +3 -3
- package/src/assets/web-panel/assets/{index-DNHsZmjx.js → index-BoDZA6sR.js} +2 -2
- package/src/assets/web-panel/assets/{index-Cn6dP-P7.js → index-C1-3BSVH.js} +1 -1
- package/src/assets/web-panel/assets/index-C4TtP0Q2.js +1 -0
- package/src/assets/web-panel/assets/index-CN8GZ9VU.js +1 -0
- package/src/assets/web-panel/assets/{index-DvCAWCE_.js → index-COKpurFE.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCMhrAQQ.js → index-CRVNn7el.js} +1 -1
- package/src/assets/web-panel/assets/{index-CaQ_9au2.js → index-CVy9ZQAd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DYnWmaCw.js → index-CZ2lHEaO.js} +1 -1
- package/src/assets/web-panel/assets/{index-DihK8yMW.js → index-CbxmVBWd.js} +1 -1
- package/src/assets/web-panel/assets/{index--WXQ2y49.js → index-CiNzQzee.js} +2 -2
- package/src/assets/web-panel/assets/{index-DZU8HRgG.js → index-CkFRK11e.js} +3 -3
- package/src/assets/web-panel/assets/{index-BsdgGEmW.js → index-DAQfL1Hk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvJxHGRq.js → index-DID2JJeq.js} +3 -3
- package/src/assets/web-panel/assets/{index-B6Lk_-uR.js → index-DMQAaKMl.js} +1 -1
- package/src/assets/web-panel/assets/index-DY2piSG3.js +1 -0
- package/src/assets/web-panel/assets/{index-Da-1E5Dk.js → index-DdRGzy8K.js} +1 -1
- package/src/assets/web-panel/assets/{index-CcaG1Gci.js → index-DfrKyB8I.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNRFSxql.js → index-DiulGuu1.js} +2 -2
- package/src/assets/web-panel/assets/{index-C5t-g1rX.js → index-DkBdCDhe.js} +1 -1
- package/src/assets/web-panel/assets/{index-ybjPuUmk.js → index-DpsGRdPj.js} +2 -2
- package/src/assets/web-panel/assets/{index-DN6Qj7JH.js → index-Dr_gyRsu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BDDEWfQx.js → index-Dsz0YyEu.js} +1 -1
- package/src/assets/web-panel/assets/index-Du5E0dEZ.js +1 -0
- package/src/assets/web-panel/assets/{index-D8304Ulf.js → index-DzQrazEI.js} +1 -1
- package/src/assets/web-panel/assets/{index-gTYJ-BfG.js → index-PiXVtyKZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-LODjH1N_.js → index-WZR0xDpN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiPMeSUC.js → index-Ywxbu_wi.js} +1 -1
- package/src/assets/web-panel/assets/{index-42LImEfZ.js → index-aOagfVdp.js} +4 -4
- package/src/assets/web-panel/assets/{index-C5Jgl_3A.js → index-jQd5N7FE.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvhP7rmX.js → index-oiwK8eXM.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCWbpajj.js → index-rYUU9e_x.js} +2 -2
- package/src/assets/web-panel/assets/{initDefaultProps-B5HHTM2M.js → initDefaultProps-CUw6waFC.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BGMk0sIO.js → motion-TZ6CfWYP.js} +2 -2
- package/src/assets/web-panel/assets/{move-5FLoyfX1.js → move-Br-sZYQi.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DJl_jRfZ.js → mtc-parser-CgXn9cD3.js} +1 -1
- package/src/assets/web-panel/assets/{omit-Db-_WlEN.js → omit-CUwPDHNv.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DsZsLkAT.js → pickAttrs-Bt8vtkVp.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-M5UE9Uuc.js → placementArrow-CuhrIGfZ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-c4k_3oW2.js → responsiveObserve-CrXOALdo.js} +1 -1
- package/src/assets/web-panel/assets/{slide-Bk5r7ti1.js → slide-vvlw8CYg.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CKIS5RY_.js → statusUtils-BJHl-aZk.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-BYIaM5uH.js → styleChecker-CnA7jour.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CcjrBzHi.js → useFlexGapSupport-Da6VMAbW.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CkMOMjsE.js → useFs-Ca-gj7Dy.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Djl3wiRP.js → usePersonalDataHub-DZvpSTIW.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-V3dEKndy.js → vnode-C-BBJHmo.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DroVkKDe.js → zoom-BTSyaEBN.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/agents.js +15 -28
- package/src/lib/agents.js +57 -0
- package/src/repl/add-dir.js +73 -0
- package/src/repl/agent-repl.js +311 -1
- package/src/repl/agents-status.js +122 -0
- package/src/repl/hooks-status.js +67 -0
- package/src/repl/pr-comments.js +197 -0
- package/src/repl/release-notes.js +29 -0
- package/src/repl/status-summary.js +33 -0
- package/src/repl/todos-status.js +65 -0
- package/src/assets/web-panel/assets/Audit-XknQ2_0O.js +0 -1
- package/src/assets/web-panel/assets/Backup-B1iEUtGw.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Dw1_CWh4.js +0 -1
- package/src/assets/web-panel/assets/Dashboard-CxHIpA4F.js +0 -3
- package/src/assets/web-panel/assets/OrderTableRenderer-BlFX_WW9.js +0 -1
- package/src/assets/web-panel/assets/RssFeed-DVoFZ5kC.js +0 -3
- package/src/assets/web-panel/assets/TimelineRenderer-9RbokKX3.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CnWCtTRg.js +0 -1
- package/src/assets/web-panel/assets/index-35rCdAfK.js +0 -1
- package/src/assets/web-panel/assets/index-BdYrVSXl.js +0 -1
- package/src/assets/web-panel/assets/index-DN16qFHw.js +0 -1
- package/src/assets/web-panel/assets/index-Dw0NH-KM.js +0 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/pr-comments` REPL command (Claude-Code parity) — fetch a GitHub pull
|
|
3
|
+
* request's review summaries, conversation comments and inline code comments
|
|
4
|
+
* via the `gh` CLI, format them, and feed the block back as this turn's input
|
|
5
|
+
* so the agent can address the feedback.
|
|
6
|
+
*
|
|
7
|
+
* The pure pieces (parse args + format) are unit-tested; the `gh` calls go
|
|
8
|
+
* through an injected `runGh` so fetchPrComments is testable without a network
|
|
9
|
+
* or a real repo. The REPL (agent-repl.js) wires expandPrComments into the
|
|
10
|
+
* same promptText seam that `/mcp__server__prompt` uses.
|
|
11
|
+
*/
|
|
12
|
+
import { execFile } from "child_process";
|
|
13
|
+
|
|
14
|
+
/** Default `gh` runner — resolves stdout, rejects with a friendly message. */
|
|
15
|
+
function defaultRunGh(args) {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
execFile(
|
|
18
|
+
"gh",
|
|
19
|
+
args,
|
|
20
|
+
{ encoding: "utf-8", maxBuffer: 16 * 1024 * 1024 },
|
|
21
|
+
(err, stdout, stderr) => {
|
|
22
|
+
if (err) {
|
|
23
|
+
if (err.code === "ENOENT") {
|
|
24
|
+
return reject(
|
|
25
|
+
new Error(
|
|
26
|
+
"gh CLI not found — install GitHub CLI (https://cli.github.com) and run `gh auth login`.",
|
|
27
|
+
),
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return reject(
|
|
31
|
+
new Error(String(stderr || err.message || "gh failed").trim()),
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
resolve(stdout);
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Parse `/pr-comments [<n>|<url>] [--repo owner/name]`.
|
|
42
|
+
* @returns {{ pr: number|null, repo: string|null }}
|
|
43
|
+
*/
|
|
44
|
+
export function parsePrCommentsArg(line) {
|
|
45
|
+
const rest = String(line || "")
|
|
46
|
+
.trim()
|
|
47
|
+
.replace(/^\/pr-comments\b/, "")
|
|
48
|
+
.trim();
|
|
49
|
+
let pr = null;
|
|
50
|
+
let repo = null;
|
|
51
|
+
const tokens = rest.length ? rest.split(/\s+/) : [];
|
|
52
|
+
for (let i = 0; i < tokens.length; i += 1) {
|
|
53
|
+
const t = tokens[i];
|
|
54
|
+
if (t === "--repo" || t === "-R") {
|
|
55
|
+
repo = tokens[i + 1] || null;
|
|
56
|
+
i += 1;
|
|
57
|
+
} else if (/^\d+$/.test(t)) {
|
|
58
|
+
pr = Number(t);
|
|
59
|
+
} else {
|
|
60
|
+
const m = /github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/.exec(t);
|
|
61
|
+
if (m) {
|
|
62
|
+
repo = repo || m[1];
|
|
63
|
+
pr = pr ?? Number(m[2]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { pr, repo };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Indent a (possibly multi-line) comment body under its header. */
|
|
71
|
+
function indentBody(body, indent = " ") {
|
|
72
|
+
const text = String(body || "").trim();
|
|
73
|
+
if (!text) return `${indent}(empty)`;
|
|
74
|
+
return text
|
|
75
|
+
.split(/\r?\n/)
|
|
76
|
+
.map((l) => indent + l)
|
|
77
|
+
.join("\n");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Format fetched PR comment data into a plain-text block.
|
|
82
|
+
* @param {object} data { number, title, url, reviews[], conversation[], inline[] }
|
|
83
|
+
*/
|
|
84
|
+
export function formatPrComments(data) {
|
|
85
|
+
const number = data?.number;
|
|
86
|
+
const reviews = (Array.isArray(data?.reviews) ? data.reviews : []).filter(
|
|
87
|
+
(r) => (r?.body && r.body.trim()) || (r?.state && r.state !== "COMMENTED"),
|
|
88
|
+
);
|
|
89
|
+
const conv = Array.isArray(data?.conversation) ? data.conversation : [];
|
|
90
|
+
const inline = Array.isArray(data?.inline) ? data.inline : [];
|
|
91
|
+
|
|
92
|
+
const lines = [`PR #${number ?? "?"} — ${data?.title || "(no title)"}`];
|
|
93
|
+
if (data?.url) lines.push(data.url);
|
|
94
|
+
|
|
95
|
+
lines.push("", `Reviews (${reviews.length}):`);
|
|
96
|
+
for (const r of reviews) {
|
|
97
|
+
const who = r?.author?.login || r?.user?.login || "?";
|
|
98
|
+
lines.push(` @${who} ${r?.state || ""}`.trimEnd());
|
|
99
|
+
if (r?.body && r.body.trim()) lines.push(indentBody(r.body));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
lines.push("", `Conversation comments (${conv.length}):`);
|
|
103
|
+
for (const c of conv) {
|
|
104
|
+
const who = c?.author?.login || c?.user?.login || "?";
|
|
105
|
+
lines.push(` @${who}:`);
|
|
106
|
+
lines.push(indentBody(c?.body));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
lines.push("", `Inline code comments (${inline.length}):`);
|
|
110
|
+
for (const c of inline) {
|
|
111
|
+
const who = c?.user?.login || c?.author?.login || "?";
|
|
112
|
+
const lineNo = c?.line ?? c?.original_line;
|
|
113
|
+
const loc = c?.path
|
|
114
|
+
? `${c.path}${lineNo != null ? ":" + lineNo : ""}`
|
|
115
|
+
: "?";
|
|
116
|
+
lines.push(` ${loc} @${who}:`);
|
|
117
|
+
lines.push(indentBody(c?.body));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return lines.join("\n");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Fetch a PR's reviews + conversation + inline comments via `gh`.
|
|
125
|
+
* @param {object} opts { pr?: number, repo?: string, deps?: { runGh } }
|
|
126
|
+
*/
|
|
127
|
+
export async function fetchPrComments({ pr = null, repo = null, deps } = {}) {
|
|
128
|
+
const runGh = deps?.runGh || defaultRunGh;
|
|
129
|
+
const viewArgs = ["pr", "view"];
|
|
130
|
+
if (pr) viewArgs.push(String(pr));
|
|
131
|
+
if (repo) viewArgs.push("--repo", repo);
|
|
132
|
+
viewArgs.push("--json", "number,title,url,comments,reviews");
|
|
133
|
+
const meta = JSON.parse(await runGh(viewArgs));
|
|
134
|
+
const number = meta?.number;
|
|
135
|
+
|
|
136
|
+
let ownerRepo = repo;
|
|
137
|
+
if (!ownerRepo) {
|
|
138
|
+
const m = /github\.com\/([^/]+\/[^/]+)\/pull\//.exec(meta?.url || "");
|
|
139
|
+
ownerRepo = m ? m[1] : null;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
let inline = [];
|
|
143
|
+
if (ownerRepo && number) {
|
|
144
|
+
try {
|
|
145
|
+
const raw = await runGh([
|
|
146
|
+
"api",
|
|
147
|
+
`repos/${ownerRepo}/pulls/${number}/comments?per_page=100`,
|
|
148
|
+
]);
|
|
149
|
+
const parsed = JSON.parse(raw);
|
|
150
|
+
if (Array.isArray(parsed)) inline = parsed;
|
|
151
|
+
} catch {
|
|
152
|
+
// inline review-thread comments are best-effort; the JSON view above is
|
|
153
|
+
// the primary source.
|
|
154
|
+
inline = [];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return {
|
|
159
|
+
number,
|
|
160
|
+
title: meta?.title,
|
|
161
|
+
url: meta?.url,
|
|
162
|
+
reviews: Array.isArray(meta?.reviews) ? meta.reviews : [],
|
|
163
|
+
conversation: Array.isArray(meta?.comments) ? meta.comments : [],
|
|
164
|
+
inline,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const PR_INSTRUCTION =
|
|
169
|
+
"下面是该 PR 的评审意见(reviews / 评论 / 行内代码评论)。请逐条理解并处理:" +
|
|
170
|
+
"能直接改的就改代码,需要讨论或澄清的给出回应。";
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Expand a `/pr-comments …` line into turn input. Returns
|
|
174
|
+
* `{ number, count, block, text }`, or `null` when the line isn't the command.
|
|
175
|
+
* Throws on fetch failure (the REPL surfaces it and skips the turn).
|
|
176
|
+
*/
|
|
177
|
+
export async function expandPrComments(line, { deps } = {}) {
|
|
178
|
+
if (
|
|
179
|
+
!String(line || "")
|
|
180
|
+
.trim()
|
|
181
|
+
.startsWith("/pr-comments")
|
|
182
|
+
)
|
|
183
|
+
return null;
|
|
184
|
+
const { pr, repo } = parsePrCommentsArg(line);
|
|
185
|
+
const data = await fetchPrComments({ pr, repo, deps });
|
|
186
|
+
const block = formatPrComments(data);
|
|
187
|
+
const count =
|
|
188
|
+
(data.reviews?.length || 0) +
|
|
189
|
+
(data.conversation?.length || 0) +
|
|
190
|
+
(data.inline?.length || 0);
|
|
191
|
+
return {
|
|
192
|
+
number: data.number,
|
|
193
|
+
count,
|
|
194
|
+
block,
|
|
195
|
+
text: `${PR_INSTRUCTION}\n\n${block}`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/release-notes` REPL command — show the running cc version and point at the
|
|
3
|
+
* full changelog (Claude-Code parity). The npm package ships only bin/ + src/ +
|
|
4
|
+
* README, so rather than bundle a copy of the changelog that would go stale, we
|
|
5
|
+
* surface a reliable pointer to the canonical sources + how to upgrade.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const CHANGELOG_URL = "https://docs.chainlesschain.com/changelog";
|
|
9
|
+
export const RELEASES_URL =
|
|
10
|
+
"https://github.com/chainlesschain/chainlesschain/releases";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {object} info { version, installedVersion }
|
|
14
|
+
*/
|
|
15
|
+
export function formatReleaseNotes(info = {}) {
|
|
16
|
+
const lines = [`cc ${info.version || "?"}`];
|
|
17
|
+
if (info.installedVersion && info.installedVersion !== info.version) {
|
|
18
|
+
lines.push(` (disk ${info.installedVersion} — restart to apply)`);
|
|
19
|
+
}
|
|
20
|
+
lines.push(
|
|
21
|
+
"",
|
|
22
|
+
"What's new / 完整更新日志:",
|
|
23
|
+
` ${CHANGELOG_URL}`,
|
|
24
|
+
` ${RELEASES_URL}`,
|
|
25
|
+
"",
|
|
26
|
+
"检查更新 / 升级: cc update · npm i -g chainlesschain",
|
|
27
|
+
);
|
|
28
|
+
return lines.join("\n");
|
|
29
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/status` REPL command — a concise environment snapshot (Claude-Code parity,
|
|
3
|
+
* minus the account/billing bits cc doesn't have). Lighter than `/doctor`'s
|
|
4
|
+
* health check: just "where am I" — version, model, session, cwd, roots, and
|
|
5
|
+
* connection counts. Pure renderer; the REPL gathers the live info.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @param {object} info
|
|
10
|
+
* version, installedVersion, node, platform, provider, model, sessionId,
|
|
11
|
+
* messageCount, cwd, extraRoots, ideConnected, mcpServers, hookEvents
|
|
12
|
+
*/
|
|
13
|
+
export function formatStatus(info = {}) {
|
|
14
|
+
const ver =
|
|
15
|
+
info.installedVersion && info.installedVersion !== info.version
|
|
16
|
+
? `cc ${info.version} (disk ${info.installedVersion} — restart to apply)`
|
|
17
|
+
: `cc ${info.version || "?"}`;
|
|
18
|
+
const lines = [
|
|
19
|
+
`${ver} · node ${info.node || "?"} · ${info.platform || "?"}`,
|
|
20
|
+
` provider/model: ${info.provider || "?"} / ${info.model || "?"}`,
|
|
21
|
+
` session: ${info.sessionId || "(none)"} · messages: ${info.messageCount ?? 0}`,
|
|
22
|
+
` cwd: ${info.cwd || "?"}`,
|
|
23
|
+
];
|
|
24
|
+
if (info.extraRoots > 0) {
|
|
25
|
+
lines.push(` extra roots: +${info.extraRoots} (/add-dir)`);
|
|
26
|
+
}
|
|
27
|
+
lines.push(
|
|
28
|
+
` IDE: ${info.ideConnected ? "connected" : "none"} · ` +
|
|
29
|
+
`MCP: ${info.mcpServers || 0} server(s) · ` +
|
|
30
|
+
`hooks: ${info.hookEvents || 0} event(s)`,
|
|
31
|
+
);
|
|
32
|
+
return lines.join("\n");
|
|
33
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure renderer for the `/todos` REPL command — a user-facing view of the
|
|
3
|
+
* agent's session TODO list (the one it maintains with the `todo_write` tool).
|
|
4
|
+
* The data comes from todo-manager's getTodos(sessionId); this module only
|
|
5
|
+
* formats it, so it stays deterministic and unit-testable.
|
|
6
|
+
*
|
|
7
|
+
* The agent uses todos to track multi-step work; before this command they were
|
|
8
|
+
* only visible to the model. `/todos` surfaces them to the human, the way
|
|
9
|
+
* Claude Code's /todos view does.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** A short status badge for one todo item. */
|
|
13
|
+
export function todoStatusLabel(status) {
|
|
14
|
+
switch (status) {
|
|
15
|
+
case "in_progress":
|
|
16
|
+
return "▶ in progress";
|
|
17
|
+
case "completed":
|
|
18
|
+
return "✓ done";
|
|
19
|
+
case "cancelled":
|
|
20
|
+
return "✗ cancelled";
|
|
21
|
+
case "pending":
|
|
22
|
+
return "☐ pending";
|
|
23
|
+
default:
|
|
24
|
+
return status || "?";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Count items by status (tolerant of unknown statuses). */
|
|
29
|
+
export function summarize(todos) {
|
|
30
|
+
const counts = { pending: 0, in_progress: 0, completed: 0, cancelled: 0 };
|
|
31
|
+
for (const t of Array.isArray(todos) ? todos : []) {
|
|
32
|
+
if (counts[t?.status] !== undefined) counts[t.status] += 1;
|
|
33
|
+
}
|
|
34
|
+
return counts;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Render the session TODO list as a plain-text block.
|
|
39
|
+
* @param {Array} todos from getTodos(sessionId): [{ id, content, status }]
|
|
40
|
+
*/
|
|
41
|
+
export function formatTodos(todos) {
|
|
42
|
+
const list = Array.isArray(todos) ? todos : [];
|
|
43
|
+
if (list.length === 0) {
|
|
44
|
+
return (
|
|
45
|
+
"No TODOs for this session.\n" +
|
|
46
|
+
" (The agent tracks multi-step work with the todo_write tool — " +
|
|
47
|
+
"they appear here once it creates some.)"
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
const c = summarize(list);
|
|
51
|
+
const lines = [
|
|
52
|
+
`Session TODOs (${list.length}: ${c.completed} done, ` +
|
|
53
|
+
`${c.in_progress} in progress, ${c.pending} pending` +
|
|
54
|
+
(c.cancelled ? `, ${c.cancelled} cancelled` : "") +
|
|
55
|
+
`):`,
|
|
56
|
+
];
|
|
57
|
+
for (const t of list) {
|
|
58
|
+
const content = String(t?.content || "")
|
|
59
|
+
.replace(/\s+/g, " ")
|
|
60
|
+
.trim();
|
|
61
|
+
const short = content.length > 80 ? content.slice(0, 80) + "…" : content;
|
|
62
|
+
lines.push(` ${todoStatusLabel(t?.status)} ${short}`);
|
|
63
|
+
}
|
|
64
|
+
return lines.join("\n");
|
|
65
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as m,J as f,U as b,R as c,c as o,K as e,V as y,S as h,o as tt,b as V,r as x,P as d,Q as _,F as C,Z as B,$ as ht}from"./vendor-BvqAck49.js";import{s as xt,t as nt,_ as Lt,b as et,u as at,d as A}from"./index-DZU8HRgG.js";import{u as ot}from"./useFs-CkMOMjsE.js";import{s as St,am as Tt,f as Ct,d as Et,m as Ot,az as At,R as wt}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const it=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),st=Object.freeze(["low","medium","high","critical"]);function q(n,s=0){return typeof n=="number"&&Number.isFinite(n)?n:s}function Q(n){if(!n)return{noDb:!1,error:""};const s=xt(n),r=/Database not available/i.test(s);return{noDb:r,error:r?"Database not available":""}}function Rt(n,s=0){if(!n||typeof n!="object")return null;const r=n.id||"";if(!r)return null;let t=n.details;if(typeof t=="string"&&t)try{t=JSON.parse(t)}catch{}const L=typeof n.success=="boolean"?n.success:n.success===1||n.success==="1"||n.success===!0,M=n.audit_mtc_event_id??n.auditMtcEventId??null;return{key:r,id:r,eventType:String(n.event_type??n.eventType??"").toLowerCase(),operation:String(n.operation||""),actor:n.actor??"",target:n.target??"",details:t??null,riskLevel:String(n.risk_level??n.riskLevel??"low").toLowerCase(),ipAddress:n.ip_address??n.ipAddress??"",userAgent:n.user_agent??n.userAgent??"",success:L,errorMessage:n.error_message??n.errorMessage??"",createdAt:n.created_at??n.createdAt??"",auditMtcEventId:M,_idx:s}}function lt(n){const s=nt(n);return Array.isArray(s)?s.map(Rt).filter(Boolean):[]}const zt={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function rt(n){const s=JSON.parse(JSON.stringify(zt));for(const t of it)s.byEventType[t]=0;for(const t of st)s.byRiskLevel[t]=0;const r=nt(n);if(!r||typeof r!="object"||Array.isArray(r))return s;if(s.total=q(r.total,0),s.failures=q(r.failures,0),s.highRisk=q(r.highRisk,0),r.byEventType&&typeof r.byEventType=="object")for(const[t,L]of Object.entries(r.byEventType))typeof L=="number"&&Number.isFinite(L)&&(s.byEventType[t]=L);if(r.byRiskLevel&&typeof r.byRiskLevel=="object")for(const[t,L]of Object.entries(r.byRiskLevel))typeof L=="number"&&Number.isFinite(L)&&(s.byRiskLevel[t]=L);return s}function It(n){return!n||!n.auditMtcEventId?"none":"tracked"}function Mt(n){if(n==null||n==="")return"—";const s=String(n),r=s.includes(" ")&&!s.includes("T")?s.replace(" ","T")+"Z":s,t=new Date(r);return isNaN(t.getTime())?s:t.toLocaleString("zh-CN",{hour12:!1})}const Dt={__name:"Audit",setup(n,{expose:s}){s();const{t:r}=et(),t=at(),L=ot(),M=x(!1),w=x([]),E=x({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),F=x({noDb:!1,error:""}),R=x("events"),S=x(""),p=x(""),O=x(""),v=x(""),N=x(!1),z=x(!1),j=x(null),U=V(()=>[{title:r("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:r("audit.logColumns.operation"),key:"operation"},{title:r("audit.logColumns.actor"),key:"actor",width:"140px"},{title:r("audit.logColumns.target"),key:"target",width:"180px"},{title:r("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:r("audit.logColumns.success"),key:"success",width:"80px"},{title:r("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:r("audit.logColumns.action"),key:"action",width:"80px"}]),I=x({});function D(a){return a.auditMtcEventId&&I.value[a.id]||null}function J(a){const i=D(a);return i?i.state==="staging"?r("audit.mtc.stagingLabel"):i.state==="batched"?r("audit.mtc.batchedLabel",{batchId:i.batchId||"?"}):r("audit.mtc.unknownLabel"):r("audit.mtc.signedNotChecked")}function P(a){const i=D(a);return i?i.state==="staging"?"orange":i.state==="batched"?"green":"default":"blue"}function W(a){if(!a.auditMtcEventId)return"";const i=D(a),u=r("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return i?i.state==="staging"?r("audit.mtc.tooltipStaging",{base:u}):i.state==="batched"?r("audit.mtc.tooltipBatched",{base:u,batchId:i.batchId,treeHead:i.treeHeadId||""}):u:r("audit.mtc.tooltipNotChecked",{base:u})}async function k(a){if(!a.auditMtcEventId)return;const i=a.auditMtcEventId.replace(/"/g,'\\"');try{const u=await t.execute(`audit mtc reconcile-check "${i}" --json`,8e3);let T;try{T=JSON.parse(u.output.trim())}catch{const $=u.output.match(/\{[\s\S]*\}/);T=$?JSON.parse($[0]):null}if(!T){A.warning(r("audit.mtc.noJson"));return}const kt=T.found?{state:"batched",batchId:T.batchId,treeHeadId:T.treeHeadId}:T.staging?{state:"staging"}:{state:"unknown"};I.value={...I.value,[a.id]:kt}}catch(u){A.error(r("audit.mtc.checkFailed",{err:u?.message||u}))}}const Y=V(()=>E.value.total?(E.value.total-E.value.failures)/E.value.total*100:100),H=V(()=>!!(p.value||O.value||v.value||N.value)),l=V(()=>{let a=w.value;if(O.value&&(a=a.filter(i=>i.eventType===O.value)),v.value&&(a=a.filter(i=>i.riskLevel===v.value)),N.value&&(a=a.filter(i=>!i.success)),p.value){const i=p.value.toLowerCase();a=a.filter(u=>(u.operation||"").toLowerCase().includes(i)||(u.actor||"").toLowerCase().includes(i)||(u.target||"").toLowerCase().includes(i))}return a});function g(a){const i=`audit.type.${a}`,u=r(i);return u===i?a:u}function Z(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function ct(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function dt(a){const i=`audit.risk.${a}`,u=r(i);return u===i?a:u}function ut(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function ft(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function yt(a,i){return i?Math.round(a/i*100):0}function gt(a,i){return a?a.length<=i?a:a.slice(0,i)+"…":""}function _t(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let K=null;function mt(){clearTimeout(K),K=setTimeout(()=>{p.value=S.value.trim()},300)}function bt(){p.value=S.value.trim()}async function G(){M.value=!0,F.value={noDb:!1,error:""};try{const[a,i]=await Promise.all([t.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),t.execute("audit stats --json",8e3).catch(()=>({output:""}))]),u=[a,i].map(T=>Q(T.output)).find(T=>T.noDb);u&&(F.value=u),w.value=lt(a.output),E.value=rt(i.output)}catch(a){A.error(r("audit.messages.loadFailed",{err:a?.message||a}))}finally{M.value=!1}}function vt(a){j.value=a,z.value=!0}async function pt(){try{const{output:a}=await t.execute("audit export -f json -n 10000",2e4);if(Q(a).noDb){A.error(r("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){A.error(r("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const u=await L.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(u.canceled)return;A.success(u.path?r("audit.messages.exportOk",{path:u.path}):r("audit.messages.exportOkDefault"))}catch(a){A.error(r("audit.messages.exportFailed",{err:a?.message||a}))}}tt(G);const X={t:r,ws:t,fs:L,loading:M,logs:w,stats:E,errorState:F,activeTab:R,searchInput:S,searchTerm:p,typeFilter:O,riskFilter:v,failuresOnly:N,showDetailsModal:z,currentLog:j,logColumns:U,mtcStatusCache:I,getMtcStatusEntry:D,getMtcLabel:J,getMtcColor:P,getMtcTooltip:W,checkMtcStatus:k,successRate:Y,hasFilters:H,filteredLogs:l,typeLabel:g,typeColor:Z,typeBarColor:ct,riskLabel:dt,riskColor:ut,riskBarColor:ft,pctOfTotal:yt,truncate:gt,formatDetails:_t,get searchDebounce(){return K},set searchDebounce(a){K=a},onSearchInput:mt,runSearch:bt,loadAll:G,viewLogDetails:vt,exportJson:pt,ref:x,computed:V,onMounted:tt,get useI18n(){return et},get ReloadOutlined(){return wt},get DownloadOutlined(){return At},get FileSearchOutlined(){return Ot},get CloseCircleOutlined(){return Et},get CheckCircleOutlined(){return Ct},get WarningOutlined(){return Tt},get AlertOutlined(){return St},get message(){return A},get useWsStore(){return at},get useFs(){return ot},get parseLogs(){return lt},get parseStats(){return rt},get detectAuditError(){return Q},get formatAuditTime(){return Mt},get classifyMtcStatus(){return It},get EVENT_TYPES(){return it},get RISK_LEVELS(){return st}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Ft={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Nt={class:"page-title"},jt={class:"page-sub"},Vt={class:"type-name"},Bt={class:"type-count"},Jt={class:"filter-bar"},Pt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Kt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},Ut={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},Wt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Yt={key:1,style:{color:"var(--text-muted)"}},Ht={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Zt={key:1,style:{color:"var(--text-muted)"}},qt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Qt={key:0,style:{"padding-top":"8px"}},Gt={style:{"font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},$t={style:{"font-family":"monospace"}},te={key:0,style:{"font-family":"monospace","font-size":"12px"}},ee={key:1,style:{color:"var(--text-muted)"}},ae={key:0,style:{"font-family":"monospace","font-size":"12px"}},oe={key:1,style:{color:"var(--text-muted)"}},le={style:{"font-family":"monospace","font-size":"12px"}},re={style:{"font-family":"monospace","font-size":"11px"}},ne={style:{color:"#ff4d4f"}},ie={class:"details-pre"};function se(n,s,r,t,L,M){const w=m("a-button"),E=m("a-space"),F=m("a-alert"),R=m("a-statistic"),S=m("a-card"),p=m("a-col"),O=m("a-row"),v=m("a-tag"),N=m("a-input-search"),z=m("a-radio-button"),j=m("a-radio-group"),U=m("a-checkbox"),I=m("a-tooltip"),D=m("a-table"),J=m("a-tab-pane"),P=m("a-progress"),W=m("a-tabs"),k=m("a-descriptions-item"),Y=m("a-descriptions"),H=m("a-modal");return d(),f("div",null,[b("div",Ft,[b("div",null,[b("h2",Nt,c(t.t("audit.title")),1),b("p",jt,c(t.t("audit.subtitle")),1)]),o(E,null,{default:e(()=>[o(w,{loading:t.loading,onClick:t.loadAll},{icon:e(()=>[o(t.ReloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.refresh")),1)]),_:1},8,["loading"]),o(w,{onClick:t.exportJson},{icon:e(()=>[o(t.DownloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.exportJson")),1)]),_:1})]),_:1})]),y(" noDb banner "),t.errorState.noDb?(d(),h(F,{key:0,type:"info","show-icon":"",message:t.t("audit.noDb.message"),description:t.t("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("v-if",!0),y(" Stat cards "),o(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:e(()=>[o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.total"),value:t.stats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:e(()=>[o(t.FileSearchOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.failures"),value:t.stats.failures,"value-style":{color:t.stats.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.CloseCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.highRisk"),value:t.stats.highRisk,"value-style":{color:t.stats.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.critical"),value:t.stats.byRiskLevel.critical||0,"value-style":{color:(t.stats.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:e(()=>[o(t.AlertOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:24,sm:8,lg:4},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.successRate"),value:t.successRate,suffix:"%",precision:1,"value-style":{color:t.successRate>=95?"#52c41a":t.successRate>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:e(()=>[o(t.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),y(" Event type catalogue "),o(S,{title:t.t("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:e(()=>[o(O,{gutter:[12,12]},{default:e(()=>[(d(!0),f(C,null,B(t.EVENT_TYPES,l=>(d(),h(p,{key:l,xs:12,sm:8,lg:3},{default:e(()=>[b("div",{class:"type-pill",style:ht({borderLeftColor:t.typeBarColor(l)})},[o(v,{color:t.typeColor(l),style:{"font-family":"monospace","font-size":"11px"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),b("div",Vt,c(t.typeLabel(l)),1),b("div",Bt,c(t.stats.byEventType[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),y(" Tabs "),o(W,{activeKey:t.activeTab,"onUpdate:activeKey":s[4]||(s[4]=l=>t.activeTab=l),class:"audit-tabs"},{default:e(()=>[y(" ── Events tab ──────────────────────────────────────────── "),o(J,{key:"events",tab:t.t("audit.tabs.events")},{default:e(()=>[b("div",Jt,[o(N,{value:t.searchInput,"onUpdate:value":s[0]||(s[0]=l=>t.searchInput=l),placeholder:t.t("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:t.runSearch,onInput:t.onSearchInput},null,8,["value","placeholder"]),o(j,{value:t.typeFilter,"onUpdate:value":s[1]||(s[1]=l=>t.typeFilter=l),size:"small","button-style":"solid"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allTypes")),1)]),_:1}),(d(!0),f(C,null,B(t.EVENT_TYPES,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(j,{value:t.riskFilter,"onUpdate:value":s[2]||(s[2]=l=>t.riskFilter=l),size:"small"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allRisks")),1)]),_:1}),(d(!0),f(C,null,B(t.RISK_LEVELS,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(U,{checked:t.failuresOnly,"onUpdate:checked":s[3]||(s[3]=l=>t.failuresOnly=l)},{default:e(()=>[_(c(t.t("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),o(D,{columns:t.logColumns,"data-source":t.filteredLogs,pagination:{pageSize:20,showTotal:l=>t.t("audit.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:e(({column:l,record:g})=>[l.key==="createdAt"?(d(),f("span",Pt,c(t.formatAuditTime(g.createdAt)),1)):y("v-if",!0),l.key==="eventType"?(d(),h(v,{key:1,color:t.typeColor(g.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(g.eventType),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="operation"?(d(),f(C,{key:2},[b("span",Kt,c(g.operation),1),g.errorMessage?(d(),f("div",Ut,c(g.errorMessage),1)):y("v-if",!0)],64)):y("v-if",!0),l.key==="actor"?(d(),f(C,{key:3},[g.actor?(d(),f("span",Wt,c(g.actor),1)):(d(),f("span",Yt,"—"))],64)):y("v-if",!0),l.key==="target"?(d(),f(C,{key:4},[g.target?(d(),f("span",Ht,c(t.truncate(g.target,32)),1)):(d(),f("span",Zt,"—"))],64)):y("v-if",!0),l.key==="riskLevel"?(d(),h(v,{key:5,color:t.riskColor(g.riskLevel)},{default:e(()=>[_(c(t.riskLabel(g.riskLevel)),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="success"?(d(),h(v,{key:6,color:g.success?"green":"red"},{default:e(()=>[_(c(g.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="mtc"?(d(),f(C,{key:7},[t.classifyMtcStatus(g)==="none"?(d(),h(I,{key:0,title:t.t("audit.mtc.noneTooltip")},{default:e(()=>[o(v,{color:"default"},{default:e(()=>[...s[6]||(s[6]=[_("—",-1)])]),_:1})]),_:1},8,["title"])):(d(),h(I,{key:1,title:t.getMtcTooltip(g)},{default:e(()=>[o(v,{color:t.getMtcColor(g),style:{cursor:"pointer"},onClick:Z=>t.checkMtcStatus(g)},{default:e(()=>[_(c(t.getMtcLabel(g)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):y("v-if",!0),l.key==="action"?(d(),h(w,{key:8,size:"small",type:"link",onClick:Z=>t.viewLogDetails(g)},{default:e(()=>[_(c(t.t("audit.rowAction.details")),1)]),_:1},8,["onClick"])):y("v-if",!0)]),emptyText:e(()=>[b("div",qt,[o(t.FileSearchOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(t.hasFilters?t.t("audit.empty.filtered"):t.t("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),y(" ── Breakdown tab ───────────────────────────────────────── "),o(J,{key:"breakdown",tab:t.t("audit.tabs.breakdown")},{default:e(()=>[o(O,{gutter:[16,16]},{default:e(()=>[o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(C,null,B(t.EVENT_TYPES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.typeColor(l),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byEventType[l]||0,t.stats.total),"stroke-color":t.typeBarColor(l),format:()=>`${t.stats.byEventType[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(C,null,B(t.RISK_LEVELS,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.riskColor(l),style:{"min-width":"80px","text-align":"center"}},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byRiskLevel[l]||0,t.stats.total),"stroke-color":t.riskBarColor(l),format:()=>`${t.stats.byRiskLevel[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),y(" ── Event details modal ─────────────────────────────────── "),o(H,{open:t.showDetailsModal,"onUpdate:open":s[5]||(s[5]=l=>t.showDetailsModal=l),title:t.t("audit.details.title",{id:t.currentLog?.id?.slice(0,8)||""}),width:720,footer:null},{default:e(()=>[t.currentLog?(d(),f("div",Qt,[o(Y,{column:2,size:"small",bordered:""},{default:e(()=>[o(k,{label:t.t("audit.details.id"),span:2},{default:e(()=>[b("span",Gt,c(t.currentLog.id),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.eventType")},{default:e(()=>[o(v,{color:t.typeColor(t.currentLog.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(t.currentLog.eventType),1)]),_:1},8,["color"]),b("span",Xt,c(t.typeLabel(t.currentLog.eventType)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.riskLevel")},{default:e(()=>[o(v,{color:t.riskColor(t.currentLog.riskLevel)},{default:e(()=>[_(c(t.riskLabel(t.currentLog.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.operation"),span:2},{default:e(()=>[b("span",$t,c(t.currentLog.operation),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.status")},{default:e(()=>[o(v,{color:t.currentLog.success?"green":"red"},{default:e(()=>[_(c(t.currentLog.success?t.t("audit.details.success"):t.t("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.time")},{default:e(()=>[_(c(t.formatAuditTime(t.currentLog.createdAt)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.actor")},{default:e(()=>[t.currentLog.actor?(d(),f("span",te,c(t.currentLog.actor),1)):(d(),f("span",ee,"—"))]),_:1},8,["label"]),o(k,{label:t.t("audit.details.target")},{default:e(()=>[t.currentLog.target?(d(),f("span",ae,c(t.currentLog.target),1)):(d(),f("span",oe,"—"))]),_:1},8,["label"]),t.currentLog.ipAddress?(d(),h(k,{key:0,label:t.t("audit.details.ip")},{default:e(()=>[b("span",le,c(t.currentLog.ipAddress),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.userAgent?(d(),h(k,{key:1,label:t.t("audit.details.userAgent")},{default:e(()=>[b("span",re,c(t.currentLog.userAgent),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.errorMessage?(d(),h(k,{key:2,label:t.t("audit.details.errorMessage"),span:2},{default:e(()=>[b("span",ne,c(t.currentLog.errorMessage),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.details?(d(),h(k,{key:3,label:t.t("audit.details.details"),span:2},{default:e(()=>[b("pre",ie,c(t.formatDetails(t.currentLog.details)),1)]),_:1},8,["label"])):y("v-if",!0)]),_:1})])):y("v-if",!0)]),_:1},8,["open","title"])])}const ge=Lt(Dt,[["render",se],["__scopeId","data-v-be9f4fc3"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/views/Audit.vue"]]);export{ge as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as k,J as d,U as b,R as l,c as t,K as n,o as fe,b as Q,r as c,P as s,Q as v,V as r,S as _,F as Oe}from"./vendor-BvqAck49.js";import{_ as Ce,b as ye,u as be,d as ie}from"./index-DZU8HRgG.js";import{u as ke}from"./useFs-CkMOMjsE.js";import{az as ze,R as Pe,aQ as Be,as as Le,aS as Te,S as Ae,z as Fe}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const ce=["B","KB","MB","GB","TB","PB","EB"];function Me(F){if(F==null||isNaN(F))return"-";const f=Number(F);if(f<0)return"-";if(f===0)return"0 B";let o=Math.floor(Math.log(f)/Math.log(1024));return o<0&&(o=0),o>=ce.length&&(o=ce.length-1),(f/Math.pow(1024,o)).toFixed(o>0?1:0)+" "+ce[o]}const Re={__name:"Backup",setup(F,{expose:f}){f();const{t:o}=ye(),e=be(),W=ke(),U=c(!1),g=c("backup"),C=c(!1),x=c(!1),B=c(!1),h=c(""),y=c([]),w=c(""),M=Q(()=>[{title:o("backup.backupColumns.id"),key:"id"},{title:o("backup.backupColumns.size"),key:"size",width:120},{title:o("backup.backupColumns.createdAt"),key:"createdAt"},{title:o("backup.backupColumns.action"),key:"action",width:100}]);async function m(){x.value=!0,h.value="";try{const{output:a}=await e.execute("backup list --json",15e3),i=A(a);Array.isArray(i)?y.value=i:i&&Array.isArray(i.backups)?y.value=i.backups:(y.value=[],a&&a.trim()&&(w.value=a))}catch(a){h.value=o("backup.messages.loadBackupsFailed",{err:a.message})}finally{x.value=!1}}async function S(){B.value=!0,w.value="",h.value="";try{const{output:a}=await e.execute("backup create --json",3e4);w.value=a||o("backup.backup.createDefaultMessage"),await m()}catch(a){w.value=o("backup.messages.createBackupFailed",{err:a.message})}finally{B.value=!1}}const R=c(!1),L=c(!1),T=c(null),z=c("");function G(a){T.value=a,z.value="",R.value=!0}async function u(){if(T.value){L.value=!0,z.value="";try{const{output:a}=await e.execute(`backup restore ${T.value.id}`,6e4);z.value=a||o("backup.backup.restoreDefaultMessage")}catch(a){z.value=o("backup.messages.restoreFailed",{err:a.message})}finally{L.value=!1}}}const p=c(!1),D=c(""),I=c(!1),N=c(""),q=c(0),X=c(""),P=c(""),Y=c(!1),Z=c(!1),E=c([]),ve=Q(()=>[{title:o("backup.conflictColumns.path"),key:"path"},{title:o("backup.conflictColumns.type"),key:"type",width:120}]);async function j(){p.value=!0,D.value="";try{const{output:a}=await e.execute("sync status --json",15e3),i=A(a);i?(I.value=i.online||i.synced||i.status==="online"||!1,N.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced"),q.value=i.pending??i.pendingChanges??0,X.value=i.lastSync||i.lastSyncTime||""):se(a)}catch(a){D.value=o("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function se(a){if(!a){N.value=o("backup.sync.unknown");return}I.value=/synced|online|up.to.date/i.test(a),N.value=I.value?o("backup.sync.synced"):o("backup.sync.notSynced");const i=a.match(/pending[:\s]+(\d+)/i);q.value=i?parseInt(i[1]):0;const O=a.match(/last[:\s]+(.+)/i);O&&(X.value=O[1].trim())}async function ge(){Y.value=!0,P.value="";try{const{output:a}=await e.execute("sync push",3e4);P.value=a||o("backup.sync.pushDefaultMessage"),await j()}catch(a){P.value=o("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function me(){Z.value=!0,P.value="";try{const{output:a}=await e.execute("sync pull",3e4);P.value=a||o("backup.sync.pullDefaultMessage"),await j()}catch(a){P.value=o("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function re(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),i=A(a);Array.isArray(i)?E.value=i:i&&Array.isArray(i.conflicts)?E.value=i.conflicts:E.value=[]}catch{E.value=[]}}const $=c(!1),ee=c(""),ae=c(!1),te=c(""),ne=c(!1),H=c(""),J=c([]),_e=Q(()=>[{title:o("backup.pinColumns.cid"),key:"cid"},{title:o("backup.pinColumns.name"),key:"name"},{title:o("backup.pinColumns.size"),key:"size",width:120},{title:o("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:o("backup.pinColumns.action"),key:"action",width:120}]);async function ue(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),i=A(a);if(i)ae.value=i.online||i.status==="online"||i.connected||!1,te.value=i.peerId||i.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const O=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=O?O[1]:""}}catch(a){ee.value=o("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function K(){ne.value=!0,H.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),i=A(a);Array.isArray(i)?J.value=i:i&&Array.isArray(i.pins)?J.value=i.pins:J.value=[]}catch(a){H.value=o("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const xe=c(!1),oe=c(!1),le=c(""),V=c("");async function he(){if(le.value.trim()){oe.value=!0,V.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);V.value=a||o("backup.ipfs.pinDefaultSuccess"),await K()}catch(a){V.value=o("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function we(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await K()}catch(i){H.value=o("backup.messages.unpinFailed",{err:i.message})}}function A(a){if(!a||!a.trim())return null;try{return JSON.parse(a.trim())}catch{const O=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(O)try{return JSON.parse(O[0])}catch{}return null}}async function Se(){if(y.value.length){U.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:y.value.length,backups:y.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?o("backup.messages.exportOk",{count:y.value.length,path:a.path}):o("backup.messages.exportOkDefault"))}catch(a){ie.error(o("backup.messages.exportFailed",{err:a.message||a}))}finally{U.value=!1}}}async function de(){C.value=!0;try{await Promise.all([m(),j(),re(),ue(),K()])}finally{C.value=!1}}fe(de);const pe={t:o,ws:e,fs:W,exportingList:U,activeTab:g,refreshing:C,backupLoading:x,backupCreating:B,backupError:h,backups:y,lastBackupResult:w,backupColumns:M,loadBackups:m,createBackup:S,showRestoreModal:R,restoreLoading:L,restoreTarget:T,restoreResult:z,confirmRestore:G,doRestore:u,syncLoading:p,syncError:D,syncOnline:I,syncStatusText:N,syncPending:q,lastSyncTime:X,syncOutput:P,pushLoading:Y,pullLoading:Z,conflicts:E,conflictColumns:ve,loadSync:j,parseSyncStatusText:se,syncPush:ge,syncPull:me,loadConflicts:re,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:H,pins:J,pinColumns:_e,loadIpfsStatus:ue,loadPins:K,showPinModal:xe,pinLoading:oe,pinFilePath:le,pinResult:V,doPin:he,unpinFile:we,safeParseJson:A,exportBackupList:Se,refreshAll:de,ref:c,computed:Q,onMounted:fe,get useI18n(){return ye},get CloudUploadOutlined(){return Fe},get SyncOutlined(){return Ae},get HddOutlined(){return Te},get PlusOutlined(){return Le},get DeleteOutlined(){return Be},get ReloadOutlined(){return Pe},get DownloadOutlined(){return ze},get message(){return ie},get useWsStore(){return be},get useFs(){return ke},get formatSize(){return Me}};return Object.defineProperty(pe,"__isScriptSetup",{enumerable:!1,value:!0}),pe}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Ee={class:"page-sub"},Ue={key:0,style:{"text-align":"center",padding:"30px"}},Ne={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},je={key:1},He={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:3,style:{"margin-top":"16px"}},Ke={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ve={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Qe={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},We={style:{color:"var(--text-secondary)"}},Ge={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},qe={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},$e={key:0,style:{"text-align":"center",padding:"30px"}},ea={key:0,style:{"margin-bottom":"16px"}},aa={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ta={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},na={key:0,style:{"font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},la={key:0,style:{"text-align":"center",padding:"30px"}},ia={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ra={key:1},ua={key:2},da={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},pa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},fa={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ya={key:0,style:{"margin-top":"12px"}},ba={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function ka(F,f,o,e,W,U){const g=k("a-button"),C=k("a-space"),x=k("a-spin"),B=k("a-empty"),h=k("a-table"),y=k("a-card"),w=k("a-modal"),M=k("a-tab-pane"),m=k("a-statistic"),S=k("a-col"),R=k("a-row"),L=k("a-tag"),T=k("a-popconfirm"),z=k("a-input"),G=k("a-tabs");return s(),d("div",null,[b("div",De,[b("div",null,[b("h2",Ie,l(e.t("backup.title")),1),b("p",Ee,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(G,{activeKey:e.activeTab,"onUpdate:activeKey":f[4]||(f[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(M,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),v(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(C,null,{default:n(()=>[t(e.CloudUploadOutlined),b("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(C,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(s(),d("div",Ue,[t(x)])):e.backups.length===0&&!e.lastBackupResult?(s(),_(B,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(s(),_(h,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(s(),d("span",Ne,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(s(),d("span",je,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(s(),d("span",He,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),_(g,{key:3,size:"small",type:"link",onClick:D=>e.confirmRestore(p)},{default:n(()=>[v(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(s(),d("div",Je,[b("div",Ke,l(e.t("backup.backup.lastResultLabel")),1),b("pre",Ve,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(s(),d("div",Qe,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(w,{open:e.showRestoreModal,"onUpdate:open":f[0]||(f[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[b("p",We,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(s(),d("div",Ge,[b("div",null,[b("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),f[5]||(f[5]=v()),b("span",qe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(s(),d("div",Xe,[b("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),v(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(s(),d("div",Ye,[b("pre",Ze,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(M,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),v(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(s(),d("div",$e,[t(x)])):(s(),d(Oe,{key:1},[t(R,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(C,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[v(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(s(),d("div",ea,[b("div",aa,l(e.t("backup.sync.outputLabel")),1),b("pre",ta,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(s(),_(y,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(h,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(s(),d("span",na,l(p.path),1)):r("v-if",!0),u.key==="type"?(s(),_(L,{key:1,color:"red"},{default:n(()=>[v(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(s(),d("div",oa,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(M,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),v(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(y,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(L,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[v(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(s(),d("div",la,[t(x)])):(s(),_(R,{key:1,gutter:[16,16]},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(y,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(s(),d("div",ia,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(y,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:f[1]||(f[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[v(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(s(),d("div",ca,[t(x)])):e.pins.length===0?(s(),_(B,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(s(),_(h,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(s(),d("span",sa,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(s(),d("span",ra,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(s(),d("span",ua,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(s(),d("span",da,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),_(T,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:D=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),v(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(s(),d("div",pa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(w,{open:e.showPinModal,"onUpdate:open":f[3]||(f[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[b("div",fa,l(e.t("backup.ipfs.pinModalIntro")),1),t(z,{value:e.pinFilePath,"onUpdate:value":f[2]||(f[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(s(),d("div",ya,[b("pre",ba,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const wa=Ce(Re,[["render",ka],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/views/Backup.vue"]]);export{wa as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-BvqAck49.js";import{_ as k}from"./index-DZU8HRgG.js";import"./icons-DP3uiYxy.js";const T={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:i}){i();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),d=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:d,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},N={class:"bubble"},D={class:"meta"},M={class:"actor"},R={class:"time"},V={class:"body"};function q(c,i,t,r,d,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",N,[n("div",D,[n("span",M,a(r.actorLabel),1),n("span",R,a(r.formattedTime),1)]),n("div",V,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const j=k(T,[["render",q],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{E as G,r as T,I as k,J as f,U as l,R as o,c as s,K as a,S as z,V as $,N as q,o as U,x as V,b as w,P as m,Q as v,$ as N,F as E,Z as F}from"./vendor-BvqAck49.js";import{u as A,s as J,_ as W}from"./index-DZU8HRgG.js";import{u as B}from"./chat-D-OyV5Td.js";import{ad as K,ae as Q,a4 as Z,h as X,a7 as Y,ab as x,a9 as ee,af as te,a8 as se,R as ae}from"./icons-DP3uiYxy.js";function oe(e){const n=J(e);if(!n)return null;try{return JSON.parse(n)}catch{}const c=n.match(/\[[\s\S]*\]|\{[\s\S]*\}/);if(!c)return null;try{return JSON.parse(c[0])}catch{return null}}function le(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const H=G("dashboard",()=>{const e=T(!1),n=T(!1),c=T({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),t=T(""),O=T(le()),h=T({windowPreset:"all",provider:"",model:""});let b=null;function S(i=A()){b||(b=i.onRuntimeEvent(u=>{u.type==="compression:summary"?P(u.payload?.summary||{}):u.type==="session:start"?c.value.sessionCount=(c.value.sessionCount||0)+1:u.type==="session:end"&&(c.value.sessionCount=Math.max(0,(c.value.sessionCount||0)-1))}))}function y(){b&&(b(),b=null)}function P(i){O.value={...O.value,...i||{}}}function d(i){return i==="1h"?3600*1e3:i==="24h"?1440*60*1e3:i==="7d"?10080*60*1e3:null}function _(i){c.value.appRunning=i.includes("Desktop app running"),c.value.setupDone=i.includes("Setup completed");const u=i.match(/Edition:\s+(\S+)/i);u&&(c.value.edition=u[1]);const g=i.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(g)c.value.activeLlm=g[1],c.value.activeModel=g[2];else{const r=i.match(/LLM:\s+(\S+)/i);r&&(c.value.activeLlm=r[1])}}async function D(){const i=A();S(i),n.value=!0;const u={type:"compression-stats",windowMs:d(h.value.windowPreset)};h.value.provider&&(u.provider=h.value.provider),h.value.model&&(u.model=h.value.model);try{const g=await i.sendRaw(u,1e4);P(g.summary||{})}catch{}finally{n.value=!1}}async function p(){const i=A();S(i),e.value=!0,c.value.wsStatus=i.status,t.value="";try{const[u,g]=await Promise.allSettled([i.execute("status",15e3),i.listSessions()]);if(u.status==="fulfilled"){const r=u.value.output;t.value=r.split(`
|
|
2
|
-
`).slice(0,20).join(`
|
|
3
|
-
`),_(r)}g.status==="fulfilled"&&(c.value.sessionCount=g.value.length),Promise.allSettled([i.execute("skill sources --json",15e3),i.execute("llm providers",15e3)]).then(([r,C])=>{if(r.status==="fulfilled"){const R=oe(r.value.output);Array.isArray(R)&&(c.value.skillCount=R.reduce((j,L)=>j+(typeof L?.count=="number"?L.count:0),0))}if(C.status==="fulfilled"){const j=C.value.output.match(/active[:\s]+(\S+)/i);j&&!c.value.activeLlm&&(c.value.activeLlm=j[1])}}),i.sendRaw({type:"mcp.list_tools"},5e3).then(r=>{const R=(r?.result??r)?.servers;c.value.mcpCount=Array.isArray(R)?R.length:0}).catch(()=>{c.value.mcpCount=0}),await D()}catch{}finally{e.value=!1}}return{loading:e,compressionLoading:n,stats:c,statusLog:t,compression:O,telemetryFilters:h,ensureRuntimeSubscription:S,stopRuntimeSubscription:y,refresh:p,refreshCompression:D,applyCompressionSummary:P,toWindowMs:d}}),re={__name:"Dashboard",setup(e,{expose:n}){n();const c=q(),t=A(),O=B(),h=H(),b=window.__CC_CONFIG__||{},S=w(()=>b.mode==="project"),y="v5.0.3.133",P=w(()=>t.status),d=w(()=>h.loading),_=w(()=>h.statusLog),D=w(()=>h.telemetryFilters),p=w(()=>h.compression),i=w(()=>h.stats),u=w(()=>Object.entries(p.value.variantDistribution||{})),g=w(()=>p.value.providerDistribution||[]),r=w(()=>p.value.modelDistribution||[]);async function C(){await h.refresh()}async function R(){await h.refreshCompression()}function j(I){return`${((I||0)*100).toFixed(1)}%`}async function L(){await O.createSession("agent"),c.push("/chat")}U(()=>{h.ensureRuntimeSubscription(t),setTimeout(C,300)}),V(()=>{h.stopRuntimeSubscription()});const M={router:c,ws:t,chatStore:O,dashboardStore:h,cfg:b,isProject:S,PRODUCT_VERSION:y,wsStatus:P,loading:d,statusLog:_,telemetryFilters:D,compression:p,stats:i,variantEntries:u,providerEntries:g,modelEntries:r,refresh:C,refreshCompression:R,formatPercent:j,newAgentSession:L,computed:w,onMounted:U,onUnmounted:V,get useRouter(){return q},get ReloadOutlined(){return ae},get ApiOutlined(){return se},get RobotOutlined(){return te},get AppstoreOutlined(){return ee},get MessageOutlined(){return x},get FolderOutlined(){return Y},get DesktopOutlined(){return X},get FileTextOutlined(){return Z},get ToolOutlined(){return Q},get SettingOutlined(){return K},get useWsStore(){return A},get useChatStore(){return B},get useDashboardStore(){return H}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}},ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ie={class:"page-title"},de={class:"page-sub"},ce={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},ue={style:{color:"#91caff","font-weight":"600"}},me={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},fe={class:"stat-header"},ve={class:"stat-label"},he={class:"stat-sub"},be={class:"stat-header"},ye={class:"stat-label"},pe={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},_e={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ge={class:"stat-header"},ke={class:"stat-label"},we={class:"stat-value",style:{color:"#1677ff"}},Se={class:"stat-sub"},Ce={class:"stat-header"},Re={class:"stat-label"},Oe={class:"stat-value",style:{color:"#c084fc"}},Pe={class:"stat-sub"},De={class:"stat-header"},je={class:"stat-label"},Te={class:"stat-sub"},Ee={class:"stat-header"},Fe={class:"stat-label"},ze={class:"stat-value",style:{color:"#13c2c2"}},Ae={class:"stat-sub"},Le={class:"stat-header"},$e={class:"stat-label"},Ne={class:"stat-value",style:{color:"#faad14"}},Me={class:"stat-sub"},qe={class:"status-log"},Ue={class:"telemetry-filter"},Ve={class:"telemetry-filter-label"},Be={class:"telemetry-filter"},He={class:"telemetry-filter-label"},Ie={class:"telemetry-filter"},Ge={class:"telemetry-filter-label"},Je={class:"telemetry-card"},We={class:"telemetry-label"},Ke={class:"telemetry-value"},Qe={class:"telemetry-sub"},Ze={class:"telemetry-card"},Xe={class:"telemetry-label"},Ye={class:"telemetry-value"},xe={class:"telemetry-sub"},et={class:"telemetry-card"},tt={class:"telemetry-label"},st={class:"telemetry-value"},at={class:"telemetry-sub"},ot={class:"telemetry-section"},lt={class:"telemetry-section-title"},rt={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},it={class:"telemetry-section"},dt={class:"telemetry-section-title"},ct={key:0,class:"telemetry-empty"},ut={key:1,class:"telemetry-list"},mt={class:"telemetry-section"},ft={class:"telemetry-section-title"},vt={key:0,class:"telemetry-empty"},ht={key:1,class:"telemetry-list"},bt={class:"telemetry-section"},yt={class:"telemetry-section-title"},pt={key:0,class:"telemetry-empty"},_t={key:1,class:"telemetry-list"},gt={style:{color:"#91caff"}},kt={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},wt={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},St={style:{color:"var(--text-muted)"}};function Ct(e,n,c,t,O,h){const b=k("a-button"),S=k("a-tag"),y=k("a-card"),P=k("a-badge"),d=k("a-col"),_=k("a-row"),D=k("a-space"),p=k("a-select-option"),i=k("a-select"),u=k("a-descriptions-item"),g=k("a-descriptions");return m(),f("div",null,[l("div",ne,[l("div",null,[l("h2",ie,o(e.$t("dashboard.title")),1),l("p",de,o(t.isProject?e.$t("dashboard.subProject",{name:t.cfg.projectName||e.$t("dashboard.unnamedProject")}):e.$t("dashboard.subGlobal")),1)]),s(b,{type:"primary",ghost:"",loading:t.loading,onClick:t.refresh},{icon:a(()=>[s(t.ReloadOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.refresh")),1)]),_:1},8,["loading"])]),t.isProject?(m(),z(y,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:a(()=>[l("div",ce,[s(t.FolderOutlined,{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",ue,o(t.cfg.projectName||e.$t("dashboard.projectBanner.fallbackName")),1),l("div",me,o(t.cfg.projectRoot),1)]),s(S,{color:"blue",style:{"margin-left":"auto"}},{default:a(()=>[v(o(e.$t("dashboard.projectBanner.tag")),1)]),_:1})])]),_:1})):$("v-if",!0),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:a(()=>[s(d,{xs:24,sm:12,lg:6},{default:a(()=>[s(y,{class:"stat-card gateway-card",size:"small"},{default:a(()=>[l("div",fe,[l("span",ve,o(e.$t("dashboard.stats.wsGateway")),1),s(P,{status:t.wsStatus==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:N({color:t.wsStatus==="connected"?"#52c41a":"#888"})},o(t.wsStatus==="connected"?e.$t("dashboard.stats.wsRunning"):e.$t("dashboard.stats.wsDisconnected")),5),l("div",he,o(e.$t("dashboard.stats.wsPortLine",{port:t.cfg.wsPort||18800,host:t.cfg.wsHost||"127.0.0.1"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:a(()=>[s(y,{class:"stat-card",size:"small"},{default:a(()=>[l("div",be,[l("span",ye,o(e.$t("dashboard.stats.currentLlm")),1),s(t.RobotOutlined,{style:{color:"#1677ff"}})]),l("div",pe,o(t.stats.activeLlm||e.$t("dashboard.stats.llmUnconfigured")),1),l("div",_e,o(t.stats.activeModel||"—"),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:a(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[0]||(n[0]=r=>e.$router.push("/skills"))},{default:a(()=>[l("div",ge,[l("span",ke,o(e.$t("dashboard.stats.skills")),1),s(t.AppstoreOutlined,{style:{color:"#1677ff"}})]),l("div",we,o(t.stats.skillCount||"—"),1),l("div",Se,o(e.$t("dashboard.stats.skillsHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:12,lg:6},{default:a(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[1]||(n[1]=r=>e.$router.push("/chat"))},{default:a(()=>[l("div",Ce,[l("span",Re,o(e.$t("dashboard.stats.sessions")),1),s(t.MessageOutlined,{style:{color:"#722ed1"}})]),l("div",Oe,o(t.stats.sessionCount),1),l("div",Pe,o(e.$t("dashboard.stats.sessionsHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:a(()=>[s(d,{xs:24,sm:8},{default:a(()=>[s(y,{class:"stat-card",size:"small"},{default:a(()=>[l("div",De,[l("span",je,o(e.$t("dashboard.stats.appStatus")),1),s(t.DesktopOutlined,{style:N({color:t.stats.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:N({color:t.stats.appRunning?"#52c41a":"#888",fontSize:"15px"})},o(t.stats.appRunning?e.$t("dashboard.stats.appRunning"):t.stats.setupDone?e.$t("dashboard.stats.appReady"):e.$t("dashboard.stats.appNotStarted")),5),l("div",Te,o(e.$t("dashboard.stats.edition",{name:t.stats.edition||"Community"})),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:a(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[2]||(n[2]=r=>e.$router.push("/mcp"))},{default:a(()=>[l("div",Ee,[l("span",Fe,o(e.$t("dashboard.stats.mcp")),1),s(t.ToolOutlined,{style:{color:"#13c2c2"}})]),l("div",ze,o(t.stats.mcpCount??"—"),1),l("div",Ae,o(e.$t("dashboard.stats.mcpHint")),1)]),_:1})]),_:1}),s(d,{xs:24,sm:8},{default:a(()=>[s(y,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:n[3]||(n[3]=r=>e.$router.push("/notes"))},{default:a(()=>[l("div",Le,[l("span",$e,o(e.$t("dashboard.stats.notes")),1),s(t.FileTextOutlined,{style:{color:"#faad14"}})]),l("div",Ne,o(t.stats.noteCount??"—"),1),l("div",Me,o(e.$t("dashboard.stats.notesHint")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:[16,16]},{default:a(()=>[s(d,{xs:24,lg:10},{default:a(()=>[s(y,{title:e.$t("dashboard.quick.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:a(()=>[s(D,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:a(()=>[s(b,{type:"primary",block:"",onClick:n[4]||(n[4]=r=>e.$router.push("/chat"))},{icon:a(()=>[s(t.MessageOutlined)]),default:a(()=>[v(" "+o(t.isProject?e.$t("dashboard.quick.enterProjectChat"):e.$t("dashboard.quick.newAiChat")),1)]),_:1}),s(b,{block:"",onClick:t.newAgentSession,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:a(()=>[s(t.RobotOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.quick.startAgent")),1)]),_:1}),s(_,{gutter:8},{default:a(()=>[s(d,{span:12},{default:a(()=>[s(b,{block:"",onClick:n[5]||(n[5]=r=>e.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[s(t.SettingOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.quick.services")),1)]),_:1})]),_:1}),s(d,{span:12},{default:a(()=>[s(b,{block:"",onClick:n[6]||(n[6]=r=>e.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[s(t.FileTextOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.quick.logs")),1)]),_:1})]),_:1})]),_:1}),s(_,{gutter:8},{default:a(()=>[s(d,{span:12},{default:a(()=>[s(b,{block:"",onClick:n[7]||(n[7]=r=>e.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[s(t.AppstoreOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.quick.skills")),1)]),_:1})]),_:1}),s(d,{span:12},{default:a(()=>[s(b,{block:"",onClick:n[8]||(n[8]=r=>e.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[s(t.ApiOutlined)]),default:a(()=>[v(" "+o(e.$t("dashboard.quick.providers")),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["title"])]),_:1}),s(d,{xs:24,lg:14},{default:a(()=>[s(y,{title:e.$t("dashboard.status.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:t.loading},{extra:a(()=>[s(b,{type:"link",size:"small",onClick:n[9]||(n[9]=r=>e.$router.push("/logs"))},{default:a(()=>[v(o(e.$t("dashboard.status.more")),1)]),_:1})]),default:a(()=>[l("pre",qe,o(t.statusLog||e.$t("dashboard.status.placeholder")),1)]),_:1},8,["title","loading"])]),_:1})]),_:1}),s(y,{title:e.$t("dashboard.telemetry.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:t.loading},{default:a(()=>[s(_,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:a(()=>[s(d,{xs:24,md:8},{default:a(()=>[l("div",Ue,[l("div",Ve,o(e.$t("dashboard.telemetry.filterWindow")),1),s(i,{value:t.telemetryFilters.windowPreset,"onUpdate:value":n[10]||(n[10]=r=>t.telemetryFilters.windowPreset=r),style:{width:"100%"},onChange:t.refreshCompression},{default:a(()=>[s(p,{value:"all"},{default:a(()=>[v(o(e.$t("dashboard.telemetry.windowAll")),1)]),_:1}),s(p,{value:"1h"},{default:a(()=>[v(o(e.$t("dashboard.telemetry.window1h")),1)]),_:1}),s(p,{value:"24h"},{default:a(()=>[v(o(e.$t("dashboard.telemetry.window24h")),1)]),_:1}),s(p,{value:"7d"},{default:a(()=>[v(o(e.$t("dashboard.telemetry.window7d")),1)]),_:1})]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:a(()=>[l("div",Be,[l("div",He,o(e.$t("dashboard.telemetry.filterProvider")),1),s(i,{value:t.telemetryFilters.provider,"onUpdate:value":n[11]||(n[11]=r=>t.telemetryFilters.provider=r),style:{width:"100%"},onChange:t.refreshCompression},{default:a(()=>[s(p,{value:""},{default:a(()=>[v(o(e.$t("dashboard.telemetry.providerAll")),1)]),_:1}),(m(!0),f(E,null,F(t.providerEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:a(()=>[v(o(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),s(d,{xs:24,md:8},{default:a(()=>[l("div",Ie,[l("div",Ge,o(e.$t("dashboard.telemetry.filterModel")),1),s(i,{value:t.telemetryFilters.model,"onUpdate:value":n[12]||(n[12]=r=>t.telemetryFilters.model=r),style:{width:"100%"},onChange:t.refreshCompression},{default:a(()=>[s(p,{value:""},{default:a(()=>[v(o(e.$t("dashboard.telemetry.modelAll")),1)]),_:1}),(m(!0),f(E,null,F(t.modelEntries,r=>(m(),z(p,{key:r.key,value:r.key},{default:a(()=>[v(o(r.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),s(_,{gutter:[12,12]},{default:a(()=>[s(d,{xs:24,sm:8},{default:a(()=>[l("div",Je,[l("div",We,o(e.$t("dashboard.telemetry.hitRate")),1),l("div",Ke,o(t.formatPercent(t.compression.hitRate)),1),l("div",Qe,o(e.$t("dashboard.telemetry.hitRateSub",{compressed:t.compression.compressedSamples,total:t.compression.samples})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:a(()=>[l("div",Ze,[l("div",Xe,o(e.$t("dashboard.telemetry.savedTokens")),1),l("div",Ye,o(t.compression.totalSavedTokens),1),l("div",xe,o(e.$t("dashboard.telemetry.savedTokensSub",{avg:t.compression.averageSavedTokens})),1)])]),_:1}),s(d,{xs:24,sm:8},{default:a(()=>[l("div",et,[l("div",tt,o(e.$t("dashboard.telemetry.netSavingsRate")),1),l("div",st,o(t.formatPercent(t.compression.netSavingsRate)),1),l("div",at,o(e.$t("dashboard.telemetry.netSavingsRateSub",{original:t.compression.totalOriginalTokens,compressed:t.compression.totalCompressedTokens})),1)])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:a(()=>[s(d,{xs:24,lg:12},{default:a(()=>[l("div",ot,[l("div",lt,o(e.$t("dashboard.telemetry.strategyDistribution")),1),t.compression.strategyDistribution.length===0?(m(),f("div",rt,o(e.$t("dashboard.telemetry.strategyEmpty")),1)):(m(),f("div",nt,[(m(!0),f(E,null,F(t.compression.strategyDistribution.slice(0,6),r=>(m(),f("div",{key:r.strategy,class:"telemetry-row"},[l("span",null,o(r.strategy),1),l("span",null,o(e.$t("dashboard.telemetry.strategyRow",{hits:r.hits,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:a(()=>[l("div",it,[l("div",dt,o(e.$t("dashboard.telemetry.variantDistribution")),1),t.variantEntries.length===0?(m(),f("div",ct,o(e.$t("dashboard.telemetry.variantEmpty")),1)):(m(),f("div",ut,[(m(!0),f(E,null,F(t.variantEntries,([r,C])=>(m(),f("div",{key:r,class:"telemetry-row"},[l("span",null,o(r),1),l("span",null,o(e.$t("dashboard.telemetry.variantRow",{count:C})),1)]))),128))]))])]),_:1})]),_:1}),s(_,{gutter:[16,16],style:{"margin-top":"12px"}},{default:a(()=>[s(d,{xs:24,lg:12},{default:a(()=>[l("div",mt,[l("div",ft,o(e.$t("dashboard.telemetry.providerSlice")),1),t.providerEntries.length===0?(m(),f("div",vt,o(e.$t("dashboard.telemetry.providerEmpty")),1)):(m(),f("div",ht,[(m(!0),f(E,null,F(t.providerEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,o(r.key),1),l("span",null,o(e.$t("dashboard.telemetry.providerRow",{samples:r.samples,rate:t.formatPercent(r.hitRate)})),1)]))),128))]))])]),_:1}),s(d,{xs:24,lg:12},{default:a(()=>[l("div",bt,[l("div",yt,o(e.$t("dashboard.telemetry.modelSlice")),1),t.modelEntries.length===0?(m(),f("div",pt,o(e.$t("dashboard.telemetry.modelEmpty")),1)):(m(),f("div",_t,[(m(!0),f(E,null,F(t.modelEntries.slice(0,6),r=>(m(),f("div",{key:r.key,class:"telemetry-row"},[l("span",null,o(r.key),1),l("span",null,o(e.$t("dashboard.telemetry.modelRow",{samples:r.samples,saved:r.savedTokens})),1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["title","loading"]),s(y,{title:e.$t("dashboard.info.title"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:a(()=>[s(g,{column:{xs:1,sm:2,lg:3},size:"small"},{default:a(()=>[s(u,{label:e.$t("dashboard.info.panelMode")},{default:a(()=>[s(S,{color:t.isProject?"blue":"purple"},{default:a(()=>[v(o(t.isProject?e.$t("dashboard.info.modeProject"):e.$t("dashboard.info.modeGlobal")),1)]),_:1},8,["color"])]),_:1},8,["label"]),t.isProject?(m(),z(u,{key:0,label:e.$t("dashboard.info.projectName")},{default:a(()=>[l("span",gt,o(t.cfg.projectName||"—"),1)]),_:1},8,["label"])):$("v-if",!0),t.isProject?(m(),z(u,{key:1,label:e.$t("dashboard.info.projectPath")},{default:a(()=>[l("span",kt,o(t.cfg.projectRoot),1)]),_:1},8,["label"])):$("v-if",!0),s(u,{label:e.$t("dashboard.info.websocket")},{default:a(()=>[l("span",wt," ws://"+o(t.cfg.wsHost||"127.0.0.1")+":"+o(t.cfg.wsPort||18800),1)]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.auth")},{default:a(()=>[s(S,{color:t.cfg.wsToken?"green":"default",style:{"font-size":"11px"}},{default:a(()=>[v(o(t.cfg.wsToken?e.$t("dashboard.info.authEnabled"):e.$t("dashboard.info.authDisabled")),1)]),_:1},8,["color"])]),_:1},8,["label"]),s(u,{label:e.$t("dashboard.info.version")},{default:a(()=>[l("span",St,o(t.PRODUCT_VERSION),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])])}const jt=W(re,[["render",Ct],["__scopeId","data-v-7f773d42"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/views/Dashboard.vue"]]);export{jt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-BvqAck49.js";import{_ as S}from"./index-DZU8HRgG.js";import"./icons-DP3uiYxy.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),b=a(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),h=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:b,formattedTime:h,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},D={class:"val"},R={class:"row"},A={class:"val"},B={class:"row amount-row"},I={class:"val amount"},j={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",D,n(e.merchantText),1)]),s("div",R,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",A,n(e.itemText),1)]),s("div",B,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",I,n(e.amountText),1)]),e.orderNo?(l(),u("div",j,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",M,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const K=S(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{I as m,J as y,U as f,c as s,K as o,V as v,S as R,Q as g,o as Q,b as q,r as x,P as i,F as N,Z as K,R as k,a2 as Y}from"./vendor-BvqAck49.js";import{_ as $,u as Z,d as u}from"./index-DZU8HRgG.js";import{aB as ee,aQ as te,R as ne,as as le,y as ae}from"./icons-DP3uiYxy.js";const oe={__name:"RssFeed",setup(G,{expose:a}){a();const h=Z(),e=x(!1),M=x(!1),D=x(!1),w=x(!1),b=x([]),S=x([]),C=x(""),L=x(!1),O=x(""),z=x([]),j=q(()=>{const l=b.value.length,n=S.value.length,d=S.value.filter(p=>!p.read).length,r=b.value.filter(p=>p.lastUpdated).sort((p,X)=>new Date(X.lastUpdated)-new Date(p.lastUpdated))[0],c=r?I(r.lastUpdated):"-";return[{label:"订阅源数",value:l,color:"#1677ff"},{label:"文章总数",value:n,color:"#52c41a"},{label:"未读文章",value:d,color:"#faad14"},{label:"最近刷新",value:c,color:"#13c2c2"}]}),P=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"来源",key:"source",dataIndex:"source",width:"140px"},{title:"发布时间",key:"publishedAt",dataIndex:"publishedAt",width:"160px"},{title:"状态",key:"status",width:"80px"},{title:"操作",key:"actions",width:"100px"}];function I(l){if(!l)return"-";try{const n=new Date(l);return isNaN(n.getTime())?l:n.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return l}}function U(l){try{const n=l.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(n)return JSON.parse(n[1])}catch{}return null}async function A(){e.value=!0;try{const{output:l}=await h.execute("rss list --json",2e4),n=U(l);Array.isArray(n)?b.value=n.map((d,r)=>({key:d.id||d.url||r,id:d.id||String(r),title:d.title||d.name||"",url:d.url||d.feedUrl||"",itemCount:d.itemCount??d.articleCount??d.count??0,lastUpdated:d.lastUpdated||d.updatedAt||d.lastRefresh||""})):b.value=T(l)}catch(l){u.error("加载订阅源失败: "+l.message)}finally{e.value=!1}}function T(l){const n=[],d=l.split(`
|
|
2
|
-
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ feed/i)||c.startsWith("RSS")||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p?n.push({key:p[1],id:p[1],title:p[2].trim(),url:(p[3]||"").trim(),itemCount:0,lastUpdated:""}):c.length>5&&n.push({key:String(n.length),id:String(n.length),title:c.slice(0,80),url:"",itemCount:0,lastUpdated:""})}return n}async function F(){M.value=!0,z.value=[];try{let l="rss articles --limit 30 --json";C.value&&(l=`rss articles --feed ${C.value} --limit 30 --json`);const{output:n}=await h.execute(l,2e4),d=U(n);Array.isArray(d)?S.value=d.map((r,c)=>({key:r.id||String(c),id:r.id||String(c),title:r.title||"无标题",link:r.link||r.url||"",source:r.source||r.feedTitle||r.feedName||"",publishedAt:r.publishedAt||r.pubDate||r.date||"",read:!!r.read,summary:r.summary||r.description||"",content:r.content||""})):S.value=W(n)}catch(l){u.error("加载文章失败: "+l.message)}finally{M.value=!1}}function W(l){const n=[],d=l.split(`
|
|
3
|
-
`);for(const r of d){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ article/i)||c.startsWith("No "))continue;const p=c.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);p&&n.push({key:p[1],id:p[1],title:p[2].trim(),link:"",source:(p[3]||"").trim(),publishedAt:"",read:!1,summary:"",content:""})}return n}async function B(){const l=O.value.trim();if(!l){u.warning("请输入订阅源地址");return}w.value=!0;try{const{output:n}=await h.execute(`rss add "${l}"`,3e4);n.includes("error")||n.includes("失败")||n.includes("Error")?u.error("添加失败: "+n.slice(0,120)):(u.success("订阅源已添加"),L.value=!1,O.value="",await A(),await F())}catch(n){u.error("添加失败: "+n.message)}finally{w.value=!1}}async function E(l){try{u.loading({content:`正在刷新 ${l.title||l.id}...`,key:"refreshFeed"}),await h.execute(`rss refresh ${l.id}`,3e4),u.success({content:"刷新完成",key:"refreshFeed"}),await A(),await F()}catch(n){u.error({content:"刷新失败: "+n.message,key:"refreshFeed"})}}async function V(l){try{u.loading({content:`正在删除 ${l.title||l.id}...`,key:"removeFeed"});const{output:n}=await h.execute(`rss remove ${l.id}`,2e4);n.includes("error")||n.includes("失败")?u.error({content:"删除失败: "+n.slice(0,120),key:"removeFeed"}):(u.success({content:"已删除订阅源",key:"removeFeed"}),await A(),await F())}catch(n){u.error({content:"删除失败: "+n.message,key:"removeFeed"})}}async function t(){D.value=!0;try{u.loading({content:"正在刷新所有订阅源...",key:"refreshAll"}),await h.execute("rss refresh-all",6e4),u.success({content:"全部刷新完成",key:"refreshAll"}),await A(),await F()}catch(l){u.error({content:"刷新失败: "+l.message,key:"refreshAll"})}finally{D.value=!1}}async function _(l){try{await h.execute(`rss mark-read ${l.id}`,1e4),l.read=!0,u.success("已标记已读")}catch(n){u.error("操作失败: "+n.message)}}function J(l,n){z.value=l?[n.key]:[]}Q(async()=>{await A(),await F()});const H={ws:h,feedsLoading:e,articlesLoading:M,refreshingAll:D,adding:w,feeds:b,articles:S,selectedFeedId:C,showAddModal:L,newFeedUrl:O,expandedKeys:z,statsCards:j,articleColumns:P,formatTime:I,safeParseJson:U,loadFeeds:A,parseFeedListText:T,loadArticles:F,parseArticlesText:W,addFeed:B,refreshFeed:E,removeFeed:V,refreshAllFeeds:t,markRead:_,onExpandArticle:J,ref:x,computed:q,onMounted:Q,get ReadOutlined(){return ae},get PlusOutlined(){return le},get ReloadOutlined(){return ne},get DeleteOutlined(){return te},get LinkOutlined(){return ee},get message(){return u},get useWsStore(){return Z}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},se={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},re={key:0,style:{"text-align":"center",padding:"60px"}},ie={style:{display:"flex","align-items":"center",gap:"6px",overflow:"hidden"}},de={style:{color:"#e0e0e0","font-size":"13px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ce={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"6px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ue={style:{display:"flex","justify-content":"space-between",color:"var(--text-secondary)","font-size":"12px"}},me={key:2,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)","margin-bottom":"24px"}},pe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},ye={key:3,style:{"text-align":"center",padding:"60px"}},fe=["href"],ge={key:1,style:{color:"#e0e0e0","font-weight":"500"}},_e={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ve={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},xe={style:{padding:"8px 16px",color:"var(--text-secondary)","font-size":"13px","line-height":"1.8","max-height":"300px","overflow-y":"auto"}},ke={key:0,style:{"margin-bottom":"8px"}},he=["innerHTML"],we={key:2,style:{color:"var(--text-muted)"}},be={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}};function Ae(G,a,h,e,M,D){const w=m("a-button"),b=m("a-space"),S=m("a-statistic"),C=m("a-card"),L=m("a-col"),O=m("a-row"),z=m("a-spin"),j=m("a-menu-item"),P=m("a-menu"),I=m("a-dropdown"),U=m("a-select-option"),A=m("a-select"),T=m("a-tag"),F=m("a-table"),W=m("a-input"),B=m("a-form-item"),E=m("a-form"),V=m("a-modal");return i(),y("div",null,[f("div",se,[a[6]||(a[6]=f("div",null,[f("h2",{class:"page-title"},"RSS 订阅"),f("p",{class:"page-sub"},"订阅源 / 文章阅读")],-1)),s(b,null,{default:o(()=>[s(w,{type:"primary",onClick:a[0]||(a[0]=t=>e.showAddModal=!0)},{icon:o(()=>[s(e.PlusOutlined)]),default:o(()=>[a[4]||(a[4]=g(" 添加订阅 ",-1))]),_:1}),s(w,{ghost:"",loading:e.refreshingAll,onClick:e.refreshAllFeeds},{icon:o(()=>[s(e.ReloadOutlined)]),default:o(()=>[a[5]||(a[5]=g(" 全部刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),v(" Stats Cards "),s(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[(i(!0),y(N,null,K(e.statsCards,t=>(i(),R(L,{xs:12,sm:6,key:t.label},{default:o(()=>[s(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:o(()=>[s(S,{title:t.label,value:t.value,"value-style":{color:t.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),v(" Section 1: Feed Sources "),a[16]||(a[16]=f("h3",{style:{color:"var(--text-primary)","margin-bottom":"12px"}},"订阅源管理",-1)),e.feedsLoading?(i(),y("div",re,[s(z,{size:"large"})])):e.feeds.length>0?(i(),R(O,{key:1,gutter:[16,16],style:{"margin-bottom":"24px"}},{default:o(()=>[(i(!0),y(N,null,K(e.feeds,t=>(i(),R(L,{xs:24,sm:12,md:8,lg:6,key:t.id||t.url},{default:o(()=>[s(C,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small",hoverable:!0},{title:o(()=>[f("div",ie,[s(e.ReadOutlined,{style:{color:"#1677ff","flex-shrink":"0"}}),f("span",de,k(t.title||"未命名订阅"),1)])]),extra:o(()=>[s(I,null,{overlay:o(()=>[s(P,null,{default:o(()=>[s(j,{onClick:_=>e.refreshFeed(t)},{default:o(()=>[s(e.ReloadOutlined),a[8]||(a[8]=g(" 刷新 ",-1))]),_:1},8,["onClick"]),s(j,{onClick:_=>e.removeFeed(t),danger:""},{default:o(()=>[s(e.DeleteOutlined),a[9]||(a[9]=g(" 删除 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:o(()=>[s(w,{size:"small",type:"text",style:{color:"var(--text-muted)"}},{default:o(()=>[...a[7]||(a[7]=[g("...",-1)])]),_:1})]),_:2},1024)]),default:o(()=>[f("p",ce,[s(e.LinkOutlined),g(" "+k(t.url||"-"),1)]),f("div",ue,[f("span",null,k(t.itemCount??"-")+" 篇文章",1),f("span",null,k(e.formatTime(t.lastUpdated)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(i(),y("div",me,[s(e.ReadOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),a[10]||(a[10]=g(' 暂无订阅源,点击"添加订阅"开始 ',-1))])),v(" Section 2: Articles "),f("div",pe,[a[12]||(a[12]=f("h3",{style:{color:"var(--text-primary)",margin:"0"}},"文章列表",-1)),s(b,null,{default:o(()=>[s(A,{value:e.selectedFeedId,"onUpdate:value":a[1]||(a[1]=t=>e.selectedFeedId=t),style:{"min-width":"180px"},placeholder:"筛选订阅源","allow-clear":"",onChange:e.loadArticles},{default:o(()=>[s(U,{value:""},{default:o(()=>[...a[11]||(a[11]=[g("全部订阅",-1)])]),_:1}),(i(!0),y(N,null,K(e.feeds,t=>(i(),R(U,{key:t.id,value:t.id},{default:o(()=>[g(k(t.title||t.url),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),s(w,{loading:e.articlesLoading,onClick:e.loadArticles},{icon:o(()=>[s(e.ReloadOutlined)]),_:1},8,["loading"])]),_:1})]),e.articlesLoading?(i(),y("div",ye,[s(z,{size:"large"})])):(i(),R(F,{key:4,columns:e.articleColumns,"data-source":e.articles,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"rss-row",expandable:{expandedRowKeys:e.expandedKeys,onExpand:e.onExpandArticle}},{bodyCell:o(({column:t,record:_})=>[t.key==="title"?(i(),y(N,{key:0},[_.link?(i(),y("a",{key:0,href:_.link,target:"_blank",rel:"noopener noreferrer",style:{color:"#1677ff","font-weight":"500"}},[s(e.LinkOutlined,{style:{"margin-right":"4px"}}),g(k(_.title),1)],8,fe)):(i(),y("span",ge,k(_.title),1))],64)):v("v-if",!0),t.key==="source"?(i(),R(T,{key:1,color:"blue",style:{"font-size":"10px"}},{default:o(()=>[g(k(_.source||"-"),1)]),_:2},1024)):v("v-if",!0),t.key==="publishedAt"?(i(),y("span",_e,k(e.formatTime(_.publishedAt)),1)):v("v-if",!0),t.key==="status"?(i(),R(T,{key:3,color:_.read?"default":"green"},{default:o(()=>[g(k(_.read?"已读":"未读"),1)]),_:2},1032,["color"])):v("v-if",!0),t.key==="actions"?(i(),y(N,{key:4},[_.read?(i(),y("span",ve,"--")):(i(),R(w,{key:0,size:"small",type:"link",onClick:Y(J=>e.markRead(_),["stop"])},{default:o(()=>[...a[13]||(a[13]=[g(" 标记已读 ",-1)])]),_:1},8,["onClick"]))],64)):v("v-if",!0)]),expandedRowRender:o(({record:t})=>[f("div",xe,[t.summary?(i(),y("div",ke,[a[14]||(a[14]=f("strong",{style:{color:"var(--text-primary)"}},"摘要: ",-1)),g(k(t.summary),1)])):v("v-if",!0),t.content?(i(),y("div",{key:1,innerHTML:t.content,style:{color:"var(--text-secondary)"}},null,8,he)):v("v-if",!0),!t.summary&&!t.content?(i(),y("div",we,"暂无内容预览")):v("v-if",!0)])]),emptyText:o(()=>[f("div",be,[s(e.ReadOutlined,{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),a[15]||(a[15]=g(" 暂无文章 ",-1))])]),_:1},8,["data-source","pagination","expandable"])),v(" Add Feed Modal "),s(V,{open:e.showAddModal,"onUpdate:open":a[3]||(a[3]=t=>e.showAddModal=t),title:"添加订阅源","confirm-loading":e.adding,onOk:e.addFeed,"ok-text":"添加","cancel-text":"取消"},{default:o(()=>[s(E,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[s(B,{label:"URL",required:""},{default:o(()=>[s(W,{value:e.newFeedUrl,"onUpdate:value":a[2]||(a[2]=t=>e.newFeedUrl=t),placeholder:"输入 RSS 订阅源地址,如 https://example.com/feed.xml"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}const Ce=$(oe,[["render",Ae],["__scopeId","data-v-59e72a50"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/views/RssFeed.vue"]]);export{Ce as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as S,P as n,J as i,U as l,S as h,R as o,c,K as d,Q as u,V as g,b as a}from"./vendor-BvqAck49.js";import{_ as b}from"./index-DZU8HRgG.js";import{aD as D,aH as O}from"./icons-DP3uiYxy.js";const C={__name:"TimelineRenderer",props:{event:{type:Object,required:!0}},setup(v,{expose:_}){_();const r=v,e=a(()=>r.event.content||{}),p=a(()=>{const t=r.event.source.adapter||"";return t.startsWith("travel-12306")||t.startsWith("travel-ctrip")}),m=a(()=>e.value.from&&e.value.to?`${e.value.from} → ${e.value.to}`:e.value.origin&&e.value.destination?`${e.value.origin} → ${e.value.destination}`:null),s=a(()=>r.event.place||e.value.placeName||e.value.poi),N=a(()=>e.value.trainNo),T=a(()=>e.value.flightNo),k=a(()=>e.value.title||e.value.text||e.value.description||"—"),x=a(()=>{const t=[];return e.value.departureTime&&t.push(`出发 ${e.value.departureTime}`),e.value.arrivalTime&&t.push(`到达 ${e.value.arrivalTime}`),e.value.duration&&t.push(`${e.value.duration}`),e.value.distance&&t.push(`${e.value.distance}`),t.length?t.join(" · "):null}),y=a(()=>{if(!r.event.occurredAt)return"";const t=new Date(r.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),f={props:r,c:e,isTravel:p,route:m,placeName:s,trainNo:N,flightNo:T,fallbackText:k,extraDetail:x,formattedTime:y,computed:a,get CarOutlined(){return O},get EnvironmentOutlined(){return D}};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}},V={class:"timeline-event"},w={class:"dot"},B={class:"card"},E={class:"head"},R={class:"time"},j={class:"primary"},A={key:0},H={key:1},I={key:2},M={key:0,class:"trip-no"},P={key:1,class:"extra"};function W(v,_,r,e,p,m){const s=S("a-tag");return n(),i("div",V,[l("div",w,[e.isTravel?(n(),h(e.CarOutlined,{key:0})):(n(),h(e.EnvironmentOutlined,{key:1}))]),l("div",B,[l("div",E,[l("span",R,o(e.formattedTime),1),c(s,{color:"cyan"},{default:d(()=>[u(o(r.event.source.adapter),1)]),_:1}),c(s,null,{default:d(()=>[u(o(r.event.subtype),1)]),_:1})]),l("div",j,[e.route?(n(),i("span",A,o(e.route),1)):e.placeName?(n(),i("span",H,"📍 "+o(e.placeName),1)):(n(),i("span",I,o(e.fallbackText),1))]),e.trainNo||e.flightNo?(n(),i("div",M,[c(s,{color:"blue"},{default:d(()=>[u(o(e.trainNo||e.flightNo),1)]),_:1})])):g("v-if",!0),e.extraDetail?(n(),i("div",P,o(e.extraDetail),1)):g("v-if",!0)])])}const K=b(C,[["render",W],["__scopeId","data-v-18400280"],["__file","/tmp/cc-web-panel-7Di0AT/repo/packages/web-panel/src/components/pdh/renderers/TimelineRenderer.vue"]]);export{K as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as r}from"./index-DZU8HRgG.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as o}from"./Row-D1s181ke.js";import{a0 as t}from"./index-DZU8HRgG.js";import"./vendor-BvqAck49.js";import"./responsiveObserve-c4k_3oW2.js";import"./useFlexGapSupport-CcjrBzHi.js";import"./styleChecker-BYIaM5uH.js";import"./index-CcaG1Gci.js";import"./icons-DP3uiYxy.js";const l=t(o);export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{q as k,O as q,h as p,f as N,I as L,P as F,S as G,i as M}from"./index-DZU8HRgG.js";import{d as W,b as o,w as H,c as v,F as J,r as j}from"./vendor-BvqAck49.js";import{u as K}from"./useFlexGapSupport-CcjrBzHi.js";import{a as Q,C as h}from"./Compact-ClnINh4j.js";import"./icons-DP3uiYxy.js";import"./styleChecker-BYIaM5uH.js";import"./createContext-Ha9KgHfb.js";import"./_getTag-DnrRH4E6.js";const U={small:8,middle:16,large:24},X=()=>({prefixCls:String,size:{type:[String,Number,Array]},direction:F.oneOf(G("horizontal","vertical")).def("horizontal"),align:F.oneOf(G("start","end","center","baseline")),wrap:L()});function Y(e){return typeof e=="string"?U[e]:e||0}const d=W({compatConfig:{MODE:3},name:"ASpace",inheritAttrs:!1,props:X(),slots:Object,setup(e,B){let{slots:r,attrs:f}=B;const{prefixCls:l,space:g,direction:x}=k("space",e),[P,D]=Q(l),z=K(),n=o(()=>{var t,a,i;return(i=(t=e.size)!==null&&t!==void 0?t:(a=g?.value)===null||a===void 0?void 0:a.size)!==null&&i!==void 0?i:"small"}),y=j(),s=j();H(n,()=>{[y.value,s.value]=(Array.isArray(n.value)?n.value:[n.value,n.value]).map(t=>Y(t))},{immediate:!0});const C=o(()=>e.align===void 0&&e.direction==="horizontal"?"center":e.align),E=o(()=>M(l.value,D.value,`${l.value}-${e.direction}`,{[`${l.value}-rtl`]:x.value==="rtl",[`${l.value}-align-${C.value}`]:C.value})),R=o(()=>x.value==="rtl"?"marginLeft":"marginRight"),T=o(()=>{const t={};return z.value&&(t.columnGap=`${y.value}px`,t.rowGap=`${s.value}px`),p(p({},t),e.wrap&&{flexWrap:"wrap",marginBottom:`${-s.value}px`})});return()=>{var t,a;const{wrap:i,direction:V="horizontal"}=e,b=(t=r.default)===null||t===void 0?void 0:t.call(r),w=q(b),_=w.length;if(_===0)return null;const c=(a=r.split)===null||a===void 0?void 0:a.call(r),A=`${l.value}-item`,O=y.value,S=_-1;return v("div",N(N({},f),{},{class:[E.value,f.class],style:[T.value,f.style]}),[w.map((I,u)=>{let $=b.indexOf(I);$===-1&&($=`$$space-${u}`);let m={};return z.value||(V==="vertical"?u<S&&(m={marginBottom:`${O/(c?2:1)}px`}):m=p(p({},u<S&&{[R.value]:`${O/(c?2:1)}px`}),i&&{paddingBottom:`${s.value}px`})),P(v(J,{key:$},[v("div",{class:A,style:m},[I]),u<S&&c&&v("span",{class:`${A}-split`,style:m},[c])]))})])}}});d.Compact=h;d.install=function(e){return e.component(d.name,d),e.component(h.name,h),e};export{h as Compact,d as default,X as spaceProps};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as o}from"./Col-DKiqcZD4.js";import{a0 as t}from"./index-DZU8HRgG.js";import"./vendor-BvqAck49.js";import"./index-CcaG1Gci.js";import"./icons-DP3uiYxy.js";const s=t(o);export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as L,m as O,h as w,r as V,n as W,a0 as _,N as A,q as X,f as $,a1 as v,P as c,S as R,w as f}from"./index-DZU8HRgG.js";import{d as j,b as p,m as K,r as b,w as N,o as U,n as q,c as o}from"./vendor-BvqAck49.js";import{T as G,L as Q}from"./icons-DP3uiYxy.js";import{K as C}from"./KeyCode-D63Tfrq7.js";import{W as J}from"./index-D8304Ulf.js";import{u as Y}from"./FormItemContext-bOifggcW.js";import{o as Z}from"./omit-Db-_WlEN.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./raf-Deuc0E8-.js";import"./devWarning-CnWCtTRg.js";import"./createContext-Ha9KgHfb.js";const k=i=>{const{componentCls:n}=i,e=`${n}-inner`;return{[n]:{[`&${n}-small`]:{minWidth:i.switchMinWidthSM,height:i.switchHeightSM,lineHeight:`${i.switchHeightSM}px`,[`${n}-inner`]:{paddingInlineStart:i.switchInnerMarginMaxSM,paddingInlineEnd:i.switchInnerMarginMinSM,[`${e}-checked`]:{marginInlineStart:`calc(-100% + ${i.switchPinSizeSM+i.switchPadding*2}px - ${i.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(100% - ${i.switchPinSizeSM+i.switchPadding*2}px + ${i.switchInnerMarginMaxSM*2}px)`},[`${e}-unchecked`]:{marginTop:-i.switchHeightSM,marginInlineStart:0,marginInlineEnd:0}},[`${n}-handle`]:{width:i.switchPinSizeSM,height:i.switchPinSizeSM},[`${n}-loading-icon`]:{top:(i.switchPinSizeSM-i.switchLoadingIconSize)/2,fontSize:i.switchLoadingIconSize},[`&${n}-checked`]:{[`${n}-inner`]:{paddingInlineStart:i.switchInnerMarginMinSM,paddingInlineEnd:i.switchInnerMarginMaxSM,[`${e}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${e}-unchecked`]:{marginInlineStart:`calc(100% - ${i.switchPinSizeSM+i.switchPadding*2}px + ${i.switchInnerMarginMaxSM*2}px)`,marginInlineEnd:`calc(-100% + ${i.switchPinSizeSM+i.switchPadding*2}px - ${i.switchInnerMarginMaxSM*2}px)`}},[`${n}-handle`]:{insetInlineStart:`calc(100% - ${i.switchPinSizeSM+i.switchPadding}px)`}},[`&:not(${n}-disabled):active`]:{[`&:not(${n}-checked) ${e}`]:{[`${e}-unchecked`]:{marginInlineStart:i.marginXXS/2,marginInlineEnd:-i.marginXXS/2}},[`&${n}-checked ${e}`]:{[`${e}-checked`]:{marginInlineStart:-i.marginXXS/2,marginInlineEnd:i.marginXXS/2}}}}}}},ii=i=>{const{componentCls:n}=i;return{[n]:{[`${n}-loading-icon${i.iconCls}`]:{position:"relative",top:(i.switchPinSize-i.fontSize)/2,color:i.switchLoadingIconColor,verticalAlign:"top"},[`&${n}-checked ${n}-loading-icon`]:{color:i.switchColor}}}},ni=i=>{const{componentCls:n}=i,e=`${n}-handle`;return{[n]:{[e]:{position:"absolute",top:i.switchPadding,insetInlineStart:i.switchPadding,width:i.switchPinSize,height:i.switchPinSize,transition:`all ${i.switchDuration} ease-in-out`,"&::before":{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,backgroundColor:i.colorWhite,borderRadius:i.switchPinSize/2,boxShadow:i.switchHandleShadow,transition:`all ${i.switchDuration} ease-in-out`,content:'""'}},[`&${n}-checked ${e}`]:{insetInlineStart:`calc(100% - ${i.switchPinSize+i.switchPadding}px)`},[`&:not(${n}-disabled):active`]:{[`${e}::before`]:{insetInlineEnd:i.switchHandleActiveInset,insetInlineStart:0},[`&${n}-checked ${e}::before`]:{insetInlineEnd:0,insetInlineStart:i.switchHandleActiveInset}}}}},ei=i=>{const{componentCls:n}=i,e=`${n}-inner`;return{[n]:{[e]:{display:"block",overflow:"hidden",borderRadius:100,height:"100%",paddingInlineStart:i.switchInnerMarginMax,paddingInlineEnd:i.switchInnerMarginMin,transition:`padding-inline-start ${i.switchDuration} ease-in-out, padding-inline-end ${i.switchDuration} ease-in-out`,[`${e}-checked, ${e}-unchecked`]:{display:"block",color:i.colorTextLightSolid,fontSize:i.fontSizeSM,transition:`margin-inline-start ${i.switchDuration} ease-in-out, margin-inline-end ${i.switchDuration} ease-in-out`,pointerEvents:"none"},[`${e}-checked`]:{marginInlineStart:`calc(-100% + ${i.switchPinSize+i.switchPadding*2}px - ${i.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(100% - ${i.switchPinSize+i.switchPadding*2}px + ${i.switchInnerMarginMax*2}px)`},[`${e}-unchecked`]:{marginTop:-i.switchHeight,marginInlineStart:0,marginInlineEnd:0}},[`&${n}-checked ${e}`]:{paddingInlineStart:i.switchInnerMarginMin,paddingInlineEnd:i.switchInnerMarginMax,[`${e}-checked`]:{marginInlineStart:0,marginInlineEnd:0},[`${e}-unchecked`]:{marginInlineStart:`calc(100% - ${i.switchPinSize+i.switchPadding*2}px + ${i.switchInnerMarginMax*2}px)`,marginInlineEnd:`calc(-100% + ${i.switchPinSize+i.switchPadding*2}px - ${i.switchInnerMarginMax*2}px)`}},[`&:not(${n}-disabled):active`]:{[`&:not(${n}-checked) ${e}`]:{[`${e}-unchecked`]:{marginInlineStart:i.switchPadding*2,marginInlineEnd:-i.switchPadding*2}},[`&${n}-checked ${e}`]:{[`${e}-checked`]:{marginInlineStart:-i.switchPadding*2,marginInlineEnd:i.switchPadding*2}}}}}},ai=i=>{const{componentCls:n}=i;return{[n]:w(w(w(w({},V(i)),{position:"relative",display:"inline-block",boxSizing:"border-box",minWidth:i.switchMinWidth,height:i.switchHeight,lineHeight:`${i.switchHeight}px`,verticalAlign:"middle",background:i.colorTextQuaternary,border:"0",borderRadius:100,cursor:"pointer",transition:`all ${i.motionDurationMid}`,userSelect:"none",[`&:hover:not(${n}-disabled)`]:{background:i.colorTextTertiary}}),W(i)),{[`&${n}-checked`]:{background:i.switchColor,[`&:hover:not(${n}-disabled)`]:{background:i.colorPrimaryHover}},[`&${n}-loading, &${n}-disabled`]:{cursor:"not-allowed",opacity:i.switchDisabledOpacity,"*":{boxShadow:"none",cursor:"not-allowed"}},[`&${n}-rtl`]:{direction:"rtl"}})}},ci=L("Switch",i=>{const n=i.fontSize*i.lineHeight,e=i.controlHeight/2,t=2,h=n-t*2,l=e-t*2,s=O(i,{switchMinWidth:h*2+t*4,switchHeight:n,switchDuration:i.motionDurationMid,switchColor:i.colorPrimary,switchDisabledOpacity:i.opacityLoading,switchInnerMarginMin:h/2,switchInnerMarginMax:h+t+t*2,switchPadding:t,switchPinSize:h,switchBg:i.colorBgContainer,switchMinWidthSM:l*2+t*2,switchHeightSM:e,switchInnerMarginMinSM:l/2,switchInnerMarginMaxSM:l+t+t*2,switchPinSizeSM:l,switchHandleShadow:`0 2px 4px 0 ${new G("#00230b").setAlpha(.2).toRgbString()}`,switchLoadingIconSize:i.fontSizeIcon*.75,switchLoadingIconColor:`rgba(0, 0, 0, ${i.opacityLoading})`,switchHandleActiveInset:"-30%"});return[ai(s),ei(s),ni(s),ii(s),k(s)]}),ti=R("small","default"),di=()=>({id:String,prefixCls:String,size:c.oneOf(ti),disabled:{type:Boolean,default:void 0},checkedChildren:c.any,unCheckedChildren:c.any,tabindex:c.oneOfType([c.string,c.number]),autofocus:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},checked:c.oneOfType([c.string,c.number,c.looseBool]),checkedValue:c.oneOfType([c.string,c.number,c.looseBool]).def(!0),unCheckedValue:c.oneOfType([c.string,c.number,c.looseBool]).def(!1),onChange:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onMouseup:{type:Function},"onUpdate:checked":{type:Function},onBlur:Function,onFocus:Function}),li=j({compatConfig:{MODE:3},name:"ASwitch",__ANT_SWITCH:!0,inheritAttrs:!1,props:di(),slots:Object,setup(i,n){let{attrs:e,slots:t,expose:h,emit:l}=n;const s=Y(),x=A(),g=p(()=>{var a;return(a=i.disabled)!==null&&a!==void 0?a:x.value});K(()=>{f(!("defaultChecked"in e),"Switch","'defaultChecked' is deprecated, please use 'v-model:checked'"),f(!("value"in e),"Switch","`value` is not validate prop, do you mean `checked`?")});const S=b(i.checked!==void 0?i.checked:e.defaultChecked),I=p(()=>S.value===i.checkedValue);N(()=>i.checked,()=>{S.value=i.checked});const{prefixCls:d,direction:y,size:P}=X("switch",i),[z,H]=ci(d),u=b(),M=()=>{var a;(a=u.value)===null||a===void 0||a.focus()};h({focus:M,blur:()=>{var a;(a=u.value)===null||a===void 0||a.blur()}}),U(()=>{q(()=>{i.autofocus&&!g.value&&u.value.focus()})});const m=(a,r)=>{g.value||(l("update:checked",a),l("change",a,r),s.onFieldChange())},E=a=>{l("blur",a)},T=a=>{M();const r=I.value?i.unCheckedValue:i.checkedValue;m(r,a),l("click",r,a)},D=a=>{a.keyCode===C.LEFT?m(i.unCheckedValue,a):a.keyCode===C.RIGHT&&m(i.checkedValue,a),l("keydown",a)},B=a=>{var r;(r=u.value)===null||r===void 0||r.blur(),l("mouseup",a)},F=p(()=>({[`${d.value}-small`]:P.value==="small",[`${d.value}-loading`]:i.loading,[`${d.value}-checked`]:I.value,[`${d.value}-disabled`]:g.value,[d.value]:!0,[`${d.value}-rtl`]:y.value==="rtl",[H.value]:!0}));return()=>{var a;return z(o(J,null,{default:()=>[o("button",$($($({},Z(i,["prefixCls","checkedChildren","unCheckedChildren","checked","autofocus","checkedValue","unCheckedValue","id","onChange","onUpdate:checked"])),e),{},{id:(a=i.id)!==null&&a!==void 0?a:s.id.value,onKeydown:D,onClick:T,onBlur:E,onMouseup:B,type:"button",role:"switch","aria-checked":S.value,disabled:g.value||i.loading,class:[e.class,F.value],ref:u}),[o("div",{class:`${d.value}-handle`},[i.loading?o(Q,{class:`${d.value}-loading-icon`},null):null]),o("span",{class:`${d.value}-inner`},[o("span",{class:`${d.value}-inner-checked`},[v(t,i,"checkedChildren")]),o("span",{class:`${d.value}-inner-unchecked`},[v(t,i,"unCheckedChildren")])])])]}))}}}),vi=_(li);export{ti as SwitchSizes,vi as default,di as switchProps};
|