@hsupu/copilot-api 0.8.1-beta.1 → 0.8.1-beta.2
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/dist/{dist-8vhX0s4a.mjs → dist-B3gFwWti.mjs} +2 -3
- package/dist/{dist-8vhX0s4a.mjs.map → dist-B3gFwWti.mjs.map} +1 -1
- package/dist/main.mjs +2158 -2401
- package/dist/main.mjs.map +1 -1
- package/package.json +48 -23
- package/ui/history-v3/dist/assets/BaseSelect-CttLMFCN.js +1 -0
- package/ui/history-v3/dist/assets/BaseSelect-N-W6HPTu.css +1 -0
- package/ui/history-v3/dist/assets/DashboardPage-BYXNxjXb.css +1 -0
- package/ui/history-v3/dist/assets/DashboardPage-CgXivoWS.js +1 -0
- package/ui/history-v3/dist/assets/DetailPanel-CGpPxDDa.css +1 -0
- package/ui/history-v3/dist/assets/DetailPanel-EOQma5fZ.js +3 -0
- package/ui/history-v3/dist/assets/HistoryPage-PA0Yh3n3.css +1 -0
- package/ui/history-v3/dist/assets/HistoryPage-rhEb_UZG.js +1 -0
- package/ui/history-v3/dist/assets/LogsPage-BuPou1cg.css +1 -0
- package/ui/history-v3/dist/assets/LogsPage-CNXQuqMj.js +1 -0
- package/ui/history-v3/dist/assets/ModelsPage-Bpi7Y9GS.js +1 -0
- package/ui/history-v3/dist/assets/ModelsPage-F2KTxq2i.css +1 -0
- package/ui/history-v3/dist/assets/ProgressBar-6xzx-ZSc.js +1 -0
- package/ui/history-v3/dist/assets/{ProgressBar-B_0VSeE9.css → ProgressBar-CtfiTXLy.css} +1 -1
- package/ui/history-v3/dist/assets/UsagePage-COyq-DOU.css +1 -0
- package/ui/history-v3/dist/assets/UsagePage-CZfgTYCP.js +1 -0
- package/ui/history-v3/dist/assets/VChip-9UyCCNyg.js +1 -0
- package/ui/history-v3/dist/assets/VChip-B_fbAfwz.css +1 -0
- package/ui/history-v3/dist/assets/VDashboardPage-DXtj4agW.js +1 -0
- package/ui/history-v3/dist/assets/VDashboardPage-axfQtTiR.css +1 -0
- package/ui/history-v3/dist/assets/VDivider-D8zdArq0.js +1 -0
- package/ui/history-v3/dist/assets/VDivider-DITF6qCr.css +1 -0
- package/ui/history-v3/dist/assets/VHistoryPage-Dj0qUmWz.js +1 -0
- package/ui/history-v3/dist/assets/VHistoryPage-DqpLWYXo.css +1 -0
- package/ui/history-v3/dist/assets/VList-Bf0AJT_N.css +1 -0
- package/ui/history-v3/dist/assets/VList-Ct6gdZ-F.js +1 -0
- package/ui/history-v3/dist/assets/VLogsPage-BOA_17HS.js +1 -0
- package/ui/history-v3/dist/assets/VLogsPage-Dr3my9y3.css +1 -0
- package/ui/history-v3/dist/assets/VModelsPage-Bkon7sFs.css +1 -0
- package/ui/history-v3/dist/assets/VModelsPage-D-IbiiwR.js +1 -0
- package/ui/history-v3/dist/assets/VSpacer-DfbUir7X.css +1 -0
- package/ui/history-v3/dist/assets/VSpacer-F4vloCsf.js +1 -0
- package/ui/history-v3/dist/assets/VTable-B4qROCQu.js +1 -0
- package/ui/history-v3/dist/assets/VTable-BTui1tPX.css +1 -0
- package/ui/history-v3/dist/assets/VTooltip-9iBP-JhF.js +1 -0
- package/ui/history-v3/dist/assets/VTooltip-C1DKovoh.css +1 -0
- package/ui/history-v3/dist/assets/VUsagePage-B8WkBKET.js +1 -0
- package/ui/history-v3/dist/assets/VUsagePage-Se7R-H-Y.css +1 -0
- package/ui/history-v3/dist/assets/index-B8CP-fZd.css +1 -0
- package/ui/history-v3/dist/assets/index-cupXJxSz.js +18 -0
- package/ui/history-v3/dist/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
- package/ui/history-v3/dist/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
- package/ui/history-v3/dist/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
- package/ui/history-v3/dist/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
- package/ui/history-v3/dist/assets/useInjectedHistoryStore-Dx7UlhLw.js +1 -0
- package/ui/history-v3/dist/assets/useLogs-Bz9naVOB.js +1 -0
- package/ui/history-v3/dist/assets/usePolling-CRd-nhvF.js +1 -0
- package/ui/history-v3/dist/assets/{vendor-BJ2Uq5vY.js → vendor-CmGvxZwr.js} +15 -15
- package/ui/history-v3/dist/assets/vue-Bmo88J5t.js +1 -0
- package/ui/history-v3/dist/index.html +3 -3
- package/ui/history-v3/dist/assets/DashboardPage-B1uByGH4.js +0 -1
- package/ui/history-v3/dist/assets/DashboardPage-CabImjCg.css +0 -1
- package/ui/history-v3/dist/assets/HistoryPage-CcuFI_7q.js +0 -3
- package/ui/history-v3/dist/assets/HistoryPage-MBmz_wrp.css +0 -1
- package/ui/history-v3/dist/assets/LogsPage-CTboGme2.js +0 -1
- package/ui/history-v3/dist/assets/LogsPage-DnfMvMyI.css +0 -1
- package/ui/history-v3/dist/assets/ModelsPage-BCijEIH1.css +0 -1
- package/ui/history-v3/dist/assets/ModelsPage-B_sjc_hg.js +0 -1
- package/ui/history-v3/dist/assets/ProgressBar-BQxTnwIj.js +0 -1
- package/ui/history-v3/dist/assets/UsagePage-Nx_clyfV.css +0 -1
- package/ui/history-v3/dist/assets/UsagePage-Nxy64EGo.js +0 -1
- package/ui/history-v3/dist/assets/index-D5HcAJB-.css +0 -1
- package/ui/history-v3/dist/assets/index-DOp9l2lW.js +0 -2
- package/ui/history-v3/dist/assets/vue-CYcm9SLm.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hsupu/copilot-api",
|
|
3
|
-
"version": "0.8.1-beta.
|
|
3
|
+
"version": "0.8.1-beta.2",
|
|
4
4
|
"description": "Turn GitHub Copilot into OpenAI/Anthropic API compatible server.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"proxy",
|
|
@@ -25,61 +25,86 @@
|
|
|
25
25
|
"config.example.yaml"
|
|
26
26
|
],
|
|
27
27
|
"scripts": {
|
|
28
|
-
"build": "npm run build:ui &&
|
|
29
|
-
"build:
|
|
28
|
+
"build": "npm run build:ui && npm run build:backend",
|
|
29
|
+
"build:backend": "npx tsdown",
|
|
30
|
+
"build:ui": "vite build --config ui/history-v3/vite.config.ts",
|
|
30
31
|
"dev": "bun run --watch ./src/main.ts",
|
|
31
|
-
"dev:ui": "
|
|
32
|
+
"dev:ui": "vite --config ui/history-v3/vite.config.ts",
|
|
32
33
|
"knip": "knip-bun",
|
|
33
34
|
"lint": "eslint --cache",
|
|
34
35
|
"lint:all": "eslint --cache .",
|
|
35
36
|
"prepack": "npm run build",
|
|
36
37
|
"prepare": "npm run build && (command -v bun >/dev/null 2>&1 && simple-git-hooks || true)",
|
|
38
|
+
"preview:ui": "vite preview --config ui/history-v3/vite.config.ts",
|
|
37
39
|
"release": "bumpp && npm publish --access public",
|
|
38
40
|
"start": "NODE_ENV=production bun run ./src/main.ts",
|
|
39
41
|
"test": "bun test tests/unit/",
|
|
40
|
-
"test:all": "
|
|
41
|
-
"test:
|
|
42
|
+
"test:all": "npm run test:backend && npm run test:ui",
|
|
43
|
+
"test:backend": "bun test tests/unit/ tests/component/ tests/contract/ tests/integration/ tests/e2e/",
|
|
44
|
+
"test:ci": "npm run test:backend",
|
|
42
45
|
"test:component": "bun test tests/component/",
|
|
46
|
+
"test:cov": "bun test --coverage tests/unit/ tests/component/ tests/contract/ tests/integration/ tests/http/ tests/ws/",
|
|
47
|
+
"test:cov:report": "bun test --coverage --coverage-reporter lcov tests/unit/ tests/component/ tests/contract/ tests/integration/ tests/http/ tests/ws/",
|
|
43
48
|
"test:contract": "bun test tests/contract/",
|
|
44
49
|
"test:e2e": "bun test tests/e2e/",
|
|
50
|
+
"test:e2e-ui:local": "PLAYWRIGHT_BASE_URL=http://localhost:4141 bunx playwright test",
|
|
51
|
+
"test:e2e-ui": "bunx playwright test",
|
|
52
|
+
"test:http": "bun test tests/http/",
|
|
53
|
+
"test:acceptance": "npm run test:backend && npm run test:ui && npm run test:e2e-ui",
|
|
45
54
|
"test:integration": "bun test tests/integration/",
|
|
46
|
-
"test:ui": "
|
|
47
|
-
"
|
|
55
|
+
"test:ui": "bun test ./ui/history-v3/tests/",
|
|
56
|
+
"test:ws": "bun test tests/ws/",
|
|
57
|
+
"typecheck": "tsc",
|
|
58
|
+
"typecheck:ui": "vue-tsc --noEmit --project ui/history-v3/tsconfig.json"
|
|
48
59
|
},
|
|
49
60
|
"simple-git-hooks": {
|
|
50
61
|
"pre-commit": "bun x lint-staged"
|
|
51
62
|
},
|
|
52
63
|
"lint-staged": {
|
|
53
|
-
"*.{ts,js,mjs,cjs}": "bun run lint"
|
|
64
|
+
"*.{ts,js,mjs,cjs,vue}": "bun run lint"
|
|
54
65
|
},
|
|
55
66
|
"dependencies": {
|
|
56
67
|
"@hono/node-ws": "^1.3.0",
|
|
68
|
+
"@mdi/font": "^7.4.47",
|
|
57
69
|
"citty": "^0.2.1",
|
|
58
70
|
"consola": "^3.4.2",
|
|
71
|
+
"diff": "^8.0.4",
|
|
72
|
+
"diff2html": "^3.4.56",
|
|
59
73
|
"fetch-event-stream": "^0.1.6",
|
|
60
74
|
"gpt-tokenizer": "^3.4.0",
|
|
61
|
-
"hono": "^4.12.
|
|
75
|
+
"hono": "^4.12.9",
|
|
62
76
|
"picocolors": "^1.1.1",
|
|
63
|
-
"proxy-from-env": "^2.
|
|
77
|
+
"proxy-from-env": "^2.1.0",
|
|
64
78
|
"socks": "^2.8.7",
|
|
65
79
|
"tiny-invariant": "^1.3.3",
|
|
66
|
-
"undici": "^7.
|
|
67
|
-
"
|
|
80
|
+
"undici": "^7.24.6",
|
|
81
|
+
"vue": "^3.5.31",
|
|
82
|
+
"vue-json-pretty": "^2.6.0",
|
|
83
|
+
"vue-router": "^5.0.4",
|
|
84
|
+
"vuetify": "^4.0.4",
|
|
85
|
+
"yaml": "^2.8.3"
|
|
68
86
|
},
|
|
69
87
|
"devDependencies": {
|
|
70
|
-
"@anthropic-ai/sdk": "^0.
|
|
88
|
+
"@anthropic-ai/sdk": "^0.80.0",
|
|
71
89
|
"@echristian/eslint-config": "^0.0.54",
|
|
72
|
-
"@
|
|
90
|
+
"@playwright/test": "^1.58.2",
|
|
91
|
+
"@types/bun": "^1.3.11",
|
|
92
|
+
"@types/diff": "^8.0.0",
|
|
73
93
|
"@types/proxy-from-env": "^1.0.4",
|
|
74
|
-
"
|
|
75
|
-
"eslint": "^
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
94
|
+
"@vitejs/plugin-vue": "^6.0.5",
|
|
95
|
+
"@vue/eslint-config-typescript": "^14.7.0",
|
|
96
|
+
"bumpp": "^11.0.1",
|
|
97
|
+
"eslint": "^9.39.4",
|
|
98
|
+
"eslint-plugin-vue": "^10.8.0",
|
|
99
|
+
"knip": "^6.1.0",
|
|
100
|
+
"lint-staged": "^16.4.0",
|
|
101
|
+
"openai": "^6.33.0",
|
|
102
|
+
"prettier-plugin-packagejson": "^3.0.2",
|
|
80
103
|
"simple-git-hooks": "^2.13.1",
|
|
81
|
-
"tsdown": "^0.
|
|
104
|
+
"tsdown": "^0.21.7",
|
|
82
105
|
"typescript": "^5.9.3",
|
|
83
|
-
"
|
|
106
|
+
"vite": "^7.3.1",
|
|
107
|
+
"vite-plugin-vuetify": "^2.1.3",
|
|
108
|
+
"vue-tsc": "^3.2.6"
|
|
84
109
|
}
|
|
85
110
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as f}from"./vendor-CmGvxZwr.js";import{t as S,_ as p}from"./index-cupXJxSz.js";import{d as h,g as r,u as v,o as l,s as _,v as V,c,a2 as I,l as g,j as n,t as x,a0 as k,h as z,a1 as m,e as w,f as b,i as $,r as J,F as T,k as j}from"./vue-Bmo88J5t.js";function N(){const{show:e}=S();async function t(o,a="Copied!"){try{await navigator.clipboard.writeText(o),e(a,"success")}catch{e("Copy failed","error")}}return{copy:t}}const D=["width","height","innerHTML"],L=h({__name:"IconSvg",props:{name:{},size:{default:14}},setup(e){const a={search:'<path d="M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z"/><path d="M338.29 338.29L448 448"/>',refresh:'<path d="M320 146s24.36-12-64-12a160 160 0 10160 160" /><polyline points="256 58 336 138 256 218"/>',download:'<path d="M336 176h40a40 40 0 0140 40v208a40 40 0 01-40 40H136a40 40 0 01-40-40V216a40 40 0 0140-40h40"/><polyline points="176 272 256 352 336 272"/><line x1="256" y1="48" x2="256" y2="336"/>',trash:'<path d="M112 112l20 320c.95 18.49 14.4 32 32 32h184c17.67 0 30.87-13.51 32-32l20-320"/><line x1="80" y1="112" x2="432" y2="112"/><path d="M192 112V72h0a23.93 23.93 0 0124-24h80a23.93 23.93 0 0124 24h0v40" stroke-linecap="round"/>',close:'<path d="M368 368L144 144"/><path d="M368 144L144 368"/>',expand:'<polyline points="432 368 432 432 368 432"/><line x1="432" y1="432" x2="336" y2="336"/><polyline points="80 144 80 80 144 80"/><line x1="80" y1="80" x2="176" y2="176"/><polyline points="368 80 432 80 432 144"/><line x1="432" y1="80" x2="336" y2="176"/><polyline points="144 432 80 432 80 368"/><line x1="80" y1="432" x2="176" y2="336"/>',contract:'<polyline points="336 368 336 432 400 432"/><line x1="336" y1="432" x2="432" y2="336"/><polyline points="176 144 176 80 112 80"/><line x1="176" y1="80" x2="80" y2="176"/><polyline points="400 80 336 80 336 144"/><line x1="336" y1="80" x2="432" y2="176"/><polyline points="112 432 176 432 176 368"/><line x1="176" y1="432" x2="80" y2="336"/>',copy:'<rect x="128" y="128" width="336" height="336" rx="57" ry="57"/><path d="M383.5 128l.5-24a56.16 56.16 0 00-56-56H112a64.19 64.19 0 00-64 64v216a56.16 56.16 0 0056 56h24" stroke-linecap="round"/>',code:'<path d="M160 368L32 256l128-112"/><path d="M352 368l128-112-128-112"/><path d="M304 96l-96 320"/>',"chevron-down":'<polyline points="112 184 256 328 400 184"/>',"chevron-up":'<polyline points="112 328 256 184 400 328"/>',"chevron-right":'<polyline points="184 112 328 256 184 400"/>'}[e.name]||"";return(u,d)=>(l(),r("svg",{class:"icon-svg",width:e.size,height:e.size,viewBox:"0 0 512 512",fill:"none",stroke:"currentColor","stroke-width":"32","stroke-linecap":"round","stroke-linejoin":"round",innerHTML:v(a)},null,8,D))}}),y=p(L,[["__scopeId","data-v-80761fa5"]]),O={class:"modal-header"},R={class:"modal-title"},H={class:"modal-header-actions"},E={class:"modal-body"},F=h({__name:"BaseModal",props:{visible:{type:Boolean},title:{},width:{},height:{}},emits:["update:visible"],setup(e,{emit:t}){const o=t;function a(){o("update:visible",!1)}function u(i){i.target.classList.contains("modal-overlay")&&a()}function d(i){i.key==="Escape"&&(i.stopPropagation(),a())}return(i,C)=>(l(),_(V,{to:"body"},[c(I,{name:"fade"},{default:g(()=>[e.visible?(l(),r("div",{key:0,class:"modal-overlay",onClick:u,onKeydown:d},[n("div",{class:"modal-content",style:z({width:e.width||"80vw",height:e.height})},[n("div",O,[n("h3",R,x(e.title),1),n("div",H,[k(i.$slots,"header-actions",{},void 0,!0),n("button",{class:"modal-close",onClick:a},[c(y,{name:"close",size:16})])])]),n("div",E,[k(i.$slots,"default",{},void 0,!0)])],4)],32)):m("",!0)]),_:3})]))}}),P=p(F,[["__scopeId","data-v-cb2ffd87"]]),A={key:0,class:"json-split"},K={class:"json-pane"},U={class:"pane-header"},q={class:"json-viewer"},G={class:"json-pane"},Q={class:"pane-header"},W={class:"json-viewer"},X={key:1,class:"json-viewer"},Y=h({__name:"RawJsonModal",props:{visible:{type:Boolean},title:{},data:{},rewrittenData:{}},emits:["update:visible"],setup(e){const t=e,{copy:o}=N(),a=b(()=>t.rewrittenData!==null&&t.rewrittenData!==void 0),u=b(()=>{try{return JSON.stringify(t.data,null,2)}catch{return String(t.data)}}),d=b(()=>{if(!t.rewrittenData)return"";try{return JSON.stringify(t.rewrittenData,null,2)}catch{return String(t.rewrittenData)}});function i(){o(u.value)}function C(){o(d.value)}return(B,s)=>(l(),_(P,{visible:e.visible,title:e.title,width:"95vw",height:"95vh","onUpdate:visible":s[0]||(s[0]=M=>B.$emit("update:visible",M))},{"header-actions":g(()=>[a.value?m("",!0):(l(),r("button",{key:0,class:"raw-copy-btn",title:"Copy JSON",onClick:i},[c(y,{name:"copy",size:12}),s[1]||(s[1]=w(" Copy ",-1))]))]),default:g(()=>[a.value?(l(),r("div",A,[n("div",K,[n("div",U,[s[3]||(s[3]=n("span",{class:"pane-label"},"Original",-1)),n("button",{class:"raw-copy-btn",title:"Copy original JSON",onClick:i},[c(y,{name:"copy",size:12}),s[2]||(s[2]=w(" Copy ",-1))])]),n("div",q,[c(v(f),{data:e.data,deep:5,"show-line-number":!0,"show-icon":!0,"show-length":!0,"collapsed-on-click-brackets":!0},null,8,["data"])])]),s[6]||(s[6]=n("div",{class:"pane-divider"},null,-1)),n("div",G,[n("div",Q,[s[5]||(s[5]=n("span",{class:"pane-label pane-label-rewritten"},"Rewritten",-1)),n("button",{class:"raw-copy-btn",title:"Copy rewritten JSON",onClick:C},[c(y,{name:"copy",size:12}),s[4]||(s[4]=w(" Copy ",-1))])]),n("div",W,[c(v(f),{data:e.rewrittenData,deep:5,"show-line-number":!0,"show-icon":!0,"show-length":!0,"collapsed-on-click-brackets":!0},null,8,["data"])])])])):(l(),r("div",X,[c(v(f),{data:e.data,deep:5,"show-line-number":!0,"show-icon":!0,"show-length":!0,"collapsed-on-click-brackets":!0},null,8,["data"])]))]),_:1},8,["visible","title"]))}}),ce=p(Y,[["__scopeId","data-v-8d9e2548"]]),Z=h({__name:"BaseBadge",props:{color:{default:"default"}},setup(e){return(t,o)=>(l(),r("span",{class:$(["base-badge","badge-"+e.color])},[k(t.$slots,"default",{},void 0)],2))}}),de=p(Z,[["__scopeId","data-v-30a49732"]]),ee=["value","placeholder"],te=h({__name:"BaseInput",props:{modelValue:{},placeholder:{},icon:{}},emits:["update:modelValue"],setup(e,{expose:t}){const o=J();function a(){o.value?.focus()}return t({focus:a}),(u,d)=>(l(),r("div",{class:$(["base-input",{"has-icon":e.icon}])},[e.icon?(l(),_(y,{key:0,name:e.icon,size:13,class:"input-icon"},null,8,["name"])):m("",!0),n("input",{ref_key:"inputRef",ref:o,type:"text",value:e.modelValue,placeholder:e.placeholder,onInput:d[0]||(d[0]=i=>u.$emit("update:modelValue",i.target.value))},null,40,ee)],2))}}),ue=p(te,[["__scopeId","data-v-ac901b0e"]]),ae=["value"],ne={key:0,value:""},oe=["value"],se=h({__name:"BaseSelect",props:{modelValue:{},options:{},placeholder:{}},emits:["update:modelValue"],setup(e){return(t,o)=>(l(),r("select",{class:"base-select",value:e.modelValue??"",onChange:o[0]||(o[0]=a=>t.$emit("update:modelValue",a.target.value||null))},[e.placeholder?(l(),r("option",ne,x(e.placeholder),1)):m("",!0),(l(!0),r(T,null,j(e.options,a=>(l(),r("option",{key:a.value,value:a.value},x(a.label),9,oe))),128))],40,ae))}}),pe=p(se,[["__scopeId","data-v-4c7423ca"]]);export{pe as B,y as I,ce as R,de as a,ue as b,N as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.icon-svg[data-v-80761fa5]{display:inline-block;vertical-align:middle;flex-shrink:0}.modal-overlay[data-v-cb2ffd87]{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-cb2ffd87]{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--border-radius);box-shadow:var(--shadow-lg);max-height:95vh;display:flex;flex-direction:column}.modal-header[data-v-cb2ffd87]{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border);flex-shrink:0}.modal-title[data-v-cb2ffd87]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.modal-header-actions[data-v-cb2ffd87]{display:flex;align-items:center;gap:var(--spacing-sm)}.modal-close[data-v-cb2ffd87]{color:var(--text-muted);padding:var(--spacing-xs);border-radius:var(--border-radius-sm);transition:all var(--transition-fast)}.modal-close[data-v-cb2ffd87]:hover{color:var(--text);background:var(--bg-tertiary)}.modal-body[data-v-cb2ffd87]{padding:var(--spacing-lg);overflow-y:auto;flex:1}.vjs-tree-brackets{cursor:pointer}.vjs-tree-brackets:hover{color:#1890ff}.vjs-check-controller{position:absolute;left:0}.vjs-check-controller.is-checked .vjs-check-controller-inner{background-color:#1890ff;border-color:#0076e4}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-checkbox:after{transform:rotate(45deg) scaleY(1)}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-radio:after{transform:translate(-50%,-50%) scale(1)}.vjs-check-controller .vjs-check-controller-inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:2px;vertical-align:middle;box-sizing:border-box;width:16px;height:16px;background-color:#fff;z-index:1;cursor:pointer;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.vjs-check-controller .vjs-check-controller-inner:after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transform-origin:center}.vjs-check-controller .vjs-check-controller-inner.is-radio{border-radius:100%}.vjs-check-controller .vjs-check-controller-inner.is-radio:after{border-radius:100%;height:4px;background-color:#fff;left:50%;top:50%}.vjs-check-controller .vjs-check-controller-original{opacity:0;outline:none;position:absolute;z-index:-1;inset:0;margin:0}.vjs-carets{position:absolute;right:0;cursor:pointer}.vjs-carets svg{transition:transform .3s}.vjs-carets:hover{color:#1890ff}.vjs-carets-close{transform:rotate(-90deg)}.vjs-tree-node{display:flex;position:relative;line-height:20px}.vjs-tree-node.has-carets{padding-left:15px}.vjs-tree-node.has-carets.has-selector,.vjs-tree-node.has-selector{padding-left:30px}.vjs-tree-node.is-highlight,.vjs-tree-node:hover{background-color:#e6f7ff;border-radius:4px}.vjs-tree-node.is-highlight .vjs-tree-node-actions,.vjs-tree-node:hover .vjs-tree-node-actions{display:block}.vjs-tree-node .vjs-indent{display:flex;position:relative}.vjs-tree-node .vjs-indent-unit.has-line{border-left:1px dashed #bfcbd9}.vjs-tree-node .vjs-tree-node-actions{display:none;position:absolute;right:0;top:0;padding:0 4px;background-color:#e6f7ff;border-radius:4px}.vjs-tree-node .vjs-tree-node-actions .vjs-tree-node-actions-item{cursor:pointer}.vjs-tree-node .vjs-tree-node-actions .vjs-tree-node-actions-item:hover{color:#1890ff}.vjs-tree-node.dark.is-highlight,.vjs-tree-node.dark .vjs-tree-node-actions,.vjs-tree-node.dark:hover{background-color:#2e4558}.vjs-node-index{position:absolute;right:100%;margin-right:4px;-webkit-user-select:none;user-select:none}.vjs-colon{white-space:pre}.vjs-comment{color:#bfcbd9}.vjs-key{white-space:nowrap}.vjs-value{word-break:break-word}.vjs-tree-node.dynamic-height .vjs-value{white-space:pre-wrap}.vjs-value-null,.vjs-value-undefined{color:#d55fde}.vjs-value-boolean,.vjs-value-number{color:#1d8ce0}.vjs-value-string{color:#13ce66}.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace;font-size:14px;text-align:left}.vjs-tree.is-virtual{overflow:auto}.vjs-tree.is-virtual .vjs-tree-node{white-space:nowrap}.raw-copy-btn[data-v-8d9e2548]{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--text-dim);padding:4px 8px;background:transparent}.raw-copy-btn[data-v-8d9e2548]:hover{color:var(--text);background:var(--bg-hover)}.json-viewer[data-v-8d9e2548]{overflow:auto}.json-split[data-v-8d9e2548]{display:flex;height:100%;overflow:hidden}.json-pane[data-v-8d9e2548]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.json-pane .json-viewer[data-v-8d9e2548]{flex:1;overflow:auto}.pane-divider[data-v-8d9e2548]{width:1px;background:var(--border-light);flex-shrink:0}.pane-header[data-v-8d9e2548]{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--border-light);background:var(--bg-tertiary);flex-shrink:0}.pane-label[data-v-8d9e2548]{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.pane-label-rewritten[data-v-8d9e2548]{color:var(--warning)}.base-badge[data-v-30a49732]{display:inline-flex;align-items:center;padding:1px 6px;border-radius:0;font-size:var(--font-size-xs);font-weight:500;white-space:nowrap;line-height:1.2}.badge-default[data-v-30a49732]{background:var(--bg-tertiary);color:var(--text-muted)}.badge-primary[data-v-30a49732]{background:var(--primary-muted);color:var(--primary)}.badge-success[data-v-30a49732]{background:var(--success-muted);color:var(--success)}.badge-error[data-v-30a49732]{background:var(--error-muted);color:var(--error)}.badge-warning[data-v-30a49732]{background:var(--warning-muted);color:var(--warning)}.badge-purple[data-v-30a49732]{background:var(--purple-muted);color:var(--purple)}.badge-cyan[data-v-30a49732]{background:var(--cyan-muted);color:var(--cyan)}.badge-pink[data-v-30a49732]{background:var(--pink-muted);color:var(--pink)}.badge-green[data-v-30a49732]{background:var(--success-muted);color:var(--success)}.base-input[data-v-ac901b0e]{position:relative;display:flex;align-items:center}.base-input input[data-v-ac901b0e]{width:100%;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--border-radius-sm);padding:4px 8px;font-size:var(--font-size-xs);color:var(--text);outline:none}.base-input input[data-v-ac901b0e]:focus{border-color:var(--primary)}.base-input input[data-v-ac901b0e]::placeholder{color:var(--text-dim)}.has-icon input[data-v-ac901b0e]{padding-left:26px}.input-icon[data-v-ac901b0e]{position:absolute;left:8px;color:var(--text-dim);pointer-events:none}.base-select[data-v-4c7423ca]{background:var(--bg-tertiary);color:var(--text);border:1px solid var(--border);border-radius:var(--border-radius-sm);padding:4px 8px;font-size:var(--font-size-xs);cursor:pointer;outline:none;min-width:80px;appearance:auto}.base-select[data-v-4c7423ca]:focus{border-color:var(--primary)}.base-select[data-v-4c7423ca]:hover{border-color:var(--text-dim)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.dashboard-page[data-v-4898a6d5]{display:flex;flex-direction:column;flex:1;overflow-y:auto}.dashboard-header[data-v-4898a6d5]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid var(--border-light);flex-shrink:0}.dashboard-title[data-v-4898a6d5]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.ws-badge[data-v-4898a6d5]{font-size:var(--font-size-xs);padding:1px 6px}.ws-live[data-v-4898a6d5]{color:var(--success)}.ws-offline[data-v-4898a6d5]{color:var(--text-dim)}.dashboard-loading[data-v-4898a6d5]{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-dim);font-size:var(--font-size-sm)}.dashboard-grid[data-v-4898a6d5]{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--spacing-lg);padding:var(--spacing-lg)}.kv-list[data-v-4898a6d5]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.kv-row[data-v-4898a6d5]{display:flex;align-items:baseline;gap:var(--spacing-sm)}.kv-key[data-v-4898a6d5]{font-size:var(--font-size-xs);color:var(--text-dim);min-width:100px;flex-shrink:0}.kv-value[data-v-4898a6d5]{font-size:var(--font-size-xs);color:var(--text)}.kv-value.mono[data-v-4898a6d5]{font-family:var(--font-mono);word-break:break-all}.text-success[data-v-4898a6d5]{color:var(--success)}.text-error[data-v-4898a6d5]{color:var(--error)}.text-warning[data-v-4898a6d5]{color:var(--warning)}.card-empty[data-v-4898a6d5]{font-size:var(--font-size-xs);color:var(--text-dim);padding:var(--spacing-sm) 0}.quota-list[data-v-4898a6d5]{display:flex;flex-direction:column;gap:var(--spacing-md)}.quota-item[data-v-4898a6d5]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.quota-header[data-v-4898a6d5]{display:flex;justify-content:space-between;align-items:baseline}.quota-label[data-v-4898a6d5]{font-size:var(--font-size-xs);color:var(--text-muted)}.quota-numbers[data-v-4898a6d5]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.config-list[data-v-4898a6d5]{max-height:300px;overflow-y:auto}.active-list[data-v-4898a6d5]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.active-item[data-v-4898a6d5]{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-xs)}.active-dot[data-v-4898a6d5]{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot-executing[data-v-4898a6d5]{background:var(--primary)}.dot-streaming[data-v-4898a6d5]{background:var(--success)}.dot-pending[data-v-4898a6d5]{background:var(--text-dim)}.active-model[data-v-4898a6d5]{color:var(--text);min-width:120px}.active-state[data-v-4898a6d5]{color:var(--text-dim);min-width:70px}.active-duration[data-v-4898a6d5]{color:var(--text-muted)}@media(max-width:768px){.dashboard-grid[data-v-4898a6d5]{grid-template-columns:1fr}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{W as z,a as Q,_ as J}from"./index-cupXJxSz.js";import{D as p,P as T}from"./ProgressBar-6xzx-ZSc.js";import{u as G}from"./useFormatters-BBIZmSf2.js";import{u as U}from"./usePolling-CRd-nhvF.js";import{d as K,I as X,Q as Y,g as n,j as s,u as d,c as k,l as _,s as Z,a1 as m,r as y,i as w,t as l,F as b,k as x,f as u,o}from"./vue-Bmo88J5t.js";const ss={class:"dashboard-page"},es={class:"dashboard-header"},ts={key:0,class:"ws-badge ws-live"},as={key:1,class:"ws-badge ws-offline"},os={key:0,class:"dashboard-loading"},ns={key:1,class:"dashboard-grid"},ls={class:"kv-list"},is={class:"kv-row"},us={class:"kv-row"},vs={class:"kv-value"},cs={key:0,class:"kv-row"},rs={class:"kv-value mono"},ds={class:"kv-row"},ks={class:"kv-row"},ps={class:"kv-value mono"},_s={key:0,class:"kv-list"},ms={class:"kv-row"},hs={class:"kv-value"},ys={key:0,class:"kv-row"},fs={class:"kv-value"},gs={key:1,class:"kv-row"},ws={class:"kv-value mono"},Cs={key:1,class:"card-empty"},bs={key:0,class:"quota-list"},xs={key:0,class:"kv-row",style:{"margin-bottom":"8px"}},qs={class:"kv-value"},Ls={class:"quota-header"},Ms={class:"quota-label"},Ss={class:"quota-numbers"},Bs={key:1,class:"card-empty"},Ns={class:"kv-list"},As={class:"kv-row"},Es={class:"kv-row"},Ps={class:"kv-value mono"},Rs={key:0,class:"kv-list"},Ds={class:"kv-row"},$s={class:"kv-value mono"},Is={key:0,class:"kv-row"},Qs={class:"kv-value",style:{flex:"1"}},Ts={class:"kv-row"},Us={class:"kv-value mono"},Vs={key:1,class:"kv-row"},Ws={class:"kv-value mono"},js={key:1,class:"card-empty"},Fs={class:"active-list"},Hs={class:"active-model"},Os={class:"active-state"},zs={class:"active-duration mono"},Js={key:0,class:"kv-list config-list"},Gs={class:"kv-key"},Ks={class:"kv-value mono"},Xs={key:1,class:"card-empty"},Ys=K({__name:"DashboardPage",setup(Zs){const{formatNumber:q}=G(),{data:i,loading:V}=U(()=>Q.fetchStatus(),5e3),{data:L}=U(()=>Q.fetchConfig(),3e4),c=y([]),M=y(0),S=y(null),B=y(null),N=y(null),A=y(!1);let f=null;function W(t){if(M.value=t.activeCount,t.action==="created"&&t.request)c.value=[...c.value,t.request];else if(t.action==="state_changed"&&t.request){const e=t.request;c.value=c.value.map(a=>a.id===e.id?e:a)}else(t.action==="completed"||t.action==="failed")&&(c.value=c.value.filter(e=>e.id!==t.requestId))}function j(t){S.value=t.mode,B.value=t.queueLength}X(()=>{f=new z({topics:["requests","status"],onActiveRequestChanged:W,onRateLimiterChanged:j,onShutdownPhaseChanged:t=>{N.value=t.phase},onStatusChange:t=>{A.value=t}}),f.connect()}),Y(()=>{f?.disconnect(),f=null});const g=u(()=>S.value??i.value?.rateLimiter?.mode??null),F=u(()=>B.value??i.value?.rateLimiter?.queueLength??null),E=u(()=>N.value??i.value?.shutdown?.phase??"idle"),H=u(()=>{const t=i.value?.uptime;if(!t)return"-";const e=Math.floor(t/3600),a=Math.floor(t%3600/60),r=t%60;return e>0?`${e}h ${a}m ${r}s`:a>0?`${a}m ${r}s`:`${r}s`}),h=u(()=>i.value?.auth??null),C=u(()=>i.value?.quota??null),v=u(()=>i.value?.memory??null),O=u(()=>M.value||i.value?.activeRequests?.count||0),P=u(()=>h.value?.copilotTokenExpiresAt?new Date(h.value.copilotTokenExpiresAt).toLocaleTimeString():null),R=u(()=>C.value?.plan??null),D=u(()=>Number(v.value?.totalEvictedCount??0)),$=u(()=>L.value?Object.entries(L.value).map(([t,e])=>({key:t,value:typeof e=="object"?JSON.stringify(e):String(e)})):[]),I=u(()=>{if(!C.value)return[];const t=[];for(const[e,a]of[["premiumInteractions","Premium"],["chat","Chat"],["completions","Completions"]]){const r=C.value[e];r&&t.push({label:a,used:r.entitlement-r.remaining,total:r.entitlement})}return t});return(t,e)=>(o(),n("div",ss,[s("div",es,[e[0]||(e[0]=s("h2",{class:"dashboard-title"},"Dashboard",-1)),A.value?(o(),n("span",ts,"WS Live")):(o(),n("span",as,"WS Offline"))]),d(V)&&!d(i)?(o(),n("div",os," Loading server status... ")):(o(),n("div",ns,[k(p,{title:"Status"},{default:_(()=>[s("div",ls,[s("div",is,[e[1]||(e[1]=s("span",{class:"kv-key"},"Health",-1)),s("span",{class:w(["kv-value",d(i)?.status==="healthy"?"text-success":"text-error"])},l(d(i)?.status??"-"),3)]),s("div",us,[e[2]||(e[2]=s("span",{class:"kv-key"},"Uptime",-1)),s("span",vs,l(H.value),1)]),d(i)?.version?(o(),n("div",cs,[e[3]||(e[3]=s("span",{class:"kv-key"},"Version",-1)),s("span",rs,l(d(i).version),1)])):m("",!0),s("div",ds,[e[4]||(e[4]=s("span",{class:"kv-key"},"Shutdown",-1)),s("span",{class:w(["kv-value",E.value!=="idle"?"text-warning":""])},l(E.value),3)]),s("div",ks,[e[5]||(e[5]=s("span",{class:"kv-key"},"Active Reqs",-1)),s("span",ps,l(O.value),1)])])]),_:1}),k(p,{title:"Authentication"},{default:_(()=>[h.value?(o(),n("div",_s,[s("div",ms,[e[6]||(e[6]=s("span",{class:"kv-key"},"Account",-1)),s("span",hs,l(h.value.accountType),1)]),h.value.tokenSource?(o(),n("div",ys,[e[7]||(e[7]=s("span",{class:"kv-key"},"Token Source",-1)),s("span",fs,l(h.value.tokenSource),1)])):m("",!0),P.value?(o(),n("div",gs,[e[8]||(e[8]=s("span",{class:"kv-key"},"Copilot Expires",-1)),s("span",ws,l(P.value),1)])):m("",!0)])):(o(),n("div",Cs," No auth info "))]),_:1}),k(p,{title:"Quota"},{default:_(()=>[I.value.length>0?(o(),n("div",bs,[R.value?(o(),n("div",xs,[e[9]||(e[9]=s("span",{class:"kv-key"},"Plan",-1)),s("span",qs,l(R.value),1)])):m("",!0),(o(!0),n(b,null,x(I.value,a=>(o(),n("div",{key:a.label,class:"quota-item"},[s("div",Ls,[s("span",Ms,l(a.label),1),s("span",Ss,l(d(q)(a.used))+" / "+l(d(q)(a.total)),1)]),k(T,{value:a.used,max:a.total},null,8,["value","max"])]))),128))])):(o(),n("div",Bs," No quota data "))]),_:1}),k(p,{title:"Rate Limiter"},{default:_(()=>[s("div",Ns,[s("div",As,[e[10]||(e[10]=s("span",{class:"kv-key"},"Mode",-1)),s("span",{class:w(["kv-value",{"text-success":g.value==="normal","text-warning":g.value==="recovering","text-error":g.value==="rate-limited"}])},l(g.value??"N/A"),3)]),s("div",Es,[e[11]||(e[11]=s("span",{class:"kv-key"},"Queue",-1)),s("span",Ps,l(F.value??0),1)])])]),_:1}),k(p,{title:"Memory"},{default:_(()=>[v.value?(o(),n("div",Rs,[s("div",Ds,[e[12]||(e[12]=s("span",{class:"kv-key"},"Heap",-1)),s("span",$s,l(v.value.heapUsedMB)+" MB"+l(v.value.heapLimitMB?` / ${v.value.heapLimitMB} MB`:""),1)]),v.value.heapLimitMB?(o(),n("div",Is,[e[13]||(e[13]=s("span",{class:"kv-key"},null,-1)),s("span",Qs,[k(T,{value:Number(v.value.heapUsedMB),max:Number(v.value.heapLimitMB)},null,8,["value","max"])])])):m("",!0),s("div",Ts,[e[14]||(e[14]=s("span",{class:"kv-key"},"History",-1)),s("span",Us,l(v.value.historyEntryCount)+" / "+l(v.value.historyMaxEntries)+" entries",1)]),D.value>0?(o(),n("div",Vs,[e[15]||(e[15]=s("span",{class:"kv-key"},"Evicted",-1)),s("span",Ws,l(D.value),1)])):m("",!0)])):(o(),n("div",js," No memory info "))]),_:1}),c.value.length>0?(o(),Z(p,{key:0,title:"Active Requests"},{default:_(()=>[s("div",Fs,[(o(!0),n(b,null,x(c.value,a=>(o(),n("div",{key:a.id,class:"active-item"},[s("span",{class:w(["active-dot",{"dot-executing":a.state==="executing","dot-streaming":a.state==="streaming","dot-pending":a.state==="pending"}])},null,2),s("span",Hs,l(a.model??"?"),1),s("span",Os,l(a.state),1),s("span",zs,l(Math.round(a.durationMs/1e3))+"s",1)]))),128))])]),_:1})):m("",!0),k(p,{title:"Configuration"},{default:_(()=>[$.value.length>0?(o(),n("div",Js,[(o(!0),n(b,null,x($.value,a=>(o(),n("div",{key:a.key,class:"kv-row"},[s("span",Gs,l(a.key),1),s("span",Ks,l(a.value),1)]))),128))])):(o(),n("div",Xs," No config available "))]),_:1})]))]))}}),ne=J(Ys,[["__scopeId","data-v-4898a6d5"]]);export{ne as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.error-boundary[data-v-447f57f3]{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--error-muted);border:1px solid var(--error);font-size:var(--font-size-sm);color:var(--error);font-family:var(--font-mono)}.error-icon[data-v-447f57f3]{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid var(--error);font-weight:700;font-size:var(--font-size-xs);flex-shrink:0}.error-label[data-v-447f57f3]{font-weight:600;flex-shrink:0}.error-message[data-v-447f57f3]{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attempts-timeline[data-v-6574832d]{display:flex;flex-direction:column;gap:var(--spacing-sm)}.timeline-title[data-v-6574832d]{font-size:var(--font-size-xs);font-weight:600;color:var(--text-muted)}.timeline-track[data-v-6574832d]{display:flex;flex-direction:column;gap:var(--spacing-sm);padding-left:var(--spacing-sm);border-left:2px solid var(--border)}.timeline-node[data-v-6574832d]{display:flex;gap:var(--spacing-sm);align-items:flex-start;position:relative}.node-dot[data-v-6574832d]{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:2px;margin-left:-7px}.node-info[data-v-6574832d]{display:flex;flex-direction:column;gap:2px;flex:1}.node-header[data-v-6574832d]{display:flex;align-items:baseline;gap:var(--spacing-sm)}.node-index[data-v-6574832d]{font-size:var(--font-size-xs);font-weight:600;color:var(--text)}.node-strategy[data-v-6574832d]{font-size:10px;padding:0 4px;background:var(--primary-muted);color:var(--primary)}.node-duration[data-v-6574832d]{font-size:10px;color:var(--text-dim);font-family:var(--font-mono)}.node-error[data-v-6574832d]{font-size:10px;color:var(--error);word-break:break-word}.node-truncation[data-v-6574832d]{font-size:10px;color:var(--warning)}.node-meta[data-v-6574832d]{font-size:10px;color:var(--text-dim)}.content-block[data-v-925d294a]{border:1px solid var(--border)}.content-block-header[data-v-925d294a]{display:flex;align-items:baseline;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none}.content-block-header[data-v-925d294a]:hover{background:var(--bg-hover)}.content-block-header-left[data-v-925d294a]{display:flex;align-items:baseline;gap:var(--spacing-sm);min-width:0;overflow:hidden}.content-block-header-right[data-v-925d294a]{display:flex;align-items:center;gap:8px;flex-shrink:0}.collapse-icon[data-v-925d294a]{font-size:10px;color:var(--text-dim);width:10px;flex-shrink:0}.content-type-label[data-v-925d294a]{font-size:var(--font-size-xs);font-weight:600;letter-spacing:.5px;flex-shrink:0}.label-text[data-v-925d294a]{color:var(--text-muted)}.label-cyan[data-v-925d294a]{color:var(--cyan)}.label-success[data-v-925d294a]{color:var(--success)}.label-error[data-v-925d294a]{color:var(--error)}.label-purple[data-v-925d294a]{color:var(--purple)}.label-pink[data-v-925d294a]{color:var(--pink)}.label-warning[data-v-925d294a]{color:var(--warning)}.label-text-muted[data-v-925d294a]{color:var(--text-muted)}.collapsed-summary[data-v-925d294a]{font-size:var(--font-size-xs);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-btn[data-v-925d294a]{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--text-dim);padding:2px 6px;background:transparent}.action-btn[data-v-925d294a]:hover{color:var(--text);background:var(--bg-hover)}.content-block-body[data-v-925d294a]{padding:var(--spacing-sm)}.body-collapsed[data-v-925d294a]{max-height:200px;overflow-y:auto}.generic-content[data-v-f561650d]{font-size:var(--font-size-sm);color:var(--text-muted)}.image-media-type[data-v-051c1ea2]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.image-content[data-v-051c1ea2]{max-width:100%;max-height:400px;border:1px solid var(--border)}.line-number-pre[data-v-92f79b4e]{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:1.6;overflow-x:auto}.line[data-v-92f79b4e]{display:flex;white-space:pre-wrap;word-wrap:break-word}.line[data-v-92f79b4e]:hover{background:var(--bg-hover)}.line-no[data-v-92f79b4e]{flex-shrink:0;width:3.5em;padding-right:1em;text-align:right;color:var(--text-dim);-webkit-user-select:none;user-select:none;opacity:.5}.line-content[data-v-92f79b4e]{flex:1;min-width:0;color:var(--text)}[data-v-92f79b4e] .search-highlight{background:var(--warning);color:var(--bg);padding:0 2px}.redacted[data-v-84d8cc02]{opacity:.6}.redacted-label[data-v-84d8cc02]{font-size:var(--font-size-xs);color:var(--text-dim);font-style:italic}.thinking-text[data-v-84d8cc02]{font-size:var(--font-size-sm);color:var(--text);white-space:pre-wrap;word-wrap:break-word;line-height:1.6}[data-v-84d8cc02] .search-highlight{background:var(--warning);color:var(--bg);padding:0 2px}[data-v-84d8cc02] .content-block{border-color:#a371f74d}[data-v-84d8cc02] .content-block-header{background:var(--purple-muted)}.aggregated-stub[data-v-105a24c0]{display:flex;align-items:center;gap:8px;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border:1px solid var(--border);font-size:var(--font-size-xs)}.stub-label[data-v-105a24c0]{font-weight:600;letter-spacing:.5px;flex-shrink:0}.label-success[data-v-105a24c0]{color:var(--success)}.label-error[data-v-105a24c0]{color:var(--error)}.result-tool-name[data-v-105a24c0]{font-size:var(--font-size-xs);color:var(--text-muted);font-family:var(--font-mono)}.result-tool-id[data-v-105a24c0]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.result-error-badge[data-v-105a24c0]{font-size:var(--font-size-xs);font-weight:600;color:var(--error)}.tool-jump[data-v-105a24c0]{padding-top:var(--spacing-xs);border-top:1px solid var(--border-light);margin-top:var(--spacing-sm);margin-left:calc(-1 * var(--spacing-sm));margin-right:calc(-1 * var(--spacing-sm));margin-bottom:calc(-1 * var(--spacing-sm));padding-left:var(--spacing-sm);padding-bottom:var(--spacing-xs)}.jump-link[data-v-105a24c0]{font-size:var(--font-size-xs);color:var(--primary);cursor:pointer}.jump-link[data-v-105a24c0]:hover{text-decoration:underline}.tool-name[data-v-7674f48c]{font-size:var(--font-size-sm);color:var(--primary);font-weight:600;font-family:var(--font-mono)}.tool-id[data-v-7674f48c]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.tool-input[data-v-7674f48c]{font-size:var(--font-size-sm);color:var(--text)}.tool-aggregate-result[data-v-7674f48c]{border-top:1px solid var(--border);margin-top:var(--spacing-sm)}.tool-jump[data-v-7674f48c]{padding-top:var(--spacing-xs);border-top:1px solid var(--border-light);margin-top:var(--spacing-sm);margin-left:calc(-1 * var(--spacing-sm));margin-right:calc(-1 * var(--spacing-sm));margin-bottom:calc(-1 * var(--spacing-sm));padding-left:var(--spacing-sm);padding-bottom:var(--spacing-xs)}.jump-link[data-v-7674f48c]{font-size:var(--font-size-xs);color:var(--primary);cursor:pointer}.jump-link[data-v-7674f48c]:hover{text-decoration:underline}.content-renderer[data-v-c35b62d3]{display:flex;flex-direction:column;gap:var(--spacing-sm)}.diff-view[data-v-31c3c1bb]{overflow-x:auto;font-size:var(--font-size-sm)}.message-block[data-v-c40f156b]{border:1px solid var(--border-light);overflow:hidden}.message-block.truncated[data-v-c40f156b]{border-color:var(--error);opacity:.7;text-decoration:line-through}.msg-header[data-v-c40f156b]{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--bg-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none}.msg-header[data-v-c40f156b]:hover{background:var(--bg-hover)}.msg-header-left[data-v-c40f156b]{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden}.msg-header-right[data-v-c40f156b]{display:flex;align-items:center;gap:8px;flex-shrink:0}.collapse-icon[data-v-c40f156b]{font-size:10px;color:var(--text-dim);width:10px;flex-shrink:0}.msg-index[data-v-c40f156b]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.collapsed-summary[data-v-c40f156b]{font-size:var(--font-size-xs);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.view-toggle[data-v-c40f156b]{display:flex;gap:1px;background:var(--bg);overflow:hidden}.view-toggle button[data-v-c40f156b]{font-size:var(--font-size-xs);padding:2px 8px;color:var(--text-muted);background:var(--bg-secondary)}.view-toggle button[data-v-c40f156b]:hover{color:var(--text)}.view-toggle button.active[data-v-c40f156b]{color:var(--primary);background:var(--primary-muted)}.reset-btn[data-v-c40f156b]{font-size:var(--font-size-sm);padding:2px 6px;color:var(--text-dim);background:var(--bg-secondary);line-height:1}.reset-btn[data-v-c40f156b]:hover{color:var(--error)}.message-block.is-rewritten[data-v-c40f156b]{border-left:2px solid var(--warning)}.action-btn[data-v-c40f156b]{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--text-dim);padding:2px 6px;background:transparent}.action-btn[data-v-c40f156b]:hover{color:var(--text);background:var(--bg-hover)}.msg-body[data-v-c40f156b]{padding:var(--spacing-sm)}.msg-body.body-limited[data-v-c40f156b]{max-height:200px;overflow-y:auto}.system-message[data-v-d1aaef59]{border:1px solid rgba(163,113,247,.3);overflow:hidden;margin-bottom:var(--spacing-sm)}.system-header[data-v-d1aaef59]{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-sm);background:var(--purple-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.system-header[data-v-d1aaef59]:hover{background:#a371f733}.system-header-left[data-v-d1aaef59]{display:flex;align-items:center;gap:var(--spacing-xs);min-width:0;overflow:hidden}.collapse-icon[data-v-d1aaef59]{font-size:10px;color:var(--text-dim);width:10px;flex-shrink:0}.collapsed-summary[data-v-d1aaef59]{font-size:var(--font-size-xs);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.system-header-right[data-v-d1aaef59]{display:flex;align-items:center;gap:8px;flex-shrink:0}.view-toggle[data-v-d1aaef59]{display:flex;gap:1px;background:var(--bg);overflow:hidden}.view-toggle button[data-v-d1aaef59]{font-size:var(--font-size-xs);padding:2px 8px;color:var(--text-muted);background:var(--bg-secondary)}.view-toggle button[data-v-d1aaef59]:hover{color:var(--text)}.view-toggle button.active[data-v-d1aaef59]{color:var(--primary);background:var(--primary-muted)}.reset-btn[data-v-d1aaef59]{font-size:var(--font-size-sm);padding:2px 6px;color:var(--text-dim);background:var(--bg-secondary);line-height:1}.reset-btn[data-v-d1aaef59]:hover{color:var(--error)}.action-btn[data-v-d1aaef59]{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--text-dim);padding:2px 6px;background:transparent}.action-btn[data-v-d1aaef59]:hover{color:var(--text);background:var(--bg-hover)}.system-body[data-v-d1aaef59]{padding:var(--spacing-sm);max-height:400px;overflow-y:auto}.system-body.body-expanded[data-v-d1aaef59]{max-height:none}.system-block-item[data-v-d1aaef59]{margin-bottom:var(--spacing-sm)}.system-block-item[data-v-d1aaef59]:last-child{margin-bottom:0}.cache-label[data-v-d1aaef59]{font-size:var(--font-size-xs);color:var(--warning);font-style:italic;margin-bottom:2px}.section-block[data-v-05a7f274]{border:1px solid var(--border-light);margin-bottom:var(--spacing-sm);overflow:hidden}.section-header[data-v-05a7f274]{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none}.section-header[data-v-05a7f274]:hover{background:var(--bg-hover)}.section-chevron[data-v-05a7f274]{color:var(--text-dim);flex-shrink:0}.section-title[data-v-05a7f274]{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.section-badge[data-v-05a7f274]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.section-raw-btn[data-v-05a7f274]{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);color:var(--text-dim);padding:2px 6px;background:transparent;margin-left:auto}.section-raw-btn[data-v-05a7f274]:hover{color:var(--text);background:var(--bg-hover)}.section-body[data-v-05a7f274]{padding:var(--spacing-sm)}.truncation-divider[data-v-6369e185]{display:flex;align-items:center;gap:var(--spacing-sm);margin:var(--spacing-md) 0}.divider-line[data-v-6369e185]{flex:1;height:1px;background:var(--error);opacity:.4;border-style:dashed}.divider-content[data-v-6369e185]{display:flex;align-items:center;gap:var(--spacing-xs);flex-shrink:0}.divider-icon[data-v-6369e185]{font-size:var(--font-size-sm)}.divider-text[data-v-6369e185]{font-size:var(--font-size-xs);color:var(--error);font-weight:500}.divider-detail[data-v-6369e185]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.messages-list[data-v-55a7bdd7]{display:flex;flex-direction:column;gap:var(--spacing-sm)}.response-error[data-v-e749b03d]{background:var(--error-muted);border:1px solid var(--error);padding:var(--spacing-sm);margin-bottom:var(--spacing-sm);display:flex;align-items:baseline;gap:var(--spacing-sm)}.error-label[data-v-e749b03d]{font-size:var(--font-size-xs);font-weight:600;color:var(--error);letter-spacing:.5px}.error-text[data-v-e749b03d]{font-size:var(--font-size-sm);color:var(--error);white-space:pre-wrap;word-wrap:break-word}.base-btn[data-v-f78a7ee5]{display:inline-flex;align-items:center;gap:var(--spacing-xs);border-radius:var(--border-radius-sm);font-weight:500;white-space:nowrap;transition:all var(--transition-fast);border:1px solid var(--border);line-height:1}.base-btn[data-v-f78a7ee5]:disabled{opacity:.5;cursor:not-allowed}.btn-size-sm[data-v-f78a7ee5]{padding:4px 8px;font-size:var(--font-size-xs)}.btn-size-md[data-v-f78a7ee5]{padding:6px 12px;font-size:var(--font-size-sm)}.btn-default[data-v-f78a7ee5]{background:var(--bg-tertiary);color:var(--text)}.btn-default[data-v-f78a7ee5]:hover:not(:disabled){background:var(--bg-hover)}.btn-primary[data-v-f78a7ee5]{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}.btn-primary[data-v-f78a7ee5]:hover:not(:disabled){opacity:.9}.btn-danger[data-v-f78a7ee5]{background:transparent;color:var(--error);border-color:var(--error)}.btn-danger[data-v-f78a7ee5]:hover:not(:disabled){background:var(--error-muted)}.btn-ghost[data-v-f78a7ee5]{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost[data-v-f78a7ee5]:hover:not(:disabled){color:var(--text);background:var(--bg-tertiary)}.spinner[data-v-f78a7ee5]{width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin-f78a7ee5 .6s linear infinite}@keyframes spin-f78a7ee5{to{transform:rotate(360deg)}}.base-checkbox[data-v-5aabf3fa]{display:inline-flex;align-items:center;gap:var(--spacing-xs);cursor:pointer;font-size:var(--font-size-xs);color:var(--text-muted);-webkit-user-select:none;user-select:none}.base-checkbox input[type=checkbox][data-v-5aabf3fa]{appearance:none;width:14px;height:14px;border:1px solid var(--border);border-radius:0;background:var(--bg-tertiary);cursor:pointer;position:relative;flex-shrink:0}.base-checkbox input[type=checkbox][data-v-5aabf3fa]:checked{background:var(--primary);border-color:var(--primary)}.base-checkbox input[type=checkbox][data-v-5aabf3fa]:checked:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--primary-contrast);border-width:0 2px 2px 0;transform:rotate(45deg)}.checkbox-label[data-v-5aabf3fa]{white-space:nowrap}.detail-toolbar[data-v-72108973]{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:var(--spacing-sm);border-bottom:1px solid var(--border-light);flex-shrink:0;background:var(--bg-secondary)}.toolbar-row[data-v-72108973]{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.rewrite-row[data-v-72108973]{padding-top:var(--spacing-xs);border-top:1px solid var(--border-light);justify-content:space-between}.rewrite-stats[data-v-72108973]{display:flex;align-items:center;gap:var(--spacing-xs)}.rewrite-label[data-v-72108973]{font-size:var(--font-size-xs);color:var(--warning);font-weight:600}.rewrite-stat[data-v-72108973]{font-size:var(--font-size-xs);color:var(--text-muted);padding:1px 6px;background:var(--warning-muted);border-radius:3px}.rewrite-stat-truncated[data-v-72108973]{background:var(--error-muted);color:var(--error)}.rewrite-controls[data-v-72108973]{display:flex;align-items:center;gap:var(--spacing-sm)}.rewrite-nav[data-v-72108973]{display:flex;align-items:center;gap:2px}.nav-btn[data-v-72108973]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;color:var(--text-dim);background:var(--bg-tertiary);border:1px solid var(--border-light)}.nav-btn[data-v-72108973]:hover{color:var(--text);background:var(--bg-hover)}.nav-label[data-v-72108973]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono);min-width:32px;text-align:center}.headers-section[data-v-541b6987]{display:flex;flex-direction:column}.headers-toggle[data-v-541b6987]{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--text-muted);padding:var(--spacing-xs) 0;background:none;cursor:pointer;text-align:left}.headers-toggle[data-v-541b6987]:hover{color:var(--text)}.toggle-icon[data-v-541b6987]{font-family:var(--font-mono);width:12px;text-align:center;font-weight:600}.header-count[data-v-541b6987]{color:var(--text-dim)}.headers-grid[data-v-541b6987]{display:flex;flex-direction:column;margin-top:var(--spacing-xs)}.header-row[data-v-541b6987]{display:flex;gap:var(--spacing-sm);padding:2px 0;font-size:10px;border-bottom:1px solid var(--border-light)}.header-name[data-v-541b6987]{flex:0 0 200px;color:var(--text-dim);font-family:var(--font-mono);word-break:break-all}.header-value[data-v-541b6987]{flex:1;color:var(--text-muted);font-family:var(--font-mono);word-break:break-all}.meta-grid[data-v-0b8e56cc]{display:flex;flex-direction:column;gap:4px}.meta-row[data-v-0b8e56cc]{display:flex;align-items:baseline;gap:var(--spacing-sm);padding:2px 0}.meta-label[data-v-0b8e56cc]{font-size:var(--font-size-xs);color:var(--text-dim);min-width:90px;flex-shrink:0}.meta-label--attempt[data-v-0b8e56cc]{font-weight:600;color:var(--text-muted)}.meta-value[data-v-0b8e56cc]{font-size:var(--font-size-xs);color:var(--text)}.meta-value.mono[data-v-0b8e56cc]{font-family:var(--font-mono)}.text-success[data-v-0b8e56cc]{color:var(--success)}.text-error[data-v-0b8e56cc]{color:var(--error)}.meta-section[data-v-0b8e56cc]{margin-top:var(--spacing-xs);padding-top:var(--spacing-xs);border-top:1px solid var(--border-light)}.meta-section .meta-row[data-v-0b8e56cc]{display:flex;align-items:baseline;gap:var(--spacing-md);padding:2px 0}.meta-section-title[data-v-0b8e56cc]{font-size:var(--font-size-xs);font-weight:600;color:var(--text-muted);margin-bottom:var(--spacing-xs)}.error-text[data-v-0b8e56cc]{color:var(--error)}.raw-body[data-v-0b8e56cc]{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);background:var(--bg-tertiary);padding:var(--spacing-sm);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.sse-timeline[data-v-cd3358e8]{font-family:var(--font-mono);font-size:var(--font-size-xs)}.sse-event[data-v-cd3358e8]{display:flex;align-items:baseline;gap:var(--spacing-sm);padding:2px 0;border-bottom:1px solid var(--border-light)}.sse-event[data-v-cd3358e8]:last-child{border-bottom:none}.sse-offset[data-v-cd3358e8]{flex-shrink:0;width:64px;text-align:right;color:var(--text-dim)}.sse-type[data-v-cd3358e8]{flex-shrink:0;min-width:160px;font-weight:500}.sse-type-green[data-v-cd3358e8]{color:var(--success)}.sse-type-blue[data-v-cd3358e8]{color:var(--info)}.sse-type-cyan[data-v-cd3358e8]{color:var(--primary)}.sse-type-red[data-v-cd3358e8]{color:var(--error)}.sse-type-dim[data-v-cd3358e8]{color:var(--text-dim)}.sse-type-default[data-v-cd3358e8]{color:var(--text)}.sse-summary[data-v-cd3358e8]{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-panel[data-v-8d722e99]{display:flex;flex-direction:column;height:100%;background:var(--bg)}.detail-empty[data-v-8d722e99]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-dim);gap:var(--spacing-xs)}.detail-hint[data-v-8d722e99]{font-size:var(--font-size-xs);opacity:.6}.detail-body[data-v-8d722e99]{flex:1;overflow-y:auto;padding:var(--spacing-sm)}.headers-section-wrap[data-v-8d722e99]{display:flex;flex-direction:column;gap:var(--spacing-md)}.headers-group[data-v-8d722e99]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.headers-group-title[data-v-8d722e99]{font-size:var(--font-size-xs);font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border)}.headers-grid[data-v-8d722e99]{display:flex;flex-direction:column}.header-row[data-v-8d722e99]{display:flex;gap:var(--spacing-sm);padding:2px 0;font-size:var(--font-size-xs);border-bottom:1px solid var(--border-light)}.header-name[data-v-8d722e99]{flex:0 0 220px;color:var(--text-dim);font-family:var(--font-mono);word-break:break-all}.header-value[data-v-8d722e99]{flex:1;color:var(--text);font-family:var(--font-mono);word-break:break-all}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{d as I,a3 as Be,g as r,j as s,t as u,a0 as te,r as E,o as n,m as ue,E as ce,f as y,y as ve,Q as de,F as H,k as P,h as Oe,a1 as v,u as f,I as pe,n as K,i as V,c as k,e as q,_ as A,$ as U,s as x,l as R,Z as F,a as re}from"./vue-Bmo88J5t.js";import{_ as B}from"./index-cupXJxSz.js";import{I as z,u as we,a as W,b as qe,B as le,R as Ee}from"./BaseSelect-CttLMFCN.js";import{u as be}from"./useInjectedHistoryStore-Dx7UlhLw.js";import{u as se}from"./useFormatters-BBIZmSf2.js";import{P as Ve,c as De,h as Ne}from"./vendor-CmGvxZwr.js";function ie(e){return e?typeof e=="string"?e:Array.isArray(e)?e.map(t=>t.type==="text"&&"text"in t?t.text:t.type==="thinking"&&"thinking"in t?t.thinking:t.type==="tool_use"&&"name"in t?`[Tool: ${t.name}]`:t.type==="tool_result"?"[Tool Result]":"").filter(Boolean).join(" "):"":""}function xa(e){return"previewText"in e?e.responseSuccess===void 0?"pending":e.responseSuccess?"success":"error":e.response?e.response.success?"success":"error":"pending"}const Le={key:0,class:"error-boundary"},ze={class:"error-label"},He={class:"error-message"},Ae=I({__name:"ErrorBoundary",props:{label:{}},setup(e){const t=E(null);return Be(i=>(t.value=i,console.error("[ErrorBoundary]",i),!1)),(i,a)=>t.value?(n(),r("div",Le,[a[0]||(a[0]=s("span",{class:"error-icon"},"!",-1)),s("span",ze,u(e.label||"Render error"),1),s("span",He,u(t.value.message),1)])):te(i.$slots,"default",{key:1},void 0)}}),Y=B(Ae,[["__scopeId","data-v-447f57f3"]]),ke=Symbol("contentContext");function Ue(e){ce(ke,e)}function ne(){const e=ue(ke);if(!e)throw new Error("useContentContext() called outside of ContentContext provider");return e}function je(e){const t=y(()=>{const c=e.value;if(!c?.pipelineInfo?.truncation)return-1;const b=c.pipelineInfo.truncation.removedMessageCount;if(!b)return-1;const C=c.pipelineInfo.messageMapping;return C&&C.length>0?C[0]:b}),i=y(()=>{const c=new Map,b=e.value;if(!b?.effectiveRequest?.messages||!b.pipelineInfo?.messageMapping)return c;const C=b.effectiveRequest.messages,S=b.pipelineInfo.messageMapping;for(const[D,N]of S.entries())c.set(N,C[D]);return c}),a=y(()=>{const c=new Set,b=e.value;if(!b?.effectiveRequest?.messages)return c;const C=b.request.messages??[];for(const[S,D]of i.value){const N=C[S];N&&N.content!==D.content&&JSON.stringify(N.content)!==JSON.stringify(D.content)&&c.add(S)}return c}),g=y(()=>{const c=e.value;return c?.effectiveRequest?a.value.size>0||!!c.effectiveRequest.system:!1}),o=y(()=>{const c=e.value;if(!c?.effectiveRequest?.system)return!1;const b=c.request.system,C=c.effectiveRequest.system;return!b||!C?!!C:JSON.stringify(b)!==JSON.stringify(C)}),l=y(()=>{const c=a.value.size,b=o.value,C=t.value>=0,S=C?t.value:0;return{msgCount:c,sysRewritten:b,truncated:C,truncatedCount:S}}),p=y(()=>[...a.value].sort((c,b)=>c-b));function m(c){return i.value.get(c)??null}function h(c){return a.value.has(c)}function $(c){const b=t.value;return b<0?!1:c<b}return{truncationPoint:t,hasRewrites:g,isSystemRewritten:o,rewriteSummary:l,rewrittenIndices:a,rewrittenIndexList:p,getRewrittenMessage:m,isMessageRewritten:h,isMessageTruncated:$}}const he=Symbol("rawModal");function Fe(){const e=E(!1),t=ve(null),i=ve(null),a=E("");function g(o,l,p){t.value=o,i.value=p??null,a.value=l,e.value=!0}return ce(he,{openRawModal:g}),{visible:e,data:t,rewrittenData:i,title:a,openRawModal:g}}function oe(){const e=ue(he);if(!e)throw new Error("useRawModal() called outside of RawModal provider");return e}const xe=Symbol("sharedResizeObserver");function Pe(){const e=new Map,t=new Set;let i=null;const a=new ResizeObserver(p=>{for(const m of p)t.add(m.target);i===null&&(i=requestAnimationFrame(()=>{i=null;for(const m of t)e.get(m)?.();t.clear()}))});function g(p,m){e.set(p,m),a.observe(p)}function o(p){e.delete(p),a.unobserve(p)}de(()=>{a.disconnect(),e.clear(),t.clear(),i!==null&&cancelAnimationFrame(i)});const l={observe:g,unobserve:o};return ce(xe,l),l}function Re(){const e=ue(xe);if(!e)throw new Error("useSharedResizeObserver() called outside of provider");return e}function $e(e){return e.type==="text"}function Je(e){return e.type==="thinking"}function Qe(e){return e.type==="redacted_thinking"}function Te(e){return e.type==="tool_use"}function _e(e){return e.type==="tool_result"}function We(e){return e.type==="image"}function Ge(e){if(e.role==="tool"&&e.tool_call_id){const i=typeof e.content=="string"?e.content:JSON.stringify(e.content);return[{type:"tool_result",tool_use_id:e.tool_call_id,content:i}]}const t=[];if(typeof e.content=="string"?e.content&&t.push({type:"text",text:e.content}):Array.isArray(e.content)&&t.push(...e.content),e.tool_calls)for(const i of e.tool_calls){let a;try{a=JSON.parse(i.function.arguments)}catch{a={_raw:i.function.arguments}}t.push({type:"tool_use",id:i.id,name:i.function.name,input:a})}return t}const Ke={class:"attempts-timeline"},Ye={class:"timeline-title"},Xe={class:"timeline-track"},Ze={class:"node-info"},et={class:"node-header"},tt={class:"node-index"},st={key:0,class:"node-strategy"},nt={class:"node-duration"},at={key:0,class:"node-error"},ot={key:1,class:"node-truncation"},lt={key:2,class:"node-meta"},rt=I({__name:"AttemptsTimeline",props:{attempts:{}},setup(e){const{formatDuration:t,formatNumber:i}=se();function a(g){return g.error?"var(--error)":"var(--success)"}return(g,o)=>(n(),r("div",Ke,[s("div",Ye,"Retry Timeline ("+u(e.attempts.length)+" attempts)",1),s("div",Xe,[(n(!0),r(H,null,P(e.attempts,l=>(n(),r("div",{key:l.index,class:"timeline-node"},[s("div",{class:"node-dot",style:Oe({background:a(l)})},null,4),s("div",Ze,[s("div",et,[s("span",tt,"#"+u(l.index+1),1),l.strategy?(n(),r("span",st,u(l.strategy),1)):v("",!0),s("span",nt,u(f(t)(l.durationMs)),1)]),l.error?(n(),r("div",at,u(l.error),1)):v("",!0),l.truncation?.wasTruncated?(n(),r("div",ot," Truncated: "+u(f(i)(l.truncation.originalTokens))+" -> "+u(f(i)(l.truncation.compactedTokens))+" tokens, "+u(l.truncation.removedMessageCount)+" msg removed ",1)):v("",!0),l.effectiveMessageCount?(n(),r("div",lt,u(l.effectiveMessageCount)+" messages ",1)):v("",!0)])]))),128))])]))}}),it=B(rt,[["__scopeId","data-v-6574832d"]]),ut=["id"],ct={class:"content-block-header-left"},dt={class:"collapse-icon"},mt=["title"],vt={class:"content-block-header-right"},ft=["title"],yt=I({__name:"ContentBlockWrapper",props:{label:{},labelColor:{default:"text-muted"},summary:{default:""},blockId:{},copyText:{},rawData:{},rawTitle:{default:"Raw"}},setup(e){const t=e,{copy:i}=we(),{openRawModal:a}=oe(),g=Re(),o=E(!1),l=E(!1),p=E(!1),m=E();function h(){o.value=!o.value}function $(S){S.stopPropagation(),l.value=!l.value}function c(S){S.stopPropagation(),t.copyText&&i(t.copyText)}function b(S){S.stopPropagation(),t.rawData!==void 0&&a(t.rawData,t.rawTitle)}function C(){m.value&&(p.value=m.value.scrollHeight>208)}return pe(()=>{m.value&&(g.observe(m.value,C),K(C))}),de(()=>{m.value&&g.unobserve(m.value)}),(S,D)=>(n(),r("div",{class:"content-block",id:e.blockId},[s("div",{class:"content-block-header",onClick:h},[s("div",ct,[s("span",dt,u(o.value?"▸":"▾"),1),s("span",{class:V(["content-type-label","label-"+e.labelColor])},u(e.label),3),te(S.$slots,"header-extra",{},void 0),o.value&&e.summary?(n(),r("span",{key:0,class:"collapsed-summary",title:e.summary},u(e.summary),9,mt)):v("",!0)]),s("div",vt,[!o.value&&p.value?(n(),r("button",{key:0,class:"action-btn",title:l.value?"Collapse":"Expand",onClick:$},[k(z,{name:l.value?"contract":"expand",size:10},null,8,["name"]),q(" "+u(l.value?"Collapse":"Expand"),1)],8,ft)):v("",!0),e.copyText?(n(),r("button",{key:1,class:"action-btn",title:"Copy",onClick:c},[k(z,{name:"copy",size:10}),D[0]||(D[0]=q(" Copy ",-1))])):v("",!0),e.rawData!==void 0?(n(),r("button",{key:2,class:"action-btn",title:"View raw JSON",onClick:b},[k(z,{name:"code",size:10}),D[1]||(D[1]=q(" Raw ",-1))])):v("",!0)])]),A(s("div",{ref_key:"bodyRef",ref:m,class:V(["content-block-body",{"body-collapsed":!l.value}])},[te(S.$slots,"default",{},void 0)],2),[[U,!o.value]])],8,ut))}}),X=B(yt,[["__scopeId","data-v-925d294a"]]),gt={class:"generic-content"},pt=I({__name:"GenericBlock",props:{block:{}},setup(e){const t=e,i=y(()=>(t.block.type||"UNKNOWN").toUpperCase()),a=y(()=>{try{return JSON.stringify(t.block,null,2)}catch{return String(t.block)}});return(g,o)=>(n(),x(X,{label:i.value,"label-color":"text-muted",summary:e.block.type||"unknown","raw-data":e.block,"raw-title":"Raw — "+(e.block.type||"unknown")},{default:R(()=>[s("pre",gt,u(a.value),1)]),_:1},8,["label","summary","raw-data","raw-title"]))}}),wt=B(pt,[["__scopeId","data-v-f561650d"]]),bt={class:"image-media-type"},kt=["src"],ht=I({__name:"ImageBlock",props:{mediaType:{},data:{}},setup(e){return(t,i)=>(n(),x(X,{label:"IMAGE","label-color":"pink",summary:e.mediaType,"raw-data":{type:"image",source:{type:"base64",media_type:e.mediaType}},"raw-title":"Raw — image"},{"header-extra":R(()=>[s("span",bt,u(e.mediaType),1)]),default:R(()=>[s("img",{src:"data:"+e.mediaType+";base64,"+e.data,alt:"Image content",class:"image-content"},null,8,kt)]),_:1},8,["summary","raw-data"]))}}),xt=B(ht,[["__scopeId","data-v-051c1ea2"]]),Rt={class:"line-number-pre"},$t={class:"line-no"},Tt=["innerHTML"],_t=I({__name:"LineNumberPre",props:{html:{}},setup(e){const t=e,i=y(()=>t.html.split(`
|
|
2
|
+
`));return(a,g)=>(n(),r("div",Rt,[(n(!0),r(H,null,P(i.value,(o,l)=>(n(),r("div",{key:l,class:"line"},[s("span",$t,u(l+1),1),s("span",{class:"line-content",innerHTML:o||""},null,8,Tt)]))),128))]))}}),ae=B(_t,[["__scopeId","data-v-92f79b4e"]]);function me(e,t){const{highlightSearch:i,escapeHtml:a}=se();return{displayHtml:y(()=>{const o=typeof e=="function"?e():f(e),l=typeof t=="function"?t():f(t);return l?i(o,l):a(o)})}}const Mt=I({__name:"TextBlock",props:{text:{}},setup(e){const t=e,{searchQuery:i}=ne(),a=y(()=>t.text.length>60?t.text.slice(0,60)+"...":t.text),{displayHtml:g}=me(()=>t.text,i);return(o,l)=>(n(),x(X,{label:"TEXT","label-color":"text-muted",summary:a.value,"copy-text":e.text,"raw-data":{type:"text",text:e.text},"raw-title":"Raw — text"},{default:R(()=>[k(ae,{html:f(g)},null,8,["html"])]),_:1},8,["summary","copy-text","raw-data"]))}}),Ct={key:0,class:"redacted-label"},St=["innerHTML"],It=I({__name:"ThinkingBlock",props:{text:{},redacted:{type:Boolean,default:!1}},setup(e){const t=e,{searchQuery:i}=ne(),a=y(()=>t.redacted?"[redacted]":t.text.length>60?t.text.slice(0,60)+"...":t.text),{displayHtml:g}=me(()=>t.text,i),o=y(()=>t.redacted?"<em>[Thinking content redacted]</em>":g.value);return(l,p)=>(n(),x(X,{label:"THINKING","label-color":"purple",summary:a.value,"copy-text":e.redacted?void 0:e.text,"raw-data":e.redacted?void 0:{type:"thinking",thinking:e.text},"raw-title":"Raw — thinking",class:V({redacted:e.redacted})},{"header-extra":R(()=>[e.redacted?(n(),r("span",Ct,"REDACTED")):v("",!0)]),default:R(()=>[s("pre",{class:"thinking-text",innerHTML:o.value},null,8,St)]),_:1},8,["summary","copy-text","raw-data","class"]))}}),fe=B(It,[["__scopeId","data-v-84d8cc02"]]),Bt=["id"],Ot={key:0,class:"result-tool-name"},qt={class:"result-tool-id"},Et={key:1,class:"result-error-badge"},Vt={key:0,class:"result-tool-name"},Dt={class:"result-tool-id"},Nt={key:1,class:"result-error-badge"},Lt={key:0,class:"tool-jump"},zt=I({__name:"ToolResultBlock",props:{block:{},toolName:{},embedded:{type:Boolean}},setup(e){const t=e,{searchQuery:i,aggregateTools:a,scrollToCall:g}=ne(),o=y(()=>a.value&&!t.embedded),l=y(()=>t.block.is_error===!0),p=y(()=>{const $=t.block.content;return typeof $=="string"?$:Array.isArray($)?ie($):""}),m=y(()=>t.toolName||"for "+t.block.tool_use_id.slice(0,8)),{displayHtml:h}=me(p,i);return($,c)=>(n(),r(H,null,[A(s("div",{class:"aggregated-stub",id:o.value?"tool-result-"+e.block.tool_use_id:void 0},[s("span",{class:V(["stub-label",l.value?"label-error":"label-success"])},"TOOL RESULT",2),e.toolName?(n(),r("span",Ot,u(e.toolName),1)):v("",!0),s("span",qt,u(e.block.tool_use_id),1),l.value?(n(),r("span",Et,"ERROR")):v("",!0),s("a",{class:"jump-link",onClick:c[0]||(c[0]=F(b=>f(g)(e.block.tool_use_id),["prevent"]))}," ← Jump to call ")],8,Bt),[[U,o.value]]),A(k(X,{label:"TOOL RESULT","label-color":l.value?"error":"success",summary:m.value,"block-id":"tool-result-"+e.block.tool_use_id,"copy-text":p.value,"raw-data":e.block,"raw-title":"Raw — tool_result"+(e.toolName?": "+e.toolName:"")},{"header-extra":R(()=>[e.toolName?(n(),r("span",Vt,u(e.toolName),1)):v("",!0),s("span",Dt,"for "+u(e.block.tool_use_id),1),l.value?(n(),r("span",Nt,"ERROR")):v("",!0)]),default:R(()=>[k(ae,{html:f(h)},null,8,["html"]),e.embedded?v("",!0):(n(),r("div",Lt,[s("a",{class:"jump-link",onClick:c[1]||(c[1]=F(b=>f(g)(e.block.tool_use_id),["prevent"]))}," ← Jump to call ")]))]),_:1},8,["label-color","summary","block-id","copy-text","raw-data","raw-title"]),[[U,!o.value]])],64))}}),Me=B(zt,[["__scopeId","data-v-105a24c0"]]),Ht={class:"tool-name"},At={class:"tool-id"},Ut={key:1,class:"tool-input"},jt={class:"tool-aggregate-result"},Ft={class:"tool-jump"},Pt=I({__name:"ToolUseBlock",props:{block:{}},setup(e){const t=e,{aggregateTools:i,toolResultMap:a,scrollToResult:g}=ne(),o=y(()=>{try{return JSON.stringify(t.block.input,null,2)}catch{return String(t.block.input)}}),l=y(()=>t.block.input!==null&&typeof t.block.input=="object"),p=y(()=>a.value?a.value[t.block.id]??null:null),m=y(()=>!!p.value);return(h,$)=>(n(),x(X,{label:"TOOL USE","label-color":"cyan",summary:e.block.name,"block-id":"tool-use-"+e.block.id,"copy-text":o.value,"raw-data":e.block,"raw-title":"Raw — tool_use: "+e.block.name},{"header-extra":R(()=>[s("span",Ht,u(e.block.name),1),s("span",At,u(e.block.id),1)]),default:R(()=>[l.value?(n(),x(f(Ve),{key:0,data:e.block.input,deep:3,"show-icon":!0,"show-line-number":!0,"collapsed-on-click-brackets":!0},null,8,["data"])):(n(),r("pre",Ut,u(o.value),1)),m.value?(n(),r(H,{key:2},[A(s("div",jt,[k(Me,{block:p.value,"tool-name":e.block.name,embedded:!0},null,8,["block","tool-name"])],512),[[U,f(i)]]),A(s("div",Ft,[s("a",{class:"jump-link",onClick:$[0]||($[0]=F(c=>f(g)(e.block.id),["prevent"]))}," → Jump to result ")],512),[[U,!f(i)]])],64)):v("",!0)]),_:1},8,["summary","block-id","copy-text","raw-data","raw-title"]))}}),Jt=B(Pt,[["__scopeId","data-v-7674f48c"]]),Qt={class:"content-renderer"},Wt=I({__name:"ContentRenderer",props:{content:{},message:{}},setup(e){const t=e,{filterType:i,toolUseNameMap:a}=ne(),g=y(()=>t.message?Ge(t.message):typeof t.content=="string"?[{type:"text",text:t.content}]:Array.isArray(t.content)?t.content:[]),o=y(()=>{let l=g.value;return i.value&&(l=l.filter(p=>p.type===i.value)),l});return(l,p)=>(n(),r("div",Qt,[(n(!0),r(H,null,P(o.value,(m,h)=>(n(),x(Y,{key:h,label:m.type+" block"},{default:R(()=>[f($e)(m)?(n(),x(Mt,{key:0,text:m.text},null,8,["text"])):f(Je)(m)?(n(),x(fe,{key:1,text:m.thinking},null,8,["text"])):f(Qe)(m)?(n(),x(fe,{key:2,text:"",redacted:!0})):f(We)(m)&&m.source.type==="base64"?(n(),x(xt,{key:3,"media-type":m.source.media_type,data:m.source.data},null,8,["media-type","data"])):f(Te)(m)?(n(),x(Jt,{key:4,block:m},null,8,["block"])):f(_e)(m)?(n(),x(Me,{key:5,block:m,"tool-name":f(a)[m.tool_use_id]},null,8,["block","tool-name"])):(n(),x(wt,{key:6,block:m},null,8,["block"]))]),_:2},1032,["label"]))),128))]))}}),Gt=B(Wt,[["__scopeId","data-v-c35b62d3"]]),Kt=["innerHTML"],Yt=I({__name:"DiffView",props:{oldText:{},newText:{},outputFormat:{default:"side-by-side"}},setup(e){const t=e,i=y(()=>{try{const a=De("original","rewritten",t.oldText,t.newText);return Ne(a,{outputFormat:t.outputFormat,drawFileList:!1,matching:"lines"})}catch{return"<pre>Diff generation failed</pre>"}});return(a,g)=>(n(),r("div",{class:"diff-view",innerHTML:i.value},null,8,Kt))}}),Ce=B(Yt,[["__scopeId","data-v-31c3c1bb"]]),Xt=["data-msg-index"],Zt={class:"msg-header-left"},es={class:"collapse-icon"},ts={class:"msg-index"},ss=["title"],ns={class:"msg-header-right"},as=["title"],os=I({__name:"MessageBlock",props:{message:{},index:{},isTruncated:{type:Boolean,default:!1},isRewritten:{type:Boolean,default:!1},rewrittenMessage:{},globalViewMode:{}},setup(e){const t=e,i=E(!1),a=E(!1),g=E(!1),o=E(),{openRawModal:l}=oe(),p=Re(),m=E(null),h=y(()=>m.value?m.value:t.globalViewMode&&t.isRewritten&&t.rewrittenMessage?t.globalViewMode:"original"),$=y(()=>m.value!==null);function c(O){m.value=O}function b(){m.value=null}const C=y(()=>{switch(t.message.role){case"user":return"primary";case"assistant":return"success";case"system":return"purple";case"tool":return"cyan";default:return"default"}}),S=y(()=>{const O=t.message.content;if(typeof O=="string")return O.length>80?O.slice(0,80)+"...":O;if(!Array.isArray(O)||O.length===0)return"";const T=O[0];if(O.length===1&&$e(T)){const d=T.text;return d.length>80?d.slice(0,80)+"...":d}const _={};for(const d of O)_[d.type]=(_[d.type]||0)+1;return Object.entries(_).map(([d,w])=>`${w} ${d}`).join(", ")}),D=y(()=>ie(t.message.content)),N=y(()=>t.rewrittenMessage?ie(t.rewrittenMessage.content):""),J=y(()=>h.value==="rewritten"&&t.rewrittenMessage?t.rewrittenMessage.content??"":t.message.content??""),Z=y(()=>h.value==="rewritten"&&t.rewrittenMessage?t.rewrittenMessage:t.message);function j(){o.value&&!a.value&&(g.value=o.value.scrollHeight>o.value.clientHeight+10)}function ee(O){O.stopPropagation(),a.value=!a.value,a.value||K(j)}function G(O){O.stopPropagation(),l(t.message,`Raw — ${t.message.role} #${t.index+1}`,t.isRewritten?t.rewrittenMessage:void 0)}return pe(()=>{K(()=>{j(),o.value&&p.observe(o.value,j)})}),de(()=>{o.value&&p.unobserve(o.value)}),re(()=>t.message,()=>{a.value=!1,K(j)}),(O,T)=>(n(),r("div",{class:V(["message-block",{truncated:e.isTruncated,collapsed:i.value,"is-rewritten":e.isRewritten}]),"data-msg-index":e.index},[s("div",{class:"msg-header",onClick:T[7]||(T[7]=_=>i.value=!i.value)},[s("div",Zt,[s("span",es,u(i.value?"▸":"▾"),1),k(W,{color:C.value},{default:R(()=>[q(u(e.message.role),1)]),_:1},8,["color"]),s("span",ts,"#"+u(e.index+1),1),e.isRewritten?(n(),x(W,{key:0,color:"warning"},{default:R(()=>[...T[8]||(T[8]=[q("rewritten",-1)])]),_:1})):v("",!0),e.isTruncated?(n(),x(W,{key:1,color:"error"},{default:R(()=>[...T[9]||(T[9]=[q("truncated",-1)])]),_:1})):v("",!0),i.value&&S.value?(n(),r("span",{key:2,class:"collapsed-summary",title:S.value},u(S.value),9,ss)):v("",!0)]),s("div",ns,[e.isRewritten&&e.rewrittenMessage?(n(),r("div",{key:0,class:"view-toggle",onClick:T[4]||(T[4]=F(()=>{},["stop"]))},[s("button",{class:V({active:h.value==="original"}),onClick:T[0]||(T[0]=_=>c("original"))}," Original ",2),s("button",{class:V({active:h.value==="rewritten"}),onClick:T[1]||(T[1]=_=>c("rewritten"))}," Rewritten ",2),s("button",{class:V({active:h.value==="diff"}),onClick:T[2]||(T[2]=_=>c("diff"))}," Diff ",2),$.value?(n(),r("button",{key:0,class:"reset-btn",title:"Reset to global view mode",onClick:T[3]||(T[3]=_=>b())}," × ")):v("",!0)])):v("",!0),s("button",{class:"action-btn",title:"View raw JSON",onClick:T[5]||(T[5]=_=>G(_))},[k(z,{name:"code",size:10}),T[10]||(T[10]=q(" Raw ",-1))]),g.value&&!i.value?(n(),r("button",{key:1,class:"action-btn",onClick:T[6]||(T[6]=_=>ee(_)),title:a.value?"Collapse content":"Show full content"},[k(z,{name:a.value?"contract":"expand",size:10},null,8,["name"]),q(" "+u(a.value?"Collapse":"Expand"),1)],8,as)):v("",!0)])]),A(s("div",{ref_key:"bodyRef",ref:o,class:V(["msg-body",{"body-limited":g.value&&!a.value}])},[h.value==="diff"&&e.isRewritten?(n(),x(Ce,{key:0,"old-text":D.value,"new-text":N.value},null,8,["old-text","new-text"])):(n(),x(Gt,{key:1,content:J.value,message:Z.value},null,8,["content","message"]))],2),[[U,!i.value]])],10,Xt))}}),Se=B(os,[["__scopeId","data-v-c40f156b"]]),ls={class:"system-header-left"},rs={class:"collapse-icon"},is=["title"],us={class:"system-header-right"},cs={key:0,class:"cache-label"},ds=I({__name:"SystemMessage",props:{system:{},rewrittenSystem:{},searchQuery:{},globalViewMode:{}},setup(e){const t=e,{highlightSearch:i,escapeHtml:a}=se(),{copy:g}=we(),{openRawModal:o}=oe(),l=E(!1),p=E(!1),m=E(null),h=y(()=>m.value?m.value:t.globalViewMode&&N.value?t.globalViewMode:"original"),$=y(()=>m.value!==null);function c(_){m.value=_}function b(){m.value=null}function C(_){return typeof _=="string"?_:Array.isArray(_)?_.map(d=>d.text).join(`
|
|
3
|
+
`):""}const S=y(()=>C(t.system)),D=y(()=>t.rewrittenSystem?C(t.rewrittenSystem):""),N=y(()=>!!t.rewrittenSystem),J=y(()=>h.value==="rewritten"&&N.value?D.value:S.value),Z=y(()=>t.searchQuery?i(J.value,t.searchQuery):a(J.value)),j=y(()=>{const _=S.value;return _.length>80?_.slice(0,80)+"...":_}),ee=y(()=>typeof t.system=="string"?[{type:"text",text:t.system}]:t.system),G=y(()=>typeof t.system=="string"?!1:t.system.some(_=>_.cache_control)),O=y(()=>({system:t.system})),T=y(()=>t.rewrittenSystem?{system:t.rewrittenSystem}:null);return(_,d)=>(n(),r("div",{class:V(["system-message",{collapsed:l.value}])},[s("div",{class:"system-header",onClick:d[9]||(d[9]=w=>l.value=!l.value)},[s("div",ls,[s("span",rs,u(l.value?"▸":"▾"),1),k(W,{color:"purple"},{default:R(()=>[...d[10]||(d[10]=[q("system",-1)])]),_:1}),G.value?(n(),x(W,{key:0,color:"warning"},{default:R(()=>[...d[11]||(d[11]=[q("cached",-1)])]),_:1})):v("",!0),N.value?(n(),x(W,{key:1,color:"warning"},{default:R(()=>[...d[12]||(d[12]=[q("rewritten",-1)])]),_:1})):v("",!0),l.value?(n(),r("span",{key:2,class:"collapsed-summary",title:j.value},u(j.value),9,is)):v("",!0)]),s("div",us,[N.value&&!l.value?(n(),r("div",{key:0,class:"view-toggle",onClick:d[4]||(d[4]=F(()=>{},["stop"]))},[s("button",{class:V({active:h.value==="original"}),onClick:d[0]||(d[0]=w=>c("original"))}," Original ",2),s("button",{class:V({active:h.value==="rewritten"}),onClick:d[1]||(d[1]=w=>c("rewritten"))}," Rewritten ",2),s("button",{class:V({active:h.value==="diff"}),onClick:d[2]||(d[2]=w=>c("diff"))}," Diff ",2),$.value?(n(),r("button",{key:0,class:"reset-btn",title:"Reset to global view mode",onClick:d[3]||(d[3]=w=>b())}," × ")):v("",!0)])):v("",!0),l.value?v("",!0):A((n(),r("button",{key:1,class:"action-btn",onClick:d[5]||(d[5]=F(w=>p.value=!p.value,["stop"]))},[k(z,{name:"expand",size:10}),d[13]||(d[13]=q(" Expand ",-1))],512)),[[U,!p.value]]),!l.value&&p.value?(n(),r("button",{key:2,class:"action-btn",onClick:d[6]||(d[6]=F(w=>p.value=!1,["stop"]))},[k(z,{name:"contract",size:10}),d[14]||(d[14]=q(" Collapse ",-1))])):v("",!0),s("button",{class:"action-btn",title:"Copy",onClick:d[7]||(d[7]=F(w=>f(g)(J.value),["stop"]))},[k(z,{name:"copy",size:10}),d[15]||(d[15]=q(" Copy ",-1))]),s("button",{class:"action-btn",title:"View raw JSON",onClick:d[8]||(d[8]=F(w=>f(o)(O.value,"Raw — system",T.value),["stop"]))},[k(z,{name:"code",size:10}),d[16]||(d[16]=q(" Raw ",-1))])])]),A(s("div",{class:V(["system-body",{"body-expanded":p.value}])},[h.value==="diff"&&N.value?(n(),x(Ce,{key:0,"old-text":S.value,"new-text":D.value},null,8,["old-text","new-text"])):h.value==="original"&&typeof e.system!="string"?(n(!0),r(H,{key:1},P(ee.value,(w,M)=>(n(),r("div",{key:M,class:"system-block-item"},[w.cache_control?(n(),r("div",cs," [cache: "+u(w.cache_control.type)+"] ",1)):v("",!0),k(ae,{html:e.searchQuery?f(i)(w.text,e.searchQuery):f(a)(w.text)},null,8,["html"])]))),128)):(n(),x(ae,{key:2,html:Z.value},null,8,["html"]))],2),[[U,!l.value]])],2))}}),ms=B(ds,[["__scopeId","data-v-d1aaef59"]]),vs={class:"section-title"},fs={key:0,class:"section-badge"},ys={class:"section-body"},gs=I({__name:"SectionBlock",props:{title:{},defaultCollapsed:{type:Boolean},badge:{},rawData:{},rewrittenRawData:{},rawTitle:{default:"Raw"}},setup(e){const t=e,{openRawModal:i}=oe(),a=E(t.defaultCollapsed??!1);function g(){a.value=!a.value}function o(l){l.stopPropagation(),t.rawData!==void 0&&i(t.rawData,t.rawTitle,t.rewrittenRawData)}return(l,p)=>(n(),r("div",{class:V(["section-block",{collapsed:a.value}])},[s("div",{class:"section-header",onClick:g},[k(z,{name:a.value?"chevron-right":"chevron-down",size:12,class:"section-chevron"},null,8,["name"]),s("span",vs,u(e.title),1),e.badge?(n(),r("span",fs,u(e.badge),1)):v("",!0),e.rawData!==void 0?(n(),r("button",{key:1,class:"section-raw-btn",title:"View raw JSON",onClick:o},[k(z,{name:"code",size:10}),p[0]||(p[0]=q(" Raw ",-1))])):v("",!0)]),A(s("div",ys,[te(l.$slots,"default",{},void 0)],512),[[U,!a.value]])],2))}}),Q=B(gs,[["__scopeId","data-v-05a7f274"]]),ps={class:"truncation-divider"},ws={class:"divider-content"},bs={class:"divider-text"},ks={class:"divider-detail"},hs=I({__name:"TruncationDivider",props:{truncation:{}},setup(e){const{formatNumber:t,formatDuration:i}=se();return(a,g)=>(n(),r("div",ps,[g[1]||(g[1]=s("div",{class:"divider-line"},null,-1)),s("div",ws,[g[0]||(g[0]=s("span",{class:"divider-icon"},"✂",-1)),s("span",bs,u(e.truncation.removedMessageCount)+" messages truncated ",1),s("span",ks,u(f(t)(e.truncation.originalTokens))+" → "+u(f(t)(e.truncation.compactedTokens))+" tokens ("+u(f(i)(e.truncation.processingTimeMs))+") ",1)]),g[2]||(g[2]=s("div",{class:"divider-line"},null,-1))]))}}),xs=B(hs,[["__scopeId","data-v-6369e185"]]),Rs={class:"messages-list"},$s=I({__name:"DetailRequestSection",props:{entry:{},requestBadge:{},rewrittenRequest:{},filteredMessages:{},truncationPoint:{},searchQuery:{},detailFilterType:{},detailViewMode:{},hasMatchingBlockType:{type:Function},isMessageTruncated:{type:Function},isMessageRewritten:{type:Function},getRewrittenMessage:{type:Function}},setup(e){return(t,i)=>(n(),x(Q,{title:"Request",badge:e.requestBadge,"raw-data":e.entry.request,"rewritten-raw-data":e.rewrittenRequest,"raw-title":"Raw -- Request"},{default:R(()=>[k(Y,{label:"System prompt"},{default:R(()=>[e.entry.request.system?(n(),x(ms,{key:0,system:e.entry.request.system,"rewritten-system":e.entry.effectiveRequest?.system,"search-query":e.searchQuery,"global-view-mode":e.detailViewMode},null,8,["system","rewritten-system","search-query","global-view-mode"])):v("",!0)]),_:1}),s("div",Rs,[(n(!0),r(H,null,P(e.filteredMessages,a=>(n(),r(H,{key:a.originalIndex},[e.entry.pipelineInfo?.truncation&&a.originalIndex===e.truncationPoint?(n(),x(xs,{key:0,truncation:e.entry.pipelineInfo.truncation},null,8,["truncation"])):v("",!0),k(Y,{label:"Message #"+a.originalIndex},{default:R(()=>[A(k(Se,{message:a.msg,index:a.originalIndex,"is-truncated":e.isMessageTruncated(a.originalIndex),"is-rewritten":e.isMessageRewritten(a.originalIndex),"rewritten-message":e.getRewrittenMessage(a.originalIndex),"global-view-mode":e.detailViewMode},null,8,["message","index","is-truncated","is-rewritten","rewritten-message","global-view-mode"]),[[U,!e.detailFilterType||e.hasMatchingBlockType(a.msg,e.detailFilterType)]])]),_:2},1032,["label"])],64))),128))])]),_:1},8,["badge","raw-data","rewritten-raw-data"]))}}),Ts=B($s,[["__scopeId","data-v-55a7bdd7"]]),_s={key:0,class:"response-error"},Ms={class:"error-text"},Cs=I({__name:"DetailResponseSection",props:{entry:{},responseMessage:{}},setup(e){return(t,i)=>e.responseMessage||e.entry.response?.error?(n(),x(Q,{key:0,title:"Response",badge:e.responseMessage?"1 message":"","raw-data":e.entry.response,"raw-title":"Raw -- Response"},{default:R(()=>[e.entry.response?.error?(n(),r("div",_s,[i[0]||(i[0]=s("span",{class:"error-label"},"Error",-1)),s("span",Ms,u(e.entry.response.error),1)])):v("",!0),k(Y,{label:"Response message"},{default:R(()=>[e.responseMessage?(n(),x(Se,{key:0,message:e.responseMessage,index:0},null,8,["message"])):v("",!0)]),_:1})]),_:1},8,["badge","raw-data"])):v("",!0)}}),Ss=B(Cs,[["__scopeId","data-v-e749b03d"]]),Is=["disabled"],Bs={key:0,class:"spinner"},Os=I({__name:"BaseButton",props:{variant:{default:"default"},size:{default:"sm"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(e){return(t,i)=>(n(),r("button",{class:V(["base-btn",["btn-"+e.variant,"btn-size-"+e.size,{"btn-loading":e.loading}]]),disabled:e.disabled||e.loading,onClick:i[0]||(i[0]=a=>t.$emit("click",a))},[e.loading?(n(),r("span",Bs)):v("",!0),te(t.$slots,"default",{},void 0)],10,Is))}}),qs=B(Os,[["__scopeId","data-v-f78a7ee5"]]),Es={class:"base-checkbox"},Vs=["checked"],Ds={key:0,class:"checkbox-label"},Ns=I({__name:"BaseCheckbox",props:{modelValue:{type:Boolean},label:{}},emits:["update:modelValue"],setup(e){return(t,i)=>(n(),r("label",Es,[s("input",{type:"checkbox",checked:e.modelValue,onChange:i[0]||(i[0]=a=>t.$emit("update:modelValue",a.target.checked))},null,40,Vs),e.label?(n(),r("span",Ds,u(e.label),1)):v("",!0)]))}}),ye=B(Ns,[["__scopeId","data-v-5aabf3fa"]]),Ls={class:"detail-toolbar"},zs={class:"toolbar-row"},Hs={key:0,class:"toolbar-row rewrite-row"},As={class:"rewrite-stats"},Us={key:0,class:"rewrite-stat"},js={key:1,class:"rewrite-stat"},Fs={key:2,class:"rewrite-stat rewrite-stat-truncated"},Ps={class:"rewrite-controls"},Js={key:0,class:"rewrite-nav"},Qs={class:"nav-label"},Ws=I({__name:"DetailToolbar",props:{hasRewrites:{type:Boolean},rewriteSummary:{},rewrittenIndexList:{}},emits:["export"],setup(e){const t=be(),i=e,a=[{value:"system",label:"System"},{value:"user",label:"User"},{value:"assistant",label:"Assistant"},{value:"tool",label:"Tool"}],g=[{value:"text",label:"Text"},{value:"tool_use",label:"Tool Use"},{value:"tool_result",label:"Tool Result"},{value:"thinking",label:"Thinking"},{value:"image",label:"Image"}],o=[{value:"original",label:"All Original"},{value:"rewritten",label:"All Rewritten"},{value:"diff",label:"All Diff"}],l=E(-1);function p($){t.detailViewMode.value=$}function m($){const c=document.querySelector(`[data-msg-index="${$}"]`);c&&(c.scrollIntoView({behavior:"smooth",block:"center"}),c.classList.remove("highlight-flash"),c.offsetWidth,c.classList.add("highlight-flash"))}function h($){const c=i.rewrittenIndexList;c.length!==0&&($==="next"?l.value=l.value<c.length-1?l.value+1:0:l.value=l.value>0?l.value-1:c.length-1,m(c[l.value]))}return($,c)=>(n(),r("div",Ls,[k(qe,{"model-value":f(t).detailSearch.value,placeholder:"Search in messages...",icon:"search","onUpdate:modelValue":c[0]||(c[0]=b=>f(t).detailSearch.value=b)},null,8,["model-value"]),s("div",zs,[k(le,{"model-value":f(t).detailFilterRole.value||null,options:a,placeholder:"Role","onUpdate:modelValue":c[1]||(c[1]=b=>f(t).detailFilterRole.value=b??"")},null,8,["model-value"]),k(le,{"model-value":f(t).detailFilterType.value||null,options:g,placeholder:"Type","onUpdate:modelValue":c[2]||(c[2]=b=>f(t).detailFilterType.value=b??"")},null,8,["model-value"]),k(ye,{"model-value":f(t).aggregateTools.value,label:"Aggregate Tools","onUpdate:modelValue":c[3]||(c[3]=b=>f(t).aggregateTools.value=b)},null,8,["model-value"]),k(qs,{variant:"ghost",onClick:c[4]||(c[4]=b=>$.$emit("export"))},{default:R(()=>[k(z,{name:"download",size:13}),c[9]||(c[9]=q(" Export ",-1))]),_:1})]),e.hasRewrites?(n(),r("div",Hs,[s("div",As,[c[10]||(c[10]=s("span",{class:"rewrite-label"},"Rewrites:",-1)),e.rewriteSummary.msgCount>0?(n(),r("span",Us,u(e.rewriteSummary.msgCount)+" msg"+u(e.rewriteSummary.msgCount>1?"s":""),1)):v("",!0),e.rewriteSummary.sysRewritten?(n(),r("span",js,"system")):v("",!0),e.rewriteSummary.truncated?(n(),r("span",Fs,u(e.rewriteSummary.truncatedCount)+" truncated ",1)):v("",!0)]),s("div",Ps,[k(le,{"model-value":f(t).detailViewMode.value,options:o,placeholder:"Per-message","onUpdate:modelValue":c[5]||(c[5]=b=>p(b))},null,8,["model-value"]),k(ye,{"model-value":f(t).showOnlyRewritten.value,label:"Only Rewritten","onUpdate:modelValue":c[6]||(c[6]=b=>f(t).showOnlyRewritten.value=b)},null,8,["model-value"]),e.rewriteSummary.msgCount>0?(n(),r("div",Js,[s("button",{class:"nav-btn",title:"Previous rewritten message",onClick:c[7]||(c[7]=b=>h("prev"))},[k(z,{name:"chevron-up",size:10})]),s("span",Qs,u(l.value>=0?l.value+1:"–")+"/"+u(e.rewrittenIndexList.length),1),s("button",{class:"nav-btn",title:"Next rewritten message",onClick:c[8]||(c[8]=b=>h("next"))},[k(z,{name:"chevron-down",size:10})])])):v("",!0)])])):v("",!0)]))}}),Gs=B(Ws,[["__scopeId","data-v-72108973"]]),Ks={class:"headers-section"},Ys={class:"toggle-icon"},Xs={class:"header-count"},Zs={key:0,class:"headers-grid"},en={class:"header-name"},tn={class:"header-value"},sn=I({__name:"HeadersSection",props:{headers:{},title:{}},setup(e){const t=E(!0);return(i,a)=>(n(),r("div",Ks,[s("button",{class:"headers-toggle",onClick:a[0]||(a[0]=g=>t.value=!t.value)},[s("span",Ys,u(t.value?"+":"-"),1),q(" "+u(e.title)+" ",1),s("span",Xs,"("+u(Object.keys(e.headers).length)+")",1)]),t.value?v("",!0):(n(),r("div",Zs,[(n(!0),r(H,null,P(e.headers,(g,o)=>(n(),r("div",{key:String(o),class:"header-row"},[s("span",en,u(o),1),s("span",tn,u(g),1)]))),128))]))]))}}),ge=B(sn,[["__scopeId","data-v-541b6987"]]),nn={class:"meta-grid"},an={class:"meta-row"},on={class:"meta-value"},ln={class:"meta-row"},rn={class:"meta-value"},un={class:"meta-row"},cn={class:"meta-value"},dn={key:0,class:"meta-row"},mn={class:"meta-row"},vn={class:"meta-value"},fn={key:1,class:"meta-row"},yn={class:"meta-value"},gn={key:2,class:"meta-row"},pn={class:"meta-value"},wn={key:3,class:"meta-row"},bn={class:"meta-value"},kn={key:4,class:"meta-row"},hn={class:"meta-value"},xn={key:5,class:"meta-section"},Rn={class:"meta-row"},$n={class:"meta-value mono"},Tn={class:"meta-row"},_n={class:"meta-value mono"},Mn={key:0,class:"meta-row"},Cn={class:"meta-value mono"},Sn={key:1,class:"meta-row"},In={class:"meta-value mono"},Bn={key:6,class:"meta-row meta-error"},On={class:"meta-value error-text"},qn={key:7,class:"meta-section"},En={class:"raw-body"},Vn={key:8,class:"meta-row"},Dn={class:"meta-value"},Nn={key:9,class:"meta-section"},Ln={class:"meta-row"},zn={class:"meta-value"},Hn={class:"meta-row"},An={class:"meta-value mono"},Un={key:10,class:"meta-section"},jn={key:0,class:"meta-row"},Fn={class:"meta-value"},Pn={key:1,class:"meta-row"},Jn={class:"meta-value"},Qn={key:11,class:"meta-section"},Wn={key:0,class:"meta-row"},Gn={class:"meta-label meta-label--attempt"},Kn={key:1,class:"meta-row"},Yn={class:"meta-value"},Xn={key:2,class:"meta-row"},Zn={class:"meta-value"},ea={key:3,class:"meta-row"},ta={class:"meta-value"},sa={key:4,class:"meta-row"},na={class:"meta-value"},aa={key:5,class:"meta-row"},oa={class:"meta-value"},la=I({__name:"MetaInfo",props:{entry:{}},setup(e){const{formatNumber:t,formatDuration:i,formatDate:a}=se();return(g,o)=>(n(),r("div",nn,[s("div",an,[o[0]||(o[0]=s("span",{class:"meta-label"},"Time",-1)),s("span",on,u(f(a)(e.entry.timestamp)),1)]),s("div",ln,[o[1]||(o[1]=s("span",{class:"meta-label"},"Model",-1)),s("span",rn,u(e.entry.response?.model||e.entry.request.model||"-"),1)]),s("div",un,[o[2]||(o[2]=s("span",{class:"meta-label"},"Endpoint",-1)),s("span",cn,[k(W,{color:e.entry.endpoint==="anthropic-messages"?"purple":e.entry.endpoint==="openai-responses"?"green":"cyan"},{default:R(()=>[q(u(e.entry.endpoint),1)]),_:1},8,["color"])])]),e.entry.response?.status?(n(),r("div",dn,[o[3]||(o[3]=s("span",{class:"meta-label"},"HTTP Status",-1)),s("span",{class:V(["meta-value",{"text-error":e.entry.response.status>=400,"text-success":e.entry.response.status<300}])},u(e.entry.response.status),3)])):v("",!0),s("div",mn,[o[4]||(o[4]=s("span",{class:"meta-label"},"Stream",-1)),s("span",vn,u(e.entry.request.stream===!0?"Yes":"No"),1)]),e.entry.request.max_tokens?(n(),r("div",fn,[o[5]||(o[5]=s("span",{class:"meta-label"},"Max Tokens",-1)),s("span",yn,u(f(t)(e.entry.request.max_tokens)),1)])):v("",!0),e.entry.request.temperature!==void 0?(n(),r("div",gn,[o[6]||(o[6]=s("span",{class:"meta-label"},"Temperature",-1)),s("span",pn,u(e.entry.request.temperature),1)])):v("",!0),e.entry.durationMs?(n(),r("div",wn,[o[7]||(o[7]=s("span",{class:"meta-label"},"Duration",-1)),s("span",bn,u(f(i)(e.entry.durationMs)),1)])):v("",!0),e.entry.response?.stop_reason?(n(),r("div",kn,[o[8]||(o[8]=s("span",{class:"meta-label"},"Stop Reason",-1)),s("span",hn,u(e.entry.response.stop_reason),1)])):v("",!0),e.entry.response?.usage?(n(),r("div",xn,[o[13]||(o[13]=s("div",{class:"meta-section-title"},"Token Usage",-1)),s("div",Rn,[o[9]||(o[9]=s("span",{class:"meta-label"},"Input",-1)),s("span",$n,u(f(t)(e.entry.response.usage.input_tokens)),1)]),s("div",Tn,[o[10]||(o[10]=s("span",{class:"meta-label"},"Output",-1)),s("span",_n,u(f(t)(e.entry.response.usage.output_tokens)),1)]),e.entry.response?.usage?.cache_read_input_tokens?(n(),r("div",Mn,[o[11]||(o[11]=s("span",{class:"meta-label"},"Cache Read",-1)),s("span",Cn,u(f(t)(e.entry.response.usage.cache_read_input_tokens)),1)])):v("",!0),e.entry.response?.usage?.cache_creation_input_tokens?(n(),r("div",Sn,[o[12]||(o[12]=s("span",{class:"meta-label"},"Cache Create",-1)),s("span",In,u(f(t)(e.entry.response.usage.cache_creation_input_tokens)),1)])):v("",!0)])):v("",!0),e.entry.response?.error?(n(),r("div",Bn,[o[14]||(o[14]=s("span",{class:"meta-label"},"Error",-1)),s("span",On,u(e.entry.response.error),1)])):v("",!0),e.entry.response?.error&&e.entry.response?.rawBody?(n(),r("div",qn,[o[15]||(o[15]=s("div",{class:"meta-section-title"},"Raw Response Body",-1)),s("pre",En,u(e.entry.response.rawBody),1)])):v("",!0),e.entry.request.tools?.length?(n(),r("div",Vn,[o[16]||(o[16]=s("span",{class:"meta-label"},"Tools",-1)),s("span",Dn,u(e.entry.request.tools.length)+" defined",1)])):v("",!0),e.entry.pipelineInfo?.truncation?(n(),r("div",Nn,[o[19]||(o[19]=s("div",{class:"meta-section-title"},"Truncation",-1)),s("div",Ln,[o[17]||(o[17]=s("span",{class:"meta-label"},"Removed",-1)),s("span",zn,u(e.entry.pipelineInfo.truncation.removedMessageCount)+" messages",1)]),s("div",Hn,[o[18]||(o[18]=s("span",{class:"meta-label"},"Tokens",-1)),s("span",An,u(f(t)(e.entry.pipelineInfo.truncation.originalTokens))+" -> "+u(f(t)(e.entry.pipelineInfo.truncation.compactedTokens)),1)])])):v("",!0),e.entry.pipelineInfo?.preprocessing&&(e.entry.pipelineInfo.preprocessing.strippedReadTagCount>0||e.entry.pipelineInfo.preprocessing.dedupedToolCallCount>0)?(n(),r("div",Un,[o[22]||(o[22]=s("div",{class:"meta-section-title"},"Preprocessing",-1)),e.entry.pipelineInfo.preprocessing.strippedReadTagCount?(n(),r("div",jn,[o[20]||(o[20]=s("span",{class:"meta-label"},"Read tag strip",-1)),s("span",Fn,u(e.entry.pipelineInfo.preprocessing.strippedReadTagCount)+" tags",1)])):v("",!0),e.entry.pipelineInfo.preprocessing.dedupedToolCallCount?(n(),r("div",Pn,[o[21]||(o[21]=s("span",{class:"meta-label"},"Dedup tool calls",-1)),s("span",Jn,u(e.entry.pipelineInfo.preprocessing.dedupedToolCallCount)+" pairs",1)])):v("",!0)])):v("",!0),e.entry.pipelineInfo?.sanitization?.length?(n(),r("div",Qn,[o[28]||(o[28]=s("div",{class:"meta-section-title"},"Sanitization",-1)),(n(!0),r(H,null,P(e.entry.pipelineInfo.sanitization,(l,p)=>(n(),r(H,{key:p},[e.entry.pipelineInfo.sanitization.length>1?(n(),r("div",Wn,[s("span",Gn,"Attempt "+u(p+1),1)])):v("",!0),l.totalBlocksRemoved?(n(),r("div",Kn,[o[23]||(o[23]=s("span",{class:"meta-label"},"Blocks Removed",-1)),s("span",Yn,u(l.totalBlocksRemoved)+" total",1)])):v("",!0),l.orphanedToolUseCount?(n(),r("div",Xn,[o[24]||(o[24]=s("span",{class:"meta-label"},"Orphan tool_use",-1)),s("span",Zn,u(l.orphanedToolUseCount),1)])):v("",!0),l.orphanedToolResultCount?(n(),r("div",ea,[o[25]||(o[25]=s("span",{class:"meta-label"},"Orphan tool_result",-1)),s("span",ta,u(l.orphanedToolResultCount),1)])):v("",!0),l.emptyTextBlocksRemoved?(n(),r("div",sa,[o[26]||(o[26]=s("span",{class:"meta-label"},"Empty text",-1)),s("span",na,u(l.emptyTextBlocksRemoved),1)])):v("",!0),l.systemReminderRemovals?(n(),r("div",aa,[o[27]||(o[27]=s("span",{class:"meta-label"},"Reminders",-1)),s("span",oa,u(l.systemReminderRemovals)+" tags filtered",1)])):v("",!0)],64))),128))])):v("",!0)]))}}),ra=B(la,[["__scopeId","data-v-0b8e56cc"]]),ia={class:"sse-timeline"},ua={class:"sse-offset"},ca={key:0,class:"sse-summary"},da=I({__name:"SseEventsSection",props:{events:{}},setup(e){const t=e;function i(l){return l<1e3?`+${l}ms`:`+${(l/1e3).toFixed(1)}s`}function a(l){const p=l.data;switch(l.type){case"message_start":{const m=p.message;return m?.model?`model=${m.model}`:""}case"content_block_start":{const m=p.content_block,h=[`index=${p.index}`];return m?.type&&h.push(`type=${m.type}`),m?.name&&h.push(`name=${m.name}`),h.join(" ")}case"content_block_stop":return`index=${p.index}`;case"message_delta":{const m=p.delta,h=[];m?.stop_reason&&h.push(`stop=${m.stop_reason}`);const $=p.usage;return $?.output_tokens&&h.push(`out=${$.output_tokens}`),h.join(" ")}case"error":{const m=p.error;return m?.message?String(m.message).slice(0,80):""}default:return""}}function g(l){switch(l){case"message_start":return"green";case"message_delta":return"blue";case"message_stop":return"dim";case"content_block_start":return"cyan";case"content_block_stop":return"dim";case"error":return"red";default:return"default"}}const o=y(()=>`${t.events.length} events`);return(l,p)=>(n(),x(Q,{title:"SSE Events",badge:o.value,"default-collapsed":!0,"raw-data":e.events,"raw-title":"Raw — SSE Events"},{default:R(()=>[s("div",ia,[(n(!0),r(H,null,P(e.events,(m,h)=>(n(),r("div",{key:h,class:"sse-event"},[s("span",ua,u(i(m.offsetMs)),1),s("span",{class:V(["sse-type","sse-type-"+g(m.type)])},u(m.type),3),a(m)?(n(),r("span",ca,u(a(m)),1)):v("",!0)]))),128))])]),_:1},8,["badge","raw-data"]))}}),ma=B(da,[["__scopeId","data-v-cd3358e8"]]),va={class:"detail-panel"},fa={key:0,class:"detail-empty"},ya=I({__name:"DetailPanel",setup(e){const t=be(),i=E(),a=y(()=>t.selectedEntry.value),{visible:g,data:o,rewrittenData:l,title:p}=Fe();Pe();const{truncationPoint:m,hasRewrites:h,rewriteSummary:$,rewrittenIndexList:c,getRewrittenMessage:b,isMessageRewritten:C,isMessageTruncated:S}=je(a),D=y(()=>{const d={},w={};if(!a.value)return{resultMap:d,nameMap:w};for(const M of a.value.request.messages??[]){if(Array.isArray(M.content))for(const L of M.content)_e(L)&&(d[L.tool_use_id]=L),Te(L)&&(w[L.id]=L.name);if(M.tool_calls)for(const L of M.tool_calls)w[L.id]=L.function.name;M.role==="tool"&&M.tool_call_id&&(d[M.tool_call_id]={type:"tool_result",tool_use_id:M.tool_call_id,content:typeof M.content=="string"?M.content:JSON.stringify(M.content)})}return{resultMap:d,nameMap:w}});Ue({searchQuery:y(()=>t.detailSearch.value),filterType:y(()=>t.detailFilterType.value),aggregateTools:y(()=>t.aggregateTools.value),toolResultMap:y(()=>D.value.resultMap),toolUseNameMap:y(()=>D.value.nameMap),scrollToResult:O,scrollToCall:T});const N=y(()=>{if(!a.value)return[];let w=(a.value.request.messages??[]).map((M,L)=>({msg:M,originalIndex:L}));return t.detailFilterRole.value&&(w=w.filter(({msg:M})=>M.role===t.detailFilterRole.value)),t.showOnlyRewritten.value&&(w=w.filter(({originalIndex:M})=>C(M))),w}),J=y(()=>a.value?.response?.content?a.value.response.content:null),Z=y(()=>a.value?`${(a.value.request.messages??[]).length} messages`:""),j=y(()=>{if(!a.value?.effectiveRequest)return;const d=a.value.effectiveRequest;if(!(!d.messages&&!d.system))return{...a.value.request,...d.messages&&{messages:d.messages},...d.system!==void 0&&{system:d.system}}});function ee(d,w){return typeof d.content=="string"?!!(w==="text"||w==="tool_use"&&d.tool_calls?.length):Array.isArray(d.content)?d.content.some(M=>M.type===w):!1}function G(d){d.classList.remove("highlight-flash"),d.offsetWidth,d.classList.add("highlight-flash")}function O(d){const w=document.querySelector(`#tool-result-${d}`);w&&(w.scrollIntoView({behavior:"smooth",block:"center"}),G(w))}function T(d){const w=document.querySelector(`#tool-use-${d}`);w&&(w.scrollIntoView({behavior:"smooth",block:"center"}),G(w))}re(()=>t.detailSearch.value,d=>{d&&K(()=>{setTimeout(()=>{const w=document.querySelector(".search-highlight");w&&w.scrollIntoView({behavior:"smooth",block:"center"})},50)})}),re(a,d=>{d&&K(()=>{i.value&&i.value.scrollTo(0,i.value.scrollHeight)})});function _(){if(!a.value)return;const d=JSON.stringify(a.value,null,2),w=new Blob([d],{type:"application/json"}),M=URL.createObjectURL(w),L=document.createElement("a");L.href=M;const Ie=a.value.request.model||"unknown";L.download=`${a.value.id}_${Ie}.json`,L.click(),URL.revokeObjectURL(M)}return(d,w)=>(n(),r("div",va,[f(t).hasSelection.value?a.value?(n(),r(H,{key:1},[k(Gs,{"has-rewrites":f(h),"rewrite-summary":f($),"rewritten-index-list":f(c),onExport:_},null,8,["has-rewrites","rewrite-summary","rewritten-index-list"]),s("div",{ref_key:"detailBodyRef",ref:i,class:"detail-body"},[k(Ts,{entry:a.value,"request-badge":Z.value,"rewritten-request":j.value,"filtered-messages":N.value,"truncation-point":f(m),"search-query":f(t).detailSearch.value,"detail-filter-type":f(t).detailFilterType.value,"detail-view-mode":f(t).detailViewMode.value,"has-matching-block-type":ee,"is-message-truncated":f(S),"is-message-rewritten":f(C),"get-rewritten-message":f(b)},null,8,["entry","request-badge","rewritten-request","filtered-messages","truncation-point","search-query","detail-filter-type","detail-view-mode","is-message-truncated","is-message-rewritten","get-rewritten-message"]),k(Ss,{entry:a.value,"response-message":J.value},null,8,["entry","response-message"]),k(Y,{label:"SSE events"},{default:R(()=>[a.value.sseEvents?.length?(n(),x(ma,{key:0,events:a.value.sseEvents},null,8,["events"])):v("",!0)]),_:1}),a.value.wireRequest?.headers?(n(),x(Q,{key:0,title:"Wire Request Headers","default-collapsed":""},{default:R(()=>[k(ge,{headers:a.value.wireRequest.headers,title:"Outbound Headers"},null,8,["headers"])]),_:1})):v("",!0),a.value.response?.headers?(n(),x(Q,{key:1,title:"Response Headers","default-collapsed":""},{default:R(()=>[k(ge,{headers:a.value.response.headers,title:"Upstream Response Headers"},null,8,["headers"])]),_:1})):v("",!0),a.value.attempts&&a.value.attempts.length>1?(n(),x(Q,{key:2,title:"Retry Timeline"},{default:R(()=>[k(it,{attempts:a.value.attempts},null,8,["attempts"])]),_:1})):v("",!0),k(Q,{title:"Meta","raw-data":a.value,"raw-title":"Raw -- Full Entry"},{default:R(()=>[k(Y,{label:"Meta info"},{default:R(()=>[k(ra,{entry:a.value},null,8,["entry"])]),_:1})]),_:1},8,["raw-data"])],512)],64)):v("",!0):(n(),r("div",fa,[...w[1]||(w[1]=[s("p",null,"Select a request to view details",-1),s("p",{class:"detail-hint"},"Use up/down or j/k to navigate, / to search",-1)])])),k(Ee,{visible:f(g),title:f(p),data:f(o),"rewritten-data":f(l),"onUpdate:visible":w[0]||(w[0]=M=>g.value=M)},null,8,["visible","title","data","rewritten-data"])]))}}),Ra=B(ya,[["__scopeId","data-v-8d722e99"]]);export{qs as B,Ra as D,Y as E,xa as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.app-header[data-v-2acad007]{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-lg);background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.header-left[data-v-2acad007]{display:flex;align-items:center;gap:var(--spacing-md)}.header-title[data-v-2acad007]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.version-tag[data-v-2acad007]{font-size:var(--font-size-xs);font-weight:500;color:var(--text-dim);vertical-align:super}.header-right[data-v-2acad007]{display:flex;align-items:center;gap:var(--spacing-sm)}.ws-label[data-v-2acad007]{font-size:var(--font-size-xs);color:var(--text-dim);margin-right:var(--spacing-sm)}.export-dropdown[data-v-2acad007]{position:relative}.export-menu[data-v-2acad007]{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-tertiary);border:1px solid var(--border);min-width:120px;z-index:100;box-shadow:var(--shadow-md)}.export-item[data-v-2acad007]{display:block;width:100%;padding:8px 12px;text-align:left;font-size:var(--font-size-sm);color:var(--text);background:transparent}.export-item[data-v-2acad007]:hover{background:var(--bg-hover)}@keyframes spin-2acad007{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinning[data-v-2acad007]{animation:spin-2acad007 1s linear infinite}@media(max-width:768px){.app-header[data-v-2acad007]{flex-wrap:wrap;height:auto;padding:var(--spacing-sm) var(--spacing-md);gap:var(--spacing-sm)}}.split-pane[data-v-a9a5eade]{display:flex;flex:1;overflow:hidden}.split-pane.dragging[data-v-a9a5eade]{-webkit-user-select:none;user-select:none;cursor:col-resize}.split-left[data-v-a9a5eade]{flex-shrink:0;overflow:hidden;display:flex;flex-direction:column}.split-handle[data-v-a9a5eade]{width:4px;background:var(--border);cursor:col-resize;flex-shrink:0;transition:background var(--transition-fast)}.split-handle[data-v-a9a5eade]:hover,.dragging .split-handle[data-v-a9a5eade]{background:var(--primary)}.split-right[data-v-a9a5eade]{flex:1;overflow:hidden;display:flex;flex-direction:column}@media(max-width:768px){.split-pane[data-v-a9a5eade]{flex-direction:column}.split-left[data-v-a9a5eade]{width:100%!important;height:40%;border-bottom:1px solid var(--border)}.split-handle[data-v-a9a5eade]{display:none}.split-right[data-v-a9a5eade]{height:60%}}.stats-bar[data-v-2878b523]{height:var(--stats-height);display:flex;align-items:center;gap:var(--spacing-lg);padding:0 var(--spacing-lg);background:var(--bg);border-bottom:1px solid var(--border-light);flex-shrink:0;font-size:var(--font-size-xs)}.stat-item[data-v-2878b523]{display:flex;align-items:center;gap:var(--spacing-xs)}.stat-value[data-v-2878b523]{font-weight:600;color:var(--text);font-family:var(--font-mono)}.stat-label[data-v-2878b523]{color:var(--text-dim)}.stat-success .stat-value[data-v-2878b523]{color:var(--success)}.stat-error .stat-value[data-v-2878b523]{color:var(--error)}@media(max-width:768px){.stats-bar[data-v-2878b523]{flex-wrap:wrap;height:auto;padding:var(--spacing-xs) var(--spacing-md);gap:var(--spacing-sm) var(--spacing-md)}}.list-pagination[data-v-75c08278]{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-sm);border-top:1px solid var(--border-light);flex-shrink:0}.page-btn[data-v-75c08278]{font-size:var(--font-size-xs);color:var(--primary);padding:var(--spacing-xs) var(--spacing-md);background:transparent;cursor:pointer}.page-btn[data-v-75c08278]:hover:not(:disabled){background:var(--primary-muted)}.page-btn[data-v-75c08278]:disabled{color:var(--text-dim);cursor:not-allowed}.page-info[data-v-75c08278]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.request-item[data-v-6e633312]{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--border-light);cursor:pointer;border-left:3px solid transparent;transition:all var(--transition-fast)}.request-item[data-v-6e633312]:hover{background:var(--bg-hover)}.request-item.selected[data-v-6e633312]{background:var(--bg-selected);border-left-color:var(--primary)}.item-header[data-v-6e633312]{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:2px}.item-time[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text-muted);font-family:var(--font-mono)}.item-id[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono);opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px;text-decoration:none}.item-id[data-v-6e633312]:hover{opacity:1;text-decoration:underline}.item-model[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text);font-weight:500;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.item-meta[data-v-6e633312]{display:flex;align-items:center;gap:var(--spacing-xs);margin-bottom:2px}.item-tokens[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono);margin-left:auto}.item-duration[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}.item-preview[data-v-6e633312]{font-size:var(--font-size-xs);color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.request-list[data-v-116c4dc7]{display:flex;flex-direction:column;height:100%;background:var(--bg-secondary)}.list-controls[data-v-116c4dc7]{padding:var(--spacing-sm);border-bottom:1px solid var(--border-light);display:flex;flex-direction:column;gap:var(--spacing-xs);flex-shrink:0}.list-filters[data-v-116c4dc7]{display:flex;gap:var(--spacing-xs)}.list-body[data-v-116c4dc7]{flex:1;overflow-y:auto}.list-empty[data-v-116c4dc7]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-dim);font-size:var(--font-size-sm)}.empty-subtitle[data-v-116c4dc7]{font-size:var(--font-size-xs);color:var(--text-dim);opacity:.6;margin-top:var(--spacing-xs)}.search-count[data-v-116c4dc7]{font-size:var(--font-size-xs);color:var(--text-dim);padding-left:var(--spacing-xs)}.history-page[data-v-c55205cc]{display:flex;flex-direction:column;flex:1;overflow:hidden}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as C,g as T,E as B,D as U}from"./DetailPanel-EOQma5fZ.js";import{d as $,I as q,Q as D,g as m,j as t,e as k,c as r,u as e,t as u,l as y,Z as O,_ as j,$ as z,r as _,f as P,i as M,o as c,a0 as A,h as W,a1 as b,s as F,a as K,F as X,k as J}from"./vue-Bmo88J5t.js";import{B as R,I as L,a as V,b as Q}from"./BaseSelect-CttLMFCN.js";import{S as H,_ as S}from"./index-cupXJxSz.js";import{u as N}from"./useFormatters-BBIZmSf2.js";import{u as w}from"./useInjectedHistoryStore-Dx7UlhLw.js";import"./vendor-CmGvxZwr.js";const Z={class:"app-header"},G={class:"header-left"},Y={class:"header-right"},ee={class:"ws-label"},te={class:"export-menu"},se=$({__name:"AppHeader",setup(n){const a=w(),{formatDate:s}=N(),o=_(!1),d=P(()=>a.sessions.value.map(p=>({value:p.id,label:`${s(p.startTime)} (${p.requestCount} reqs)`}))),i=_(!1),l=_();function g(p){location.href=`/history/api/export?format=${p}`,i.value=!1}function x(p){l.value&&!l.value.contains(p.target)&&(i.value=!1)}function E(p){p.key==="Escape"&&i.value&&(i.value=!1,p.stopPropagation())}q(()=>{document.addEventListener("click",x),document.addEventListener("keydown",E)}),D(()=>{document.removeEventListener("click",x),document.removeEventListener("keydown",E)});async function f(){confirm("Clear all history? This cannot be undone.")&&await a.clearAll()}async function h(){o.value=!0;try{await a.refresh()}finally{o.value=!1}}return(p,v)=>(c(),m("header",Z,[t("div",G,[v[4]||(v[4]=t("h1",{class:"header-title"},[k("History "),t("span",{class:"version-tag"},"V3")],-1)),r(R,{"model-value":e(a).selectedSessionId.value,options:d.value,placeholder:"All Sessions","onUpdate:modelValue":v[0]||(v[0]=I=>e(a).setSessionFilter(I))},null,8,["model-value","options"])]),t("div",Y,[r(H,{status:e(a).wsConnected.value?"success":"error",size:6},null,8,["status"]),t("span",ee,u(e(a).wsConnected.value?"Live":"Offline"),1),r(C,{variant:"ghost",disabled:o.value,onClick:h},{default:y(()=>[r(L,{name:"refresh",size:13,class:M({spinning:o.value})},null,8,["class"]),k(" "+u(o.value?"Refreshing...":"Refresh"),1)]),_:1},8,["disabled"]),t("div",{ref_key:"exportRef",ref:l,class:"export-dropdown"},[r(C,{variant:"ghost",onClick:v[1]||(v[1]=O(I=>i.value=!i.value,["stop"]))},{default:y(()=>[r(L,{name:"download",size:13}),v[5]||(v[5]=k(" Export ",-1))]),_:1}),j(t("div",te,[t("button",{class:"export-item",onClick:v[2]||(v[2]=I=>g("json"))}," Export JSON "),t("button",{class:"export-item",onClick:v[3]||(v[3]=I=>g("csv"))}," Export CSV ")],512),[[z,i.value]])],512),r(C,{variant:"danger",onClick:f},{default:y(()=>[r(L,{name:"trash",size:13}),v[6]||(v[6]=k(" Clear ",-1))]),_:1})])]))}}),ae=S(se,[["__scopeId","data-v-2acad007"]]),ne={class:"split-right"},oe=$({__name:"SplitPane",props:{defaultLeftWidth:{default:320},minLeftWidth:{default:240},maxLeftWidth:{default:500}},setup(n){const a=_(Number.parseInt(localStorage.getItem("history-v3-split-width")||"0")||320),s=_(!1);function o(l){l.preventDefault(),s.value=!0,document.addEventListener("mousemove",d),document.addEventListener("mouseup",i)}function d(l){if(!s.value)return;const g=Math.max(240,Math.min(500,l.clientX));a.value=g}function i(){s.value=!1,localStorage.setItem("history-v3-split-width",String(a.value)),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",i)}return q(()=>{const l=Number.parseInt(localStorage.getItem("history-v3-split-width")||"0");l>0&&(a.value=l)}),D(()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",i)}),(l,g)=>(c(),m("div",{class:M(["split-pane",{dragging:s.value}])},[t("div",{class:"split-left",style:W({width:a.value+"px"})},[A(l.$slots,"left",{},void 0)],4),t("div",{class:"split-handle",onMousedown:o},null,32),t("div",ne,[A(l.$slots,"right",{},void 0)])],2))}}),le=S(oe,[["__scopeId","data-v-a9a5eade"]]),ie={key:0,class:"stats-bar"},re={class:"stat-item"},ue={class:"stat-value"},de={class:"stat-item stat-success"},ce={class:"stat-value"},ve={class:"stat-item stat-error"},me={class:"stat-value"},pe={class:"stat-item"},fe={class:"stat-value"},he={class:"stat-item"},ye={class:"stat-value"},_e={key:0,class:"stat-item"},ge={class:"stat-value"},ke=$({__name:"StatsBar",setup(n){const a=w(),{formatNumber:s,formatDuration:o}=N();return P(()=>{const i=a.stats.value;return!i||i.totalInputTokens===0,null}).value,(i,l)=>e(a).stats.value?(c(),m("div",ie,[t("div",re,[t("span",ue,u(e(s)(e(a).stats.value.totalRequests)),1),l[0]||(l[0]=t("span",{class:"stat-label"},"Requests",-1))]),t("div",de,[t("span",ce,u(e(s)(e(a).stats.value.successfulRequests)),1),l[1]||(l[1]=t("span",{class:"stat-label"},"Success",-1))]),t("div",ve,[t("span",me,u(e(s)(e(a).stats.value.failedRequests)),1),l[2]||(l[2]=t("span",{class:"stat-label"},"Failed",-1))]),t("div",pe,[t("span",fe,u(e(s)(e(a).stats.value.totalInputTokens)),1),l[3]||(l[3]=t("span",{class:"stat-label"},"In Tokens",-1))]),t("div",he,[t("span",ye,u(e(s)(e(a).stats.value.totalOutputTokens)),1),l[4]||(l[4]=t("span",{class:"stat-label"},"Out Tokens",-1))]),e(a).stats.value.averageDurationMs?(c(),m("div",_e,[t("span",ge,u(e(o)(e(a).stats.value.averageDurationMs)),1),l[5]||(l[5]=t("span",{class:"stat-label"},"Avg Duration",-1))])):b("",!0)])):b("",!0)}}),be=S(ke,[["__scopeId","data-v-2878b523"]]),$e={key:0,class:"list-pagination"},Se=["disabled"],Ee={class:"page-info"},we=["disabled"],xe=$({__name:"ListPagination",setup(n){const a=w();return(s,o)=>e(a).total.value>0?(c(),m("div",$e,[t("button",{class:"page-btn nav-btn",disabled:!e(a).prevCursor.value,onClick:o[0]||(o[0]=d=>e(a).loadPrev())}," Previous ",8,Se),t("span",Ee,u(e(a).entries.value.length)+" of "+u(e(a).total.value),1),t("button",{class:"page-btn nav-btn",disabled:!e(a).nextCursor.value,onClick:o[1]||(o[1]=d=>e(a).loadNext())}," Next ",8,we)])):b("",!0)}}),Ie=S(xe,[["__scopeId","data-v-75c08278"]]),Ce={class:"item-header"},Le={class:"item-time"},Re=["href","title"],qe=["title"],De={class:"item-meta"},Me={key:1,class:"item-tokens"},Ne={key:2,class:"item-duration"},Te=["title"],Be=$({__name:"RequestItem",props:{entry:{},selected:{type:Boolean}},emits:["select"],setup(n){const{formatDate:a,formatNumber:s,formatDuration:o}=N();return(d,i)=>(c(),m("div",{class:M(["request-item",{selected:n.selected,["status-"+e(T)(n.entry)]:!0}]),onClick:i[1]||(i[1]=l=>d.$emit("select",n.entry.id))},[t("div",Ce,[r(H,{status:e(T)(n.entry)},null,8,["status"]),t("span",Le,u(e(a)(n.entry.timestamp)),1),t("a",{class:"item-id",href:"/history/api/entries/"+n.entry.id,target:"_blank",title:"/history/api/entries/"+n.entry.id,onClick:i[0]||(i[0]=O(()=>{},["stop"]))},u(n.entry.id),9,Re),t("span",{class:"item-model",title:n.entry.responseModel||n.entry.requestModel||void 0},u(n.entry.responseModel||n.entry.requestModel||"-"),9,qe)]),t("div",De,[r(V,{color:n.entry.endpoint==="anthropic-messages"?"purple":n.entry.endpoint==="openai-responses"?"green":"cyan"},{default:y(()=>[k(u(n.entry.endpoint),1)]),_:1},8,["color"]),n.entry.stream?(c(),F(V,{key:0,color:"primary"},{default:y(()=>[...i[2]||(i[2]=[k("stream",-1)])]),_:1})):b("",!0),n.entry.usage?(c(),m("span",Me,u(e(s)(n.entry.usage.input_tokens))+" in / "+u(e(s)(n.entry.usage.output_tokens))+" out ",1)):b("",!0),n.entry.durationMs?(c(),m("span",Ne," · "+u(e(o)(n.entry.durationMs)),1)):b("",!0)]),t("div",{class:"item-preview",title:n.entry.previewText||void 0},u(n.entry.previewText),9,Te)],2))}}),Ae=S(Be,[["__scopeId","data-v-6e633312"]]),Ve={class:"request-list"},Oe={class:"list-controls"},Pe={key:0,class:"search-count"},Fe={class:"list-filters"},He={class:"list-body"},Ue={key:0,class:"list-empty"},je={key:1,class:"list-empty"},ze=$({__name:"RequestList",setup(n,{expose:a}){const s=w(),o=_("");let d=null;const i=_();K(o,E=>{d&&clearTimeout(d),d=setTimeout(()=>{s.setSearch(E)},300)});const l=[{value:"anthropic-messages",label:"Anthropic Messages"},{value:"openai-chat-completions",label:"OpenAI Chat Completions"},{value:"openai-responses",label:"OpenAI Responses"}],g=[{value:"true",label:"Success"},{value:"false",label:"Failed"}];function x(){i.value?.focus()}return a({focusSearch:x}),(E,f)=>(c(),m("div",Ve,[t("div",Oe,[r(Q,{ref_key:"searchInputRef",ref:i,modelValue:o.value,"onUpdate:modelValue":f[0]||(f[0]=h=>o.value=h),placeholder:"Search...",icon:"search"},null,8,["modelValue"]),o.value&&e(s).total.value>0?(c(),m("span",Pe,u(e(s).total.value)+" hit"+u(e(s).total.value!==1?"s":""),1)):b("",!0),t("div",Fe,[r(R,{"model-value":e(s).filterEndpoint.value,options:l,placeholder:"Endpoint","onUpdate:modelValue":f[1]||(f[1]=h=>e(s).setEndpointFilter(h))},null,8,["model-value"]),r(R,{"model-value":e(s).filterSuccess.value,options:g,placeholder:"Status","onUpdate:modelValue":f[2]||(f[2]=h=>e(s).setSuccessFilter(h))},null,8,["model-value"])])]),t("div",He,[e(s).loading.value&&e(s).entries.value.length===0?(c(),m("div",Ue," Loading... ")):e(s).entries.value.length===0?(c(),m("div",je,[...f[4]||(f[4]=[k(" No requests found ",-1),t("p",{class:"empty-subtitle"},"Try adjusting your filters",-1)])])):(c(!0),m(X,{key:2},J(e(s).entries.value,h=>(c(),F(Ae,{key:h.id,entry:h,selected:e(s).selectedEntry.value?.id===h.id,onSelect:f[3]||(f[3]=p=>e(s).selectEntry(p))},null,8,["entry","selected"]))),128))]),r(Ie)]))}}),We=S(ze,[["__scopeId","data-v-116c4dc7"]]);function Ke(n){function a(s){const o=s.target;if(o.tagName==="INPUT"||o.tagName==="TEXTAREA"||o.tagName==="SELECT"){s.key==="Escape"&&(o.blur(),n.onEscape());return}switch(s.key){case"ArrowUp":case"k":{s.preventDefault(),n.onNavigate("prev");break}case"ArrowDown":case"j":{s.preventDefault(),n.onNavigate("next");break}case"/":{s.preventDefault(),n.onSearch();break}case"Escape":{if(document.querySelector(".modal-overlay"))break;const i=document.querySelector(".export-menu");if(i&&i.style.display!=="none")break;n.onEscape();break}}}q(()=>{document.addEventListener("keydown",a)}),D(()=>{document.removeEventListener("keydown",a)})}const Xe={class:"history-page"},Je=$({__name:"HistoryPage",setup(n){const a=w(),s=_();return Ke({onNavigate:o=>a.selectAdjacentEntry(o),onSearch:()=>s.value?.focusSearch(),onEscape:()=>a.clearSelection()}),(o,d)=>(c(),m("div",Xe,[r(ae),r(be),r(le,null,{left:y(()=>[r(B,{label:"Request list"},{default:y(()=>[r(We,{ref_key:"requestListRef",ref:s},null,512)]),_:1})]),right:y(()=>[r(B,{label:"Detail panel"},{default:y(()=>[r(U)]),_:1})]),_:1})]))}}),at=S(Je,[["__scopeId","data-v-c55205cc"]]);export{at as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.logs-page[data-v-e509c128]{display:flex;flex-direction:column;flex:1;overflow:hidden}.logs-header[data-v-e509c128]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid var(--border-light);flex-shrink:0}.logs-title[data-v-e509c128]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.logs-count[data-v-e509c128]{font-size:var(--font-size-xs);color:var(--text-dim)}.logs-empty[data-v-e509c128]{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-dim);font-size:var(--font-size-sm)}.logs-table-wrap[data-v-e509c128]{flex:1;overflow-y:auto}.logs-table[data-v-e509c128]{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:var(--font-size-xs)}.logs-table th[data-v-e509c128]{position:sticky;top:0;background:var(--bg-secondary);color:var(--text-dim);font-weight:600;text-align:left;padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--border);white-space:nowrap}.logs-table td[data-v-e509c128]{padding:3px var(--spacing-sm);white-space:nowrap;color:var(--text-muted);border-bottom:1px solid var(--border-light)}.log-row[data-v-e509c128]:hover{background:var(--bg-hover)}.col-status[data-v-e509c128]{width:30px;text-align:center}.col-time[data-v-e509c128]{width:70px}.col-code[data-v-e509c128]{width:40px}.col-model[data-v-e509c128]{width:180px;overflow:hidden;text-overflow:ellipsis}.col-duration[data-v-e509c128]{width:60px;text-align:right}.col-tokens[data-v-e509c128]{width:90px;text-align:right}.col-preview[data-v-e509c128]{overflow:hidden;text-overflow:ellipsis;max-width:0}.status-symbol[data-v-e509c128]{font-weight:600}.st-success[data-v-e509c128]{color:var(--success)}.st-error[data-v-e509c128]{color:var(--error)}.st-pending[data-v-e509c128]{color:var(--warning)}.row-error td[data-v-e509c128]{color:var(--error);opacity:.8}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as w}from"./useFormatters-BBIZmSf2.js";import{u as b}from"./useLogs-Bz9naVOB.js";import{d as L,g as n,j as s,t as c,u as l,F as x,k as C,f as I,i as d,o as a}from"./vue-Bmo88J5t.js";import{_ as M}from"./index-cupXJxSz.js";const N={class:"logs-page"},P={class:"logs-header"},B={class:"logs-count"},D={key:0,class:"logs-empty"},E={key:1,class:"logs-empty"},F={key:2,class:"logs-table-wrap"},T={class:"logs-table"},R={class:"col-status"},$={class:"col-time"},j={class:"col-code"},q={class:"col-model"},z={class:"col-duration"},O={class:"col-tokens"},V={class:"col-preview"},A=L({__name:"LogsPage",setup(G){const{entries:r,loading:_}=b(),{formatTime:p,formatNumber:i,formatDuration:m}=w();function u(t){return t.responseSuccess===void 0?"pending":t.responseSuccess?"success":"error"}function g(t){return t.responseSuccess===void 0?"-":t.responseSuccess?"ok":"err"}function h(t){return t.responseSuccess===void 0?"...":t.responseSuccess?"200":"ERR"}function f(t){return t.responseModel||t.requestModel||"-"}function v(t){return t.usage?`${i(t.usage.input_tokens)}/${i(t.usage.output_tokens)}`:"-"}function k(t){const e=t.previewText||"";return e.length<=60?e:e.slice(0,57)+"..."}const S=I(()=>r.value);return(t,e)=>(a(),n("div",N,[s("div",P,[e[0]||(e[0]=s("h2",{class:"logs-title"},"Live Logs",-1)),s("span",B,c(l(r).length)+" entries",1)]),l(_)&&l(r).length===0?(a(),n("div",D," Loading... ")):l(r).length===0?(a(),n("div",E," No log entries yet ")):(a(),n("div",F,[s("table",T,[e[1]||(e[1]=s("thead",null,[s("tr",null,[s("th",{class:"col-status"},"St"),s("th",{class:"col-time"},"Time"),s("th",{class:"col-code"},"Code"),s("th",{class:"col-model"},"Model"),s("th",{class:"col-duration"},"Dur"),s("th",{class:"col-tokens"},"In/Out"),s("th",{class:"col-preview"},"Preview")])],-1)),s("tbody",null,[(a(!0),n(x,null,C(S.value,o=>(a(),n("tr",{key:o.id,class:d(["log-row","row-"+u(o)])},[s("td",R,[s("span",{class:d(["status-symbol","st-"+u(o)])},c(g(o)),3)]),s("td",$,c(l(p)(o.timestamp)),1),s("td",j,c(h(o)),1),s("td",q,c(f(o)),1),s("td",z,c(l(m)(o.durationMs)),1),s("td",O,c(v(o)),1),s("td",V,c(k(o)),1)],2))),128))])])]))]))}}),U=M(A,[["__scopeId","data-v-e509c128"]]);export{U as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as E,I as q,g as a,j as o,t as l,i as F,c as v,a1 as n,F as p,k as h,r as u,f as B,s as w,l as m,e as f,Z as G,o as i}from"./vue-Bmo88J5t.js";import{a as K,_ as Q}from"./index-cupXJxSz.js";import{b as W,B as O,R as Z,a as g}from"./BaseSelect-CttLMFCN.js";import"./vendor-CmGvxZwr.js";const H={class:"models-page"},X={class:"models-header"},Y={class:"models-count"},ee={class:"view-switch"},te={class:"models-toolbar"},se={key:0,class:"models-empty"},ie={key:1,class:"models-empty"},ae={key:2,class:"global-raw"},oe={key:3,class:"models-grid"},le={class:"card-top"},ne={class:"card-header"},re={class:"model-id"},ue={class:"card-badges"},de=["onClick"],pe={key:0,class:"card-raw"},ce={key:0,class:"card-meta"},_e={key:0,class:"meta-name"},ve={key:1,class:"meta-dim"},me={key:2,class:"meta-dim"},fe={key:1,class:"card-limits"},ge={class:"limit-label"},ye={class:"limit-value"},ke={key:0,class:"limit-item"},he={key:2,class:"card-row"},we={class:"row-value"},be={key:3,class:"card-tags"},xe={key:0,class:"cap-with-tooltip"},Ve={class:"cap-tooltip"},Ce={class:"tooltip-key"},Me={class:"tooltip-val"},Be={key:4,class:"card-tags"},Se={key:5,class:"card-footer"},Ae={key:0,class:"footer-dim"},Ne={key:1,class:"footer-dim mono"},Fe=E({__name:"ModelsPage",setup(Oe){const y=u([]),b=u(!0),x=u(""),V=u(null),C=u(null),M=u(null),S=u({});function A(s){return S.value[s]??"parsed"}function $(s){S.value={...S.value,[s]:A(s)==="parsed"?"raw":"parsed"}}const R=u(!1),N=u(null),c=u("cards");q(async()=>{try{const s=await K.fetchModels(!0);N.value=s,y.value=s.data??[]}catch{}finally{b.value=!1}});const j=B(()=>[...new Set(y.value.map(s=>s.owned_by).filter(Boolean))].sort().map(s=>({value:s,label:s}))),I=B(()=>{const s=new Set;for(const t of y.value)for(const e of t.supported_endpoints??[])s.add(e);return[...s].sort().map(t=>({value:t,label:t}))}),J=B(()=>{const s=new Set;for(const t of y.value){const e=t.capabilities?.supports;if(e)for(const[r,_]of Object.entries(e))_===!0&&s.add(r)}return[...s].sort().map(t=>({value:t,label:t.replaceAll("_"," ")}))}),k=B(()=>{let s=y.value;if(V.value&&(s=s.filter(t=>t.owned_by===V.value)),C.value&&(s=s.filter(t=>(t.supported_endpoints??[]).includes(C.value))),M.value&&(s=s.filter(t=>t.capabilities?.supports?.[M.value]===!0)),x.value){const t=x.value.toLowerCase();s=s.filter(e=>e.id.toLowerCase().includes(t)||e.display_name?.toLowerCase().includes(t))}return s});function T(s){if(!s)return"cyan";const t=s.toLowerCase();return t.includes("anthropic")?"purple":t.includes("openai")||t.includes("azure")?"cyan":t.includes("google")?"success":"pink"}function d(s){return typeof s!="number"||!s?"-":s>=1e6?(s/1e6).toFixed(s%1e6===0?0:1)+"M":s>=1e3?(s/1e3).toFixed(0)+"K":String(s)}function z(s){const t=s.capabilities?.supports;return t?Object.entries(t).filter(([,e])=>e===!0).map(([e])=>e):[]}function L(s){const t=s.capabilities?.limits;if(!t)return[];const e=[];return t.max_context_window_tokens&&e.push(["Context",d(t.max_context_window_tokens)]),t.max_prompt_tokens&&e.push(["Prompt",d(t.max_prompt_tokens)]),t.max_output_tokens&&e.push(["Output",d(t.max_output_tokens)]),t.max_non_streaming_output_tokens&&e.push(["Non-stream",d(t.max_non_streaming_output_tokens)]),e}function P(s){const t=s.capabilities?.supports;return t?.max_thinking_budget?`${d(t.min_thinking_budget)} – ${d(t.max_thinking_budget)}`:null}function U(s){const t=s.capabilities?.limits?.vision;if(!t)return null;const e=[];return t.max_prompt_images&&e.push(["Max images",String(t.max_prompt_images)]),t.max_prompt_image_size&&e.push(["Max size",d(t.max_prompt_image_size)]),t.supported_media_types&&e.push(["Formats",t.supported_media_types.join(", ")]),e.length>0?e:null}return(s,t)=>(i(),a("div",H,[o("div",X,[t[7]||(t[7]=o("h2",{class:"models-title"},"Models",-1)),o("span",Y,l(k.value.length)+" models",1),o("div",ee,[o("button",{class:F(["switch-option",{active:c.value==="cards"}]),onClick:t[0]||(t[0]=e=>c.value="cards")}," Cards ",2),o("button",{class:F(["switch-option",{active:c.value==="raw"}]),onClick:t[1]||(t[1]=e=>c.value="raw")}," Raw ",2)])]),o("div",te,[v(W,{modelValue:x.value,"onUpdate:modelValue":t[2]||(t[2]=e=>x.value=e),placeholder:"Search models...",icon:"search"},null,8,["modelValue"]),v(O,{modelValue:V.value,"onUpdate:modelValue":t[3]||(t[3]=e=>V.value=e),options:j.value,placeholder:"All vendors"},null,8,["modelValue","options"]),v(O,{modelValue:C.value,"onUpdate:modelValue":t[4]||(t[4]=e=>C.value=e),options:I.value,placeholder:"All endpoints"},null,8,["modelValue","options"]),v(O,{modelValue:M.value,"onUpdate:modelValue":t[5]||(t[5]=e=>M.value=e),options:J.value,placeholder:"All features"},null,8,["modelValue","options"])]),b.value?(i(),a("div",se," Loading models... ")):k.value.length===0?(i(),a("div",ie," No models found ")):n("",!0),v(Z,{visible:R.value,"onUpdate:visible":t[6]||(t[6]=e=>R.value=e),title:"Models API Response",data:N.value},null,8,["visible","data"]),c.value==="raw"&&!b.value&&k.value.length>0?(i(),a("div",ae,[o("pre",null,l(JSON.stringify(N.value,null,2)),1)])):c.value==="cards"&&!b.value&&k.value.length>0?(i(),a("div",oe,[(i(!0),a(p,null,h(k.value,e=>(i(),a("div",{key:e.id,class:"model-card"},[o("div",le,[o("div",ne,[o("span",re,l(e.id),1),o("div",ue,[e.owned_by?(i(),w(g,{key:0,color:T(e.owned_by)},{default:m(()=>[f(l(e.owned_by),1)]),_:2},1032,["color"])):n("",!0),e.billing?.is_premium?(i(),w(g,{key:1,color:"warning"},{default:m(()=>[...t[8]||(t[8]=[f("premium",-1)])]),_:1})):n("",!0),e.preview?(i(),w(g,{key:2},{default:m(()=>[...t[9]||(t[9]=[f("preview",-1)])]),_:1})):n("",!0)])]),o("button",{class:"card-toggle",onClick:G(r=>$(e.id),["stop"])},l(A(e.id)==="parsed"?"RAW":"PARSED"),9,de)]),A(e.id)==="raw"?(i(),a("div",pe,[o("pre",null,l(JSON.stringify(e,null,2)),1)])):(i(),a(p,{key:1},[e.display_name||e.capabilities?.family?(i(),a("div",ce,[e.display_name?(i(),a("span",_e,l(e.display_name),1)):n("",!0),e.capabilities?.family?(i(),a("span",ve,l(e.capabilities.family),1)):n("",!0),e.capabilities?.tokenizer?(i(),a("span",me,l(e.capabilities.tokenizer),1)):n("",!0)])):n("",!0),L(e).length>0||e.billing?.multiplier!==void 0?(i(),a("div",fe,[(i(!0),a(p,null,h(L(e),([r,_])=>(i(),a("div",{key:r,class:"limit-item"},[o("span",ge,l(r),1),o("span",ye,l(_),1)]))),128)),e.billing?.multiplier!==void 0?(i(),a("div",ke,[t[10]||(t[10]=o("span",{class:"limit-label"},"Billing",-1)),o("span",{class:F(["limit-value",{"text-warning":e.billing?.multiplier>1}])},l(e.billing.multiplier)+"x ",3)])):n("",!0)])):n("",!0),P(e)?(i(),a("div",he,[t[11]||(t[11]=o("span",{class:"row-label"},"Thinking budget",-1)),o("span",we,l(P(e)),1)])):n("",!0),z(e).length>0?(i(),a("div",be,[(i(!0),a(p,null,h(z(e),r=>(i(),a(p,{key:r},[r==="vision"&&U(e)?(i(),a("span",xe,[v(g,{color:"primary"},{default:m(()=>[f(l(r.replaceAll("_"," ")),1)]),_:2},1024),o("span",Ve,[(i(!0),a(p,null,h(U(e),([_,D])=>(i(),a("span",{key:_,class:"tooltip-row"},[o("span",Ce,l(_),1),o("span",Me,l(D),1)]))),128))])])):(i(),w(g,{key:1,color:"primary"},{default:m(()=>[f(l(r.replaceAll("_"," ")),1)]),_:2},1024))],64))),128))])):n("",!0),e.supported_endpoints?.length?(i(),a("div",Be,[(i(!0),a(p,null,h(e.supported_endpoints,r=>(i(),w(g,{key:r},{default:m(()=>[f(l(r),1)]),_:2},1024))),128))])):n("",!0),e.model_picker_category||e.version?(i(),a("div",Se,[e.model_picker_category?(i(),a("span",Ae,l(e.model_picker_category),1)):n("",!0),e.version?(i(),a("span",Ne,l(e.version),1)):n("",!0)])):n("",!0)],64))]))),128))])):n("",!0)]))}}),Ue=Q(Fe,[["__scopeId","data-v-8d278cf2"]]);export{Ue as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.models-page[data-v-8d278cf2]{display:flex;flex-direction:column;flex:1;overflow-y:auto}.models-header[data-v-8d278cf2]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid var(--border-light);flex-shrink:0}.models-title[data-v-8d278cf2]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.models-count[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-dim);margin-right:auto}.view-switch[data-v-8d278cf2]{display:flex;border:1px solid var(--border);flex-shrink:0}.switch-option[data-v-8d278cf2]{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border:none;color:var(--text-dim);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.switch-option+.switch-option[data-v-8d278cf2]{border-left:1px solid var(--border)}.switch-option.active[data-v-8d278cf2]{background:var(--primary-muted);color:var(--primary)}.models-toolbar[data-v-8d278cf2]{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid var(--border-light);flex-shrink:0}.models-toolbar[data-v-8d278cf2]>:first-child{flex:1;min-width:150px}.models-empty[data-v-8d278cf2]{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-dim);font-size:var(--font-size-sm)}.global-raw[data-v-8d278cf2]{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.global-raw pre[data-v-8d278cf2]{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-muted);white-space:pre-wrap;word-break:break-all;margin:0}.models-grid[data-v-8d278cf2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--spacing-md);padding:var(--spacing-lg)}.model-card[data-v-8d278cf2]{background:var(--bg-secondary);border:1px solid var(--border);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.card-top[data-v-8d278cf2]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-sm)}.card-header[data-v-8d278cf2]{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:0}.model-id[data-v-8d278cf2]{font-size:var(--font-size-lg);font-weight:600;color:var(--text);font-family:var(--font-mono);word-break:break-all}.card-badges[data-v-8d278cf2]{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.card-toggle[data-v-8d278cf2]{font-size:var(--font-size-xs);font-family:var(--font-mono);padding:2px 10px;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;flex-shrink:0;transition:color var(--transition-fast),border-color var(--transition-fast)}.card-toggle[data-v-8d278cf2]:hover{color:var(--primary);border-color:var(--primary)}.card-meta[data-v-8d278cf2]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--spacing-sm)}.meta-name[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-muted)}.meta-dim[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-dim);font-family:var(--font-mono)}.card-limits[data-v-8d278cf2]{display:flex;flex-wrap:wrap;gap:var(--spacing-sm) var(--spacing-xl)}.limit-item[data-v-8d278cf2]{display:flex;flex-direction:column;gap:2px}.limit-label[data-v-8d278cf2]{font-size:var(--font-size-xs);color:var(--text-dim)}.limit-value[data-v-8d278cf2]{font-size:var(--font-size-md);color:var(--text);font-family:var(--font-mono);font-weight:600}.text-warning[data-v-8d278cf2]{color:var(--warning)}.card-row[data-v-8d278cf2]{display:flex;align-items:baseline;gap:var(--spacing-sm)}.row-label[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-dim)}.row-value[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-muted);font-family:var(--font-mono)}.card-tags[data-v-8d278cf2]{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.cap-with-tooltip[data-v-8d278cf2]{position:relative;cursor:default}.cap-tooltip[data-v-8d278cf2]{display:none;position:absolute;bottom:calc(100% + 6px);left:0;background:var(--bg-tertiary);border:1px solid var(--border);padding:var(--spacing-sm) var(--spacing-md);min-width:220px;z-index:10;box-shadow:var(--shadow-md);flex-direction:column;gap:var(--spacing-xs)}.cap-with-tooltip:hover .cap-tooltip[data-v-8d278cf2]{display:flex}.tooltip-row[data-v-8d278cf2]{display:flex;justify-content:space-between;gap:var(--spacing-md)}.tooltip-key[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-dim);white-space:nowrap}.tooltip-val[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text);font-family:var(--font-mono)}.card-footer[data-v-8d278cf2]{display:flex;gap:var(--spacing-sm);padding-top:var(--spacing-xs);border-top:1px solid var(--border-light)}.footer-dim[data-v-8d278cf2]{font-size:var(--font-size-sm);color:var(--text-dim)}.footer-dim.mono[data-v-8d278cf2]{font-family:var(--font-mono)}.card-raw[data-v-8d278cf2]{max-height:400px;overflow-y:auto}.card-raw pre[data-v-8d278cf2]{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-muted);white-space:pre-wrap;word-break:break-all;margin:0}@media(max-width:768px){.models-grid[data-v-8d278cf2]{grid-template-columns:1fr}.models-toolbar[data-v-8d278cf2]{flex-direction:column}}.models-toolbar[data-v-8d278cf2] .base-input input,.models-toolbar[data-v-8d278cf2] .base-select{font-size:var(--font-size-sm);padding:5px 10px}.model-card[data-v-8d278cf2] .base-badge{font-size:var(--font-size-sm);padding:2px 8px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as l,g as o,j as s,t as d,a0 as _,o as c,h as p,a1 as v,f as t}from"./vue-Bmo88J5t.js";import{_ as i}from"./index-cupXJxSz.js";const m={class:"data-card"},f={class:"card-title"},g={class:"card-content"},h=l({__name:"DataCard",props:{title:{}},setup(a){return(e,r)=>(c(),o("div",m,[s("div",f,d(a.title),1),s("div",g,[_(e.$slots,"default",{},void 0)])]))}}),w=i(h,[["__scopeId","data-v-eb29d157"]]),b={class:"progress-bar-wrap"},x={class:"progress-track"},k={key:0,class:"progress-label"},B=l({__name:"ProgressBar",props:{value:{},max:{},label:{default:void 0},color:{default:void 0}},setup(a){const e=a,r=t(()=>e.max<=0?0:Math.min(e.value/e.max*100,100)),n=t(()=>100-r.value),u=t(()=>e.color?e.color:n.value>50?"var(--success)":n.value>20?"var(--warning)":"var(--error)");return(C,$)=>(c(),o("div",b,[s("div",x,[s("div",{class:"progress-fill",style:p({width:r.value+"%",background:u.value})},null,4)]),a.label?(c(),o("span",k,d(a.label),1)):v("",!0)]))}}),P=i(B,[["__scopeId","data-v-9719ee2c"]]);export{w as D,P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.data-card[data-v-eb29d157]{background:var(--bg-secondary);border:1px solid var(--border);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.card-title[data-v-eb29d157]{font-size:var(--font-size-sm);font-weight:600;color:var(--text);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-light)}.card-content[data-v-eb29d157]{display:flex;flex-direction:column}.progress-bar-wrap[data-v-
|
|
1
|
+
.data-card[data-v-eb29d157]{background:var(--bg-secondary);border:1px solid var(--border);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.card-title[data-v-eb29d157]{font-size:var(--font-size-sm);font-weight:600;color:var(--text);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-light)}.card-content[data-v-eb29d157]{display:flex;flex-direction:column}.progress-bar-wrap[data-v-9719ee2c]{display:flex;align-items:center;gap:var(--spacing-xs);width:100%}.progress-track[data-v-9719ee2c]{flex:1;height:8px;background:var(--bg-tertiary);overflow:hidden}.progress-fill[data-v-9719ee2c]{height:100%;transition:width var(--transition-normal)}.progress-label[data-v-9719ee2c]{font-size:10px;color:var(--text-dim);flex-shrink:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.horizontal-bars[data-v-5678f667]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.hbar-row[data-v-5678f667]{display:flex;align-items:center;gap:var(--spacing-sm)}.hbar-label[data-v-5678f667]{font-size:var(--font-size-xs);color:var(--text-muted);min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-family:var(--font-mono)}.hbar-track[data-v-5678f667]{flex:1;height:8px;background:var(--bg-tertiary);overflow:hidden}.hbar-fill[data-v-5678f667]{height:100%;background:var(--primary);min-width:2px;transition:width var(--transition-normal)}.hbar-count[data-v-5678f667]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono);min-width:30px;text-align:right;flex-shrink:0}.usage-page[data-v-a0574577]{display:flex;flex-direction:column;flex:1;overflow-y:auto}.usage-header[data-v-a0574577]{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid var(--border-light);flex-shrink:0}.usage-title[data-v-a0574577]{font-size:var(--font-size-lg);font-weight:600;color:var(--text)}.usage-content[data-v-a0574577]{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--spacing-lg);padding:var(--spacing-lg)}.kv-list[data-v-a0574577]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.kv-row[data-v-a0574577]{display:flex;align-items:baseline;gap:var(--spacing-sm)}.kv-key[data-v-a0574577]{font-size:var(--font-size-xs);color:var(--text-dim);min-width:100px;flex-shrink:0}.kv-value[data-v-a0574577]{font-size:var(--font-size-xs);color:var(--text)}.kv-value.mono[data-v-a0574577]{font-family:var(--font-mono)}.card-empty[data-v-a0574577]{font-size:var(--font-size-xs);color:var(--text-dim);padding:var(--spacing-sm) 0}.quota-list[data-v-a0574577]{display:flex;flex-direction:column;gap:var(--spacing-md)}.quota-item[data-v-a0574577]{display:flex;flex-direction:column;gap:var(--spacing-xs)}.quota-header[data-v-a0574577]{display:flex;justify-content:space-between;align-items:baseline}.quota-label[data-v-a0574577]{font-size:var(--font-size-xs);color:var(--text-muted)}.quota-numbers[data-v-a0574577]{font-size:var(--font-size-xs);color:var(--text-dim);font-family:var(--font-mono)}@media(max-width:768px){.usage-content[data-v-a0574577]{grid-template-columns:1fr}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as D,a as N}from"./index-cupXJxSz.js";import{d as w,g as o,F as I,k as T,j as s,t as l,h as x,f as v,o as e,c as _,l as h,a1 as q,u as m,s as B}from"./vue-Bmo88J5t.js";import{D as f,P}from"./ProgressBar-6xzx-ZSc.js";import{u as C}from"./useFormatters-BBIZmSf2.js";import{u as S}from"./useInjectedHistoryStore-Dx7UlhLw.js";import{u as $}from"./usePolling-CRd-nhvF.js";const j={class:"horizontal-bars"},z={class:"hbar-label"},O={class:"hbar-track"},F={class:"hbar-count"},H=w({__name:"HorizontalBar",props:{data:{}},setup(y){const k=y,d=v(()=>{const u=Object.entries(k.data);if(u.length===0)return[];const c=u.reduce((n,[,i])=>n+i,0);return u.sort((n,i)=>i[1]-n[1]).map(([n,i])=>({label:n,count:i,percent:c>0?i/c*100:0}))});return(u,c)=>(e(),o("div",j,[(e(!0),o(I,null,T(d.value,n=>(e(),o("div",{key:n.label,class:"hbar-row"},[s("span",z,l(n.label),1),s("div",O,[s("div",{class:"hbar-fill",style:x({width:n.percent+"%"})},null,4)]),s("span",F,l(n.count),1)]))),128))]))}}),U=D(H,[["__scopeId","data-v-5678f667"]]),V={class:"usage-page"},A={class:"usage-content"},E={key:0,class:"kv-list"},L={key:0,class:"kv-row"},M={class:"kv-value"},Q={key:1,class:"kv-row"},R={class:"kv-value"},G={key:1,class:"card-empty"},J={key:0,class:"quota-list"},K={class:"quota-header"},W={class:"quota-label"},X={class:"quota-numbers"},Y={key:1,class:"card-empty"},Z={key:0,class:"kv-list"},ss={class:"kv-row"},ts={class:"kv-value mono"},es={class:"kv-row"},as={class:"kv-value mono"},os={class:"kv-row"},ns={class:"kv-value mono"},ls={key:1,class:"card-empty"},us={key:1,class:"card-empty"},is=w({__name:"UsagePage",setup(y){const k=S(),{formatNumber:d}=C(),{data:u}=$(()=>N.fetchStatus(),1e4),c=v(()=>u.value?.quota?u.value.quota:null),n=v(()=>u.value?.auth?u.value.auth:null),i=v(()=>{if(!c.value)return[];const r=[],t=c.value;if(t.premiumInteractions){const a=t.premiumInteractions;r.push({label:"Premium Interactions",used:a.used??0,limit:a.limit??0})}if(t.chat){const a=t.chat;r.push({label:"Chat",used:a.used??0,limit:a.limit??0})}if(t.completions){const a=t.completions;r.push({label:"Completions",used:a.used??0,limit:a.limit??0})}return r}),b=v(()=>c.value?.resetDate?String(c.value.resetDate):null),p=v(()=>{const r=k.stats.value;return r?{input:r.totalInputTokens,output:r.totalOutputTokens}:null}),g=v(()=>k.stats.value?.modelDistribution??{});return(r,t)=>(e(),o("div",V,[t[5]||(t[5]=s("div",{class:"usage-header"},[s("h2",{class:"usage-title"},"Usage")],-1)),s("div",A,[_(f,{title:"Account"},{default:h(()=>[n.value?(e(),o("div",E,[n.value.accountType?(e(),o("div",L,[t[0]||(t[0]=s("span",{class:"kv-key"},"Plan",-1)),s("span",M,l(n.value.accountType),1)])):q("",!0),b.value?(e(),o("div",Q,[t[1]||(t[1]=s("span",{class:"kv-key"},"Reset Date",-1)),s("span",R,l(b.value),1)])):q("",!0)])):(e(),o("div",G," No account info "))]),_:1}),_(f,{title:"Quota"},{default:h(()=>[i.value.length>0?(e(),o("div",J,[(e(!0),o(I,null,T(i.value,a=>(e(),o("div",{key:a.label,class:"quota-item"},[s("div",K,[s("span",W,l(a.label),1),s("span",X,l(m(d)(a.used))+" / "+l(m(d)(a.limit)),1)]),_(P,{value:a.used,max:a.limit},null,8,["value","max"])]))),128))])):(e(),o("div",Y," No quota data available "))]),_:1}),_(f,{title:"Session Tokens"},{default:h(()=>[p.value?(e(),o("div",Z,[s("div",ss,[t[2]||(t[2]=s("span",{class:"kv-key"},"Input Tokens",-1)),s("span",ts,l(m(d)(p.value.input)),1)]),s("div",es,[t[3]||(t[3]=s("span",{class:"kv-key"},"Output Tokens",-1)),s("span",as,l(m(d)(p.value.output)),1)]),s("div",os,[t[4]||(t[4]=s("span",{class:"kv-key"},"Total",-1)),s("span",ns,l(m(d)(p.value.input+p.value.output)),1)])])):(e(),o("div",ls," No session data "))]),_:1}),_(f,{title:"Model Distribution"},{default:h(()=>[Object.keys(g.value).length>0?(e(),B(U,{key:0,data:g.value},null,8,["data"])):(e(),o("div",us," No model data "))]),_:1})])]))}}),ms=D(is,[["__scopeId","data-v-a0574577"]]);export{ms as default};
|