cc-viewer 1.6.274 → 1.6.276
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 +11 -0
- package/cli.js +29 -0
- package/dist/assets/App-VfOsEOzR.css +1 -0
- package/dist/assets/App-g0FMGNbK.js +1 -0
- package/dist/assets/{MdxEditorPanel-DvqnmX-m.css → MdxEditorPanel-1vSx6ymU.css} +1 -1
- package/dist/assets/{MdxEditorPanel-BAnfnKiF.js → MdxEditorPanel-lkBOg8Jh.js} +1 -1
- package/dist/assets/Mobile-CfP2RFHS.js +1 -0
- package/dist/assets/{_baseUniq-CPJrFyUF.js → _baseUniq-IhLiJsz9.js} +1 -1
- package/dist/assets/{arc-BLBrFElt.js → arc-CI5WB-FW.js} +1 -1
- package/dist/assets/{architectureDiagram-Q4EWVU46-CbnBsMiQ.js → architectureDiagram-Q4EWVU46-YOnqcO8r.js} +1 -1
- package/dist/assets/{blockDiagram-DXYQGD6D-0mYr6-Fl.js → blockDiagram-DXYQGD6D-B6oK5mZJ.js} +1 -1
- package/dist/assets/{c4Diagram-AHTNJAMY-CS7vcr0z.js → c4Diagram-AHTNJAMY-JsynU_tx.js} +1 -1
- package/dist/assets/{channel-CF3zZzSR.js → channel-DLsvHA9V.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-1FZYtnJ7.js → chunk-4BX2VUAB-DGhBdIp1.js} +1 -1
- package/dist/assets/{chunk-4TB4RGXK-COs1qui5.js → chunk-4TB4RGXK-crHwtw-n.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-p77Qw3wN.js → chunk-55IACEB6-CHTfiCuV.js} +1 -1
- package/dist/assets/{chunk-EDXVE4YY-5qaIrQKg.js → chunk-EDXVE4YY-buLXKlmZ.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-DmCR8mDZ.js → chunk-FMBD7UC4-DSfXNwCE.js} +1 -1
- package/dist/assets/{chunk-OYMX7WX6-D6xDfgW3.js → chunk-OYMX7WX6-16K1lWZl.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-B6cmUU0N.js → chunk-QZHKN3VN-DgDuGTt2.js} +1 -1
- package/dist/assets/{chunk-YZCP3GAM-l-OyOqnn.js → chunk-YZCP3GAM-DHqswL_6.js} +1 -1
- package/dist/assets/classDiagram-6PBFFD2Q-BCPnChlV.js +1 -0
- package/dist/assets/classDiagram-v2-HSJHXN6E-BCPnChlV.js +1 -0
- package/dist/assets/clone-CJyRHxRw.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-CEzaS8XS.js → cose-bilkent-S5V4N54A-D1j0CqN7.js} +1 -1
- package/dist/assets/{dagre-KV5264BT-B3U2njWW.js → dagre-KV5264BT-XKbpcECY.js} +1 -1
- package/dist/assets/{diagram-5BDNPKRD-BRSDbyBr.js → diagram-5BDNPKRD-CcbZUyrk.js} +1 -1
- package/dist/assets/{diagram-G4DWMVQ6-BZfOi9B7.js → diagram-G4DWMVQ6-UxGWOz8H.js} +1 -1
- package/dist/assets/{diagram-MMDJMWI5-CWpb3Cg0.js → diagram-MMDJMWI5-COG8DLtM.js} +1 -1
- package/dist/assets/{diagram-TYMM5635-CTJyBSVj.js → diagram-TYMM5635-_dGuaThe.js} +1 -1
- package/dist/assets/{erDiagram-SMLLAGMA-CHtTRd5S.js → erDiagram-SMLLAGMA-CNu-hiRP.js} +1 -1
- package/dist/assets/{flowDiagram-DWJPFMVM-Bda8X-WJ.js → flowDiagram-DWJPFMVM-DQHinAg1.js} +1 -1
- package/dist/assets/{ganttDiagram-T4ZO3ILL-CPfnGu5V.js → ganttDiagram-T4ZO3ILL-BAySDtwF.js} +1 -1
- package/dist/assets/{gitGraphDiagram-UUTBAWPF-B5QxesQg.js → gitGraphDiagram-UUTBAWPF-BBO_XdYa.js} +1 -1
- package/dist/assets/{graph-ChltdhTU.js → graph-D9285_n5.js} +1 -1
- package/dist/assets/index-0hGZ2hk-.js +2 -0
- package/dist/assets/{index-BK4sui_O.js → index-6IDcGlHG.js} +1 -1
- package/dist/assets/{index-C2fhupP6.js → index-CXhN926Q.js} +1 -1
- package/dist/assets/{index-CfEkC3bc.js → index-CaKHIO3v.js} +1 -1
- package/dist/assets/{index-yClPXlMf.js → index-D18bphjK.js} +1 -1
- package/dist/assets/{index-B7lK5fJz.js → index-DTi4w1dY.js} +1 -1
- package/dist/assets/{index-C5PA4OJg.js → index-gSNq4ykV.js} +1 -1
- package/dist/assets/{index-DyGa-jNv.js → index-pEgUz6fU.js} +1 -1
- package/dist/assets/{infoDiagram-42DDH7IO-CD4TS4O2.js → infoDiagram-42DDH7IO-DODFGD-6.js} +1 -1
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-jhiYabQ7.js → ishikawaDiagram-UXIWVN3A-kn6kHfYH.js} +1 -1
- package/dist/assets/{journeyDiagram-VCZTEJTY-BDzIXxxt.js → journeyDiagram-VCZTEJTY-BRaTTmzg.js} +1 -1
- package/dist/assets/{jszip.min-CuGGBMI4.js → jszip.min-CnLSX52a.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-D34MYATQ.js → kanban-definition-6JOO6SKY-CzLQb2u1.js} +1 -1
- package/dist/assets/{layout-D6sLAapX.js → layout-B9TjxURJ.js} +1 -1
- package/dist/assets/{linear-CFV4P-wn.js → linear-Dpck4eFk.js} +1 -1
- package/dist/assets/{mermaid.core-YmJi7T-s.js → mermaid.core-Dd_GyvDR.js} +2 -2
- package/dist/assets/{min-akJQqRMn.js → min-CUkc58GS.js} +1 -1
- package/dist/assets/{mindmap-definition-QFDTVHPH-w5zaJyrN.js → mindmap-definition-QFDTVHPH-BteQHO2X.js} +1 -1
- package/dist/assets/{pieDiagram-DEJITSTG-B6EM4Ow6.js → pieDiagram-DEJITSTG-CaOYrVcc.js} +1 -1
- package/dist/assets/{quadrantDiagram-34T5L4WZ-2TmBxFy-.js → quadrantDiagram-34T5L4WZ-DTcmYcmQ.js} +1 -1
- package/dist/assets/{requirementDiagram-MS252O5E-EOjvbxUy.js → requirementDiagram-MS252O5E-CY8WoU0d.js} +1 -1
- package/dist/assets/{sankeyDiagram-XADWPNL6-BmTQD5eT.js → sankeyDiagram-XADWPNL6-9NPSQPLx.js} +1 -1
- package/dist/assets/seqResourceLoaders-BgEHTs14.js +2 -0
- package/dist/assets/seqResourceLoaders-DPmXT2Hh.css +41 -0
- package/dist/assets/{sequenceDiagram-FGHM5R23-CLjtqA1D.js → sequenceDiagram-FGHM5R23-e7V5HhHU.js} +1 -1
- package/dist/assets/{stateDiagram-FHFEXIEX-Cbq90iZ8.js → stateDiagram-FHFEXIEX-B6R9nxzj.js} +1 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-sUx4g5Jk.js +1 -0
- package/dist/assets/{timeline-definition-GMOUNBTQ-f3kEDay0.js → timeline-definition-GMOUNBTQ-CqpCMRBB.js} +1 -1
- package/dist/assets/{vendor-antd-5xE7sz6B.js → vendor-antd-BqzW9CXo.js} +2 -2
- package/dist/assets/{vendor-codemirror-ib-jPbXC.js → vendor-codemirror-B5WQ33Y0.js} +1 -1
- package/dist/assets/vendor-markdown-DOJHsAxX.js +3 -0
- package/dist/assets/{vendor-mdxeditor-BdKMdw6O.js → vendor-mdxeditor-DwzTmNBd.js} +2 -2
- package/dist/assets/{vendor-qrcode-vKlE-WYu.js → vendor-qrcode-C9ZMcovz.js} +1 -1
- package/dist/assets/{vendor-virtuoso-DOIfjLfU.js → vendor-virtuoso-CQj5-1oy.js} +1 -1
- package/dist/assets/{vennDiagram-DHZGUBPP-0GDSFVnH.js → vennDiagram-DHZGUBPP-CxzTP1Mu.js} +1 -1
- package/dist/assets/{wardley-RL74JXVD-B2rj5j7G.js → wardley-RL74JXVD-_Dcq-0iY.js} +1 -1
- package/dist/assets/{wardleyDiagram-NUSXRM2D-COVTciJP.js → wardleyDiagram-NUSXRM2D-CltoIcVL.js} +1 -1
- package/dist/assets/{xychartDiagram-5P7HB3ND-DXoLnGxX.js → xychartDiagram-5P7HB3ND-DXKa-Cxe.js} +1 -1
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/server/i18n.js +186 -2
- package/server/lib/auth.js +348 -0
- package/server/lib/voice-pack-events.js +2 -2
- package/server/routes/_dispatch.js +43 -0
- package/server/routes/ask-perm.js +452 -0
- package/server/routes/auth.js +166 -0
- package/server/routes/events.js +335 -0
- package/server/routes/files-content.js +421 -0
- package/server/routes/files-fs.js +955 -0
- package/server/routes/git.js +228 -0
- package/server/routes/logs.js +201 -0
- package/server/routes/misc.js +22 -0
- package/server/routes/plugins.js +96 -0
- package/server/routes/preferences.js +216 -0
- package/server/routes/project-meta.js +118 -0
- package/server/routes/skills.js +261 -0
- package/server/routes/team.js +169 -0
- package/server/routes/voice-pack.js +235 -0
- package/server/routes/workspaces.js +171 -0
- package/server/server.js +340 -3953
- package/dist/assets/App-BediOgt6.js +0 -1
- package/dist/assets/App-TGGslOeT.css +0 -1
- package/dist/assets/Mobile-C_nqfEXb.js +0 -1
- package/dist/assets/classDiagram-6PBFFD2Q-BiCYgTHO.js +0 -1
- package/dist/assets/classDiagram-v2-HSJHXN6E-BiCYgTHO.js +0 -1
- package/dist/assets/clone-ChTCnPsO.js +0 -1
- package/dist/assets/index-CuE3VwXB.js +0 -2
- package/dist/assets/seqResourceLoaders-CgNKpehN.js +0 -2
- package/dist/assets/seqResourceLoaders-Dd_x1M9-.css +0 -41
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-BKDg-3t_.js +0 -1
- package/dist/assets/vendor-markdown-BFrYfpb0.js +0 -1
package/README.md
CHANGED
|
@@ -129,6 +129,17 @@ You can even scan a QR code and code from a mobile device:
|
|
|
129
129
|
|
|
130
130
|
Everything you imagined about mobile coding — plus a plugin mechanism: if you need to customize for your own coding habits, stay tuned for plugin hook updates.
|
|
131
131
|
|
|
132
|
+
### Password protection
|
|
133
|
+
|
|
134
|
+
By default, remote (LAN) access requires the `?token=` query that ccv prints at startup. As an alternative that's friendlier to share, scan, or bookmark, you can turn on **password login**:
|
|
135
|
+
|
|
136
|
+
* Start with `ccv --usePassword` to enable it immediately. A bare flag auto-generates a 6-character password (uppercase letters + digits) and prints it to the console; `ccv --usePassword=<your-password>` sets a specific one. The password is shown in uppercase but matched case-insensitively at login, so it's easy to type on a phone.
|
|
137
|
+
* The machine that opens ccv on `127.0.0.1` is the **admin**: it never needs a password and is the only one allowed to view or change it. Open the QR-code popover — directly below the QR you can enable protection, edit/copy the password, or turn it back off.
|
|
138
|
+
* Remote devices opening the LAN URL (without a token) are shown a minimal password page; entering the correct password sets an `HttpOnly` cookie and the page refreshes into the app. The existing `?token=` URL keeps working in parallel.
|
|
139
|
+
* An **empty password means no protection at all** — it is allowed, but the admin UI shows a clear security warning.
|
|
140
|
+
* **Global default + per-project override:** by default one password covers every project. From the QR popover the admin can switch between **This project** and **Global** — set a project-specific password that overrides the global default for that project only, or remove the override to inherit the global setting again. (A disabled project override means "no protection for this project", which is different from removing it.)
|
|
141
|
+
* The on/off state and password(s) are persisted alongside your other settings in cc-viewer's `preferences.json` — a global `auth` key plus an optional `authByProject` map (the password is base64-obfuscated, not stored as raw plaintext; file mode `0600`). The login cookie is tied to the per-launch token, so restarting ccv requires remote devices to log in again.
|
|
142
|
+
|
|
132
143
|
### Logger mode (view the complete Claude Code session)
|
|
133
144
|
|
|
134
145
|
<img height="768" width="1500" alt="image" src="https://github.com/user-attachments/assets/a8a9f3f7-d876-4f6b-a64d-f323a05c4d21" />
|
package/cli.js
CHANGED
|
@@ -386,6 +386,13 @@ async function runCliMode(extraClaudeArgs = [], cwd, noOpen = false) {
|
|
|
386
386
|
for (const _ip of _lanIps) {
|
|
387
387
|
console.log(` ➜ Network: ${protocol}://${_ip}:${port}?token=${_token}`);
|
|
388
388
|
}
|
|
389
|
+
// 密码登录已启用时,把当前密码打印出来 —— 否则 `ccv --usePassword`(随机密码)在 CLI 模式下
|
|
390
|
+
// 用户无从得知密码(server.js 的密码打印只在非 CLI 模式生效)。空密码=无防护,给出警告。
|
|
391
|
+
const _auth = serverMod.getAuthConfig && serverMod.getAuthConfig();
|
|
392
|
+
if (_auth && _auth.enabled) {
|
|
393
|
+
if (_auth.password === '') console.error(` ${t('server.passwordEmptyWarn')}`);
|
|
394
|
+
else console.log(` ${t('server.passwordActive', { password: _auth.password })}`);
|
|
395
|
+
}
|
|
389
396
|
|
|
390
397
|
// 5. 注册退出处理
|
|
391
398
|
const cleanup = () => {
|
|
@@ -499,6 +506,13 @@ async function runSdkMode(extraClaudeArgs = [], cwd, noOpen = false) {
|
|
|
499
506
|
for (const _ip of _lanIps) {
|
|
500
507
|
console.log(` ➜ Network: ${protocol}://${_ip}:${port}?token=${_token}`);
|
|
501
508
|
}
|
|
509
|
+
// 密码登录已启用时,把当前密码打印出来 —— 否则 `ccv --usePassword`(随机密码)在 CLI 模式下
|
|
510
|
+
// 用户无从得知密码(server.js 的密码打印只在非 CLI 模式生效)。空密码=无防护,给出警告。
|
|
511
|
+
const _auth = serverMod.getAuthConfig && serverMod.getAuthConfig();
|
|
512
|
+
if (_auth && _auth.enabled) {
|
|
513
|
+
if (_auth.password === '') console.error(` ${t('server.passwordEmptyWarn')}`);
|
|
514
|
+
else console.log(` ${t('server.passwordActive', { password: _auth.password })}`);
|
|
515
|
+
}
|
|
502
516
|
|
|
503
517
|
// 注册退出处理
|
|
504
518
|
const cleanup = () => {
|
|
@@ -645,6 +659,21 @@ if (userAvatarIdx !== -1) {
|
|
|
645
659
|
}
|
|
646
660
|
}
|
|
647
661
|
|
|
662
|
+
// Extract --usePassword[=<pwd>] — enable password login at startup.
|
|
663
|
+
// Bare form → random 6-char password; =<pwd> form → explicit. server.js resolves
|
|
664
|
+
// the final value: explicit > already-persisted > random.
|
|
665
|
+
const usePwdIdx = args.findIndex((a) => a === '--usePassword' || a.startsWith('--usePassword='));
|
|
666
|
+
if (usePwdIdx !== -1) {
|
|
667
|
+
const arg = args[usePwdIdx];
|
|
668
|
+
process.env.CCV_USE_PASSWORD = '1';
|
|
669
|
+
const eq = arg.indexOf('=');
|
|
670
|
+
if (eq !== -1) {
|
|
671
|
+
const val = arg.slice(eq + 1);
|
|
672
|
+
if (val.length > 0) process.env.CCV_PASSWORD = val;
|
|
673
|
+
}
|
|
674
|
+
args.splice(usePwdIdx, 1);
|
|
675
|
+
}
|
|
676
|
+
|
|
648
677
|
// ccv 自有命令判断
|
|
649
678
|
const isLogger = args.includes('-logger');
|
|
650
679
|
const isUninstall = args.includes('--uninstall') || args.includes('-uninstall');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._liveTag_sg7sp_3{position:relative;display:inline-flex;align-items:center;justify-content:flex-start;border-radius:999px;border:1px solid;border-color:var(--ctx-color);color:var(--ctx-color);padding:0 10px;height:100%;font-size:12px;line-height:1;overflow:hidden;transition:border-color .3s,color .3s;white-space:nowrap;background:var(--bg-base-pure)}._liveTagFill_sg7sp_23{position:absolute;left:0;top:0;bottom:0;width:var(--ctx-percent, 0);background-color:var(--ctx-color);opacity:.35;transition:width .5s ease,background-color .3s;pointer-events:none}._liveTagContent_sg7sp_36{position:relative;z-index:1;display:inline-flex;align-items:center}._liveTagHistory_sg7sp_44{background:var(--bg-surface);border-color:var(--border-light);color:var(--text-primary)}._liveTagText_sg7sp_51{margin-left:4px;font-variant-numeric:tabular-nums}._cachePopoverPlaceholder_sg7sp_57{min-width:300px}._editButton_31hdb_10{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;background:transparent;border:none;padding:0 2px;margin-left:4px;cursor:pointer;font-size:inherit;line-height:1;color:var(--text-secondary, #888);opacity:0;border-radius:3px;transition:opacity .12s ease,color .12s ease,background-color .12s ease}._editButton_31hdb_10 .anticon{display:inline-flex;align-items:center;line-height:1;position:relative;top:-1px}._editButton_31hdb_10:hover,._editButton_31hdb_10:focus-visible{opacity:1;color:var(--text-primary, #333);background-color:var(--bg-hover, rgba(0, 0, 0, .04));outline:none}._editButton_31hdb_10:focus-visible{box-shadow:0 0 0 2px var(--focus-ring, rgba(64, 158, 255, .4))}._footer_31hdb_55{display:flex;justify-content:space-between;align-items:center;gap:8px}._footerLeft_31hdb_61,._footerRight_31hdb_65{display:flex;gap:8px}._projectNameRow_31hdb_70{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:6px 10px;background:var(--bg-secondary, rgba(0, 0, 0, .03));border-radius:4px;font-size:12px}._projectNameLabel_31hdb_80{color:var(--text-secondary, #888)}._projectNameValue_31hdb_83{color:var(--text-primary, #333);font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);word-break:break-all}._modelCard_108ko_3{border:1px solid var(--border-secondary);border-radius:6px;padding:8px 10px;background:var(--bg-container)}._modelName_108ko_9{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._statsTable_108ko_17{width:100%;border-collapse:collapse}._th_108ko_21{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:var(--text-tertiary);font-weight:400;text-align:right}._td_108ko_30{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:var(--text-primary);text-align:right}._label_108ko_38{padding:2px 12px;font-size:12px;font-family:monospace;white-space:nowrap;color:var(--text-light);font-weight:400;text-align:left}._rowBorder_108ko_47{border-bottom:1px solid var(--border-primary)}._rebuildTotalRow_108ko_50{border-top:1px solid var(--border-light)}._rebuildTotalRow_108ko_50 td{font-weight:600}._cachePopoverEmpty_108ko_56{padding:8px 4px;color:var(--text-tertiary);font-size:13px}._toolChipGrid_108ko_61{display:flex;flex-wrap:wrap;gap:4px;padding:2px 0 6px 2px}._cacheToolChip_108ko_67{font-size:11px;padding:0 6px;border-radius:3px;background:var(--bg-surface);color:var(--text-secondary);line-height:18px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border-primary);cursor:help}._titleIcon_108ko_81{margin-right:8px}._memoryMarkdown_108ko_84{font-size:12.5px;line-height:1.55;color:var(--text-primary);word-break:break-word}._memoryMarkdown_108ko_84 p{margin:0 0 6px}._memoryMarkdown_108ko_84 ul,._memoryMarkdown_108ko_84 ol{margin:4px 0 6px;padding-left:20px}._memoryMarkdown_108ko_84 li{margin:2px 0}._memoryMarkdown_108ko_84 h1,._memoryMarkdown_108ko_84 h2,._memoryMarkdown_108ko_84 h3,._memoryMarkdown_108ko_84 h4{font-size:13px;font-weight:600;margin:8px 0 4px;color:var(--text-primary)}._memoryMarkdown_108ko_84 h1{font-size:14px}._memoryMarkdown_108ko_84 a{color:var(--primary-color, #1677ff);text-decoration:none;cursor:pointer}._memoryMarkdown_108ko_84 a:hover{text-decoration:underline}._memoryMarkdown_108ko_84 code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;padding:1px 4px;border-radius:3px;background:var(--bg-surface);color:var(--text-primary)}._memoryMarkdown_108ko_84 pre{margin:6px 0;padding:8px 10px;border-radius:4px;background:var(--bg-surface);overflow-x:auto}._memoryMarkdown_108ko_84 pre code{padding:0;background:transparent;font-size:12px}._memoryMarkdown_108ko_84 blockquote{margin:4px 0;padding:2px 8px;border-left:3px solid var(--border-hover);color:var(--text-secondary)}._memoryMarkdown_108ko_84 hr{margin:8px 0;border:none;border-top:1px solid var(--border-secondary)}._headerBar_17o2s_2{display:flex;align-items:center;justify-content:space-between;width:100%;height:100%}._logoWrap_17o2s_10{display:inline-flex;align-items:center;position:relative;margin-top:14px}._logoWrapActive_17o2s_17:after{content:"";position:absolute;top:-10px;bottom:-10px;left:0;right:-200px}._logoImage_17o2s_26{height:24px;width:24px;border-radius:3px;vertical-align:middle;opacity:.75;transition:opacity .2s;cursor:pointer}._logoImageActive_17o2s_36{opacity:1}._compactBtn_17o2s_43{font-size:12px;height:30px;display:inline-flex;align-items:center;justify-content:center}._compactBtnNoBorder_17o2s_52{width:30px;height:30px;min-width:30px;padding:0;border:none;font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center}._compactBtnNoBorder_17o2s_52 .anticon{display:inline-flex;align-items:center;justify-content:center;line-height:0}._headerProjectName_17o2s_79{font-size:12px;color:inherit;white-space:nowrap}._headerProjectName_17o2s_79:hover [data-alias-edit-trigger],._headerProjectName_17o2s_79:focus-within [data-alias-edit-trigger]{opacity:.55}._countdownStrong_17o2s_96{font-variant-numeric:tabular-nums}._qrcodePopover_17o2s_101{display:flex;flex-direction:column;align-items:center;padding:8px}._qrcodeSection_17o2s_108{display:flex;flex-direction:column;align-items:center;padding:16px;margin-bottom:12px;border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container)}._qrcodeTitle_17o2s_119{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px}._qrcodeUrlInput_17o2s_126{margin-top:12px;font-size:12px;font-family:Menlo,Monaco,monospace}._qrcodeUrlCopy_17o2s_132{cursor:pointer;color:var(--text-tertiary);transition:color .2s}._qrcodeUrlCopy_17o2s_132:hover{color:var(--color-primary-light)}._authSection_17o2s_143{display:flex;flex-direction:column;align-items:stretch;width:100%;margin-top:12px;padding:12px;border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container);gap:8px}._authHeaderRow_17o2s_156{display:flex;align-items:center;justify-content:space-between}._authTitle_17o2s_162{font-size:13px;font-weight:600;color:var(--text-primary)}._authPasswordLabel_17o2s_168{font-size:12px;color:var(--text-secondary)}._authPasswordInput_17o2s_173{font-size:12px;font-family:Menlo,Monaco,monospace}._authSaveBtn_17o2s_178{align-self:flex-end}._authEmptyWarn_17o2s_182{font-size:12px;color:var(--color-error-light);line-height:1.4}._settingsGroupBox_17o2s_190{border:1px solid var(--border-secondary);border-radius:8px;background:var(--bg-container);padding:4px 16px;margin-bottom:12px}._settingsGroupTitle_17o2s_198{font-size:14px;font-weight:600;color:var(--text-primary);padding:12px 0 4px;border-bottom:1px solid var(--border-secondary)}._settingsItem_17o2s_207{display:flex;justify-content:space-between;align-items:center;padding:12px 0}._settingsLabel_17o2s_214{font-size:14px}._settingsDivider_17o2s_218{border-top:1px solid var(--border-primary);margin:12px 0}._logDirInput_17o2s_223{margin-top:8px;background:var(--bg-base-alt);border-color:var(--border-light);color:var(--text-primary);font-family:monospace;font-size:13px}._tokenStatsEmpty_17o2s_233{padding:8px 4px;color:var(--text-tertiary);font-size:13px}._tokenStatsContainer_17o2s_240{display:flex;gap:12px;align-items:flex-start}._tokenStatsColumn_17o2s_246{min-width:240px}._toolStatsColumn_17o2s_250{min-width:180px}._modelCardSpaced_17o2s_256{margin-bottom:10px}._rebuildCard_17o2s_265{border:1px solid var(--border-secondary);border-radius:6px;padding:8px 10px;margin-top:10px;background:var(--bg-container)}._promptExportBar_17o2s_274{margin-bottom:12px}._promptScrollArea_17o2s_278{max-height:500px;overflow:auto}._promptEmpty_17o2s_283{color:var(--text-tertiary);padding:12px}._promptTimestamp_17o2s_289{color:var(--text-muted);font-size:12px;margin:12px 0 4px;padding-bottom:6px}._textPromptCard_17o2s_297{margin:4px 0;background:var(--bg-container);border-radius:6px;border:1px solid var(--border-secondary);padding:10px 14px}._preText_17o2s_306{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6;color:var(--text-primary);margin:4px 0}._systemCollapse_17o2s_316{margin:4px 0;background:var(--bg-elevated);border:1px solid var(--border-secondary);border-radius:6px}._systemLabel_17o2s_323{color:var(--text-tertiary);font-size:12px}._preSys_17o2s_328{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-tertiary);margin:0}._promptTextarea_17o2s_338{box-sizing:border-box;background:var(--bg-base-pure);width:100%;min-height:400px;color:var(--text-primary);font-family:monospace;font-size:13px;line-height:1.6;border:none;resize:vertical;padding:10px 14px;outline:none}._projectStatsCenter_17o2s_354{display:flex;justify-content:center;padding:40px 0}._projectStatsEmpty_17o2s_360{color:var(--text-tertiary);padding:40px 0;text-align:center;font-size:13px}._projectStatsContent_17o2s_367{display:flex;flex-direction:column;gap:16px}._projectStatsUpdated_17o2s_373{color:var(--text-muted);font-size:12px;text-align:right}._projectStatsSummary_17o2s_379{display:grid;grid-template-columns:1fr 1fr;gap:10px}._projectStatCard_17o2s_385{background:var(--bg-container);border:1px solid var(--border-secondary);border-radius:8px;padding:14px 12px;text-align:center}._projectStatValue_17o2s_393{font-size:22px;font-weight:700;color:var(--text-primary);font-family:monospace;font-variant-numeric:tabular-nums}._projectStatLabel_17o2s_401{font-size:12px;color:var(--text-tertiary);margin-top:4px}._projectStatsSection_17o2s_407{display:flex;flex-direction:column;gap:10px}._projectStatsSectionTitle_17o2s_413{font-size:14px;font-weight:600;color:var(--text-secondary);padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._projectStatsModelCard_17o2s_421{background:var(--bg-container);border:1px solid var(--border-secondary);border-radius:6px;padding:10px 12px}._projectStatsModelHeader_17o2s_428{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border-secondary)}._projectStatsModelName_17o2s_437{font-size:13px;font-weight:600;color:var(--text-primary)}._projectStatsModelCount_17o2s_443{font-size:12px;color:var(--text-tertiary);font-family:monospace}._cacheCopyBtn_17o2s_451{font-size:14px;color:var(--text-tertiary);cursor:pointer;transition:color .2s;margin-left:8px}._cacheCopyBtn_17o2s_451:hover{color:var(--text-primary)}._cacheTokenInfo_17o2s_463{display:flex;align-items:center;font-size:12px;font-family:monospace;color:var(--text-light);margin-bottom:8px}._cacheCodeBlock_17o2s_476{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-primary);border-radius:4px;padding:8px;margin:4px 0;font-family:Menlo,Monaco,monospace}._cacheCodeBlockSystem_17o2s_490{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-code-system);border:1px solid var(--border-code-system);border-radius:4px;padding:8px;margin:4px 0;font-family:Menlo,Monaco,monospace}._cacheNavBtn_17o2s_504{margin-left:auto;font-size:11px;color:var(--color-primary);cursor:pointer;border:1px solid var(--color-primary);border-radius:3px;padding:1px 6px;white-space:nowrap}._cacheNavBtn_17o2s_504:hover{background:var(--color-primary-bg-light)}._cacheNavList_17o2s_519{width:600px;max-height:300px;overflow-y:auto}._cacheNavItem_17o2s_525{padding:4px 8px;font-size:12px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px}._cacheNavItem_17o2s_525:hover{background:var(--color-primary-bg-lighter);color:var(--text-white)}._cacheBlockHighlight_17o2s_541{box-shadow:0 0 10px var(--color-primary-shadow);transition:box-shadow .2s ease-in}._cacheBlockHighlightFading_17o2s_546{box-shadow:0 0 10px transparent;transition:box-shadow 3s ease-out}._cacheBorderSvg_17o2s_551{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._cacheBorderSvgFading_17o2s_560{opacity:0;transition:opacity 3s ease-out}._cacheBorderRect_17o2s_565{animation:_cacheDashRotate_17o2s_1 4s linear infinite}@keyframes _cacheDashRotate_17o2s_1{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}._thLeft_17o2s_575{text-align:left}._cacheWriteToken_17o2s_590{color:var(--color-code-orange)}._cacheReadToken_17o2s_594{color:var(--color-success)}._cacheCtxPercent_17o2s_598{color:var(--text-tertiary);margin-left:6px}._qrcodeIcon_17o2s_618{width:30px;height:30px;padding:6px;box-sizing:border-box;color:var(--text-secondary);cursor:pointer;border-radius:6px;transition:color .15s ease,background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;background:none;border:none}._qrcodeIcon_17o2s_618:hover{color:var(--text-primary);background:var(--bg-hover, rgba(0, 0, 0, .04))}._qrcodeIcon_17o2s_618:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:1px}._approvalBell_17o2s_644{position:relative;width:30px;height:30px;padding:6px;box-sizing:border-box;color:var(--color-warning, #faad14);cursor:pointer;border-radius:6px;transition:color .15s ease,background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;background:none;border:none}._approvalBell_17o2s_644:hover{color:var(--text-primary);background:var(--bg-hover, rgba(0, 0, 0, .04))}._approvalBell_17o2s_644:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:1px}._approvalBellBadge_17o2s_669{position:absolute;top:0;right:0;min-width:14px;height:14px;padding:0 3px;box-sizing:border-box;background:var(--color-error, #ff4d4f);color:#fff;font-size:9px;line-height:14px;border-radius:7px;text-align:center;font-weight:600}._proxySwapIcon_17o2s_686{margin-right:4px;font-size:11px}._proxyProfileTag_17o2s_692{border-radius:12px;background:var(--border-secondary);border:1px solid var(--border-light);color:var(--text-tertiary);font-size:12px;cursor:pointer;transition:color .2s,border-color .2s}._proxyProfileTag_17o2s_692:hover{color:var(--text-secondary);border-color:var(--text-disabled)}._themeToggle_17o2s_711{position:relative;box-sizing:border-box;display:inline-flex;vertical-align:middle;width:56px;height:30px;border-radius:15px;border:1px solid var(--border-hover);cursor:pointer;padding:0;overflow:hidden;transition:background-color .2s ease,border-color .2s ease;flex-shrink:0;outline:none}._themeToggle_17o2s_711:focus-visible{box-shadow:0 0 0 2px var(--primary-color, #1677ff)}._themeToggle_17o2s_711[data-theme=light]{background:linear-gradient(135deg,#eaf2fa,#d9e4ef);border-color:#c8d4e0}._themeToggle_17o2s_711[data-theme=dark]{background:#1a1a1a;border-color:#2a2a2a}._themeToggleKnob_17o2s_739{position:absolute;top:50%;left:2px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;transform:translateY(-50%);transition:transform .28s cubic-bezier(.4,.2,.2,1),background-color .2s ease,color .2s ease,box-shadow .2s ease;pointer-events:none}._themeToggle_17o2s_711[data-theme=light] ._themeToggleKnob_17o2s_739{background:#fff;color:#8fa2b7;box-shadow:0 1px 3px #1e32502e}._themeToggle_17o2s_711[data-theme=dark] ._themeToggleKnob_17o2s_739{transform:translate(28px,-50%);background:#2a2a2a;color:#e8e8e8;box-shadow:0 1px 3px #0006}._themeToggleIcon_17o2s_769{display:block}._headerRightRow_17o2s_774 .ant-space-item{display:inline-flex;align-items:center}._headerCountdownTag_17o2s_780{height:30px;margin:0;padding:0 10px;display:inline-flex;align-items:center;background:var(--bg-surface);border:1px solid var(--border-hover);border-radius:6px;line-height:1}._centerEmpty_midza_1{display:flex;align-items:center;justify-content:center;height:100%}._scrollContainer_midza_8{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;will-change:scroll-position}._listItem_midza_15{cursor:pointer;padding:8px 12px;border-left:6px solid transparent;border-right:1px solid var(--border-primary);border-top:1px solid transparent;border-bottom:1px solid var(--border-primary);transition:background .15s}._listItem_midza_15:hover{border-left-color:var(--border-hover)}._listItemActive_midza_29{background:var(--color-primary-bg-faint);border-left-color:var(--color-primary-light);border-right:1px solid var(--color-primary-light);border-top:1px solid var(--color-primary-light);border-bottom:1px solid var(--color-primary-light)}._listItemActive_midza_29,._listItemActive_midza_29:hover{background:var(--color-primary-bg-faint);border-left-color:var(--color-primary-light);border-right-color:var(--color-primary-light);border-top-color:var(--color-primary-light);border-bottom-color:var(--color-primary-light)}._itemContent_midza_46{width:100%;min-width:0}._itemHeader_midza_51{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}._tagNoMargin_midza_59{margin:0;font-size:12px}._modelName_midza_64{font-size:12px;color:var(--text-tertiary)}._modelNameMain_midza_69{color:var(--color-code-orange)}._time_midza_73{font-size:12px;color:var(--text-gray);margin-left:auto}._detailRow_midza_79{display:flex;gap:8px;font-size:12px;align-items:center}._urlText_midza_86{color:var(--text-disabled);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}._duration_midza_95{color:var(--text-gray);flex-shrink:0}._statusOk_midza_100{color:var(--color-success);opacity:.5;flex-shrink:0}._statusErr_midza_106{color:var(--color-error);flex-shrink:0}._statusDefault_midza_111{color:var(--text-tertiary);flex-shrink:0}._usageBox_midza_116{background:var(--bg-container);border-radius:4px;padding:3px 6px;margin-top:4px;font-size:12px;color:var(--text-gray);line-height:1.6}._cacheDot_midza_126{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px;vertical-align:middle}._cacheDotLoss_midza_135{background-color:var(--color-red-dark-bg);cursor:help}._cacheDotNormal_midza_140{background-color:var(--border-hover)}._tagMainAgent_midza_144{color:var(--color-code-orange);border-color:var(--color-code-orange-border);background:var(--color-code-orange-bg)}._tagPlan_midza_150{color:var(--color-error-muted);border-color:var(--color-error-muted);background-color:var(--bg-base-pure)}._tagMuted_midza_156{color:var(--text-muted);border-color:var(--border-light);background-color:var(--bg-base-pure)}._tooltipPreLine_midza_162{white-space:pre-line}._GzYRV{line-height:1.2;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}._3eOF8{margin-right:5px;font-weight:700}._3eOF8+._3eOF8{margin-left:-5px}._1MFti{cursor:pointer}._f10Tu{font-size:1.2em;margin-right:5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}._1UmXx:after{content:"▸"}._1LId0:after{content:"▾"}._1pNG9{margin-right:5px}._1pNG9:after{content:"...";font-size:.8em}._2IvMF{background:#eee}._2bkNM{margin:0;padding:0 10px}._1BXBN{margin:0;padding:0}._1MGIk{font-weight:600;margin-right:5px;color:#000}._3uHL6{color:#000}._2T6PJ,._1Gho6{color:#df113a}._vGjyY{color:#2a3f3c}._1bQdo{color:#0b75f5}._3zQKs{color:#469038}._1xvuR{color:#43413d}._oLqym,._2AXVT,._2KJWg{color:#000}._11RoI{background:#002b36}._17H2C,._3QHg2,._3fDAz{color:#fdf6e3}._2bSDX{font-weight:bolder;margin-right:5px;color:#fdf6e3}._gsbQL{color:#fdf6e3}._LaAZe,._GTKgm{color:#81b5ac}._Chy1W{color:#cb4b16}._2bveF{color:#d33682}._2vRm-{color:#ae81ff}._1prJR{color:#268bd2}._container_qeuid_1{background:var(--bg-container);border-radius:6px;border:1px solid var(--border-primary);padding:12px;font-size:13px;font-family:monospace;overflow:auto}._root_17dqd_1{display:flex;height:100%;min-height:0;gap:0}._sidebar_17dqd_9{width:220px;flex-shrink:0;border-right:1px solid var(--border-primary);overflow-y:auto;padding:4px 0;-webkit-overflow-scrolling:touch}._section_17dqd_18{-webkit-user-select:none;user-select:none}._sectionHeader_17dqd_22{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px;cursor:pointer;color:var(--text-primary);font-size:12px;font-weight:600;transition:background .15s;background:none;border:0;text-align:left;font:inherit}._sectionHeader_17dqd_22:hover{background:var(--overlay-light-faint)}._sectionHeader_17dqd_22:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._arrow_17dqd_48{font-size:10px;color:var(--text-tertiary);flex-shrink:0}._sectionTitle_17dqd_54{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sectionCount_17dqd_62{font-size:11px;color:var(--text-muted);background:var(--bg-elevated);border-radius:10px;padding:0 6px;line-height:18px}._sectionBody_17dqd_71{padding:2px 0}._historyToggle_17dqd_76{display:flex;align-items:center;gap:6px;width:100%;padding:4px 10px 4px 14px;cursor:pointer;color:var(--text-muted);font-size:11px;transition:color .15s,background .15s;background:none;border:0;text-align:left;font:inherit}._historyToggle_17dqd_76:hover{color:var(--text-tertiary);background:var(--overlay-light-faint)}._historyToggle_17dqd_76:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._historyToggleLabel_17dqd_102{flex:1}._item_17dqd_107{display:flex;align-items:center;justify-content:space-between;width:100%;padding:4px 9px 4px 23px;font-size:12px;color:var(--text-tertiary);cursor:pointer;transition:background .15s,color .15s;background:none;border:1px solid transparent;border-radius:4px;box-sizing:border-box;text-align:left;font:inherit}._item_17dqd_107:hover{background:var(--overlay-light-faint);color:var(--text-primary)}._item_17dqd_107:focus-visible{outline:1px solid var(--color-primary-outline);outline-offset:-1px}._itemActive_17dqd_135,._itemActive_17dqd_135:hover{background:var(--color-primary-bg-faint);color:var(--color-primary);border-color:var(--color-primary-light)}._itemContent_17dqd_142{flex:1;min-width:0;overflow:hidden}._itemLabel_17dqd_148{font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}._itemSublabel_17dqd_156{font-size:10px;color:var(--text-disabled);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}._itemTime_17dqd_165{font-size:9px;color:var(--text-disabled);flex-shrink:0;margin-left:4px;font-family:monospace}._content_17dqd_174{flex:1;min-width:0;overflow:auto;padding:12px 16px;-webkit-overflow-scrolling:touch}._contentEmpty_17dqd_182{height:100%;display:flex;align-items:center;justify-content:center}._contentInner_17dqd_189{padding-bottom:20px}._emptyWrap_17dqd_193{display:flex;align-items:center;justify-content:center;height:200px}._roleHeader_17dqd_201{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}._roleBadge_17dqd_209{font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:4px;flex-shrink:0}._role_user_17dqd_218{background:var(--color-primary-bg-lighter);color:var(--color-primary-lighter);border:1px solid var(--color-primary-bg-medium)}._role_assistant_17dqd_224{background:var(--color-purple-bg);color:var(--color-code-purple);border:1px solid var(--color-purple-border)}._roleLabel_17dqd_230{font-size:11px;color:var(--text-muted);flex:1;min-width:0}._contentTime_17dqd_237{margin-left:auto;font-size:10px;color:var(--text-disabled);font-family:monospace;flex-shrink:0}._turnDivider_17dqd_245{border:none;border-top:1px solid var(--border-primary);margin:14px 0}._textBlock_17dqd_252{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._textBlockBar_17dqd_259{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary)}._textBlockBody_17dqd_268{padding:10px 12px;font-size:13px;line-height:1.7;color:var(--text-primary);word-break:break-word}._textBlockCompact_17dqd_276{position:relative;padding:8px 10px;font-size:12px;color:var(--text-light)}._textBlockCompactFloat_17dqd_283{float:right;margin-left:6px;margin-bottom:2px}._thinkingBlock_17dqd_290{margin-bottom:8px;border:1px solid var(--color-thinking-border);border-radius:6px;overflow:hidden;background:var(--color-thinking-bg)}._thinkingHeader_17dqd_298{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;font-size:12px;color:var(--text-tertiary);transition:background .15s}._thinkingHeader_17dqd_298:hover{background:var(--overlay-light-faint)}._thinkingPreview_17dqd_313{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:11px}._thinkingBody_17dqd_323{padding:8px 12px;border-top:1px solid var(--color-thinking-border)}._toolBlock_17dqd_329{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._toolBlockResult_17dqd_336{border-color:var(--color-green-border)}._toolBlockError_17dqd_340{border-color:var(--color-red-dark-border)}._toolBlockHeader_17dqd_344{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary);font-size:12px;flex-wrap:wrap}._toolBlockBody_17dqd_355{padding:8px 10px;font-size:12px}._toolName_17dqd_360{color:var(--text-primary);font-weight:500;font-family:monospace}._toolId_17dqd_366{color:var(--text-disabled);font-size:10px;font-family:monospace;margin-left:auto}._errorLabel_17dqd_373{font-size:10px;color:var(--color-error-light);background:var(--color-error-bg-light);border:1px solid var(--color-error-border);border-radius:3px;padding:1px 5px}._blockTag_17dqd_383{font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border-primary);flex-shrink:0}._blockTagText_17dqd_396{background:var(--color-primary-bg-faint);color:var(--color-primary-lighter);border-color:var(--color-primary-bg-lighter)}._blockTagThinking_17dqd_402{background:var(--color-warning-bg-faint);color:var(--color-warning);border-color:var(--color-warning-border-light)}._blockTagResult_17dqd_408{background:var(--color-green-dark-bg);color:var(--color-success);border-color:var(--color-green-dark-border)}._blockTagError_17dqd_414{background:var(--color-error-bg-faint);color:var(--color-error-light);border-color:var(--color-error-border-light)}._jsonBlock_17dqd_421{margin-bottom:8px;border:1px solid var(--border-primary);border-radius:6px;overflow:hidden}._jsonBlockLabel_17dqd_428{font-size:10px;color:var(--text-muted);padding:3px 10px;background:var(--bg-container);border-bottom:1px solid var(--border-primary);font-family:monospace}._blockSeparator_17dqd_438{border:none;border-top:1px solid var(--border-primary);margin:16px 0}._markdownBody_17dqd_445{font-size:13px;line-height:1.7;color:var(--text-primary);word-break:break-word}._container_rg6mx_1{height:100%;overflow:hidden;padding:0 16px;display:flex;flex-direction:column;background:var(--bg-base)}._emptyState_rg6mx_10{display:flex;align-items:center;justify-content:center;height:100%}._urlSection_rg6mx_17{padding:12px 0;border-bottom:1px solid var(--border-primary);display:flex;align-items:flex-start;flex-shrink:0}._urlLeft_rg6mx_25{flex:1;min-width:0}._tokenStatsBox_rg6mx_30{flex-shrink:0;padding-left:12px;display:flex;align-items:center}._tokenGrid_rg6mx_37{display:flex;border:1px solid var(--border-secondary);border-radius:6px;overflow:hidden;min-width:360px;font-size:11px;line-height:1.6}._tokenRows_rg6mx_47{flex:1}._tokenRow_rg6mx_47{display:flex}._tokenRowBorder_rg6mx_55{border-top:1px solid var(--border-secondary)}._tokenLabel_rg6mx_59{color:var(--text-tertiary);padding:4px 8px;white-space:nowrap;font-weight:600}._tokenTd_rg6mx_66{flex:1;color:var(--text-primary);text-align:right;padding:4px 8px;font-family:monospace;white-space:nowrap}._tokenHitRate_rg6mx_75{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-primary);padding:4px 8px;font-family:monospace;white-space:nowrap;border-left:1px solid var(--border-secondary);min-width:100px}._tokenHitRateLabel_rg6mx_88{color:var(--text-tertiary);font-size:10px;font-family:sans-serif}._tokenRowBorder_rg6mx_55 td{border-top:1px solid var(--border-secondary)}._urlText_rg6mx_98{color:var(--text-primary);font-size:13px;margin-bottom:8px;word-break:break-all}._metaText_rg6mx_105,._headersContainer_rg6mx_109{font-size:12px}._headerRow_rg6mx_113{display:flex;padding:4px 0;border-bottom:1px solid var(--border-primary)}._headerKey_rg6mx_119{min-width:200px;flex-shrink:0}._headerValue_rg6mx_124{word-break:break-all;margin-left:8px}._streamingBox_rg6mx_129{padding:20px;background:var(--bg-elevated);border-radius:6px;border:1px solid var(--border-primary)}._bodyToolbar_rg6mx_136{display:flex;gap:8px;margin-bottom:8px}._rawTextPre_rg6mx_142{background:var(--bg-code-dark);border:1px solid var(--border-primary);border-radius:6px;padding:12px;font-size:12px;color:var(--text-primary);overflow:auto;max-height:600px;white-space:pre-wrap;word-break:break-all}._tabContent_rg6mx_155{padding:16px 0 0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}._collapseSpacing_rg6mx_163{margin-bottom:16px}._bodyLabel_rg6mx_167{margin:0}._bodyHeader_rg6mx_171{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}._diffSection_rg6mx_178{margin-bottom:16px}._diffToggle_rg6mx_182{display:inline-block;margin-bottom:8px;cursor:pointer}._diffIcon_rg6mx_188{font-size:12px;margin-left:4px}._viewInChatBtn_rg6mx_193{display:inline-flex;align-items:center;height:26px;border-radius:13px;border:1px solid var(--border-light);background:#0000;color:var(--text-tertiary);cursor:pointer;font-size:12px;transition:all .2s;padding:0 10px;white-space:nowrap}._viewInChatBtn_rg6mx_193:hover{border-color:var(--text-muted);color:var(--text-primary);background:var(--overlay-light-faint)}._reminderSelect_rg6mx_214{min-width:140px;font-size:12px}._reminderSelect_rg6mx_214 .ant-select-selector.ant-select-selector{border-radius:2px;border-color:var(--border-light);background:#0000;min-height:26px;height:auto;padding:0 8px;font-family:monospace}._reminderSelect_rg6mx_214 .ant-select-selection-placeholder{font-size:11px}._diffHeaderRow_rg6mx_233{display:flex;align-items:center;gap:8px}._diffSpaceRight_rg6mx_239{margin-left:auto}._reminderFilterWrapper_rg6mx_243{display:inline-flex;align-items:center;gap:4px}._reminderLabel_rg6mx_249{color:var(--text-tertiary);font-size:12px;font-family:monospace}._cacheTabContent_rg6mx_255{padding-top:0;overflow:hidden}._userPromptList_rg6mx_260{width:600px;max-height:300px;overflow-y:auto}._userPromptItem_rg6mx_266{padding:4px 8px;font-size:12px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px}._userPromptNavBtn_rg6mx_277{margin-left:auto;font-size:11px;color:var(--color-primary);cursor:pointer;border:1px solid var(--color-primary);border-radius:3px;padding:1px 6px;white-space:nowrap}._cacheContent_rg6mx_288{padding:8px 0;height:100%;display:flex;flex-direction:column}._cacheTokenBar_rg6mx_295{display:flex;align-items:center;font-size:12px;font-family:monospace;color:var(--text-light);margin-bottom:12px;flex-shrink:0}._cacheTokenWrite_rg6mx_305{color:var(--color-code-orange)}._cacheTokenRead_rg6mx_309{color:var(--color-success)}._cacheCopyIcon_rg6mx_313{margin-left:8px;cursor:pointer;color:var(--text-tertiary);transition:color .2s}._cacheScrollArea_rg6mx_320{flex:1;overflow-y:auto;min-height:0}._cacheSectionBlock_rg6mx_326{margin-bottom:12px}._cacheSectionHeader_rg6mx_330{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:6px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:4px}._cacheCollapseArrow_rg6mx_342{display:inline-block;transition:transform .2s;font-size:10px}._cachePre_rg6mx_348{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-primary);border-radius:4px;padding:8px;margin:4px 0;font-family:Menlo,Monaco,monospace}._cacheHighlightSvg_rg6mx_362{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}._cachePreSystem_rg6mx_371{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5;color:var(--text-secondary);background:var(--bg-code-system);border:1px solid var(--border-code-system);border-radius:4px;padding:8px;margin:4px 0;font-family:Menlo,Monaco,monospace}._container_rg6mx_1 .ant-tabs>.ant-tabs-nav{margin-bottom:0}._container_rg6mx_1 .ant-tabs{flex:1;min-height:0;display:flex;flex-direction:column}._container_rg6mx_1 .ant-tabs>.ant-tabs-content-holder{flex:1;min-height:0}._container_rg6mx_1 .ant-tabs-content,._container_rg6mx_1 .ant-tabs-tabpane-active{height:100%}._resizer_pzn4b_1{width:6px;cursor:col-resize;background:var(--bg-elevated);flex-shrink:0;transition:background .2s}._resizer_pzn4b_1:hover{background:var(--color-primary-light)}._flag_1q4ri_3{display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1;cursor:help;-webkit-user-select:none;user-select:none;height:14px;background:none;border:none;padding:0;color:inherit;font-family:inherit}._flag_1q4ri_3:focus-visible{outline:2px solid var(--primary-color, #1677ff);outline-offset:2px;border-radius:2px}._popover_1q4ri_27{color:var(--text-secondary);font-size:13px;line-height:22px}._meta_1q4ri_33{color:var(--text-tertiary);font-size:12px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __defProp=Object.defineProperty,__publicField=(obj,key,value)=>((obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value)(obj,"symbol"!=typeof key?key+"":key,value);import{j as jsxRuntimeExports}from"./vendor-codemirror-B5WQ33Y0.js";import{a as reactExports,I as Icon,b as _extends,T as Tag,P as Popover,v as Tooltip,w as RefIcon$5,M as Modal,x as Input,i as Button,s as staticMethods,R as React__default,m as Switch,y as Segmented,z as RefIcon$6,A as Collapse,S as Spin,d as reactDomExports,D as RefIcon$9,E as Space,F as Dropdown,G as RefIcon$b,o as RefIcon$c,H as Tabs,J as Drawer,l as Select,n as Radio,K as Empty,L as List,N as Typography,O as RefIcon$d,Q as RefIcon$e,C as ConfigProvider,U as Layout,V as Alert,W as Checkbox,j as RefIcon$h,k as RefIcon$i}from"./vendor-antd-BqzW9CXo.js";import{H as CachePopoverContent,U as useProjectAlias,W as normalizeAlias,_ as _internals,X as setProjectAlias,Y as clearProjectAlias,o as loadFsSkills,p as loadProjectMemory,q as loadClaudeMdList,r as isSystemText,t as classifyUserContent,v as isMainAgent,d as computeTokenStats,e as computeToolUsageStats,g as computeSkillUsageStats,k as sharedChrome,m as formatTokenCount,C as ConceptHelp,h as computeCacheRebuildStats,Z as resolveTeammateNames,j as classifyRequest,$ as resolveCalibrationTokens,y as AUTO_COMPACT_USABLE_RATIO,O as OPTIMISTIC_CLEAR_PERCENT,a0 as RefIcon$7,a1 as RefIcon$8,a2 as RefIcon$a,M as MemoryDetailModal,V as VoicePackSettings,P as PluginModal,J as ProcessModal,K as ProxyModal,S as SkillsManagerModal,n as appConfig,a3 as getModelShort,a4 as formatRequestTag,a5 as renderMarkdown,a6 as restoreSlimmedEntry,a7 as stripPrivateKeys,a8 as isClaudeMdReminder,a9 as isSkillsReminder,aa as hasClaudeMdReminder,ab as hasSkillsReminder,ac as extractCachedContent,A as AppBase,ad as filterRelevantRequests,ae as findPrevMainAgentTimestamp,T as TerminalWsProvider,B as ApprovalModal,w as styles$a,R as RefIcon$f,E as ChatView,N as RefIcon$g,L as OpenFolderIcon}from"./seqResourceLoaders-BgEHTs14.js";import{t,S as SettingsContext,a as apiUrl,L as LANG_OPTIONS,c as setLang,g as getLang,s as setViewMode,d as isMobile,e as isElectron}from"./index-0hGZ2hk-.js";import{Q as QRCodeCanvas}from"./vendor-qrcode-C9ZMcovz.js";import"./vendor-mdxeditor-DwzTmNBd.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-CQj5-1oy.js";var BarChartOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"},BarChartOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:BarChartOutlined$1}))},RefIcon$4=reactExports.forwardRef(BarChartOutlined),CodeOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"code",theme:"outlined"},CodeOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CodeOutlined$1}))},RefIcon$3=reactExports.forwardRef(CodeOutlined),ExportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM770.87 199.13l-52.2-52.2a8.01 8.01 0 014.7-13.6l179.4-21c5.1-.6 9.5 3.7 8.9 8.9l-21 179.4c-.8 6.6-8.9 9.4-13.6 4.7l-52.4-52.4-256.2 256.2a8.03 8.03 0 01-11.3 0l-42.4-42.4a8.03 8.03 0 010-11.3l256.1-256.3z"}}]},name:"export",theme:"outlined"},ExportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ExportOutlined$1}))},RefIcon$2=reactExports.forwardRef(ExportOutlined),ImportOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM653.3 424.6l52.2 52.2a8.01 8.01 0 01-4.7 13.6l-179.4 21c-5.1.6-9.5-3.7-8.9-8.9l21-179.4c.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 424.6z"}}]},name:"import",theme:"outlined"},ImportOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:ImportOutlined$1}))},RefIcon$1=reactExports.forwardRef(ImportOutlined),MessageOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 512a48 48 0 1096 0 48 48 0 10-96 0zm200 0a48 48 0 1096 0 48 48 0 10-96 0zm-400 0a48 48 0 1096 0 48 48 0 10-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 00-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 00-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 00112 714v152a46 46 0 0046 46h152.1A449.4 449.4 0 00510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 00142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"}}]},name:"message",theme:"outlined"},MessageOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:MessageOutlined$1}))},RefIcon=reactExports.forwardRef(MessageOutlined);const styles$9_liveTag="_liveTag_sg7sp_3",styles$9_liveTagFill="_liveTagFill_sg7sp_23",styles$9_liveTagContent="_liveTagContent_sg7sp_36",styles$9_liveTagHistory="_liveTagHistory_sg7sp_44",styles$9_liveTagText="_liveTagText_sg7sp_51",styles$9_cachePopoverPlaceholder="_cachePopoverPlaceholder_sg7sp_57",POPOVER_OVERLAY_STYLE={background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"};const LiveTagPopover$1=reactExports.memo(function({isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:cachePopoverOpen,onOpenChange:onOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:onSkillImported,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onRefreshMemory:onRefreshMemory,projectName:projectName}){const triggerStyle=reactExports.useMemo(()=>({"--ctx-color":ctxColor,"--ctx-percent":`${contextPercent}%`}),[ctxColor,contextPercent]);return isLocalLog?jsxRuntimeExports.jsx(Tag,{className:`${styles$9_liveTag} ${styles$9_liveTagHistory}`,children:jsxRuntimeExports.jsx("span",{className:styles$9_liveTagText,children:t("ui.historyLog",{file:localLogFile})})}):jsxRuntimeExports.jsx(Popover,{content:cachePopoverOpen?jsxRuntimeExports.jsx(CachePopoverContent,{requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,fsSkills:fsSkills,memory:memory,memoryRefreshing:memoryRefreshing,claudeMd:claudeMd,calibrationModel:calibrationModel,onCalibrationModelChange:onCalibrationModelChange,onOpenMemoryDetail:onOpenMemoryDetail,onOpenClaudeMd:onOpenClaudeMd,onOpenSkillsModal:onOpenSkillsModal,onSkillImported:onSkillImported,onRefreshMemory:onRefreshMemory}):jsxRuntimeExports.jsx("div",{className:styles$9_cachePopoverPlaceholder}),trigger:"hover",placement:"topRight",overlayInnerStyle:POPOVER_OVERLAY_STYLE,onOpenChange:onOpenChange,children:jsxRuntimeExports.jsxs("span",{className:styles$9_liveTag,style:triggerStyle,children:[jsxRuntimeExports.jsx("span",{className:styles$9_liveTagFill}),jsxRuntimeExports.jsx("span",{className:styles$9_liveTagContent,children:jsxRuntimeExports.jsx("span",{className:styles$9_liveTagText,children:contextTokens>0?`${(contextTokens/1e3).toFixed(1)}K (${contextPercent}%)`:`${contextPercent}%`})})]})})}),styles$8_editButton="_editButton_31hdb_10",styles$8_footer="_footer_31hdb_55",styles$8_footerLeft="_footerLeft_31hdb_61",styles$8_footerRight="_footerRight_31hdb_65",styles$8_projectNameRow="_projectNameRow_31hdb_70",styles$8_projectNameLabel="_projectNameLabel_31hdb_80",styles$8_projectNameValue="_projectNameValue_31hdb_83",ALIAS_MAX_LEN=_internals.MAX_LEN;function ProjectAliasEditor({projectName:projectName,isLocalLog:isLocalLog=!1}){const alias=useProjectAlias(projectName),[open,setOpen]=reactExports.useState(!1),[draft,setDraft]=reactExports.useState(""),[dirty,setDirty]=reactExports.useState(!1);if(reactExports.useEffect(()=>{open?dirty||setDraft(alias||""):setDirty(!1)},[open,alias,dirty]),!projectName||isLocalLog)return null;const valueDiffers=normalizeAlias(draft)!==(alias||""),handleSave=()=>{setProjectAlias(projectName,draft)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},tooltipLabel=t("ui.projectAlias.tooltip");return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Tooltip,{title:tooltipLabel,placement:"top",children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$8_editButton,"aria-label":tooltipLabel,onClick:()=>setOpen(!0),"data-alias-edit-trigger":"",children:jsxRuntimeExports.jsx(RefIcon$5,{})})}),jsxRuntimeExports.jsxs(Modal,{title:t("ui.projectAlias.modalTitle"),open:open,onCancel:()=>setOpen(!1),destroyOnClose:!0,width:420,footer:jsxRuntimeExports.jsxs("div",{className:styles$8_footer,children:[jsxRuntimeExports.jsx("div",{className:styles$8_footerLeft,children:alias?jsxRuntimeExports.jsx(Button,{danger:!0,onClick:()=>{clearProjectAlias(projectName)?setOpen(!1):staticMethods.error(t("ui.projectAlias.saveFailed"))},children:t("ui.projectAlias.clear")}):null}),jsxRuntimeExports.jsxs("div",{className:styles$8_footerRight,children:[jsxRuntimeExports.jsx(Button,{onClick:()=>setOpen(!1),children:t("ui.projectAlias.cancel")}),jsxRuntimeExports.jsx(Button,{type:"primary",disabled:!valueDiffers,onClick:handleSave,children:t("ui.projectAlias.save")})]})]}),children:[jsxRuntimeExports.jsxs("div",{className:styles$8_projectNameRow,children:[jsxRuntimeExports.jsx("span",{className:styles$8_projectNameLabel,children:t("ui.projectAlias.projectLabel")}),jsxRuntimeExports.jsx("span",{className:styles$8_projectNameValue,children:projectName})]}),jsxRuntimeExports.jsx(Input,{autoFocus:!0,value:draft,onChange:e=>{setDraft(e.target.value),setDirty(!0)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),valueDiffers&&handleSave())},placeholder:t("ui.projectAlias.placeholder"),maxLength:ALIAS_MAX_LEN,showCount:!0,allowClear:!0})]})]})}const styles$7_headerBar="_headerBar_17o2s_2",styles$7_logoWrap="_logoWrap_17o2s_10",styles$7_logoWrapActive="_logoWrapActive_17o2s_17",styles$7_logoImage="_logoImage_17o2s_26",styles$7_logoImageActive="_logoImageActive_17o2s_36",styles$7_compactBtn="_compactBtn_17o2s_43",styles$7_headerProjectName="_headerProjectName_17o2s_79",styles$7_countdownStrong="_countdownStrong_17o2s_96",styles$7_qrcodePopover="_qrcodePopover_17o2s_101",styles$7_qrcodeTitle="_qrcodeTitle_17o2s_119",styles$7_qrcodeUrlInput="_qrcodeUrlInput_17o2s_126",styles$7_qrcodeUrlCopy="_qrcodeUrlCopy_17o2s_132",styles$7_authSection="_authSection_17o2s_143",styles$7_authHeaderRow="_authHeaderRow_17o2s_156",styles$7_authTitle="_authTitle_17o2s_162",styles$7_authPasswordLabel="_authPasswordLabel_17o2s_168",styles$7_authPasswordInput="_authPasswordInput_17o2s_173",styles$7_authSaveBtn="_authSaveBtn_17o2s_178",styles$7_authEmptyWarn="_authEmptyWarn_17o2s_182",styles$7_settingsGroupBox="_settingsGroupBox_17o2s_190",styles$7_settingsGroupTitle="_settingsGroupTitle_17o2s_198",styles$7_settingsItem="_settingsItem_17o2s_207",styles$7_settingsLabel="_settingsLabel_17o2s_214",styles$7_settingsDivider="_settingsDivider_17o2s_218",styles$7_logDirInput="_logDirInput_17o2s_223",styles$7_tokenStatsEmpty="_tokenStatsEmpty_17o2s_233",styles$7_tokenStatsContainer="_tokenStatsContainer_17o2s_240",styles$7_tokenStatsColumn="_tokenStatsColumn_17o2s_246",styles$7_toolStatsColumn="_toolStatsColumn_17o2s_250",styles$7_modelCardSpaced="_modelCardSpaced_17o2s_256 _modelCard_108ko_3",styles$7_promptExportBar="_promptExportBar_17o2s_274",styles$7_promptScrollArea="_promptScrollArea_17o2s_278",styles$7_promptEmpty="_promptEmpty_17o2s_283",styles$7_promptTimestamp="_promptTimestamp_17o2s_289",styles$7_textPromptCard="_textPromptCard_17o2s_297",styles$7_preText="_preText_17o2s_306",styles$7_systemCollapse="_systemCollapse_17o2s_316",styles$7_systemLabel="_systemLabel_17o2s_323",styles$7_preSys="_preSys_17o2s_328",styles$7_promptTextarea="_promptTextarea_17o2s_338",styles$7_projectStatsCenter="_projectStatsCenter_17o2s_354",styles$7_projectStatsEmpty="_projectStatsEmpty_17o2s_360",styles$7_projectStatsContent="_projectStatsContent_17o2s_367",styles$7_projectStatsUpdated="_projectStatsUpdated_17o2s_373",styles$7_projectStatsSummary="_projectStatsSummary_17o2s_379",styles$7_projectStatCard="_projectStatCard_17o2s_385",styles$7_projectStatValue="_projectStatValue_17o2s_393",styles$7_projectStatLabel="_projectStatLabel_17o2s_401",styles$7_projectStatsSection="_projectStatsSection_17o2s_407",styles$7_projectStatsSectionTitle="_projectStatsSectionTitle_17o2s_413",styles$7_projectStatsModelCard="_projectStatsModelCard_17o2s_421",styles$7_projectStatsModelHeader="_projectStatsModelHeader_17o2s_428",styles$7_projectStatsModelName="_projectStatsModelName_17o2s_437",styles$7_projectStatsModelCount="_projectStatsModelCount_17o2s_443",styles$7_thLeft="_thLeft_17o2s_575",styles$7_qrcodeIcon="_qrcodeIcon_17o2s_618",styles$7_approvalBell="_approvalBell_17o2s_644",styles$7_approvalBellBadge="_approvalBellBadge_17o2s_669",styles$7_proxySwapIcon="_proxySwapIcon_17o2s_686",styles$7_proxyProfileTag="_proxyProfileTag_17o2s_692",styles$7_themeToggle="_themeToggle_17o2s_711",styles$7_themeToggleKnob="_themeToggleKnob_17o2s_739",styles$7_themeToggleIcon="_themeToggleIcon_17o2s_769",styles$7_headerRightRow="_headerRightRow_17o2s_774",styles$7_headerCountdownTag="_headerCountdownTag_17o2s_780",CALIBRATION_MODELS=appConfig.calibrationModels,LEGACY_CALIBRATION_MIGRATION={"opus-4.7-1m":"1m","sonnet-4.6":"200k",glm5:"200k","kimi-k2.5":"200k","minimax-2.1":"200k","Qwen 3.5":"200k"};function readCalibrationModel(){const raw=localStorage.getItem("ccv_calibrationModel")||"auto",migrated=LEGACY_CALIBRATION_MIGRATION[raw]||raw;return CALIBRATION_MODELS.some(m=>m.value===migrated)?migrated:"auto"}function makeAuthState(over={}){return{enabled:!1,isAdmin:!1,password:null,scope:"global",hasProjectOverride:!1,projectDir:null,global:{enabled:!1,password:null},...over}}function HeaderProjectLabel({projectName:projectName,isLocalLog:isLocalLog}){const alias=useProjectAlias(projectName);return jsxRuntimeExports.jsxs("span",{className:styles$7_headerProjectName,children:[t("ui.liveMonitoring"),projectName?`:${projectName}`:"",alias?` (${alias})`:"",jsxRuntimeExports.jsx(ProjectAliasEditor,{projectName:projectName,isLocalLog:isLocalLog})]})}const _AppHeader=class _AppHeader extends React__default.Component{constructor(props){super(props),__publicField(this,"reloadFsSkills",async()=>loadFsSkills(this,{isLocalLog:this.props.isLocalLog})),__publicField(this,"postAuthConfig",async body=>{if(!this.state._authSaving){this.setState({_authSaving:!0});try{const r=await fetch(apiUrl("/api/auth/config"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(body)});if(!r.ok)throw new Error("auth-config "+r.status);this._applyAuthState(await r.json()),staticMethods.success(t("ui.auth.saved"))}catch{staticMethods.error(t("ui.auth.saveFailed"))}finally{this.setState({_authSaving:!1})}}}),__publicField(this,"loadMemory",async()=>loadProjectMemory(this)),__publicField(this,"handleRefreshMemory",async()=>{if(this.state._memoryRefreshing)return;this.setState({_memoryRefreshing:!0});const seq=++this._memorySeq;let ok=!1,stale=!1;try{const r=await fetch(apiUrl("/api/project-memory")),data=await r.json();seq!==this._memorySeq?stale=!0:r.ok?(this.setState({_memory:data}),ok=!0):this.setState({_memory:!1})}catch{seq!==this._memorySeq?stale=!0:this.setState({_memory:!1})}finally{stale||this.setState({_memoryRefreshing:!1})}stale||(ok?staticMethods.success(t("ui.memoryRefreshSuccess")):staticMethods.error(t("ui.memoryRefreshFailed"),5))}),__publicField(this,"handleCachePopoverOpenChange",open=>{this.setState({_cachePopoverOpen:open}),open||(this._cacheScrollInited=!1),open&&null===this.state._fsSkills&&!this.props.isLocalLog&&this.reloadFsSkills(),open&&null===this.state._memory&&this.loadMemory(),open&&null===this.state._claudeMd&&this.loadClaudeMdList()}),__publicField(this,"loadClaudeMdList",async()=>loadClaudeMdList(this)),__publicField(this,"loadClaudeMdDetail",async(id,tail,scope)=>{const seq=++this._claudeMdDetailSeq,title=`${t("global"===scope?"ui.claudeMdScopeGlobal":"ui.claudeMdScopeProject")} · ${tail}`;this.setState({_claudeMdDetail:{name:title,loading:!0}});try{const r=await fetch(apiUrl(`/api/claude-md?id=${encodeURIComponent(id)}`)),data=await r.json();if(seq!==this._claudeMdDetailSeq)return;if(!r.ok)return void this.setState({_claudeMdDetail:{name:title,error:data.error||`http:${r.status}`}});this.setState({_claudeMdDetail:{name:title,content:data.content||""}})}catch(e){seq===this._claudeMdDetailSeq&&this.setState({_claudeMdDetail:{name:title,error:e.message||"network"}})}}),__publicField(this,"loadMemoryDetail",async name=>{const seq=++this._memoryDetailSeq;this.setState({_memoryDetail:{name:name,loading:!0}});try{const r=await fetch(apiUrl(`/api/project-memory?file=${encodeURIComponent(name)}`)),data=await r.json();if(seq!==this._memoryDetailSeq)return;if(!r.ok)return void this.setState({_memoryDetail:{name:name,error:data.error||`http:${r.status}`}});this.setState({_memoryDetail:{name:name,content:data.content||""}})}catch(e){seq===this._memoryDetailSeq&&this.setState({_memoryDetail:{name:name,error:e.message||"network"}})}}),__publicField(this,"handleShowPrompts",()=>{this.setState({promptModalVisible:!0,promptData:this.extractUserPrompts()})}),__publicField(this,"handleExportPromptsTxt",()=>{const prompts=this.state.promptData;if(!prompts||0===prompts.length)return;const blocks=[];for(const p of prompts){const lines=[],ts=p.timestamp?new Date(p.timestamp).toLocaleString():"";ts&&lines.push(`${ts}:\n`);const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&lines.push(textParts.join("\n")),blocks.push(lines.join("\n"))}if(0===blocks.length)return;const blob=new Blob([blocks.join("\n\n\n\n")],{type:"text/plain;charset=utf-8"}),url=URL.createObjectURL(blob),a=document.createElement("a");a.href=url,a.download=`user-prompts-${(new Date).toISOString().slice(0,10)}.txt`,a.click(),URL.revokeObjectURL(url)}),__publicField(this,"handleCalibrationModelChange",value=>{this.setState({calibrationModel:value}),localStorage.setItem("ccv_calibrationModel",value)}),__publicField(this,"handleShowProjectStats",()=>{this.setState({projectStatsVisible:!0,projectStatsLoading:!0}),fetch(apiUrl("/api/project-stats")).then(res=>{if(!res.ok)throw new Error("not found");return res.json()}).then(data=>this.setState({projectStats:data,projectStatsLoading:!1})).catch(()=>this.setState({projectStats:null,projectStatsLoading:!1}))}),__publicField(this,"handleShowPlugins",()=>this.setState({pluginModalVisible:!0})),__publicField(this,"handleShowProcesses",()=>this.setState({processModalVisible:!0})),__publicField(this,"handleOpenSkillsModal",async()=>{const cached=this.state._fsSkills,needFetch=!Array.isArray(cached);if(this.setState(prev=>{var _a;return{_skillsModal:{open:!0,loading:needFetch,skills:Array.isArray(cached)?cached:[],error:null,toggling:(null==(_a=prev._skillsModal)?void 0:_a.toggling)||new Set},_cachePopoverOpen:!1}}),needFetch){const result=await this.reloadFsSkills();this.setState(prev=>({_skillsModal:{...prev._skillsModal,loading:!1,skills:result.ok?result.skills:[],error:result.ok?null:result.reason}}))}}),__publicField(this,"handleToggleSkill",async skill=>{var _a,_b;const key=`${skill.source}-${skill.name}`;if(null==(_b=null==(_a=this.state._skillsModal)?void 0:_a.toggling)?void 0:_b.has(key))return;const enable=!skill.enabled,flipEnabled=target=>s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:target}:s;this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.add(key),{_skillsModal:{...prev._skillsModal,toggling:next,skills:prev._skillsModal.skills.map(flipEnabled(enable))}}});try{const r=await fetch(apiUrl("/api/skills/toggle"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:skill.source,name:skill.name,enable:enable})}),data=await r.json();if(!r.ok)return this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),void("DEST_CONFLICT"===data.code?staticMethods.error(t("ui.skillToggleConflict",{name:skill.name})):staticMethods.error(t("ui.skillToggleFailed",{reason:data.error||"unknown"})));this.setState(prev=>({_fsSkills:Array.isArray(prev._fsSkills)?prev._fsSkills.map(s=>s.source===skill.source&&s.name===skill.name?{...s,enabled:enable}:s):prev._fsSkills}));const result=await this.reloadFsSkills();result.ok&&this.setState(prev=>{const orderMap=new Map(prev._skillsModal.skills.map((s,i)=>[`${s.source}-${s.name}`,i])),merged=[...result.skills].sort((a,b)=>{const ai=orderMap.get(`${a.source}-${a.name}`),bi=orderMap.get(`${b.source}-${b.name}`);return void 0===ai&&void 0===bi?0:void 0===ai?1:void 0===bi?-1:ai-bi});return{_skillsModal:{...prev._skillsModal,skills:merged}}})}catch(e){this.setState(prev=>({_skillsModal:{...prev._skillsModal,skills:prev._skillsModal.skills.map(flipEnabled(!enable))}})),staticMethods.error(t("ui.skillToggleFailed",{reason:e.message}))}finally{this.setState(prev=>{const next=new Set(prev._skillsModal.toggling);return next.delete(key),{_skillsModal:{...prev._skillsModal,toggling:next}}})}}),this.state={countdownText:"",promptModalVisible:!1,promptData:[],promptViewMode:"original",settingsDrawerVisible:!1,globalSettingsVisible:!1,projectStatsVisible:!1,projectStats:null,projectStatsLoading:!1,localUrl:"",pluginModalVisible:!1,processModalVisible:!1,logoDropdownOpen:!1,cacheHighlightIdx:null,cacheHighlightFading:!1,calibrationModel:readCalibrationModel(),proxyModalVisible:!1,logDirDraft:null,qrPopoverOpen:!1,_skillsModal:{open:!1,loading:!1,skills:[],error:null,toggling:new Set},_fsSkills:null,_memory:null,_memoryRefreshing:!1,_memoryDetail:null,_claudeMd:null,_claudeMdDetail:null,authState:makeAuthState(),_authPasswordDraft:null,_authSaving:!1,_authScope:null},this._countdownTimer=null,this._expiredTimer=null,this._fsSkillsSeq=0,this._memorySeq=0,this._memoryDetailSeq=0,this._claudeMdSeq=0,this._claudeMdDetailSeq=0,this.updateCountdown=this.updateCountdown.bind(this)}componentDidMount(){this.startCountdown(),fetch(apiUrl("/api/local-url")).then(r=>r.json()).then(data=>{data.url&&this.setState({localUrl:data.url})}).catch(()=>{}),fetch(apiUrl("/api/auth/state")).then(r=>{if(!r.ok)throw new Error("auth-state "+r.status);return r.json()}).then(data=>{this._applyAuthState(data)}).catch(()=>{this.setState({authState:makeAuthState({enabled:!0,global:{enabled:!0,password:null}})})}),this.context._claudeSettingsReady.then(data=>{data&&data.model&&this.setState({settingsModel:data.model})}),this.props.isLocalLog||this.reloadFsSkills()}componentDidUpdate(prevProps){prevProps.cacheExpireAt!==this.props.cacheExpireAt&&this.startCountdown(),prevProps.projectName!==this.props.projectName&&(this._fsSkillsSeq++,this.setState({_fsSkills:null}),!this.props.isLocalLog&&this.props.projectName&&this.reloadFsSkills(),this._memorySeq++,this.setState({_memory:null,_memoryDetail:null,_memoryRefreshing:!1}),this._claudeMdSeq++,this._claudeMdDetailSeq++,this.setState({_claudeMd:null,_claudeMdDetail:null}))}_applyAuthState(data){this.setState({authState:makeAuthState({enabled:!!data.enabled,isAdmin:!!data.isAdmin,password:data.password??null,scope:"project"===data.scope?"project":"global",hasProjectOverride:!!data.hasProjectOverride,projectDir:data.projectDir||null,global:data.global&&"object"==typeof data.global?data.global:{enabled:!1,password:null}}),_authPasswordDraft:null})}shareUrl(){const{localUrl:localUrl,authState:authState}=this.state;if(!localUrl||!authState.enabled)return localUrl;const i=localUrl.indexOf("?");return-1===i?localUrl:localUrl.slice(0,i)}renderPasswordSection(){const{authState:authState,_authScope:_authScope,_authSaving:_authSaving}=this.state,hasProject=!!authState.projectDir;if(!authState.enabled&&!authState.hasProjectOverride&&!authState.global.enabled)return jsxRuntimeExports.jsx("div",{className:styles$7_authSection,children:jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,onClick:()=>this.postAuthConfig({scope:hasProject?"project":"global",enabled:!0}),children:t("ui.auth.enableBtn")})});const scope=hasProject&&(_authScope||authState.scope)||"global",globalCfg=authState.global||{enabled:!1,password:null},projectCfg=authState.hasProjectOverride?{enabled:authState.enabled,password:authState.password}:null,cfg="project"===scope?projectCfg:globalCfg,displayedEnabled=!(!cfg||!cfg.enabled);return jsxRuntimeExports.jsxs("div",{className:styles$7_authSection,children:[(displayedEnabled||authState.enabled)&&jsxRuntimeExports.jsxs("div",{className:styles$7_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$7_authTitle,children:t("ui.auth.title")}),displayedEnabled&&jsxRuntimeExports.jsx(Switch,{size:"small",checked:!0,loading:_authSaving,onChange:()=>this.postAuthConfig({scope:scope,enabled:!1}),title:t("ui.auth.disable")})]}),hasProject&&jsxRuntimeExports.jsx(Segmented,{size:"small",block:!0,value:scope,onChange:v=>this.setState({_authScope:v,_authPasswordDraft:null}),options:[{label:t("ui.auth.scopeProject"),value:"project"},{label:t("ui.auth.scopeGlobal"),value:"global"}]}),"project"!==scope||authState.hasProjectOverride?this.renderScopeEditor(scope,cfg):this.renderInheritGlobal()]})}renderInheritGlobal(){const{_authSaving:_authSaving}=this.state;return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:styles$7_authPasswordLabel,children:t("ui.auth.inheritsGlobal")}),jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,onClick:()=>this.postAuthConfig({scope:"project",enabled:!0}),children:t("ui.auth.setProjectSpecific")})]})}renderScopeEditor(scope,cfg){const{_authPasswordDraft:_authPasswordDraft,_authSaving:_authSaving,authState:authState}=this.state,hasProject=!!authState.projectDir,shareGlobalRow="global"===scope&&hasProject?jsxRuntimeExports.jsxs("div",{className:styles$7_authHeaderRow,children:[jsxRuntimeExports.jsx("span",{className:styles$7_authPasswordLabel,children:t("ui.auth.useGlobal")}),jsxRuntimeExports.jsx(Switch,{size:"small",checked:!authState.hasProjectOverride,loading:_authSaving,title:t("ui.auth.useGlobal"),onChange:checked=>{checked?(this.setState({_authScope:"global"}),this.postAuthConfig({clearOverride:!0})):(this.setState({_authScope:"project"}),this.postAuthConfig({scope:"project",enabled:!0}))}})]}):null;if(!cfg.enabled)return jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,onClick:()=>this.postAuthConfig({scope:scope,enabled:!0}),children:t("ui.auth.enableBtn")});const pw=(cfg.password??"").toUpperCase(),draft=null==_authPasswordDraft?pw:_authPasswordDraft,dirty=null!=_authPasswordDraft&&_authPasswordDraft!==pw;return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Input,{value:draft,className:styles$7_authPasswordInput,onChange:e=>this.setState({_authPasswordDraft:e.target.value.toUpperCase()}),onPressEnter:()=>dirty&&this.postAuthConfig({scope:scope,password:draft}),suffix:jsxRuntimeExports.jsx(RefIcon$6,{className:styles$7_qrcodeUrlCopy,title:t("ui.auth.copy"),onClick:()=>{navigator.clipboard.writeText(pw).then(()=>staticMethods.success(t("ui.auth.copied"))).catch(()=>{})}})}),dirty&&jsxRuntimeExports.jsx(Button,{size:"small",type:"primary",loading:_authSaving,className:styles$7_authSaveBtn,onClick:()=>this.postAuthConfig({scope:scope,password:draft}),children:t("ui.auth.save")}),""===draft&&jsxRuntimeExports.jsx("div",{className:styles$7_authEmptyWarn,children:t("ui.auth.emptyWarning")}),shareGlobalRow]})}shouldComponentUpdate(nextProps,nextState){return nextProps.requests!==this.props.requests||nextProps.requestCount!==this.props.requestCount||nextProps.viewMode!==this.props.viewMode||nextProps.cacheExpireAt!==this.props.cacheExpireAt||nextProps.cacheType!==this.props.cacheType||nextProps.isLocalLog!==this.props.isLocalLog||nextProps.localLogFile!==this.props.localLogFile||nextProps.projectName!==this.props.projectName||nextProps.filterIrrelevant!==this.props.filterIrrelevant||nextProps.logDir!==this.props.logDir||nextProps.cliMode!==this.props.cliMode||nextProps.sdkMode!==this.props.sdkMode||nextProps.terminalVisible!==this.props.terminalVisible||nextProps.contextWindow!==this.props.contextWindow||nextProps.contextBarOptimistic!==this.props.contextBarOptimistic||nextProps.contextBarLocked!==this.props.contextBarLocked||nextProps.contextBarSlot!==this.props.contextBarSlot||nextProps.serverCachedContent!==this.props.serverCachedContent||nextProps.resumeAutoChoice!==this.props.resumeAutoChoice||nextProps.themeColor!==this.props.themeColor||nextProps.autoApproveSeconds!==this.props.autoApproveSeconds||nextProps.proxyProfiles!==this.props.proxyProfiles||nextProps.activeProxyId!==this.props.activeProxyId||nextProps.defaultConfig!==this.props.defaultConfig||nextProps.approvalPrefs!==this.props.approvalPrefs||nextProps.approvalGlobal!==this.props.approvalGlobal||nextProps.approvalDismissedIds!==this.props.approvalDismissedIds||nextProps.approvalOwnPending!==this.props.approvalOwnPending||nextState!==this.state}componentWillUnmount(){this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this._cacheFadeClearTimer&&clearTimeout(this._cacheFadeClearTimer),this._cacheScrollSettleTimer&&clearTimeout(this._cacheScrollSettleTimer),this._cacheAutoFadeTimer&&clearTimeout(this._cacheAutoFadeTimer),this._cacheHighlightDelayTimer&&clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._fsSkillsSeq++,this._memorySeq++,this._memoryDetailSeq++,this._claudeMdSeq++,this._claudeMdDetailSeq++}startCountdown(){this._countdownTimer&&clearTimeout(this._countdownTimer),this._expiredTimer&&clearTimeout(this._expiredTimer),this.props.cacheExpireAt?this.updateCountdown():""!==this.state.countdownText&&this.setState({countdownText:""})}updateCountdown(){const{cacheExpireAt:cacheExpireAt}=this.props;if(!cacheExpireAt)return void(""!==this.state.countdownText&&this.setState({countdownText:""}));const now=Date.now(),remaining=Math.max(0,cacheExpireAt-now);if(remaining<=0){const expired=t("ui.cacheExpired");return this.state.countdownText!==expired&&this.setState({countdownText:expired}),void(this._expiredTimer=setTimeout(()=>{""!==this.state.countdownText&&this.setState({countdownText:""})},5e3))}const totalSec=Math.ceil(remaining/1e3);let text;if(totalSec>=60){const m=Math.floor(totalSec/60);text=t("ui.minuteSecond",{m:m,s:String(totalSec%60).padStart(2,"0")})}else text=t("ui.second",{s:totalSec});text!==this.state.countdownText&&this.setState({countdownText:text});const delay=1e3-now%1e3;this._countdownTimer=setTimeout(this.updateCountdown,delay)}static parseSegments(text){const segments=[],regex=/<([a-zA-Z_][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g;let match,lastIndex=0;for(;null!==(match=regex.exec(text));){const before=text.slice(lastIndex,match.index).trim();before&&segments.push({type:"text",content:before});const tagName=match[1];if(lastIndex=match.index+match[0].length,_AppHeader.COMMAND_TAGS.has(tagName))continue;const innerRegex=new RegExp(`^<${tagName}(?:\\s[^>]*)?>([\\s\\S]*)<\\/${tagName}>$`),innerMatch=match[0].match(innerRegex),content2=innerMatch?innerMatch[1].trim():match[0].trim();segments.push({type:"system",content:content2,label:tagName})}const after=text.slice(lastIndex).trim();return after&&segments.push({type:"text",content:after}),segments}static extractUserTexts(messages){const userMsgs=[],fullTexts=[];let slashCmd=null;for(const msg of messages)if("user"===msg.role)if("string"==typeof msg.content){const text=msg.content.trim();if(!text)continue;if(!isSystemText(text)){if(/Implement the following plan:/i.test(text))continue;userMsgs.push(text),fullTexts.push(text)}}else if(Array.isArray(msg.content)){const{commands:commands,textBlocks:textBlocks}=classifyUserContent(msg.content);commands.length>0&&(slashCmd=commands[commands.length-1]);const userParts=[];for(const b of textBlocks)/Implement the following plan:/i.test((b.text||"").trim())||userParts.push(b.text.trim());const allParts=msg.content.filter(b=>{var _a;return"text"===b.type&&(null==(_a=b.text)?void 0:_a.trim())}).map(b=>b.text.trim());userParts.length>0&&(userMsgs.push(userParts.join("\n")),fullTexts.push(allParts.join("\n")))}return{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}}extractUserPrompts(){var _a;const{requests:requests=[]}=this.props,prompts=[],seen=new Set;let prevSlashCmd=null;const mainAgentRequests=requests.filter(r=>isMainAgent(r));for(let ri=0;ri<mainAgentRequests.length;ri++){const req=mainAgentRequests[ri],messages=(null==(_a=req.body)?void 0:_a.messages)||[],timestamp=req.timestamp||"",{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}=_AppHeader.extractUserTexts(messages);slashCmd&&"/compact"!==slashCmd&&slashCmd!==prevSlashCmd&&prompts.push({type:"prompt",segments:[{type:"text",content:slashCmd}],timestamp:timestamp}),prevSlashCmd=slashCmd;for(let i=0;i<userMsgs.length;i++){const key=userMsgs[i];if(seen.has(key))continue;seen.add(key);const raw=fullTexts[i]||key;prompts.push({type:"prompt",segments:_AppHeader.parseSegments(raw),timestamp:timestamp})}}return prompts}renderTokenStats(){const{requests:requests=[]}=this.props,{cacheHighlightIdx:cacheHighlightIdx,cacheHighlightFading:cacheHighlightFading}=this.state;if(this._tokenStatsCache&&this._tokenStatsCacheReq===requests&&this._tokenStatsCacheHl===cacheHighlightIdx&&this._tokenStatsCacheFade===cacheHighlightFading)return this._tokenStatsCache;const byModel=computeTokenStats(requests),models=Object.keys(byModel),toolStats=computeToolUsageStats(requests),skillStats=computeSkillUsageStats(requests);if(0===models.length&&0===toolStats.length)return jsxRuntimeExports.jsx("div",{className:styles$7_tokenStatsEmpty,children:"暂无 token 数据"});const tokenColumn=jsxRuntimeExports.jsx("div",{className:styles$7_tokenStatsColumn,children:models.map(model=>{const s=byModel[model],totalInput=s.input+s.cacheCreation+s.cacheRead,cacheHitRate=totalInput>0?(s.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:models.length>1?styles$7_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:model}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})}),cacheRebuildColumn=this.renderCacheRebuildStats(),toolColumn=toolStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$7_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.toolUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$7_thLeft}`,children:"Tool"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[toolStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`Tool-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),toolStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:toolStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,skillColumn=skillStats.length>0?jsxRuntimeExports.jsx("div",{className:styles$7_toolStatsColumn,children:jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.skillUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$7_thLeft}`,children:"Skill"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[skillStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),skillStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:skillStats.reduce((s,e)=>s+e[1],0)})]})]})]})]})}):null,result=jsxRuntimeExports.jsxs("div",{className:styles$7_tokenStatsContainer,children:[tokenColumn,cacheRebuildColumn,toolColumn,skillColumn]});return this._tokenStatsCache=result,this._tokenStatsCacheReq=requests,this._tokenStatsCacheHl=cacheHighlightIdx,this._tokenStatsCacheFade=cacheHighlightFading,result}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if("raw"===this.props.viewMode&&this.props.onNavigateCacheMsg&&this.props.onNavigateCacheMsg(idx),(this.state._cacheSectionCollapsed||{}).messages)return void this.setState(prev=>({_cacheSectionCollapsed:{...prev._cacheSectionCollapsed||{},messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}renderCacheRebuildStats(){const{requests:requests=[]}=this.props,stats=computeCacheRebuildStats(requests),i18nMap={ttl:"cacheLoss.ttl",system_change:"cacheLoss.systemChange",tools_change:"cacheLoss.toolsChange",model_change:"cacheLoss.modelChange",msg_truncated:"cacheLoss.msgTruncated",msg_modified:"cacheLoss.msgModified",key_change:"cacheLoss.keyChange"},activeReasons=["ttl","system_change","tools_change","model_change","msg_truncated","msg_modified","key_change"].filter(k=>stats[k].count>0),totalCount=activeReasons.reduce((sum,k)=>sum+stats[k].count,0),totalCache=activeReasons.reduce((sum,k)=>sum+stats[k].cacheCreate,0);resolveTeammateNames(requests);const subAgentCounts={},teammateCounts={};for(let i=0;i<requests.length;i++){const cls=classifyRequest(requests[i],requests[i+1]);if("SubAgent"===cls.type){const label=cls.subType||"Other";subAgentCounts[label]=(subAgentCounts[label]||0)+1}else if("Teammate"===cls.type){const label=cls.subType||"Teammate";teammateCounts[label]=(teammateCounts[label]||0)+1}}const subAgentEntries=Object.entries(subAgentCounts).sort((a,b)=>b[1]-a[1]),teammateEntries=Object.entries(teammateCounts).sort((a,b)=>b[1]-a[1]),hasCacheStats=activeReasons.length>0,hasSubAgentStats=subAgentEntries.length>0,hasTeammateStats=teammateEntries.length>0;return hasCacheStats||hasSubAgentStats||hasTeammateStats?jsxRuntimeExports.jsxs("div",{className:styles$7_toolStatsColumn,children:[hasCacheStats&&jsxRuntimeExports.jsxs("div",{className:hasSubAgentStats||hasTeammateStats?styles$7_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["MainAgent",jsxRuntimeExports.jsx(ConceptHelp,{doc:"MainAgent"})," ",t("ui.cacheRebuildStats"),jsxRuntimeExports.jsx(ConceptHelp,{doc:"CacheRebuild"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$7_thLeft}`,children:t("ui.cacheRebuild.reason")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.cacheCreate")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[activeReasons.map(k=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t(`ui.${i18nMap[k]}`)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:stats[k].count}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(stats[k].cacheCreate)})]},k)),activeReasons.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:totalCount}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalCache)})]})]})]})]}),hasSubAgentStats&&jsxRuntimeExports.jsxs("div",{className:hasTeammateStats?styles$7_modelCardSpaced:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.subAgentStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$7_thLeft}`,children:"SubAgent"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[subAgentEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`SubAgent-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),subAgentEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:subAgentEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasTeammateStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:["Teammate",jsxRuntimeExports.jsx(ConceptHelp,{doc:"Teammate"})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles$7_thLeft}`,children:"Name"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[teammateEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),teammateEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Total"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:teammateEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]})]}):null}renderTextPrompt(p){return jsxRuntimeExports.jsx("div",{className:styles$7_textPromptCard,children:p.segments.map((seg,j)=>"text"===seg.type?jsxRuntimeExports.jsx("pre",{className:styles$7_preText,children:seg.content},j):jsxRuntimeExports.jsx(Collapse,{size:"small",className:styles$7_systemCollapse,items:[{key:`sys-${j}`,label:jsxRuntimeExports.jsx("span",{className:styles$7_systemLabel,children:seg.label}),children:jsxRuntimeExports.jsx("pre",{className:styles$7_preSys,children:seg.content})}]},j))})}renderOriginalPrompt(p){const textSegments=p.segments.filter(seg=>"text"===seg.type);return 0===textSegments.length?null:jsxRuntimeExports.jsx("div",{className:styles$7_textPromptCard,children:textSegments.map((seg,j)=>jsxRuntimeExports.jsx("pre",{className:styles$7_preText,children:seg.content},j))})}buildTextModeContent(){const{promptData:promptData}=this.state,blocks=[];for(const p of promptData){const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&blocks.push(textParts.join("\n"))}return blocks.join("\n\n\n")}renderProjectStatsContent(){const{projectStats:projectStats,projectStatsLoading:projectStatsLoading}=this.state;if(projectStatsLoading)return jsxRuntimeExports.jsx("div",{className:styles$7_projectStatsCenter,children:jsxRuntimeExports.jsx(Spin,{})});if(!projectStats)return jsxRuntimeExports.jsx("div",{className:styles$7_projectStatsEmpty,children:t("ui.projectStats.noData")});const{summary:summary,models:models,updatedAt:updatedAt}=projectStats;!models||Object.entries(models).sort((a,b)=>b[1]-a[1]);const modelTokens={};if(projectStats.files)for(const fStats of Object.values(projectStats.files))if(fStats.models)for(const[model,data]of Object.entries(fStats.models))modelTokens[model]||(modelTokens[model]={input:0,output:0,cacheRead:0,cacheCreation:0,count:0}),modelTokens[model].input+=data.input_tokens||0,modelTokens[model].output+=data.output_tokens||0,modelTokens[model].cacheRead+=data.cache_read_input_tokens||0,modelTokens[model].cacheCreation+=data.cache_creation_input_tokens||0,modelTokens[model].count+=data.count||0;const modelTokenEntries=Object.entries(modelTokens).sort((a,b)=>b[1].count-a[1].count);return jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatsContent,children:[updatedAt&&jsxRuntimeExports.jsx("div",{className:styles$7_projectStatsUpdated,children:t("ui.projectStats.updatedAt",{time:new Date(updatedAt).toLocaleString()})}),jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatsSummary,children:[jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatValue,children:(null==summary?void 0:summary.requestCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$7_projectStatLabel,children:t("ui.projectStats.totalRequests")})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatValue,children:(null==summary?void 0:summary.turnCount)??(null==summary?void 0:summary.sessionCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$7_projectStatLabel,children:t("ui.projectStats.turnCount")})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatValue,children:(null==summary?void 0:summary.fileCount)??0}),jsxRuntimeExports.jsx("div",{className:styles$7_projectStatLabel,children:t("ui.projectStats.totalFiles")})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.input_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$7_projectStatLabel,children:"Input Tokens"})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatCard,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatValue,children:formatTokenCount(null==summary?void 0:summary.output_tokens)}),jsxRuntimeExports.jsx("div",{className:styles$7_projectStatLabel,children:"Output Tokens"})]})]}),modelTokenEntries.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatsSection,children:[jsxRuntimeExports.jsx("div",{className:styles$7_projectStatsSectionTitle,children:t("ui.projectStats.modelUsage")}),modelTokenEntries.map(([model,data])=>{const totalInput=data.input+data.cacheRead+data.cacheCreation,cacheHitRate=totalInput>0?(data.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatsModelCard,children:[jsxRuntimeExports.jsxs("div",{className:styles$7_projectStatsModelHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$7_projectStatsModelName,children:model}),jsxRuntimeExports.jsxs("span",{className:styles$7_projectStatsModelCount,children:[data.count," reqs"]})]}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Token"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"input"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"output"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:"Cache"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"create"}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:"read"})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(data.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})]})]})}renderContextBarPortal(){var _a,_b;const slot=this.props.contextBarSlot;if(!slot)return null;const{requests:requests=[],isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,contextBarLocked:contextBarLocked,serverCachedContent:serverCachedContent,claudeProjectModel:claudeProjectModel}=this.props;let contextPercent=0,lastMainAgent=null,lastTotalTokens=0;if(!isLocalLog&&requests.length>0)for(let i=requests.length-1;i>=0;i--)if(isMainAgent(requests[i])&&(null==(_b=null==(_a=requests[i].response)?void 0:_a.body)?void 0:_b.usage)){lastMainAgent=requests[i];const u=lastMainAgent.response.body.usage;lastTotalTokens=(u.input_tokens||0)+(u.cache_creation_input_tokens||0)+(u.cache_read_input_tokens||0);break}const calibrationTokens=resolveCalibrationTokens(this.state.calibrationModel,lastMainAgent,claudeProjectModel);if(!isLocalLog)if(null!=(null==contextWindow?void 0:contextWindow.used_percentage))if(lastTotalTokens>0){const usable=calibrationTokens*AUTO_COMPACT_USABLE_RATIO;contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/usable*100)))}else{const origMax=contextWindow.context_window_size||2e5;contextPercent=Math.min(100,Math.max(0,Math.round(contextWindow.used_percentage*origMax/calibrationTokens/AUTO_COMPACT_USABLE_RATIO)))}else if(lastMainAgent&&lastTotalTokens>0){const usable=calibrationTokens*AUTO_COMPACT_USABLE_RATIO;contextPercent=Math.min(100,Math.max(0,Math.round(lastTotalTokens/usable*100)))}contextBarLocked?(this._lastContextPercent=0,contextPercent=0):(contextPercent>0&&(this._lastContextPercent=contextPercent),0===contextPercent&&this._lastContextPercent>0&&(contextPercent=this._lastContextPercent),contextBarOptimistic&&(contextPercent=OPTIMISTIC_CLEAR_PERCENT));const ctxColor=contextPercent>=80?"var(--color-error-light)":contextPercent>=60?"var(--color-warning-light)":"var(--color-success)",contextTokens=contextBarLocked?0:lastTotalTokens;return reactDomExports.createPortal(jsxRuntimeExports.jsx(LiveTagPopover$1,{isLocalLog:isLocalLog,localLogFile:localLogFile,cachePopoverOpen:this.state._cachePopoverOpen,onOpenChange:this.handleCachePopoverOpenChange,requests:requests,serverCachedContent:serverCachedContent,contextPercent:contextPercent,contextTokens:contextTokens,ctxColor:ctxColor,onSkillImported:this.reloadFsSkills,fsSkills:this.state._fsSkills,memory:this.state._memory,memoryRefreshing:this.state._memoryRefreshing,claudeMd:this.state._claudeMd,calibrationModel:this.state.calibrationModel,onCalibrationModelChange:this.handleCalibrationModelChange,onOpenMemoryDetail:this.loadMemoryDetail,onOpenClaudeMd:this.loadClaudeMdDetail,onOpenSkillsModal:this.handleOpenSkillsModal,onRefreshMemory:this.handleRefreshMemory,projectName:projectName}),slot)}render(){const{requestCount:requestCount,requests:requests=[],viewMode:viewMode,cacheType:cacheType,onToggleViewMode:onToggleViewMode,onImportLocalLogs:onImportLocalLogs,onLangChange:onLangChange,isLocalLog:isLocalLog,localLogFile:localLogFile,projectName:projectName,filterIrrelevant:filterIrrelevant,onFilterIrrelevantChange:onFilterIrrelevantChange,logDir:logDir,onLogDirChange:onLogDirChange,cliMode:cliMode,terminalVisible:terminalVisible,onToggleTerminal:onToggleTerminal,onReturnToWorkspaces:onReturnToWorkspaces,contextWindow:contextWindow,contextBarOptimistic:contextBarOptimistic,serverCachedContent:serverCachedContent,resumeAutoChoice:resumeAutoChoice,onResumeAutoChoiceToggle:onResumeAutoChoiceToggle,onResumeAutoChoiceChange:onResumeAutoChoiceChange,themeColor:themeColor,onThemeColorChange:onThemeColorChange,autoApproveSeconds:autoApproveSeconds,onAutoApproveChange:onAutoApproveChange}=this.props,{countdownText:countdownText}=this.state,_prefs=this.context&&this.context.preferences||{},collapseToolResults=_prefs.collapseToolResults??!0,expandThinking=!!_prefs.expandThinking,expandDiff=!!_prefs.expandDiff,showFullToolContent=!!_prefs.showFullToolContent,menuItems=[{key:"import-local",icon:jsxRuntimeExports.jsx(RefIcon$1,{}),label:t("ui.importLocalLogs"),onClick:onImportLocalLogs},{key:"export-prompts",icon:jsxRuntimeExports.jsx(RefIcon$2,{}),label:t("ui.exportPrompts"),onClick:this.handleShowPrompts},{key:"plugin-management",icon:jsxRuntimeExports.jsx(RefIcon$7,{}),label:t("ui.pluginManagement"),onClick:this.handleShowPlugins},{key:"process-management",icon:jsxRuntimeExports.jsx(RefIcon$8,{}),label:t("ui.processManagement"),onClick:this.handleShowProcesses},{key:"proxy-switch",icon:jsxRuntimeExports.jsx(RefIcon$9,{}),label:t("ui.proxySwitch"),onClick:()=>this.setState({proxyModalVisible:!0})},{type:"divider"},{key:"project-stats",icon:jsxRuntimeExports.jsx(RefIcon$4,{}),label:t("ui.projectStats"),onClick:this.handleShowProjectStats},..."raw"===viewMode?[{key:"global-settings",icon:jsxRuntimeExports.jsx(RefIcon$a,{}),label:t("ui.globalSettings"),onClick:()=>this.setState({globalSettingsVisible:!0})}]:[],..."chat"===viewMode?[{key:"display-settings",icon:jsxRuntimeExports.jsx(RefIcon$a,{}),label:t("ui.settings"),onClick:()=>this.setState({settingsDrawerVisible:!0})}]:[]];return jsxRuntimeExports.jsxs("div",{className:styles$7_headerBar,children:[jsxRuntimeExports.jsxs(Space,{size:"middle",children:[jsxRuntimeExports.jsx(Dropdown,{menu:{items:menuItems,className:"logo-dropdown-menu"},trigger:["hover"],onOpenChange:open=>this.setState({logoDropdownOpen:open}),align:{offset:[-4,0]},children:jsxRuntimeExports.jsx("span",{className:`${styles$7_logoWrap}${this.state.logoDropdownOpen?` ${styles$7_logoWrapActive}`:""}`,children:jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`${styles$7_logoImage}${this.state.logoDropdownOpen?` ${styles$7_logoImageActive}`:""}`,children:[jsxRuntimeExports.jsx("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})})}),this.props.activeProxyId&&"max"!==this.props.activeProxyId&&(()=>{const p=(this.props.proxyProfiles||[]).find(x=>x.id===this.props.activeProxyId);return p?jsxRuntimeExports.jsxs(Tag,{className:styles$7_proxyProfileTag,onClick:()=>this.setState({proxyModalVisible:!0}),children:[jsxRuntimeExports.jsx(RefIcon$9,{className:styles$7_proxySwapIcon}),p.name,p.activeModel?` · ${p.activeModel}`:""]}):null})(),jsxRuntimeExports.jsx(HeaderProjectLabel,{projectName:projectName,isLocalLog:isLocalLog}),this.renderContextBarPortal()]}),jsxRuntimeExports.jsxs(Space,{size:12,align:"center",className:styles$7_headerRightRow,children:[(()=>{var _a,_b,_c,_d,_e,_f;const ag=this.props.approvalGlobal,adi=this.props.approvalDismissedIds,own=this.props.approvalOwnPending||{ask:0,ptyPlan:0};if(!ag||!this.props.onApprovalReopen)return null;let dismissedActive=0;null!=(null==(_b=null==(_a=ag.ask)?void 0:_a.ask)?void 0:_b.id)&&adi instanceof Set&&adi.has(`ask:${ag.ask.ask.id}`)&&dismissedActive++,null!=(null==(_d=null==(_c=ag.ptyPlan)?void 0:_c.ptyPlan)?void 0:_d.id)&&adi instanceof Set&&adi.has(`ptyPlan:${ag.ptyPlan.ptyPlan.id}`)&&dismissedActive++;const total=dismissedActive+(!(null==(_e=ag.ask)?void 0:_e.ask)&&!(null==(_f=ag.ptyPlan)?void 0:_f.ptyPlan)?(own.ask||0)+(own.ptyPlan||0):0);if(0===total)return null;const titleKey=dismissedActive>0?"ui.approval.bell.reopen":"ui.approval.bell.orphan",titleFallback=dismissedActive>0?"Reopen approval modal":"Server has pending approvals",_tr=(k,p,f)=>{try{const r=t(k,p);return r&&r!==k?r:f}catch{return f}};return jsxRuntimeExports.jsxs("button",{type:"button",className:styles$7_approvalBell,"aria-label":_tr(titleKey,null,titleFallback),title:_tr(titleKey,null,titleFallback),onClick:()=>this.props.onApprovalReopen&&this.props.onApprovalReopen(),children:[jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("path",{d:"M12 2a6 6 0 0 0-6 6v3.5L4.5 14a1 1 0 0 0 .8 1.6h13.4a1 1 0 0 0 .8-1.6L18 11.5V8a6 6 0 0 0-6-6z",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round",fill:"none"}),jsxRuntimeExports.jsx("path",{d:"M10 18a2 2 0 0 0 4 0",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",fill:"none"})]}),total>0&&jsxRuntimeExports.jsx("span",{className:styles$7_approvalBellBadge,children:total})]})})(),countdownText&&"raw"===viewMode&&jsxRuntimeExports.jsxs(Tag,{className:styles$7_headerCountdownTag,style:{color:countdownText===t("ui.cacheExpired")?"var(--color-error-light)":"var(--text-secondary)"},children:[t("ui.cacheCountdown",{type:cacheType?`(${cacheType})`:""}),jsxRuntimeExports.jsx("strong",{className:styles$7_countdownStrong,children:countdownText})]}),"chat"===viewMode&&cliMode&&!isLocalLog&&this.state.localUrl&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Popover,{content:jsxRuntimeExports.jsxs("div",{className:styles$7_qrcodePopover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{className:styles$7_qrcodeTitle,children:[t("ui.scanToCoding")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"QRCode"})]}),jsxRuntimeExports.jsx(QRCodeCanvas,{value:this.shareUrl(),size:200,bgColor:"light"===themeColor?"#ffffff":"#141414",fgColor:"light"===themeColor?"#1a1a1a":"#d9d9d9",level:"M"}),jsxRuntimeExports.jsx(Input,{readOnly:!0,value:this.shareUrl(),className:styles$7_qrcodeUrlInput,suffix:jsxRuntimeExports.jsx(RefIcon$6,{className:styles$7_qrcodeUrlCopy,onClick:()=>{navigator.clipboard.writeText(this.shareUrl()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})}),this.state.authState.isAdmin&&this.renderPasswordSection()]}),trigger:["click"],open:this.state.qrPopoverOpen,onOpenChange:o=>this.setState({qrPopoverOpen:o}),placement:"bottomRight",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 8px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles$7_qrcodeIcon,"aria-label":t("ui.scanToCoding"),children:jsxRuntimeExports.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{fillRule:"evenodd",d:"M0 0h10v10H0zM2 2v6h6V2zM3 3h4v4H3zM14 0h10v10H14zM16 2v6h6V2zM17 3h4v4H17zM0 14h10v10H0zM2 16v6h6v-6zM3 17h4v4H3zM14 14h3v3h-3zM20 14h3v3h-3zM17 17h3v3h-3zM14 20h3v3h-3zM20 20h3v3h-3z"})})})}),jsxRuntimeExports.jsx("button",{type:"button",className:styles$7_themeToggle,"data-theme":"light"===themeColor?"light":"dark",role:"switch","aria-checked":"light"===themeColor,title:t("light"===themeColor?"ui.themeColor.light":"ui.themeColor.dark"),onClick:()=>onThemeColorChange&&onThemeColorChange("light"===themeColor?"dark":"light"),children:jsxRuntimeExports.jsx("span",{className:styles$7_themeToggleKnob,children:"light"===themeColor?jsxRuntimeExports.jsxs("svg",{className:styles$7_themeToggleIcon,width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[jsxRuntimeExports.jsx("circle",{cx:"8",cy:"8",r:"2.8",fill:"currentColor"}),jsxRuntimeExports.jsxs("g",{stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"8",y1:"1",x2:"8",y2:"2.6"}),jsxRuntimeExports.jsx("line",{x1:"8",y1:"13.4",x2:"8",y2:"15"}),jsxRuntimeExports.jsx("line",{x1:"1",y1:"8",x2:"2.6",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"13.4",y1:"8",x2:"15",y2:"8"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"2.95",x2:"4.1",y2:"4.1"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"11.9",x2:"13.05",y2:"13.05"}),jsxRuntimeExports.jsx("line",{x1:"2.95",y1:"13.05",x2:"4.1",y2:"11.9"}),jsxRuntimeExports.jsx("line",{x1:"11.9",y1:"4.1",x2:"13.05",y2:"2.95"})]})]}):jsxRuntimeExports.jsx("svg",{className:styles$7_themeToggleIcon,width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:jsxRuntimeExports.jsx("path",{d:"M8.4 2.5a5.9 5.9 0 1 0 5.1 8.55A4.8 4.8 0 0 1 8.4 2.5Z",fill:"currentColor"})})})})]}),cliMode&&"chat"===viewMode&&!isLocalLog&&jsxRuntimeExports.jsx(Button,{className:styles$7_compactBtn,type:terminalVisible?"primary":"default",ghost:terminalVisible,icon:jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:onToggleTerminal,children:t("ui.terminal")}),jsxRuntimeExports.jsx(Button,{className:styles$7_compactBtn,type:"raw"===viewMode?"primary":"default",icon:"raw"===viewMode?jsxRuntimeExports.jsx(RefIcon,{}):jsxRuntimeExports.jsx(RefIcon$b,{}),onClick:onToggleViewMode,children:t("raw"===viewMode?"ui.chatMode":"ui.rawMode")})]}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._memoryDetail,onClose:()=>this.setState({_memoryDetail:null}),onOpenMemoryDetail:this.loadMemoryDetail}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._claudeMdDetail,onClose:()=>this.setState({_claudeMdDetail:null}),linkMode:"passthrough"}),jsxRuntimeExports.jsxs(Modal,{title:`${t("ui.userPrompt")} (${this.state.promptData.length}${t("ui.promptCountUnit")})`,open:this.state.promptModalVisible,onCancel:()=>this.setState({promptModalVisible:!1}),footer:null,width:700,children:[jsxRuntimeExports.jsx("div",{className:styles$7_promptExportBar,children:jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$c,{}),onClick:this.handleExportPromptsTxt,children:t("ui.exportPromptsTxt")})}),jsxRuntimeExports.jsx(Tabs,{activeKey:this.state.promptViewMode,onChange:key=>this.setState({promptViewMode:key}),size:"small",items:[{key:"original",label:t("ui.promptModeOriginal")},{key:"context",label:t("ui.promptModeContext")},{key:"text",label:t("ui.promptModeText")}]}),"text"===this.state.promptViewMode?jsxRuntimeExports.jsx("textarea",{readOnly:!0,className:styles$7_promptTextarea,value:this.buildTextModeContent()}):jsxRuntimeExports.jsxs("div",{className:styles$7_promptScrollArea,children:[0===this.state.promptData.length&&jsxRuntimeExports.jsx("div",{className:styles$7_promptEmpty,children:t("ui.noPrompt")}),this.state.promptData.map((p,i)=>{const ts=p.timestamp?new Date(p.timestamp).toLocaleString():t("ui.unknownTime");return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$7_promptTimestamp,children:[ts,":"]}),"original"===this.state.promptViewMode?this.renderOriginalPrompt(p):this.renderTextPrompt(p)]},i)})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:t("ui.settings"),placement:"left",width:420,open:this.state.settingsDrawerVisible,onClose:()=>this.setState({settingsDrawerVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$7_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$7_settingsGroupTitle,children:t("ui.chatDisplay")}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.permission.autoApprove.setting")}),jsxRuntimeExports.jsx(Select,{size:"small",value:autoApproveSeconds||0,onChange:value=>onAutoApproveChange&&onAutoApproveChange(value),options:[{label:t("ui.permission.autoApprove.off"),value:0},{label:"3s",value:3},{label:"5s",value:5},{label:"10s",value:10},{label:"15s",value:15},{label:"20s",value:20},{label:"30s",value:30},{label:"60s",value:60}],style:{width:100}})]}),this.props.approvalPrefs&&this.props.onApprovalPrefsChange&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.approval.settings.modalEnabled")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.modalEnabled,onChange:checked=>this.props.onApprovalPrefsChange({modalEnabled:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.approval.settings.soundEnabled")}),jsxRuntimeExports.jsx(Switch,{checked:!!this.props.approvalPrefs.soundEnabled,onChange:checked=>this.props.onApprovalSoundToggle&&this.props.onApprovalSoundToggle(checked)})]}),"undefined"!=typeof window&&window.tabBridge&&jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.approval.settings.notifyOnlyWhenHidden")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.props.approvalPrefs.notifyOnlyWhenHidden,onChange:checked=>this.props.onApprovalPrefsChange({notifyOnlyWhenHidden:checked})})]}),this.props.approvalPrefs.soundEnabled&&this.props.onVoicePackChange&&jsxRuntimeExports.jsx(VoicePackSettings,{prefs:this.props.approvalPrefs.voicePack,onChange:this.props.onVoicePackChange,embedded:!0})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.expandThinking")}),jsxRuntimeExports.jsx(Switch,{checked:!!expandThinking,onChange:checked=>this.context.updatePreferences({expandThinking:checked})})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.showFullToolContent")}),jsxRuntimeExports.jsx(Switch,{checked:!!showFullToolContent,onChange:checked=>this.context.updatePreferences({showFullToolContent:checked})})]}),showFullToolContent&&jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.collapseToolResults")}),jsxRuntimeExports.jsx(Switch,{checked:!!collapseToolResults,onChange:checked=>this.context.updatePreferences({collapseToolResults:checked})})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$7_settingsGroupTitle,children:t("ui.logSettings")}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.resumeAutoChoice")}),jsxRuntimeExports.jsx(Switch,{checked:!!resumeAutoChoice,onChange:checked=>onResumeAutoChoiceToggle&&onResumeAutoChoiceToggle(checked)})]}),resumeAutoChoice&&jsxRuntimeExports.jsx("div",{className:styles$7_settingsItem,children:jsxRuntimeExports.jsxs(Radio.Group,{value:resumeAutoChoice,onChange:e=>onResumeAutoChoiceChange&&onResumeAutoChoiceChange(e.target.value),size:"small",children:[jsxRuntimeExports.jsx(Radio,{value:"continue",children:t("ui.resumeAutoChoice.continue")}),jsxRuntimeExports.jsx(Radio,{value:"new",children:t("ui.resumeAutoChoice.new")})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsGroupBox,children:[jsxRuntimeExports.jsx("div",{className:styles$7_settingsGroupTitle,children:t("ui.themeStyle")}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.themeColor")}),jsxRuntimeExports.jsx(Select,{size:"small",value:themeColor||"light",onChange:value=>onThemeColorChange&&onThemeColorChange(value),options:[{label:t("ui.themeColor.dark"),value:"dark"},{label:t("ui.themeColor.light"),value:"light"}],style:{width:140}})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.languageSettings")}),jsxRuntimeExports.jsx(Select,{size:"small",value:getLang(),onChange:value=>{setLang(value),onLangChange&&onLangChange()},options:LANG_OPTIONS.map(o=>({label:o.label,value:o.value})),style:{width:140}})]})]})]}),jsxRuntimeExports.jsxs(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[t("ui.globalSettings")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"GlobalSettings"})]}),placement:"left",width:400,open:this.state.globalSettingsVisible,onClose:()=>this.setState({globalSettingsVisible:!1}),children:[jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.filterIrrelevant")}),jsxRuntimeExports.jsx(Switch,{checked:!!filterIrrelevant,onChange:checked=>onFilterIrrelevantChange&&onFilterIrrelevantChange(checked)})]}),jsxRuntimeExports.jsxs("div",{className:styles$7_settingsItem,children:[jsxRuntimeExports.jsx("span",{className:styles$7_settingsLabel,children:t("ui.expandDiff")}),jsxRuntimeExports.jsx(Switch,{checked:!!expandDiff,onChange:checked=>this.context.updatePreferences({expandDiff:checked})})]}),jsxRuntimeExports.jsx("div",{className:styles$7_settingsDivider}),jsxRuntimeExports.jsx("div",{className:styles$7_settingsLabel,children:t("ui.logDirTitle")}),jsxRuntimeExports.jsx(Input,{className:styles$7_logDirInput,value:this.state.logDirDraft??logDir,onChange:e=>this.setState({logDirDraft:e.target.value}),onBlur:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},onPressEnter:()=>{const val=this.state.logDirDraft;null!=val&&val!==logDir&&(null==onLogDirChange||onLogDirChange(val)),this.setState({logDirDraft:null})},placeholder:"~/.claude/cc-viewer"})]}),jsxRuntimeExports.jsx(Drawer,{title:jsxRuntimeExports.jsxs("span",{children:[jsxRuntimeExports.jsx(RefIcon$4,{className:sharedChrome.titleIcon}),t("ui.projectStats")]}),placement:"left",width:400,open:this.state.projectStatsVisible,onClose:()=>this.setState({projectStatsVisible:!1}),children:this.renderProjectStatsContent()}),jsxRuntimeExports.jsx(PluginModal,{open:this.state.pluginModalVisible,onClose:()=>this.setState({pluginModalVisible:!1})}),jsxRuntimeExports.jsx(ProcessModal,{open:this.state.processModalVisible,onClose:()=>this.setState({processModalVisible:!1})}),jsxRuntimeExports.jsx(ProxyModal,{open:this.state.proxyModalVisible,onClose:()=>this.setState({proxyModalVisible:!1}),proxyProfiles:this.props.proxyProfiles,activeProxyId:this.props.activeProxyId,defaultConfig:this.props.defaultConfig,onProxyProfileChange:this.props.onProxyProfileChange}),this.renderSkillsManagerModal()]})}renderSkillsManagerModal(){const modal=this.state._skillsModal||{};return jsxRuntimeExports.jsx(SkillsManagerModal,{open:modal.open||!1,loading:modal.loading||!1,error:modal.error||null,skills:modal.skills||[],toggling:modal.toggling,onToggle:s=>this.handleToggleSkill(s),onClose:()=>this.setState(prev=>({_skillsModal:{...prev._skillsModal,open:!1}}))})}};__publicField(_AppHeader,"contextType",SettingsContext),__publicField(_AppHeader,"COMMAND_TAGS",new Set(["command-name","command-message","command-args","local-command-caveat","local-command-stdout"]));let AppHeader=_AppHeader;const styles$6_centerEmpty="_centerEmpty_midza_1",styles$6_scrollContainer="_scrollContainer_midza_8",styles$6_listItem="_listItem_midza_15",styles$6_listItemActive="_listItemActive_midza_29",styles$6_itemContent="_itemContent_midza_46",styles$6_itemHeader="_itemHeader_midza_51",styles$6_tagNoMargin="_tagNoMargin_midza_59",styles$6_modelName="_modelName_midza_64",styles$6_modelNameMain="_modelNameMain_midza_69",styles$6_time="_time_midza_73",styles$6_detailRow="_detailRow_midza_79",styles$6_urlText="_urlText_midza_86",styles$6_duration="_duration_midza_95",styles$6_statusOk="_statusOk_midza_100",styles$6_statusErr="_statusErr_midza_106",styles$6_statusDefault="_statusDefault_midza_111",styles$6_usageBox="_usageBox_midza_116",styles$6_cacheDot="_cacheDot_midza_126",styles$6_cacheDotLoss="_cacheDotLoss_midza_135",styles$6_cacheDotNormal="_cacheDotNormal_midza_140",styles$6_tagMainAgent="_tagMainAgent_midza_144",styles$6_tagPlan="_tagPlan_midza_150",styles$6_tagMuted="_tagMuted_midza_156",styles$6_tooltipPreLine="_tooltipPreLine_midza_162";class RequestList extends React__default.Component{constructor(props){super(props),__publicField(this,"handleKeyDown",e=>{if("ArrowUp"!==e.key&&"ArrowDown"!==e.key)return;const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;if(!requests.length)return;e.preventDefault();const current=selectedIndex??0,next="ArrowUp"===e.key?Math.max(0,current-1):Math.min(requests.length-1,current+1);next!==current&&onSelect(next)}),this.activeItemRef=React__default.createRef()}componentDidMount(){this.scrollToSelected(!0)}shouldComponentUpdate(nextProps){return nextProps.requests!==this.props.requests||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.scrollCenter!==this.props.scrollCenter||nextProps.cacheLossMap!==this.props.cacheLossMap}componentDidUpdate(prevProps){this.props.scrollCenter&&prevProps.selectedIndex!==this.props.selectedIndex?this.scrollToSelected(!0):prevProps.selectedIndex!==this.props.selectedIndex&&(this.scrollToSelected(!1),this.activeItemRef.current&&this.activeItemRef.current.focus({preventScroll:!0}))}scrollToSelected(center){this.activeItemRef.current&&(this.activeItemRef.current.scrollIntoView({block:center?"center":"nearest",behavior:"instant"}),center&&this.props.onScrollDone&&this.props.onScrollDone())}render(){const{requests:requests,selectedIndex:selectedIndex,onSelect:onSelect}=this.props;return 0===requests.length?jsxRuntimeExports.jsx("div",{className:styles$6_centerEmpty,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.waitingRequests")})}):jsxRuntimeExports.jsx("div",{className:styles$6_scrollContainer,onKeyDown:this.handleKeyDown,children:jsxRuntimeExports.jsx(List,{dataSource:requests,size:"small",split:!1,renderItem:(req,index)=>{var _a,_b,_c;const time2=new Date(req.timestamp).toLocaleTimeString("zh-CN"),isActive=index===selectedIndex,statusOk2=req.response&&req.response.status<400,statusErr2=req.response&&req.response.status>=400,model=getModelShort(null==(_a=req.body)?void 0:_a.model),nextReq=index+1<requests.length?requests[index+1]:null,{type:reqType,subType:subType}=classifyRequest(req,nextReq),usage=null==(_c=null==(_b=req.response)?void 0:_b.body)?void 0:_c.usage,inputTokens=usage?(usage.input_tokens||0)+(usage.cache_read_input_tokens||0)+(usage.cache_creation_input_tokens||0):null,outputTokens=(null==usage?void 0:usage.output_tokens)||null,cacheRead=(null==usage?void 0:usage.cache_read_input_tokens)||0,cacheCreate=(null==usage?void 0:usage.cache_creation_input_tokens)||0,displayUrl=req.proxyUrl||req.url;let urlShort=displayUrl;try{const u=new URL(displayUrl);urlShort=u.host+u.pathname}catch{}return jsxRuntimeExports.jsx(List.Item,{ref:isActive?this.activeItemRef:void 0,tabIndex:0,onClick:()=>onSelect(index),className:`${styles$6_listItem} ${isActive?styles$6_listItemActive:""}`,children:jsxRuntimeExports.jsxs("div",{className:styles$6_itemContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$6_itemHeader,children:["MainAgent"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$6_tagNoMargin} ${styles$6_tagMainAgent}`,children:"MainAgent"}):"Plan"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$6_tagNoMargin} ${styles$6_tagPlan}`,children:formatRequestTag(reqType,subType)}):"Count"===reqType||"Preflight"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$6_tagNoMargin} ${styles$6_tagMuted}`,children:reqType}):"Synthetic"===reqType?jsxRuntimeExports.jsx(Tag,{className:`${styles$6_tagNoMargin} ${styles$6_tagMuted}`,children:formatRequestTag(reqType,subType)}):jsxRuntimeExports.jsx(Tag,{className:styles$6_tagNoMargin,children:formatRequestTag(reqType,subType)}),model&&jsxRuntimeExports.jsx("span",{className:`${styles$6_modelName} ${"MainAgent"===reqType?styles$6_modelNameMain:""}`,children:model}),jsxRuntimeExports.jsx("span",{className:styles$6_time,children:time2})]}),jsxRuntimeExports.jsxs("div",{className:styles$6_detailRow,children:[jsxRuntimeExports.jsx("span",{className:styles$6_urlText,title:displayUrl,children:urlShort}),req.duration&&jsxRuntimeExports.jsxs("span",{className:styles$6_duration,children:[req.duration,"ms"]}),req.response&&jsxRuntimeExports.jsx("span",{className:statusOk2?styles$6_statusOk:statusErr2?styles$6_statusErr:styles$6_statusDefault,children:req.response.status})]}),usage&&jsxRuntimeExports.jsxs("div",{className:styles$6_usageBox,children:[jsxRuntimeExports.jsxs("div",{children:["token: output:",formatTokenCount(outputTokens)||0,", input: ",formatTokenCount(inputTokens)||0]}),(cacheRead>0||cacheCreate>0)&&jsxRuntimeExports.jsx("div",{children:(()=>{var _a2;const loss=null==(_a2=this.props.cacheLossMap)?void 0:_a2.get(index),reasonI18nMap={ttl:"ui.cacheLoss.ttl",system_change:"ui.cacheLoss.systemChange",tools_change:"ui.cacheLoss.toolsChange",model_change:"ui.cacheLoss.modelChange",msg_truncated:"ui.cacheLoss.msgTruncated",msg_modified:"ui.cacheLoss.msgModified",key_change:"ui.cacheLoss.keyChange"};let dot;if(loss){const tooltipText=(loss.reasons||[loss.reason]).map(r=>t(reasonI18nMap[r]||reasonI18nMap.key_change)).join("\n");dot=jsxRuntimeExports.jsx(Tooltip,{title:jsxRuntimeExports.jsx("span",{className:styles$6_tooltipPreLine,children:tooltipText}),children:jsxRuntimeExports.jsx("span",{className:`${styles$6_cacheDot} ${styles$6_cacheDotLoss}`})})}else dot=jsxRuntimeExports.jsx("span",{className:`${styles$6_cacheDot} ${styles$6_cacheDotNormal}`});return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:["cache",dot,": ",cacheRead>0?`read:${formatTokenCount(cacheRead)}`:"",cacheRead>0&&cacheCreate>0?", ":"",cacheCreate>0?`create:${formatTokenCount(cacheCreate)}`:""]})})()})]})]})})}})})}}const isDate=data=>!!data&&data instanceof Date,isObject=data=>"object"==typeof data&&null!==data,isFunction=data=>!!data&&data instanceof Object&&"function"==typeof data;function quoteString(value,quoted){return void 0===quoted&&(quoted=!1),!value||quoted?`"${value}"`:value}function ExpandableObject(_ref){let{field:field,value:value,data:data,lastElement:lastElement,openBracket:openBracket,closeBracket:closeBracket,level:level,style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref;const shouldExpandNodeCalledRef=reactExports.useRef(!1),[expanded,setExpanded]=reactExports.useState(()=>shouldExpandNode(level,value,field)),expanderButtonRef=reactExports.useRef(null);reactExports.useEffect(()=>{shouldExpandNodeCalledRef.current?setExpanded(shouldExpandNode(level,value,field)):shouldExpandNodeCalledRef.current=!0},[shouldExpandNode]);const contentsId=reactExports.useId();if(0===data.length)return function(_ref2){let{field:field,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style}=_ref2;return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field||""===field)&&reactExports.createElement("span",{className:style.label},quoteString(field,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:style.punctuation},openBracket),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}({field:field,openBracket:openBracket,closeBracket:closeBracket,lastElement:lastElement,style:style});const expanderIconStyle=expanded?style.collapseIcon:style.expandIcon,ariaLabel=expanded?style.ariaLables.collapseJson:style.ariaLables.expandJson,childLevel=level+1,lastIndex=data.length-1,setExpandWithCallback=newExpandValue=>{expanded===newExpandValue||beforeExpandChange&&!beforeExpandChange({level:level,value:value,field:field,newExpandValue:newExpandValue})||setExpanded(newExpandValue)},onKeyDown=e=>{if("ArrowRight"===e.key||"ArrowLeft"===e.key)e.preventDefault(),setExpandWithCallback("ArrowRight"===e.key);else if("ArrowUp"===e.key||"ArrowDown"===e.key){e.preventDefault();const direction="ArrowUp"===e.key?-1:1;if(!outerRef.current)return;const buttonElements=outerRef.current.querySelectorAll("[role=button]");let currentIndex=-1;for(let i=0;i<buttonElements.length;i++)if(0===buttonElements[i].tabIndex){currentIndex=i;break}if(currentIndex<0)return;const nextIndex=(currentIndex+direction+buttonElements.length)%buttonElements.length;buttonElements[currentIndex].tabIndex=-1,buttonElements[nextIndex].tabIndex=0,buttonElements[nextIndex].focus()}},onClick=()=>{var _outerRef$current;setExpandWithCallback(!expanded);const buttonElement=expanderButtonRef.current;if(!buttonElement)return;const prevButtonElement=null===(_outerRef$current=outerRef.current)||void 0===_outerRef$current?void 0:_outerRef$current.querySelector('[role=button][tabindex="0"]');prevButtonElement&&(prevButtonElement.tabIndex=-1),buttonElement.tabIndex=0,buttonElement.focus()};return reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-expanded":expanded,"aria-selected":void 0},reactExports.createElement("span",{className:expanderIconStyle,onClick:onClick,onKeyDown:onKeyDown,role:"button","aria-label":ariaLabel,"aria-expanded":expanded,"aria-controls":expanded?contentsId:void 0,ref:expanderButtonRef,tabIndex:0===level?0:-1}),(field||""===field)&&(clickToExpandNode?reactExports.createElement("span",{className:style.clickableLabel,onClick:onClick,onKeyDown:onKeyDown},quoteString(field,style.quotesForFieldNames),":"):reactExports.createElement("span",{className:style.label},quoteString(field,style.quotesForFieldNames),":")),reactExports.createElement("span",{className:style.punctuation},openBracket),expanded?reactExports.createElement("ul",{id:contentsId,role:"group",className:style.childFieldsContainer},data.map((dataElement,index)=>reactExports.createElement(DataRender,{key:dataElement[0]||index,field:dataElement[0],value:dataElement[1],style:style,lastElement:index===lastIndex,level:childLevel,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef}))):reactExports.createElement("span",{className:style.collapsedContent,onClick:onClick,onKeyDown:onKeyDown}),reactExports.createElement("span",{className:style.punctuation},closeBracket),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function JsonObject(_ref3){let{field:field,value:value,style:style,lastElement:lastElement,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,level:level,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref3;return ExpandableObject({field:field,value:value,lastElement:lastElement||!1,level:level,openBracket:"{",closeBracket:"}",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:Object.keys(value).map(key=>[key,value[key]]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonArray(_ref4){let{field:field,value:value,style:style,lastElement:lastElement,level:level,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}=_ref4;return ExpandableObject({field:field,value:value,lastElement:lastElement||!1,level:level,openBracket:"[",closeBracket:"]",style:style,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,data:value.map(element=>[void 0,element]),outerRef:outerRef,beforeExpandChange:beforeExpandChange})}function JsonPrimitiveValue(_ref5){let stringValue,{field:field,value:value,style:style,lastElement:lastElement}=_ref5,valueStyle=style.otherValue;var data;return null===value?(stringValue="null",valueStyle=style.nullValue):void 0===value?(stringValue="undefined",valueStyle=style.undefinedValue):"string"==typeof(data=value)||data instanceof String?(stringValue=function(value,quoted,stringify){return stringify?JSON.stringify(value):quoted?`"${value}"`:value}(value,!style.noQuotesForStringValues,style.stringifyStringValues),valueStyle=style.stringValue):(data=>"boolean"==typeof data||data instanceof Boolean)(value)?(stringValue=value?"true":"false",valueStyle=style.booleanValue):(data=>"number"==typeof data||data instanceof Number)(value)?(stringValue=value.toString(),valueStyle=style.numberValue):(data=>"bigint"==typeof data||data instanceof BigInt)(value)?(stringValue=`${value.toString()}n`,valueStyle=style.numberValue):stringValue=isDate(value)?value.toISOString():isFunction(value)?"function() { }":value.toString(),reactExports.createElement("div",{className:style.basicChildStyle,role:"treeitem","aria-selected":void 0},(field||""===field)&&reactExports.createElement("span",{className:style.label},quoteString(field,style.quotesForFieldNames),":"),reactExports.createElement("span",{className:valueStyle},stringValue),!lastElement&&reactExports.createElement("span",{className:style.punctuation},","))}function DataRender(props){const value=props.value;return data=value,Array.isArray(data)?reactExports.createElement(JsonArray,Object.assign({},props)):!isObject(value)||isDate(value)||isFunction(value)?reactExports.createElement(JsonPrimitiveValue,Object.assign({},props)):reactExports.createElement(JsonObject,Object.assign({},props));var data}var styles$5_basic_element_style="_2bkNM",styles$5_child_fields_container="_1BXBN";const defaultAriaLables={collapseJson:"collapse JSON",expandJson:"expand JSON"},defaultStyles={container:"_2IvMF _GzYRV",basicChildStyle:styles$5_basic_element_style,childFieldsContainer:styles$5_child_fields_container,label:"_1MGIk",clickableLabel:"_2YKJg _1MGIk _1MFti",nullValue:"_2T6PJ",undefinedValue:"_1Gho6",stringValue:"_vGjyY",booleanValue:"_3zQKs",numberValue:"_1bQdo",otherValue:"_1xvuR",punctuation:"_3uHL6 _3eOF8",collapseIcon:"_oLqym _f10Tu _1MFti _1LId0",expandIcon:"_2AXVT _f10Tu _1MFti _1UmXx",collapsedContent:"_2KJWg _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},darkStyles={container:"_11RoI _GzYRV",basicChildStyle:styles$5_basic_element_style,childFieldsContainer:styles$5_child_fields_container,label:"_2bSDX",clickableLabel:"_1RQEj _2bSDX _1MFti",nullValue:"_LaAZe",undefinedValue:"_GTKgm",stringValue:"_Chy1W",booleanValue:"_2vRm-",numberValue:"_2bveF",otherValue:"_1prJR",punctuation:"_gsbQL _3eOF8",collapseIcon:"_3QHg2 _f10Tu _1MFti _1LId0",expandIcon:"_17H2C _f10Tu _1MFti _1UmXx",collapsedContent:"_3fDAz _1pNG9 _1MFti",noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:defaultAriaLables,stringifyStringValues:!1},allExpanded=()=>!0,JsonView=_ref=>{let{data:data,style:style=defaultStyles,shouldExpandNode:shouldExpandNode=allExpanded,clickToExpandNode:clickToExpandNode=!1,beforeExpandChange:beforeExpandChange,compactTopLevel:compactTopLevel,...ariaAttrs}=_ref;const outerRef=reactExports.useRef(null);return reactExports.createElement("div",Object.assign({"aria-label":"JSON view"},ariaAttrs,{className:style.container,ref:outerRef,role:"tree"}),compactTopLevel&&isObject(data)?Object.entries(data).map(_ref2=>{let[key,value]=_ref2;return reactExports.createElement(DataRender,{key:key,field:key,value:value,style:{...defaultStyles,...style},lastElement:!0,level:1,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,beforeExpandChange:beforeExpandChange,outerRef:outerRef})}):reactExports.createElement(DataRender,{value:data,style:{...defaultStyles,...style},lastElement:!0,level:0,shouldExpandNode:shouldExpandNode,clickToExpandNode:clickToExpandNode,outerRef:outerRef,beforeExpandChange:beforeExpandChange}))},styles$4_container="_container_qeuid_1";class JsonViewer extends React__default.Component{shouldComponentUpdate(nextProps){return nextProps.data!==this.props.data||nextProps.defaultExpand!==this.props.defaultExpand||nextProps.expandNode!==this.props.expandNode}render(){const{data:data,defaultExpand:defaultExpand,expandNode:expandNode}=this.props,customStyles={..."undefined"!=typeof document&&"light"!==document.documentElement.getAttribute("data-theme")?darkStyles:defaultStyles,container:"rjv-container"};if(null==data)return null;const shouldExpandNode="function"==typeof expandNode?expandNode:"all"===defaultExpand?()=>!0:"root"===defaultExpand?level=>level<2:level=>level<1;return jsxRuntimeExports.jsx("div",{className:styles$4_container,children:jsxRuntimeExports.jsx(JsonView,{data:data,shouldExpandNode:shouldExpandNode,style:customStyles})})}}const styles$3={root:"_root_17dqd_1",sidebar:"_sidebar_17dqd_9",section:"_section_17dqd_18",sectionHeader:"_sectionHeader_17dqd_22",arrow:"_arrow_17dqd_48",sectionTitle:"_sectionTitle_17dqd_54",sectionCount:"_sectionCount_17dqd_62",sectionBody:"_sectionBody_17dqd_71",historyToggle:"_historyToggle_17dqd_76",historyToggleLabel:"_historyToggleLabel_17dqd_102",item:"_item_17dqd_107",itemActive:"_itemActive_17dqd_135",itemContent:"_itemContent_17dqd_142",itemLabel:"_itemLabel_17dqd_148",itemSublabel:"_itemSublabel_17dqd_156",itemTime:"_itemTime_17dqd_165",content:"_content_17dqd_174",contentEmpty:"_contentEmpty_17dqd_182",contentInner:"_contentInner_17dqd_189",emptyWrap:"_emptyWrap_17dqd_193",roleHeader:"_roleHeader_17dqd_201",roleBadge:"_roleBadge_17dqd_209",role_user:"_role_user_17dqd_218",role_assistant:"_role_assistant_17dqd_224",roleLabel:"_roleLabel_17dqd_230",contentTime:"_contentTime_17dqd_237",turnDivider:"_turnDivider_17dqd_245",textBlock:"_textBlock_17dqd_252",textBlockBar:"_textBlockBar_17dqd_259",textBlockBody:"_textBlockBody_17dqd_268",textBlockCompact:"_textBlockCompact_17dqd_276",textBlockCompactFloat:"_textBlockCompactFloat_17dqd_283",thinkingBlock:"_thinkingBlock_17dqd_290",thinkingHeader:"_thinkingHeader_17dqd_298",thinkingPreview:"_thinkingPreview_17dqd_313",thinkingBody:"_thinkingBody_17dqd_323",toolBlock:"_toolBlock_17dqd_329",toolBlockResult:"_toolBlockResult_17dqd_336",toolBlockError:"_toolBlockError_17dqd_340",toolBlockHeader:"_toolBlockHeader_17dqd_344",toolBlockBody:"_toolBlockBody_17dqd_355",toolName:"_toolName_17dqd_360",toolId:"_toolId_17dqd_366",errorLabel:"_errorLabel_17dqd_373",blockTag:"_blockTag_17dqd_383",blockTagText:"_blockTagText_17dqd_396",blockTagThinking:"_blockTagThinking_17dqd_402",blockTagResult:"_blockTagResult_17dqd_408",blockTagError:"_blockTagError_17dqd_414",jsonBlock:"_jsonBlock_17dqd_421",jsonBlockLabel:"_jsonBlockLabel_17dqd_428",blockSeparator:"_blockSeparator_17dqd_438",markdownBody:"_markdownBody_17dqd_445"},{Text:Text$1}=Typography;function parseContentBlocks(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}if(Array.isArray(content2)){const blocks=[];for(const block of content2)if(block)if("text"===block.type){const trimmed=(block.text||"").trim();trimmed&&blocks.push({type:"markdown",text:trimmed})}else if("tool_use"===block.type)blocks.push({type:"tool_use",name:block.name||"unknown",id:block.id||"",input:block.input??{}});else if("tool_result"===block.type){const inner=parseResultContent(block.content);blocks.push({type:"tool_result",tool_use_id:block.tool_use_id||"",is_error:block.is_error,content:inner})}else if("thinking"===block.type){const text=block.thinking||"";text.trim()&&blocks.push({type:"thinking",text:text})}else"image"===block.type?blocks.push({type:"json",label:"image",data:block}):blocks.push({type:"json",label:block.type||"block",data:block});return blocks}return[{type:"json",label:"content",data:content2}]}function parseResultContent(content2){if(null==content2)return[];if("string"==typeof content2){const trimmed=content2.trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return Array.isArray(content2)?content2.flatMap(c=>{if(!c)return[];if("text"===c.type){const trimmed=(c.text||"").trim();return trimmed?[{type:"markdown",text:trimmed}]:[]}return[{type:"json",label:c.type||"block",data:c}]}):[{type:"json",label:"content",data:content2}]}function parseToolBlocks(tool){const blocks=[],name=(null==tool?void 0:tool.name)||"unknown",desc=(null==tool?void 0:tool.description)||"";let md=`### ${name}\n\n`;desc&&(md+=`${desc}\n\n`),blocks.push({type:"markdown",text:md});const schema=(null==tool?void 0:tool.input_schema)||(null==tool?void 0:tool.parameters)||null;return schema&&blocks.push({type:"json",label:"Parameters",data:schema}),blocks}function extractPreviewText(content2){var _a;if("string"==typeof content2)return content2.slice(0,60).replace(/\n/g," ");if(Array.isArray(content2))for(const block of content2)if("text"===(null==block?void 0:block.type)&&(null==(_a=block.text)?void 0:_a.trim()))return block.text.trim().slice(0,60).replace(/\n/g," ");return""}function formatTurnTime(isoStr){try{return new Date(isoStr).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{return null}}function TranslatableMarkdown({text:text,compact:compact}){const displayHtml=renderMarkdown(text);return compact?jsxRuntimeExports.jsx("div",{className:styles$3.textBlockCompact,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$3.markdownBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})}):jsxRuntimeExports.jsxs("div",{className:styles$3.textBlock,children:[jsxRuntimeExports.jsx("div",{className:styles$3.textBlockBar,children:jsxRuntimeExports.jsx("span",{className:`${styles$3.blockTag} ${styles$3.blockTagText}`,children:"text"})}),jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$3.textBlockBody}`,dangerouslySetInnerHTML:{__html:displayHtml}})]})}function ThinkingBlock({block:block}){const[expanded,setExpanded]=reactExports.useState(!0),preview=block.text.length>60?block.text.slice(0,60).replace(/\n/g," ")+"…":block.text.replace(/\n/g," ");return jsxRuntimeExports.jsxs("div",{className:styles$3.thinkingBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.thinkingHeader,onClick:()=>setExpanded(v=>!v),children:[expanded?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$3.arrow}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$3.arrow}),jsxRuntimeExports.jsx("span",{className:`${styles$3.blockTag} ${styles$3.blockTagThinking}`,children:"thinking"}),!expanded&&jsxRuntimeExports.jsx("span",{className:styles$3.thinkingPreview,children:preview})]}),expanded&&jsxRuntimeExports.jsx("div",{className:styles$3.thinkingBody,children:jsxRuntimeExports.jsx("div",{className:`chat-md ${styles$3.markdownBody}`,dangerouslySetInnerHTML:{__html:renderMarkdown(block.text)}})})]})}function RenderBlocks({blocks:blocks,compact:compact}){return blocks&&0!==blocks.length?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:blocks.map((block,i)=>jsxRuntimeExports.jsx(RenderBlock,{block:block,compact:compact},i))}):null}function RenderBlock({block:block,compact:compact}){var _a;return"separator"===block.type?jsxRuntimeExports.jsx("hr",{className:styles$3.blockSeparator}):"markdown"===block.type?(null==(_a=block.text)?void 0:_a.trim())?jsxRuntimeExports.jsx(TranslatableMarkdown,{text:block.text,compact:compact}):null:"thinking"===block.type?jsxRuntimeExports.jsx(ThinkingBlock,{block:block}):"tool_use"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$3.toolBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$3.blockTag,children:"tool_use"}),jsxRuntimeExports.jsx("span",{className:styles$3.toolName,children:block.name}),block.id&&jsxRuntimeExports.jsx("span",{className:styles$3.toolId,children:block.id})]}),jsxRuntimeExports.jsx("div",{className:styles$3.toolBlockBody,children:jsxRuntimeExports.jsx(JsonViewer,{data:block.input,defaultExpand:"root"})})]}):"tool_result"===block.type?jsxRuntimeExports.jsxs("div",{className:`${styles$3.toolBlock} ${block.is_error?styles$3.toolBlockError:styles$3.toolBlockResult}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.toolBlockHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$3.blockTag} ${block.is_error?styles$3.blockTagError:styles$3.blockTagResult}`,children:"tool_result"}),block.tool_use_id&&jsxRuntimeExports.jsx("span",{className:styles$3.toolId,children:block.tool_use_id}),block.is_error&&jsxRuntimeExports.jsx("span",{className:styles$3.errorLabel,children:"error"})]}),jsxRuntimeExports.jsx("div",{className:styles$3.toolBlockBody,children:jsxRuntimeExports.jsx(RenderBlocks,{blocks:block.content,compact:!0})})]}):"json"===block.type?jsxRuntimeExports.jsxs("div",{className:styles$3.jsonBlock,children:[block.label&&jsxRuntimeExports.jsx("div",{className:styles$3.jsonBlockLabel,children:block.label}),jsxRuntimeExports.jsx(JsonViewer,{data:block.data,defaultExpand:"root"})]}):null}function TurnContent({turn:turn}){const timeStr=turn.timestamp?formatTurnTime(turn.timestamp):null,assistantTimeStr=turn.assistantTimestamp?formatTurnTime(turn.assistantTimestamp):null;return jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$3.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$3.roleBadge} ${styles$3.role_user}`,children:"user"}),jsxRuntimeExports.jsx("span",{className:styles$3.roleLabel,children:`Turn ${turn.turnIndex+1}`}),timeStr&&jsxRuntimeExports.jsx("span",{className:styles$3.contentTime,children:timeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.userBlocks}),turn.assistantBlocks&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:styles$3.turnDivider}),jsxRuntimeExports.jsxs("div",{className:styles$3.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$3.roleBadge} ${styles$3.role_assistant}`,children:"assistant"}),assistantTimeStr&&jsxRuntimeExports.jsx("span",{className:styles$3.contentTime,children:assistantTimeStr})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:turn.assistantBlocks})]})]})}function AccordionSection({sectionKey:sectionKey,title:title,items:items,historyItems:historyItems=[],onSelect:onSelect,onSelectById:onSelectById,selectedId:selectedId,sidebarRef:sidebarRef}){const[open,setOpen]=reactExports.useState("tools"!==sectionKey),[historyOpen,setHistoryOpen]=reactExports.useState(!1),totalCount=items.length+historyItems.length,historyToggleId=`${sectionKey}__history_toggle`;function handleControlKeyDown(event,controlId){var _a;const nextId=function({currentId:currentId,visibleIds:visibleIds=[],key:key}){if("ArrowUp"!==key&&"ArrowDown"!==key)return null;const currentIndex=visibleIds.findIndex(id=>id===currentId);return currentIndex>=0?visibleIds[currentIndex+("ArrowUp"===key?-1:1)]??null:null}({currentId:controlId,visibleIds:Array.from((null==(_a=sidebarRef.current)?void 0:_a.querySelectorAll("[data-context-sidebar-control]"))||[]).map(el=>el.dataset.contextSidebarControl).filter(Boolean),key:event.key});nextId&&(event.preventDefault(),"undefined"!=typeof window&&window.requestAnimationFrame(()=>{var _a2;!function(controlId){var _a;const el=null==(_a=sidebarRef.current)?void 0:_a.querySelector(`[data-context-sidebar-control="${controlId}"]`);el&&(el.focus(),el.scrollIntoView({block:"nearest"}))}(nextId);const nextEl=null==(_a2=sidebarRef.current)?void 0:_a2.querySelector(`[data-context-sidebar-control="${nextId}"]`);"item"===(null==nextEl?void 0:nextEl.dataset.controlType)&&onSelectById(nextId)}))}function renderItem(item2){const active=selectedId===item2.id;return jsxRuntimeExports.jsxs("button",{type:"button",className:`${styles$3.item} ${active?styles$3.itemActive:""}`,onClick:()=>onSelect(item2),onKeyDown:event=>handleControlKeyDown(event,item2.id),"aria-current":active?"true":void 0,"data-context-sidebar-control":item2.id,"data-control-type":"item",children:[jsxRuntimeExports.jsxs("div",{className:styles$3.itemContent,children:[jsxRuntimeExports.jsx("span",{className:styles$3.itemLabel,children:item2.label}),item2.sublabel&&!active&&jsxRuntimeExports.jsx("div",{className:styles$3.itemSublabel,children:item2.sublabel})]}),item2.time&&jsxRuntimeExports.jsx("span",{className:styles$3.itemTime,children:item2.time})]},item2.id)}return jsxRuntimeExports.jsxs("div",{className:styles$3.section,children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$3.sectionHeader,onClick:()=>setOpen(v=>!v),"aria-expanded":open,children:[open?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$3.arrow}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$3.arrow}),jsxRuntimeExports.jsx("span",{className:styles$3.sectionTitle,children:title}),jsxRuntimeExports.jsx("span",{className:styles$3.sectionCount,children:totalCount})]}),open&&jsxRuntimeExports.jsxs("div",{className:styles$3.sectionBody,children:[historyItems.length>0&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("button",{type:"button",className:styles$3.historyToggle,onClick:()=>setHistoryOpen(v=>!v),onKeyDown:event=>handleControlKeyDown(event,historyToggleId),"aria-expanded":historyOpen,"data-context-sidebar-control":historyToggleId,"data-control-type":"toggle",children:[historyOpen?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$3.arrow}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$3.arrow}),jsxRuntimeExports.jsxs("span",{className:styles$3.historyToggleLabel,children:[t("ui.context.history")," (",historyItems.length,")"]})]}),historyOpen&&historyItems.map(renderItem)]}),items.map(renderItem)]})]})}function ContextTab({body:body,response:response}){const[selectedItem,setSelectedItem]=reactExports.useState(null),sidebarRef=reactExports.useRef(null),turns=reactExports.useMemo(()=>{if(!Array.isArray(null==body?void 0:body.messages))return[];const allTurns=function(messages){var _a;const turns=[];let i=0;for(;i<messages.length;){const userMsg=messages[i];if("user"!==(null==userMsg?void 0:userMsg.role)){i++;continue}const assistantMsg="assistant"===(null==(_a=messages[i+1])?void 0:_a.role)?messages[i+1]:null;turns.push({id:`turn__${i}`,isTurn:!0,turnIndex:turns.length,timestamp:userMsg._timestamp||null,assistantTimestamp:(null==assistantMsg?void 0:assistantMsg._timestamp)||null,userBlocks:parseContentBlocks(null==userMsg?void 0:userMsg.content),assistantBlocks:assistantMsg?parseContentBlocks(assistantMsg.content):null,preview:extractPreviewText(null==userMsg?void 0:userMsg.content)}),i+=assistantMsg?2:1}return turns}(body.messages);if(0===allTurns.length)return allTurns;const last=allTurns[allTurns.length-1],responseBlocks=(null==response?void 0:response.content)?parseContentBlocks(response.content):null;return[...allTurns.slice(0,-1),{...last,assistantBlocks:responseBlocks??last.assistantBlocks}]},[body,response]);if(reactExports.useEffect(()=>{turns.length>0?setSelectedItem(turns[turns.length-1]):setSelectedItem(null)},[body,response]),!body||"object"!=typeof body)return jsxRuntimeExports.jsx("div",{className:styles$3.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noData")})});const accordionSections=[];Array.isArray(body.tools)&&body.tools.length>0&&accordionSections.push({key:"tools",title:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.context.tools")," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ToolsFirst"})]}),items:body.tools.map((tool,i)=>({id:`tool__${i}`,label:(null==tool?void 0:tool.name)||`Tool ${i}`,blocks:parseToolBlocks(tool)}))});const systemBlocks=function(system){if(!system)return null;if("string"==typeof system)return[{type:"markdown",text:system}];if(Array.isArray(system)){const blocks=[];return system.forEach((item2,i)=>{i>0&&blocks.push({type:"separator"}),item2&&("string"==typeof item2?blocks.push({type:"markdown",text:item2}):"text"===item2.type?blocks.push({type:"markdown",text:item2.text||""}):blocks.push({type:"json",label:item2.type||"item",data:item2}))}),blocks}return[{type:"json",label:"system",data:system}]}(body.system);if(null!=systemBlocks&&accordionSections.push({key:"system",title:t("ui.context.systemPrompt"),items:[{id:"system__0",label:t("ui.context.systemPrompt"),blocks:systemBlocks}]}),turns.length>0){const toHistoryItem=turn=>({...turn,label:t("ui.context.historyTurnNoTime",{n:turn.turnIndex+1}),time:turn.timestamp?formatTurnTime(turn.timestamp):null,sublabel:turn.preview||void 0}),toCurrentItem=turn=>({...turn,label:t("ui.context.currentTurn"),sublabel:turn.preview||void 0}),historyTurns=turns.slice(0,-1).map(toHistoryItem),currentTurn=toCurrentItem(turns[turns.length-1]);accordionSections.push({key:"messages",title:t("ui.context.messages"),historyItems:historyTurns.length>0?historyTurns:void 0,items:[currentTurn]})}if(0===accordionSections.length)return jsxRuntimeExports.jsx("div",{className:styles$3.emptyWrap,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.context.noFields")})});const currentSelectedItem=(null==selectedItem?void 0:selectedItem.isTurn)?turns.find(turn=>turn.id===selectedItem.id)??null:selectedItem,itemMap=new Map;return accordionSections.forEach(section2=>{(section2.historyItems||[]).forEach(item2=>itemMap.set(item2.id,item2)),section2.items.forEach(item2=>itemMap.set(item2.id,item2))}),jsxRuntimeExports.jsxs("div",{className:styles$3.root,children:[jsxRuntimeExports.jsx("div",{ref:sidebarRef,className:styles$3.sidebar,children:accordionSections.map(sec=>jsxRuntimeExports.jsx(AccordionSection,{sectionKey:sec.key,title:sec.title,items:sec.items,historyItems:sec.historyItems,selectedId:null==currentSelectedItem?void 0:currentSelectedItem.id,onSelect:item2=>setSelectedItem(item2),onSelectById:itemId=>{const nextItem=itemMap.get(itemId);nextItem&&setSelectedItem(nextItem)},sidebarRef:sidebarRef},sec.key))}),jsxRuntimeExports.jsx("div",{className:styles$3.content,children:null==currentSelectedItem?jsxRuntimeExports.jsx("div",{className:styles$3.contentEmpty,children:jsxRuntimeExports.jsx(Text$1,{type:"secondary",children:t("ui.context.selectPrompt")})}):jsxRuntimeExports.jsx("div",{className:styles$3.contentInner,children:currentSelectedItem.isTurn?jsxRuntimeExports.jsx(TurnContent,{turn:currentSelectedItem}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[currentSelectedItem.role&&jsxRuntimeExports.jsxs("div",{className:styles$3.roleHeader,children:[jsxRuntimeExports.jsx("span",{className:`${styles$3.roleBadge} ${styles$3[`role_${currentSelectedItem.role}`]||""}`,children:currentSelectedItem.role}),jsxRuntimeExports.jsx("span",{className:styles$3.roleLabel,children:currentSelectedItem.label})]}),jsxRuntimeExports.jsx(RenderBlocks,{blocks:currentSelectedItem.blocks})]})},currentSelectedItem.id)})]})}const styles$2_container="_container_rg6mx_1",styles$2_emptyState="_emptyState_rg6mx_10",styles$2_urlSection="_urlSection_rg6mx_17",styles$2_urlLeft="_urlLeft_rg6mx_25",styles$2_tokenStatsBox="_tokenStatsBox_rg6mx_30",styles$2_tokenGrid="_tokenGrid_rg6mx_37",styles$2_tokenRows="_tokenRows_rg6mx_47",styles$2_tokenRow="_tokenRow_rg6mx_47",styles$2_tokenRowBorder="_tokenRowBorder_rg6mx_55",styles$2_tokenLabel="_tokenLabel_rg6mx_59",styles$2_tokenTd="_tokenTd_rg6mx_66",styles$2_tokenHitRate="_tokenHitRate_rg6mx_75",styles$2_tokenHitRateLabel="_tokenHitRateLabel_rg6mx_88",styles$2_urlText="_urlText_rg6mx_98",styles$2_metaText="_metaText_rg6mx_105",styles$2_headersContainer="_headersContainer_rg6mx_109",styles$2_headerRow="_headerRow_rg6mx_113",styles$2_headerKey="_headerKey_rg6mx_119",styles$2_headerValue="_headerValue_rg6mx_124",styles$2_streamingBox="_streamingBox_rg6mx_129",styles$2_rawTextPre="_rawTextPre_rg6mx_142",styles$2_tabContent="_tabContent_rg6mx_155",styles$2_bodyLabel="_bodyLabel_rg6mx_167",styles$2_bodyHeader="_bodyHeader_rg6mx_171",styles$2_diffSection="_diffSection_rg6mx_178",styles$2_diffToggle="_diffToggle_rg6mx_182",styles$2_diffIcon="_diffIcon_rg6mx_188",styles$2_reminderSelect="_reminderSelect_rg6mx_214",styles$2_diffHeaderRow="_diffHeaderRow_rg6mx_233",styles$2_diffSpaceRight="_diffSpaceRight_rg6mx_239",styles$2_reminderFilterWrapper="_reminderFilterWrapper_rg6mx_243",styles$2_reminderLabel="_reminderLabel_rg6mx_249",styles$2_cacheTabContent="_cacheTabContent_rg6mx_255",styles$2_userPromptList="_userPromptList_rg6mx_260",styles$2_userPromptItem="_userPromptItem_rg6mx_266",styles$2_userPromptNavBtn="_userPromptNavBtn_rg6mx_277",styles$2_cacheContent="_cacheContent_rg6mx_288",styles$2_cacheTokenBar="_cacheTokenBar_rg6mx_295",styles$2_cacheTokenWrite="_cacheTokenWrite_rg6mx_305",styles$2_cacheTokenRead="_cacheTokenRead_rg6mx_309",styles$2_cacheCopyIcon="_cacheCopyIcon_rg6mx_313",styles$2_cacheScrollArea="_cacheScrollArea_rg6mx_320",styles$2_cacheSectionBlock="_cacheSectionBlock_rg6mx_326",styles$2_cacheSectionHeader="_cacheSectionHeader_rg6mx_330",styles$2_cacheCollapseArrow="_cacheCollapseArrow_rg6mx_342",styles$2_cachePre="_cachePre_rg6mx_348",styles$2_cacheHighlightSvg="_cacheHighlightSvg_rg6mx_362",styles$2_cachePreSystem="_cachePreSystem_rg6mx_371",{Text:Text,Paragraph:Paragraph}=Typography;class DetailPanel extends React__default.Component{constructor(props){super(props),this.state={bodyViewMode:{request:"json",response:"json",diff:"json"},diffExpanded:!1,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null,cacheHighlightIdx:null,cacheHighlightFading:!1,cacheCollapsed:{tools:!1,system:!1,messages:!1}}}_cacheUnbindScrollFade(){this._cacheOnScrollFade&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scroll",this._cacheOnScrollFade),this._cacheOnScrollFade=null)}_cacheClearAllTimers(){clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&this._cacheScrollEl&&(this._cacheScrollEl.removeEventListener("scrollend",this._cacheScrollEndHandler),this._cacheScrollEndHandler=null)}componentWillUnmount(){this._cacheClearAllTimers()}_cacheBindScrollFade(){this._cacheUnbindScrollFade();const el=this._cacheScrollEl;el&&(this._cacheOnScrollFade=()=>{clearTimeout(this._cacheAutoFadeTimer),this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade()},el.addEventListener("scroll",this._cacheOnScrollFade,{passive:!0}))}scrollToCacheMsg(idx){if(this.state.cacheCollapsed.messages)return void this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!1}}),()=>this.scrollToCacheMsg(idx));const el=this._cacheScrollEl;if(!el)return;const target=el.querySelector(`[data-msg-idx="${idx}"]`);if(!target)return;clearTimeout(this._cacheScrollSettleTimer),clearTimeout(this._cacheFadeClearTimer),clearTimeout(this._cacheAutoFadeTimer),clearTimeout(this._cacheHighlightDelayTimer),this._cacheUnbindScrollFade(),this._cacheScrollEndHandler&&el.removeEventListener("scrollend",this._cacheScrollEndHandler),this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1});let scrollDone=!1,minPassed=!1;const showHighlight=()=>{scrollDone&&minPassed&&(this.setState({cacheHighlightIdx:idx,cacheHighlightFading:!1}),this._cacheScrollSettleTimer=setTimeout(()=>this._cacheBindScrollFade(),200),this._cacheAutoFadeTimer=setTimeout(()=>{this.state.cacheHighlightIdx!==idx||this.state.cacheHighlightFading||(this.setState({cacheHighlightFading:!0}),this._cacheFadeClearTimer=setTimeout(()=>{this.setState({cacheHighlightIdx:null,cacheHighlightFading:!1})},3e3),this._cacheUnbindScrollFade())},3e3))};this._cacheScrollEndHandler=()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},el.addEventListener("scrollend",this._cacheScrollEndHandler,{once:!0}),this._cacheScrollSettleTimer=setTimeout(()=>{el.removeEventListener("scrollend",this._cacheScrollEndHandler),scrollDone=!0,showHighlight()},800),this._cacheHighlightDelayTimer=setTimeout(()=>{minPassed=!0,showHighlight()},500),target.scrollIntoView({behavior:"smooth",block:"center"})}shouldComponentUpdate(nextProps,nextState){if(nextProps.request!==this.props.request){const isMA=isMainAgent(nextProps.request);this.setState({diffExpanded:isMA&&!!nextProps.expandDiff,requestHeadersExpanded:!1,responseHeadersExpanded:!1,reminderFilters:null}),this._cacheClearAllTimers()}const onCacheTab="kv-cache-text"===nextProps.currentTab;return nextProps.request!==this.props.request||nextProps.currentTab!==this.props.currentTab||nextProps.onTabChange!==this.props.onTabChange||nextProps.selectedIndex!==this.props.selectedIndex||nextProps.expandDiff!==this.props.expandDiff||nextProps.pendingCacheHighlight!==this.props.pendingCacheHighlight||nextState.bodyViewMode!==this.state.bodyViewMode||onCacheTab&&nextState.cacheHighlightIdx!==this.state.cacheHighlightIdx||onCacheTab&&nextState.cacheHighlightFading!==this.state.cacheHighlightFading||nextState.diffExpanded!==this.state.diffExpanded||nextState.requestHeadersExpanded!==this.state.requestHeadersExpanded||nextState.responseHeadersExpanded!==this.state.responseHeadersExpanded||nextState.reminderFilters!==this.state.reminderFilters||onCacheTab&&nextState.cacheCollapsed!==this.state.cacheCollapsed}componentDidUpdate(prevProps){const pch=this.props.pendingCacheHighlight;pch&&pch!==prevProps.pendingCacheHighlight&&setTimeout(()=>{var _a,_b;this.scrollToCacheMsg(pch.msgIdx),null==(_b=(_a=this.props).onCacheHighlightDone)||_b.call(_a)},150)}getCurrentRequest(){const{request:request,allRequests:allRequests,requests:requests}=this.props;return request?request._slimmed?restoreSlimmedEntry(request,allRequests||requests||[]):request:null}toggleBodyViewMode(type){this.setState(prev=>({bodyViewMode:{...prev.bodyViewMode,[type]:"json"===prev.bodyViewMode[type]?"text":"json"}}))}copyBody(type){var _a;const request=this.getCurrentRequest();if(!request)return;let data;if(data="diff"===type?this._lastDiffResult:"request"===type?request.body:null==(_a=request.response)?void 0:_a.body,null==data)return;const clean="object"==typeof data?stripPrivateKeys(data):data,text="string"==typeof clean?clean:JSON.stringify(clean,null,2);navigator.clipboard.writeText(text).then(()=>staticMethods.success(t("ui.copySuccess")))}renderHeaders(headers){return headers&&0!==Object.keys(headers).length?jsxRuntimeExports.jsx("div",{className:styles$2_headersContainer,children:Object.entries(headers).map(([key,value])=>jsxRuntimeExports.jsxs("div",{className:styles$2_headerRow,children:[jsxRuntimeExports.jsx(Text,{code:!0,className:styles$2_headerKey,children:key}),"authorization"===key&&jsxRuntimeExports.jsx(ConceptHelp,{doc:"TranslateContextPollution"}),jsxRuntimeExports.jsx(Text,{type:"secondary",className:styles$2_headerValue,children:String(value)})]},key))}):jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noHeaders")})}getRequestExpandNode(data,type){if("request"!==type||!data||"object"!=typeof data)return;const{request:request,requests:requests,selectedIndex:selectedIndex}=this.props;if(!request)return;const nextReq=requests&&null!=selectedIndex?requests[selectedIndex+1]:null,{type:reqType}=classifyRequest(request,nextReq);let claudeMdExpandSet=null;if("claudeMd"===this.state.reminderFilters&&Array.isArray(data.messages)){claudeMdExpandSet=new Set,claudeMdExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isClaudeMdReminder(content2)&&claudeMdExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isClaudeMdReminder(block.text)&&(claudeMdExpandSet.add(block),hasMatch=!0);hasMatch&&(claudeMdExpandSet.add(msg),claudeMdExpandSet.add(content2))}}}let skillsExpandSet=null;if("skills"===this.state.reminderFilters&&Array.isArray(data.messages)){skillsExpandSet=new Set,skillsExpandSet.add(data.messages);for(const msg of data.messages){if(!msg||"object"!=typeof msg)continue;const content2=msg.content;if("string"==typeof content2)isSkillsReminder(content2)&&skillsExpandSet.add(msg);else if(Array.isArray(content2)){let hasMatch=!1;for(const block of content2)block&&"text"===block.type&&isSkillsReminder(block.text)&&(skillsExpandSet.add(block),hasMatch=!0);hasMatch&&(skillsExpandSet.add(msg),skillsExpandSet.add(content2))}}}const filterExpandSet=claudeMdExpandSet||skillsExpandSet;if("Preflight"===reqType){const expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return Array.isArray(data.messages)&&collectAll(data.messages),Array.isArray(data.system)&&data.system.length>=3&&collectAll(data.system[2]),(level,value,field)=>level<2||(!!expandRefs.has(value)||(!(!filterExpandSet||!filterExpandSet.has(value))||1===level&&"system"===field))}if("MainAgent"===reqType&&Array.isArray(data.messages)&&1===data.messages.length){const msg=data.messages[0],contentArr=msg&&Array.isArray(msg.content)?msg.content:null,lastContent=contentArr&&contentArr.length>0?contentArr[contentArr.length-1]:null,expandRefs=new Set,collectAll=obj=>{obj&&"object"==typeof obj&&(expandRefs.add(obj),Array.isArray(obj)?obj.forEach(collectAll):Object.values(obj).forEach(collectAll))};return lastContent&&collectAll(lastContent),expandRefs.add(data.messages),msg&&"object"==typeof msg&&expandRefs.add(msg),contentArr&&expandRefs.add(contentArr),(level,value,field)=>level<2||(!!expandRefs.has(value)||!(!filterExpandSet||!filterExpandSet.has(value)))}return filterExpandSet?(level,value,field)=>level<2||!!filterExpandSet.has(value):void 0}renderBody(data,type){const{bodyViewMode:bodyViewMode}=this.state;if(null==data)return jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.noBody")});if("string"==typeof data&&data.includes("Streaming Response"))return jsxRuntimeExports.jsx("div",{className:styles$2_streamingBox,children:jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.streamingResponse")})});const clean="object"==typeof data?stripPrivateKeys(data):data,isJsonMode="json"===bodyViewMode[type],expandNode=this.getRequestExpandNode(clean,type);return jsxRuntimeExports.jsx("div",{children:isJsonMode?jsxRuntimeExports.jsx(JsonViewer,{data:clean,defaultExpand:"response"===type?"all":"root",expandNode:expandNode}):jsxRuntimeExports.jsx("pre",{className:styles$2_rawTextPre,children:"string"==typeof clean?clean:JSON.stringify(clean,null,2)})})}getPrevMainAgentRequest(){const{requests:requests,selectedIndex:selectedIndex}=this.props;if(!requests||null==selectedIndex)return null;for(let i=selectedIndex-1;i>=0;i--)if(isMainAgent(requests[i])){const r=requests[i];return r._slimmed?restoreSlimmedEntry(r,this.props.allRequests||requests):r}return null}computeDiff(prev,curr){if(null==prev||null==curr)return null;if("object"!=typeof prev||"object"!=typeof curr)return null;const result={},allKeys=new Set([...Object.keys(prev),...Object.keys(curr)]);for(const key of allKeys)if(!key.startsWith("_"))if(key in prev){if(!(key in curr))continue;JSON.stringify(prev[key])!==JSON.stringify(curr[key])&&("messages"===key&&Array.isArray(prev[key])&&Array.isArray(curr[key])&&curr[key].length>prev[key].length?result[key]=curr[key].slice(prev[key].length):result[key]=curr[key])}else result[key]=curr[key];return Object.keys(result).length?result:null}render(){var _a,_b,_c;let request=this.getCurrentRequest();const{currentTab:currentTab,onTabChange:onTabChange}=this.props;if(!request)return jsxRuntimeExports.jsx("div",{className:styles$2_emptyState,children:jsxRuntimeExports.jsx(Empty,{description:"选择一个请求查看详情"})});const time2=new Date(request.timestamp).toLocaleString("zh-CN"),statusOk2=request.response&&request.response.status<400;let diffBlock=null;if(isMainAgent(request)){const prevRequest=this.getPrevMainAgentRequest();if(prevRequest){if(JSON.stringify(request.body).length<JSON.stringify(prevRequest.body).length)diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$2_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$2_diffIcon}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$2_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(Text,{type:"secondary",children:t("ui.diffSessionChanged")})]});else{const diffResult=stripPrivateKeys(this.computeDiff(prevRequest.body,request.body));diffResult&&(this._lastDiffResult=diffResult,diffBlock=jsxRuntimeExports.jsxs("div",{className:styles$2_diffSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_diffHeaderRow,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_diffToggle,onClick:()=>this.setState(prev=>({diffExpanded:!prev.diffExpanded})),children:["Body Diff JSON ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyDiffJSON"})," ",this.state.diffExpanded?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$2_diffIcon}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$2_diffIcon})]}),this.state.diffExpanded&&jsxRuntimeExports.jsxs(Space,{size:"small",className:styles$2_diffSpaceRight,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(RefIcon$b,{}):jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:()=>this.toggleBodyViewMode("diff"),children:"json"===this.state.bodyViewMode.diff?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),onClick:()=>this.copyBody("diff"),children:t("ui.copy")})]})]}),this.state.diffExpanded&&jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:"json"===this.state.bodyViewMode.diff?jsxRuntimeExports.jsx(JsonViewer,{data:diffResult,defaultExpand:"all"}):jsxRuntimeExports.jsx("pre",{className:styles$2_rawTextPre,children:JSON.stringify(diffResult,null,2)})})]}))}}}const hasClaudeMd=hasClaudeMdReminder(request.body),hasSkills=hasSkillsReminder(request.body),tabItems=[{key:"request",label:"Request",children:jsxRuntimeExports.jsxs("div",{className:styles$2_tabContent,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_diffToggle,onClick:()=>this.setState(prev=>({requestHeadersExpanded:!prev.requestHeadersExpanded})),children:["Headers ",this.state.requestHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$2_diffIcon}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$2_diffIcon})]}),this.state.requestHeadersExpanded&&this.renderHeaders(request.headers)]}),diffBlock,jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$2_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"BodyFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[(hasClaudeMd||hasSkills)&&jsxRuntimeExports.jsxs("span",{className:styles$2_reminderFilterWrapper,children:[jsxRuntimeExports.jsx("span",{className:styles$2_reminderLabel,children:"system-reminder:"}),jsxRuntimeExports.jsx(Select,{size:"small",className:styles$2_reminderSelect,placeholder:"filter",value:this.state.reminderFilters||void 0,onChange:val=>this.setState({reminderFilters:val||null}),options:[{label:"CLAUDE.md",value:"claudeMd",disabled:!hasClaudeMd},{label:"Skills",value:"skills",disabled:!hasSkills}],popupMatchSelectWidth:!1,allowClear:!0})]}),jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.request?jsxRuntimeExports.jsx(RefIcon$b,{}):jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:()=>this.toggleBodyViewMode("request"),children:"json"===this.state.bodyViewMode.request?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),onClick:()=>this.copyBody("request"),children:t("ui.copy")})]})]}),this.renderBody(request.body,"request")]})]})},{key:"response",label:"Response",children:jsxRuntimeExports.jsx("div",{className:styles$2_tabContent,children:request.response?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$2_diffSection,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_diffToggle,onClick:()=>this.setState(prev=>({responseHeadersExpanded:!prev.responseHeadersExpanded})),children:["Headers ",this.state.responseHeadersExpanded?jsxRuntimeExports.jsx(RefIcon$d,{className:styles$2_diffIcon}):jsxRuntimeExports.jsx(RefIcon$e,{className:styles$2_diffIcon})]}),this.state.responseHeadersExpanded&&this.renderHeaders(request.response.headers)]}),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$2_bodyHeader,children:[jsxRuntimeExports.jsxs(Text,{strong:!0,className:styles$2_bodyLabel,children:["Body",jsxRuntimeExports.jsx(ConceptHelp,{doc:"ResponseFields"})]}),jsxRuntimeExports.jsxs(Space,{size:"small",children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:"json"===this.state.bodyViewMode.response?jsxRuntimeExports.jsx(RefIcon$b,{}):jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:()=>this.toggleBodyViewMode("response"),children:"json"===this.state.bodyViewMode.response?"Text":"JSON"}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),onClick:()=>this.copyBody("response"),children:t("ui.copy")})]})]}),this.renderBody(request.response.body,"response")]})]}):jsxRuntimeExports.jsx(Empty,{description:t("ui.responseNotCaptured")})})},{key:"kv-cache-text",label:jsxRuntimeExports.jsxs("span",{children:["KV-Cache-Text ",jsxRuntimeExports.jsx(ConceptHelp,{doc:"KVCacheContent"})]}),children:jsxRuntimeExports.jsx("div",{className:`${styles$2_tabContent} ${styles$2_cacheTabContent}`,children:(()=>{const cached=extractCachedContent([request]),reqKey=request.timestamp+"|"+request.url;if(cached&&(cached.cacheCreateTokens>0||cached.cacheReadTokens>0)&&(this._lastCachedTokensKey=reqKey,this._lastCachedTokens={cacheCreateTokens:cached.cacheCreateTokens,cacheReadTokens:cached.cacheReadTokens}),!cached||0===cached.system.length&&0===cached.messages.length&&0===cached.tools.length)return jsxRuntimeExports.jsx(Empty,{description:t("ui.noCachedContent"),image:Empty.PRESENTED_IMAGE_SIMPLE});const userPrompts=cached.messages.map((text,i)=>({text:text,msgIdx:i})).filter(({text:text})=>text.startsWith("[user]")).map(({text:text,msgIdx:msgIdx})=>{const raw=text.replace(/^\[user\]\s*/,"").trim();if(!raw||isSystemText(raw))return{cleaned:"",msgIdx:msgIdx};return{cleaned:AppHeader.parseSegments(raw).filter(s=>"text"===s.type).map(s=>s.content.trim()).filter(s=>s&&!isSystemText(s)).join(" ").trim(),msgIdx:msgIdx}}).filter(({cleaned:cleaned})=>!!cleaned&&!/Implement the following plan:/i.test(cleaned)),userPromptNavList=userPrompts.length>0?jsxRuntimeExports.jsx("div",{className:styles$2_userPromptList,children:userPrompts.map(({cleaned:cleaned,msgIdx:msgIdx})=>jsxRuntimeExports.jsx("div",{className:styles$2_userPromptItem,onMouseEnter:e=>{e.currentTarget.style.background="var(--color-primary-bg-lighter)",e.currentTarget.style.color="var(--text-white)"},onMouseLeave:e=>{e.currentTarget.style.background="",e.currentTarget.style.color="var(--text-secondary)"},onClick:()=>this.scrollToCacheMsg(msgIdx),children:cleaned},msgIdx))}):null;return jsxRuntimeExports.jsxs("div",{className:styles$2_cacheContent,children:[(()=>{const displayTokens=cached.cacheCreateTokens>0||cached.cacheReadTokens>0?cached:this._lastCachedTokensKey===reqKey?this._lastCachedTokens:null;return displayTokens||userPromptNavList?jsxRuntimeExports.jsxs("div",{className:styles$2_cacheTokenBar,children:[displayTokens&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[t("ui.tokens"),": ",jsxRuntimeExports.jsxs("span",{className:styles$2_cacheTokenWrite,children:["write ",formatTokenCount(displayTokens.cacheCreateTokens)]})," / ",jsxRuntimeExports.jsxs("span",{className:styles$2_cacheTokenRead,children:["read ",formatTokenCount(displayTokens.cacheReadTokens)]}),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.copyAllCacheText"),children:jsxRuntimeExports.jsx(RefIcon$6,{className:styles$2_cacheCopyIcon,onClick:()=>{navigator.clipboard.writeText((()=>{const parts=[];if(cached.tools.length>0){const indented=cached.tools.map(xml=>xml.split("\n").map(l=>l?" "+l:l).join("\n")).join("\n");parts.push(`<tools>\n${indented}\n</tools>`)}return cached.system.length>0&&parts.push(`<system-reminder>\n${cached.system.join("\n\n")}\n</system-reminder>`),cached.messages.length>0&&cached.messages.forEach(t2=>parts.push(t2)),parts.join("\n\n")})()).then(()=>{staticMethods.success(t("ui.copied"))}).catch(()=>{})}})})]}),userPromptNavList&&jsxRuntimeExports.jsx(Popover,{content:userPromptNavList,trigger:"hover",placement:"left",children:jsxRuntimeExports.jsx("span",{className:styles$2_userPromptNavBtn,children:t("ui.userPromptNav")})})]}):null})(),jsxRuntimeExports.jsxs("div",{className:styles$2_cacheScrollArea,ref:el=>{this._cacheScrollEl=el},children:[cached.tools.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,tools:!prev.cacheCollapsed.tools}})),children:[jsxRuntimeExports.jsx("span",{className:styles$2_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.tools?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.tools")," (",cached.tools.length,")"]}),!this.state.cacheCollapsed.tools&&cached.tools.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$2_cachePre,children:text},i))]}),cached.system.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,system:!prev.cacheCollapsed.system}})),children:[jsxRuntimeExports.jsx("span",{className:styles$2_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.system?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.systemPrompt")," (",cached.system.length,")"]}),!this.state.cacheCollapsed.system&&cached.system.map((text,i)=>jsxRuntimeExports.jsx("pre",{className:styles$2_cachePreSystem,children:text},i))]}),cached.messages.length>0&&jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionBlock,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_cacheSectionHeader,onClick:()=>this.setState(prev=>({cacheCollapsed:{...prev.cacheCollapsed,messages:!prev.cacheCollapsed.messages}})),children:[jsxRuntimeExports.jsx("span",{className:styles$2_cacheCollapseArrow,style:{transform:this.state.cacheCollapsed.messages?"rotate(-90deg)":"rotate(0deg)"},children:"▼"}),t("ui.messages")," (",cached.messages.length,")"]}),!this.state.cacheCollapsed.messages&&cached.messages.map((text,i)=>{const isHl=i===this.state.cacheHighlightIdx,hlStyle=isHl?this.state.cacheHighlightFading?{boxShadow:"0 0 10px rgba(22,104,220,0)",transition:"box-shadow 3s ease-out",position:"relative"}:{boxShadow:"0 0 10px rgba(22,104,220,0.6)",transition:"box-shadow 0.2s ease-in",position:"relative"}:{};return jsxRuntimeExports.jsxs("pre",{"data-msg-idx":i,className:styles$2_cachePre,style:hlStyle,children:[isHl&&jsxRuntimeExports.jsx("svg",{className:styles$2_cacheHighlightSvg,style:{opacity:this.state.cacheHighlightFading?0:1,transition:this.state.cacheHighlightFading?"opacity 3s ease-out":void 0},preserveAspectRatio:"none",children:jsxRuntimeExports.jsx("rect",{x:"0.5",y:"0.5",width:"calc(100% - 1px)",height:"calc(100% - 1px)",rx:"4",ry:"4",fill:"none",stroke:"#1668dc",strokeWidth:"1",strokeDasharray:"6 4",children:jsxRuntimeExports.jsx("animate",{attributeName:"stroke-dashoffset",from:"0",to:"-100",dur:"4s",repeatCount:"indefinite"})})}),text]},i)})]})]})]})})()})},{key:"context",label:"Context",children:jsxRuntimeExports.jsx("div",{className:`${styles$2_tabContent} ${styles$2_cacheTabContent}`,children:jsxRuntimeExports.jsx(ContextTab,{body:request.body,response:null==(_a=request.response)?void 0:_a.body})})}],usage=null==(_c=null==(_b=request.response)?void 0:_b.body)?void 0:_c.usage,tokenStats=usage?(()=>{const input=usage.input_tokens||0,output=usage.output_tokens||0,cacheCreate=usage.cache_creation_input_tokens||0,cacheRead=usage.cache_read_input_tokens||0,totalInput=input+cacheCreate+cacheRead;return{input:input,output:output,cacheCreate:cacheCreate,cacheRead:cacheRead,hitRate:totalInput>0?(cacheRead/totalInput*100).toFixed(1):"0.0"}})():null;return jsxRuntimeExports.jsxs("div",{className:styles$2_container,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_urlSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_urlLeft,children:[jsxRuntimeExports.jsx(Paragraph,{className:styles$2_urlText,ellipsis:{rows:2,expandable:!0},children:request.proxyUrl||request.url}),jsxRuntimeExports.jsxs(Space,{size:"small",wrap:!0,children:[jsxRuntimeExports.jsx(Tag,{color:"POST"===request.method?"blue":"green",children:request.method}),jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$2_metaText,children:["🕐 ",time2]}),request.duration&&jsxRuntimeExports.jsxs(Text,{type:"secondary",className:styles$2_metaText,children:["⏱️ ",request.duration,"ms"]}),request.response&&jsxRuntimeExports.jsxs(Tag,{color:statusOk2?"success":"error",children:["HTTP ",request.response.status]})]})]}),tokenStats&&jsxRuntimeExports.jsx("div",{className:styles$2_tokenStatsBox,children:jsxRuntimeExports.jsxs("div",{className:styles$2_tokenGrid,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_tokenRows,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_tokenRow,children:[jsxRuntimeExports.jsx("span",{className:styles$2_tokenLabel,children:"Token"}),jsxRuntimeExports.jsxs("span",{className:styles$2_tokenTd,children:["input: ",formatTokenCount(tokenStats.input)]}),jsxRuntimeExports.jsxs("span",{className:styles$2_tokenTd,children:["output: ",formatTokenCount(tokenStats.output)]})]}),jsxRuntimeExports.jsxs("div",{className:`${styles$2_tokenRow} ${styles$2_tokenRowBorder}`,children:[jsxRuntimeExports.jsx("span",{className:styles$2_tokenLabel,children:"Cache"}),jsxRuntimeExports.jsxs("span",{className:styles$2_tokenTd,children:["create: ",formatTokenCount(tokenStats.cacheCreate)]}),jsxRuntimeExports.jsxs("span",{className:styles$2_tokenTd,children:["read: ",formatTokenCount(tokenStats.cacheRead)]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_tokenHitRate,children:[jsxRuntimeExports.jsxs("div",{children:[tokenStats.hitRate,"%"]}),jsxRuntimeExports.jsx("div",{className:styles$2_tokenHitRateLabel,children:t("ui.hitRate")})]})]})})]}),jsxRuntimeExports.jsx(Tabs,{activeKey:currentTab,onChange:onTabChange,items:tabItems,size:"small"})]})}}const styles$1_resizer="_resizer_pzn4b_1";class PanelResizer extends React__default.Component{constructor(props){super(props),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this)}handleMouseDown(e){e.preventDefault(),document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}handleMouseMove(e){this.props.onResize&&this.props.onResize(e.clientX)}handleMouseUp(){document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}componentWillUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp)}render(){return jsxRuntimeExports.jsx("div",{onMouseDown:this.handleMouseDown,className:styles$1_resizer})}}const styles_flag="_flag_1q4ri_3",styles_popover="_popover_1q4ri_27",styles_meta="_meta_1q4ri_33";class CountryFlag extends React__default.Component{constructor(props){super(props),this.state={flag:null,info:null,popoverOpen:!1},this._aborted=!1}componentDidMount(){fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(5e3)}).then(r=>r.json()).then(data=>{var code;this._aborted||data&&data.country&&this.setState({flag:(code=data.country,code&&2===code.length?code.toUpperCase().split("").map(c=>String.fromCodePoint(127462+c.charCodeAt(0)-65)).join(""):"🇨🇳"),info:data})}).catch(()=>{})}componentWillUnmount(){this._aborted=!0}render(){const{flag:flag2,info:info}=this.state;if(!flag2||"CN"===(null==info?void 0:info.country))return null;const content2=jsxRuntimeExports.jsxs("div",{className:styles_popover,onClick:e=>e.stopPropagation(),children:[jsxRuntimeExports.jsxs("div",{children:[flag2," ",info.country]}),info.region&&jsxRuntimeExports.jsx("div",{children:info.region}),info.city&&jsxRuntimeExports.jsx("div",{children:info.city}),info.org&&jsxRuntimeExports.jsx("div",{className:styles_meta,children:info.org}),info.ip&&jsxRuntimeExports.jsx("div",{className:styles_meta,children:info.ip})]});return jsxRuntimeExports.jsx(Popover,{content:content2,trigger:["click"],open:this.state.popoverOpen,onOpenChange:o=>this.setState({popoverOpen:o}),placement:"topLeft",overlayInnerStyle:{background:"var(--bg-elevated)",border:"1px solid var(--border-hover)",borderRadius:8,padding:"8px 12px"},children:jsxRuntimeExports.jsx("button",{type:"button",className:styles_flag,"aria-label":`${info.country}${info.region?" · "+info.region:""}`,children:flag2})})}}class App extends AppBase{constructor(props){super(props),__publicField(this,"setContextBarSlot",el=>{el&&!el.isConnected||el!==this.state.contextBarSlot&&this.setState({contextBarSlot:el})}),__publicField(this,"handleViewRequest",index=>{this.setState({viewMode:"raw",selectedIndex:index,scrollCenter:!0})}),__publicField(this,"handleViewInChat",()=>{this.setState(prev=>{const selectedReq=(prev.showAll?prev.requests:filterRelevantRequests(prev.requests))[prev.selectedIndex];if(!selectedReq)return null;let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx))}else targetTs=selectedReq.timestamp;targetTs||staticMethods.info(t("ui.cannotMap"))}return{viewMode:"chat",chatScrollToTs:targetTs}})}),__publicField(this,"handleToggleViewMode",()=>{this.setState(prev=>{const newMode="raw"===prev.viewMode?"chat":"raw";if("raw"===newMode){if(null===prev.selectedIndex){const filtered2=prev.showAll?prev.requests:filterRelevantRequests(prev.requests);return{viewMode:newMode,selectedIndex:filtered2.length>0?filtered2.length-1:null,scrollCenter:!0}}return{viewMode:newMode,scrollCenter:!0}}const filtered=prev.showAll?prev.requests:filterRelevantRequests(prev.requests),selectedReq=null!=prev.selectedIndex?filtered[prev.selectedIndex]:null;if(selectedReq){let targetTs=null;if(isMainAgent(selectedReq)&&selectedReq.timestamp)targetTs=selectedReq.timestamp;else{const cls=classifyRequest(selectedReq);if("SubAgent"!==cls.type&&"Teammate"!==cls.type||!selectedReq.timestamp){const idx=prev.requests.indexOf(selectedReq);idx>=0&&(targetTs=findPrevMainAgentTimestamp(prev.requests,idx)),targetTs||staticMethods.info(t("ui.cannotMap"))}else targetTs=selectedReq.timestamp}return{viewMode:newMode,chatScrollToTs:targetTs}}return{viewMode:newMode,chatScrollToTs:null}},()=>{"chat"===this.state.viewMode&&this.state.terminalVisible&&this.state.cliMode&&!isMobile&&requestAnimationFrame(()=>{const ta=document.querySelector(".xterm-helper-textarea");ta&&ta.focus()})})}),__publicField(this,"handleTabChange",key=>{this.setState({currentTab:key})}),__publicField(this,"handleCacheHighlightDone",()=>{this.setState({pendingCacheHighlight:null})}),__publicField(this,"handleNavigateCacheMsg",msgIdx=>{const filteredRequests=this.state.showAll?this.state.requests:filterRelevantRequests(this.state.requests);let targetIdx=-1;for(let i=filteredRequests.length-1;i>=0;i--)if(isMainAgent(filteredRequests[i])){targetIdx=i;break}targetIdx<0||this.setState({selectedIndex:targetIdx,scrollCenter:!0,currentTab:"kv-cache-text",pendingCacheHighlight:{msgIdx:msgIdx,key:Date.now()}})}),__publicField(this,"handleResize",clientX=>{const container2=this.mainContainerRef.current;if(!container2)return;const newWidth=clientX-container2.getBoundingClientRect().left;newWidth>=250&&newWidth<=800&&this.setState({leftPanelWidth:newWidth})}),__publicField(this,"handleLoadLocalJsonlFile",()=>{const input=document.createElement("input");input.type="file",input.accept=".jsonl",input.multiple=!0,input.onchange=e=>{const files=Array.from(e.target.files);if(0===files.length)return;if(files.reduce((s,f)=>s+f.size,0)>524288e3)return void staticMethods.error(t("ui.fileTooLarge"));this.setState({fileLoading:!0,fileLoadingCount:0});let readCount=0;const allEntries=[],fileNames=[];files.forEach(file=>{const reader=new FileReader;reader.onload=ev=>{try{const entries=ev.target.result.split("\n---\n").filter(line=>line.trim()).map(entry=>{try{return JSON.parse(entry)}catch{return null}}).filter(Boolean);allEntries.push(...entries),fileNames.push(file.name)}catch{}readCount++,readCount===files.length&&this._finishLocalLoad(allEntries,fileNames)},reader.readAsText(file)})},input.click()}),Object.assign(this.state,{leftPanelWidth:380,terminalVisible:!0,currentTab:"context",pendingCacheHighlight:null,contextBarSlot:null}),this.appHeaderRef=React__default.createRef(),this._getTokenStatsContent=()=>{var _a,_b;return(null==(_b=null==(_a=this.appHeaderRef.current)?void 0:_a.renderTokenStats)?void 0:_b.call(_a))??null}}componentDidMount(){super.componentDidMount(),this._mqlNarrow=window.matchMedia("(max-width: 600px)"),this._modeSwitchDialog=null,this._onNarrowChange=e=>{e.matches?this._modeSwitchDialog=Modal.confirm({title:t("ui.modeSwitchTitle"),content:t("ui.modeSwitchToSidebar"),okText:t("ui.ok"),onOk:()=>{this._modeSwitchDialog=null,setViewMode("pad")},onCancel:()=>{this._modeSwitchDialog=null}}):this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null)},this._mqlNarrow.addEventListener("change",this._onNarrowChange)}componentWillUnmount(){this._mqlNarrow&&this._mqlNarrow.removeEventListener("change",this._onNarrowChange),this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null),super.componentWillUnmount()}render(){const{filteredRequests:filteredRequests,selectedRequest:selectedRequest,fileLoading:fileLoading,fileLoadingCount:fileLoadingCount,mainAgentSessions:mainAgentSessions,viewMode:viewMode}=this.renderPrepare(),{selectedIndex:selectedIndex,leftPanelWidth:leftPanelWidth,currentTab:currentTab}=this.state,prefs=this._prefValues();if(this.state.workspaceMode)return this.renderWorkspaceMode();const wsOpen=!this._isLocalLog&&!this.state.sdkMode;return jsxRuntimeExports.jsx(ConfigProvider,{theme:this.themeConfig,children:jsxRuntimeExports.jsx(TerminalWsProvider,{open:wsOpen,children:jsxRuntimeExports.jsxs(ApprovalModal,{enabled:this.state.approvalPrefs.modalEnabled,soundEnabled:this.state.approvalPrefs.soundEnabled,voicePackPrefs:this.state.approvalPrefs.voicePack,approvalGlobal:this.state.approvalGlobal,dismissedIds:this.state.approvalDismissedIds,onDismiss:this.handleApprovalDismiss,onJumpTab:this.handleApprovalJumpTab,otherTabs:this.state.approvalOtherTabs,children:[fileLoading&&jsxRuntimeExports.jsx("div",{className:styles$a.loadingOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$a.loadingText,children:["Loading...(",fileLoadingCount,")"]})}),this.state.isDragging&&jsxRuntimeExports.jsx("div",{className:styles$a.dragOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$a.dragOverlayContent,children:[jsxRuntimeExports.jsx(RefIcon$f,{className:styles$a.dragIcon}),jsxRuntimeExports.jsx("p",{children:t("ui.dragDropHint")})]})}),jsxRuntimeExports.jsxs(Layout,{className:styles$a.layout,ref:this._layoutRef,onDragOver:this._onDragOver,onDragLeave:this._onDragLeave,onDrop:this._onDrop,children:[jsxRuntimeExports.jsx(Layout.Header,{className:styles$a.header,children:jsxRuntimeExports.jsx(AppHeader,{ref:this.appHeaderRef,requestCount:filteredRequests.length,requests:filteredRequests,viewMode:viewMode,cacheExpireAt:this.state.cacheExpireAt,cacheType:this.state.cacheType,onToggleViewMode:this.handleToggleViewMode,onLangChange:this.handleLangChange,onImportLocalLogs:this.handleImportLocalLogs,isLocalLog:!!this._isLocalLog,localLogFile:this._localLogFile,projectName:this.state.projectName,filterIrrelevant:!this.state.showAll,onFilterIrrelevantChange:this.handleFilterIrrelevantChange,logDir:this.state.logDir,onLogDirChange:this.handleLogDirChange,cliMode:this.state.cliMode,sdkMode:this.state.sdkMode,terminalVisible:!this.state.sdkMode&&this.state.terminalVisible,onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),onReturnToWorkspaces:this.state.cliMode?this.handleReturnToWorkspaces:null,contextWindow:this.state.contextWindow,contextBarOptimistic:this.state.contextBarOptimistic,contextBarLocked:this.state.contextBarLocked,onNavigateCacheMsg:this.handleNavigateCacheMsg,serverCachedContent:this.state.serverCachedContent||this._lastKvCacheContent,resumeAutoChoice:this.state.resumeAutoChoice,onResumeAutoChoiceToggle:this.handleResumeAutoChoiceToggle,onResumeAutoChoiceChange:this.handleResumeAutoChoiceChange,themeColor:this.state.themeColor,onThemeColorChange:this.handleThemeColorChange,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,approvalPrefs:this.state.approvalPrefs,onApprovalPrefsChange:this.handleApprovalPrefsChange,onVoicePackChange:this.handleVoicePackChange,onApprovalSoundToggle:this.handleApprovalSoundToggle,approvalGlobal:this.state.approvalGlobal,approvalDismissedIds:this.state.approvalDismissedIds,approvalOwnPending:this.state.approvalOwnPending,onApprovalReopen:this.handleApprovalReopen,proxyProfiles:this.state.proxyProfiles,activeProxyId:this.state.activeProxyId,defaultConfig:this.state.defaultConfig,onProxyProfileChange:this.handleProxyProfileChange,contextBarSlot:this.state.contextBarSlot,claudeProjectModel:this.state.claudeProjectModel})}),this.state.claudeMissing&&jsxRuntimeExports.jsx(Alert,{type:"warning",showIcon:!0,banner:!0,message:t("ui.claudeMissing.title"),description:jsxRuntimeExports.jsxs("span",{children:[t("ui.claudeMissing.desc"),jsxRuntimeExports.jsx("br",{}),jsxRuntimeExports.jsx("code",{style:{background:"var(--bg-code)",padding:"2px 6px",borderRadius:3},children:"npm install -g @anthropic-ai/claude-code"})," ",jsxRuntimeExports.jsx("span",{style:{color:"var(--text-muted)",margin:"0 4px"},children:t("ui.claudeMissing.or")})," ",jsxRuntimeExports.jsx("a",{href:"https://claude.ai/download",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-primary-light)"},children:t("ui.claudeMissing.native")})]})}),jsxRuntimeExports.jsxs(Layout.Content,{className:styles$a.content,children:["raw"===viewMode&&(0===filteredRequests.length?jsxRuntimeExports.jsx("div",{className:styles$a.guideContainer,children:jsxRuntimeExports.jsxs("div",{className:styles$a.guideContent,children:[jsxRuntimeExports.jsx("h2",{className:styles$a.guideTitle,children:t("ui.guide.title")}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$a.guideStepNum,children:"1"}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$a.guideText,children:t("ui.guide.step1")}),jsxRuntimeExports.jsx("code",{className:styles$a.guideCode,children:t("ui.guide.exampleQuestion")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$a.guideStepNum,children:"2"}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$a.guideText,children:t("ui.guide.step2")}),jsxRuntimeExports.jsx("code",{className:styles$a.guideCode,children:t("ui.guide.troubleshootCmd")})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStep,children:[jsxRuntimeExports.jsx("div",{className:styles$a.guideStepNum,children:"3"}),jsxRuntimeExports.jsxs("div",{className:styles$a.guideStepBody,children:[jsxRuntimeExports.jsx("p",{className:styles$a.guideText,children:t("ui.guide.step3")}),jsxRuntimeExports.jsx("code",{className:styles$a.guideCode,children:"npm install -g @anthropic-ai/claude-code"})]})]})]})}):jsxRuntimeExports.jsxs("div",{ref:this.mainContainerRef,className:styles$a.mainContainer,children:[jsxRuntimeExports.jsxs("div",{className:styles$a.leftPanel,style:{width:leftPanelWidth},children:[jsxRuntimeExports.jsxs("div",{className:styles$a.leftPanelHeader,children:[jsxRuntimeExports.jsx("span",{children:t("ui.requestList")}),jsxRuntimeExports.jsx("span",{className:styles$a.leftPanelCount,children:t("ui.totalRequests",{count:filteredRequests.length})})]}),jsxRuntimeExports.jsx("div",{className:styles$a.leftPanelBody,children:jsxRuntimeExports.jsx(RequestList,{requests:filteredRequests,selectedIndex:selectedIndex,scrollCenter:this.state.scrollCenter,onSelect:this.handleSelectRequest,onScrollDone:this.handleScrollDone,cacheLossMap:this._cacheLossMap})})]}),jsxRuntimeExports.jsx(PanelResizer,{onResize:this.handleResize}),jsxRuntimeExports.jsx("div",{className:styles$a.rightPanel,children:jsxRuntimeExports.jsx(DetailPanel,{request:selectedRequest,requests:filteredRequests,allRequests:this.state.requests,selectedIndex:selectedIndex,currentTab:currentTab,onTabChange:this.handleTabChange,onViewInChat:this.handleViewInChat,expandDiff:prefs.expandDiff,pendingCacheHighlight:this.state.pendingCacheHighlight,onCacheHighlightDone:this.handleCacheHighlightDone})})]})),jsxRuntimeExports.jsx("div",{className:styles$a.chatViewWrapper,style:{display:"chat"===viewMode?"flex":"none"},children:jsxRuntimeExports.jsx(ChatView,{...this._settingsProps(),getTokenStatsContent:this._getTokenStatsContent,requests:filteredRequests,mainAgentSessions:mainAgentSessions,streamingLatest:this.state.streamingLatest,userProfile:this.state.userProfile,collapseToolResults:prefs.collapseToolResults,expandThinking:prefs.expandThinking,showFullToolContent:prefs.showFullToolContent,showThinkingSummaries:prefs.showThinkingSummaries,onViewRequest:this.handleViewRequest,scrollToTimestamp:this.state.chatScrollToTs,onScrollTsDone:this.handleScrollTsDone,cliMode:!this._isLocalLog&&this.state.cliMode,sdkMode:!this._isLocalLog&&this.state.sdkMode,terminalVisible:!this._isLocalLog&&(!this.state.sdkMode&&this.state.terminalVisible),onToggleTerminal:()=>this.setState(prev=>({terminalVisible:!prev.terminalVisible})),pendingUploadPaths:this.state.pendingUploadPaths,onUploadPathsConsumed:this.handleUploadPathsConsumed,fileLoading:this.state.fileLoading,isStreaming:this.state.isStreaming,hasMoreHistory:this.state.hasMoreHistory,loadingMore:this.state.loadingMore,onLoadMoreHistory:()=>this.loadMoreHistory(),loadingSessionId:this.state.loadingSessionId,onLoadSession:sid=>this.loadSession(sid),lang:this.state.lang,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,onClearContextOptimistic:this.handleClearContextOptimistic,onUserMessageSent:this.handleUserMessageSent,onPendingAsk:this.handleApprovalAsk,onPendingPtyPlan:this.handleApprovalPtyPlan,ownTabId:this.state.ownTabId,projectName:this.state.projectName,setContextBarSlot:this.setContextBarSlot})})]}),jsxRuntimeExports.jsxs("div",{className:styles$a.footer,children:[jsxRuntimeExports.jsx(CountryFlag,{}),jsxRuntimeExports.jsxs("div",{className:styles$a.footerRight,children:[jsxRuntimeExports.jsxs("a",{href:"https://github.com/weiesky/cc-viewer",target:"_blank",rel:"noopener noreferrer",className:styles$a.footerLink,children:[jsxRuntimeExports.jsx("svg",{className:styles$a.footerIcon,viewBox:"0 0 16 16",fill:"currentColor",children:jsxRuntimeExports.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})}),"GitHub",null!=this.state.githubStars?` ★ ${this.state.githubStars}`:""]}),jsxRuntimeExports.jsx("span",{className:styles$a.footerSep,children:"|"}),jsxRuntimeExports.jsxs("span",{className:styles$a.footerVersion,onClick:()=>this.setState({updateModalVisible:!0}),style:{cursor:"pointer"},children:["v","1.6.276"]}),this.state.updateInfo&&jsxRuntimeExports.jsx(Tooltip,{title:t("ui.update.majorAvailable",{version:this.state.updateInfo.version}),placement:"top",children:jsxRuntimeExports.jsx("span",{className:styles$a.newBadgeText,onClick:()=>this.setState({updateModalVisible:!0}),children:t("ui.update.newBadge")})})]})]})]}),jsxRuntimeExports.jsx(Modal,{title:t("ui.update.title"),open:this.state.updateModalVisible,onCancel:()=>this.setState({updateModalVisible:!1}),footer:null,width:480,children:jsxRuntimeExports.jsxs("div",{style:{lineHeight:1.8},children:[jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.current"),":"]})," v","1.6.276"]}),this.state.updateInfo&&jsxRuntimeExports.jsxs("p",{children:[jsxRuntimeExports.jsxs("strong",{children:[t("ui.update.latest"),":"]})," v",this.state.updateInfo.version]}),jsxRuntimeExports.jsx("p",{style:{marginTop:12},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.npm")})}),jsxRuntimeExports.jsx("code",{style:{display:"block",background:"var(--bg-code)",padding:"8px 12px",borderRadius:6,fontSize:13},children:"npm update -g cc-viewer"}),isElectron&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("p",{style:{marginTop:16},children:jsxRuntimeExports.jsx("strong",{children:t("ui.update.electron")})}),jsxRuntimeExports.jsx("p",{style:{color:"var(--text-tertiary)",fontSize:13},children:t("ui.update.electronDesc")}),jsxRuntimeExports.jsxs("ol",{style:{color:"var(--text-tertiary)",fontSize:13,paddingLeft:20,margin:"6px 0"},children:[jsxRuntimeExports.jsx("li",{children:t("ui.update.step1")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step2")}),jsxRuntimeExports.jsx("li",{children:t("ui.update.step3")})]})]}),jsxRuntimeExports.jsx("div",{style:{marginTop:16,textAlign:"right"},children:jsxRuntimeExports.jsx(Button,{type:"primary",href:"https://github.com/weiesky/cc-viewer/releases",target:"_blank",rel:"noopener noreferrer",children:t("ui.update.goReleases")})})]})}),jsxRuntimeExports.jsx(Modal,{title:t("ui.resume.title"),open:this.state.resumeModalVisible,closable:!1,maskClosable:!1,keyboard:!1,footer:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:styles$a.resumeFooterRight,children:[jsxRuntimeExports.jsx(Button,{type:"primary",onClick:()=>this.handleResumeChoice("continue"),className:styles$a.btnMarginRight,children:t("ui.resume.continue")},"continue"),jsxRuntimeExports.jsx(Button,{onClick:()=>this.handleResumeChoice("new"),children:t("ui.resume.new")},"new")]}),jsxRuntimeExports.jsx("div",{className:styles$a.resumeFooterLeft,children:jsxRuntimeExports.jsx(Checkbox,{checked:this.state.resumeRememberChoice,onChange:e=>this.setState({resumeRememberChoice:e.target.checked}),className:styles$a.resumeCheckboxOpacity,children:jsxRuntimeExports.jsx("span",{className:styles$a.resumeCheckboxOpacity,children:t("ui.resume.remember")})})})]}),children:jsxRuntimeExports.jsx("p",{children:t("ui.resume.message",{file:this.state.resumeFileName})})}),jsxRuntimeExports.jsxs(Modal,{title:jsxRuntimeExports.jsxs("span",{className:styles$a.modalTitleInline,children:[jsxRuntimeExports.jsx(OpenFolderIcon,{apiEndpoint:apiUrl("/api/open-log-dir"),title:t("ui.openLogDir"),size:16}),t("ui.importLocalLogs")]}),open:this.state.importModalVisible,onCancel:this.handleCloseImportModal,footer:null,width:1e3,styles:{body:{overflow:"hidden"}},children:[jsxRuntimeExports.jsxs("div",{className:styles$a.modalActions,children:[jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$f,{}),onClick:this.handleLoadLocalJsonlFile,children:t("ui.loadLocalJsonl")}),jsxRuntimeExports.jsx(Button,{size:"small",type:this.state.selectedLogs.size>1&&![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip"))?"primary":"default",disabled:this.state.selectedLogs.size<2||[...this.state.selectedLogs].some(f=>f.endsWith(".jsonl.zip")),onClick:this.handleMergeLogs,className:styles$a.btnMarginLeft,children:t("ui.mergeLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$g,{}),disabled:![...this.state.selectedLogs].some(f=>f.endsWith(".jsonl")),onClick:this.handleArchiveLogs,className:styles$a.btnMarginLeft,children:t("ui.archiveLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",danger:!0,icon:jsxRuntimeExports.jsx(RefIcon$h,{}),disabled:0===this.state.selectedLogs.size,onClick:this.handleDeleteLogs,className:styles$a.btnMarginLeft,children:t("ui.deleteLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$i,{spin:this.state.refreshingStats}),loading:this.state.refreshingStats,onClick:this.handleRefreshStats,className:styles$a.btnMarginLeft,children:t("ui.refreshStats")})]}),this.state.localLogsLoading?jsxRuntimeExports.jsx("div",{className:styles$a.spinCenter,children:jsxRuntimeExports.jsx(Spin,{})}):(()=>{const currentLogs=this.state.localLogs[this.state.currentProject];return currentLogs&&0!==currentLogs.length?jsxRuntimeExports.jsx("div",{className:styles$a.logListContainer,children:this.renderLogTable(currentLogs,!1)}):jsxRuntimeExports.jsx("div",{className:styles$a.emptyCenter,children:t("ui.noLogs")})})()]})]})})})}}export{App as default};
|