@wrongstack/webui 0.283.1 → 0.284.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/assets/AnalyticsDashboard-BBoAzpgL.js +1 -0
  2. package/dist/assets/AutoPhaseView-D053zOhN.js +1 -0
  3. package/dist/assets/ChangesView-4X9cQM4r.js +1 -0
  4. package/dist/assets/CodeEditor-C8hiA7LI.js +1 -0
  5. package/dist/assets/DebugDashboard-DBPKvghW.js +1 -0
  6. package/dist/assets/{DesignGalleryView-DaLPPF4Q.js → DesignGalleryView-CzF24Ppi.js} +1 -1
  7. package/dist/assets/{KanbanView-BdsVeyFI.js → KanbanView-DWBGErwm.js} +1 -1
  8. package/dist/assets/MailboxDetailView-CCtq-c8u.js +1 -0
  9. package/dist/assets/OfficeMapPanel-BBKsytG0.js +4 -0
  10. package/dist/assets/ProcessMonitor-pm8Ih7-q.js +1 -0
  11. package/dist/assets/{QueuePanel-BweqXLzT.js → QueuePanel-Lv54tvvk.js} +1 -1
  12. package/dist/assets/{RefreshDebugView-LYcQUNfU.js → RefreshDebugView-0VzJJqhZ.js} +1 -1
  13. package/dist/assets/SddBoardView-Q-k1UjLv.js +2 -0
  14. package/dist/assets/SddFlowGraph-BaWwH9Zc.js +1 -0
  15. package/dist/assets/{SddWizard-C8wm_izV.js → SddWizard-C4wdyhYe.js} +1 -1
  16. package/dist/assets/SessionsDashboard-CveBdrQJ.js +1 -0
  17. package/dist/assets/SkillDetailView-B4U0AtHj.js +2 -0
  18. package/dist/assets/SpecsView-QssXs9kF.js +1 -0
  19. package/dist/assets/{TerminalPanel-DxtPDRk5.js → TerminalPanel-CSDEzJNZ.js} +1 -1
  20. package/dist/assets/{activity-CVWYwjgf.js → activity-3lpGdUIy.js} +1 -1
  21. package/dist/assets/{activity-Cjm0UoMi.js → activity-Bi6wI_Cg.js} +1 -1
  22. package/dist/assets/{activity-BEjzb11U.js → activity-CSPSX--m.js} +1 -1
  23. package/dist/assets/{activity-Lmjx6MD1.js → activity-CcEdxJjx.js} +1 -1
  24. package/dist/assets/{activity-DN6Bmnaw.js → activity-Cv0CmTyM.js} +1 -1
  25. package/dist/assets/{activity-ByEwzh5Q.js → activity-Doy5Yots.js} +1 -1
  26. package/dist/assets/{activity-BjnFo4NL.js → activity-T9kySYDT.js} +1 -1
  27. package/dist/assets/chat--Zry3Atx.js +1 -0
  28. package/dist/assets/chat-0DeGMNFQ.js +1 -0
  29. package/dist/assets/chat-BErfSQjE.js +1 -0
  30. package/dist/assets/chat-CX5cjaC-.js +1 -0
  31. package/dist/assets/chat-CibJIps5.js +1 -0
  32. package/dist/assets/chat-Dr5SJikx.js +1 -0
  33. package/dist/assets/chat-Siz8aWTB.js +1 -0
  34. package/dist/assets/{chat-store-uNXIpAx_.js → chat-store-De7J1E26.js} +1 -1
  35. package/dist/assets/common-B28qhvZh.js +1 -0
  36. package/dist/assets/common-C9ikgX7d.js +1 -0
  37. package/dist/assets/common-CeTsF3jX.js +1 -0
  38. package/dist/assets/common-D29Zdkxb.js +1 -0
  39. package/dist/assets/{common-BAg8_MKg.js → common-DMM-xyW3.js} +1 -1
  40. package/dist/assets/common-DoUBSHRY.js +1 -0
  41. package/dist/assets/common-vdwxzODB.js +1 -0
  42. package/dist/assets/i18n-CkkVJCs9.js +2 -0
  43. package/dist/assets/index-BqAVsSCe.js +154 -0
  44. package/dist/assets/index-DTFjO9oF.css +1 -0
  45. package/dist/assets/local-prefs-C1YdbI5g.js +1 -0
  46. package/dist/assets/{monaco-DqY9Mr3N.js → monaco-XnLmrAXJ.js} +212 -212
  47. package/dist/assets/monaco-theme-Lsd14tM-.js +1 -0
  48. package/dist/assets/{session-store-DhcyG2AC.js → session-store-P-JnaPPK.js} +1 -1
  49. package/dist/assets/{ui-store-isn1eTG7.js → ui-store-FTgDlcX2.js} +1 -1
  50. package/dist/assets/utils-CU_o9ioU.js +1 -0
  51. package/dist/assets/{vendor-OWPFcqeg.js → vendor-CyLvG8N0.js} +14 -14
  52. package/dist/assets/{ws-client-Dglowar-.js → ws-client-lDxBz-7w.js} +1 -1
  53. package/dist/assets/{xyflow-CGx_hPAX.js → xyflow-oYDGUYW6.js} +1 -1
  54. package/dist/index.html +14 -13
  55. package/dist/index.js +7819 -7458
  56. package/dist/index.js.map +1 -1
  57. package/dist/server/index.d.ts +1 -1223
  58. package/dist/server/index.js +3 -12754
  59. package/dist/types.d.ts +17 -1
  60. package/package.json +23 -36
  61. package/dist/assets/AnalyticsDashboard-vbaFTrJa.js +0 -1
  62. package/dist/assets/AutoPhaseView-Ce8a1eUl.js +0 -1
  63. package/dist/assets/CodeEditor-CduSdsMI.js +0 -1
  64. package/dist/assets/DebugDashboard-DoVJhkxa.js +0 -1
  65. package/dist/assets/MailboxDetailView-BYR6CSvz.js +0 -1
  66. package/dist/assets/OfficeMapPanel-BkaZBJEZ.js +0 -4
  67. package/dist/assets/ProcessMonitor-C7OgHnln.js +0 -1
  68. package/dist/assets/SddBoardView-c87Bwdig.js +0 -2
  69. package/dist/assets/SddFlowGraph-DK7RD9NA.js +0 -1
  70. package/dist/assets/SessionsDashboard-DySTssFb.js +0 -1
  71. package/dist/assets/SkillDetailView-y0BgfnBr.js +0 -2
  72. package/dist/assets/SpecsView-BudIVvtN.js +0 -1
  73. package/dist/assets/chat-CdLXf1yN.js +0 -1
  74. package/dist/assets/chat-Cfq81NCh.js +0 -1
  75. package/dist/assets/chat-Cvy-F2d6.js +0 -1
  76. package/dist/assets/chat-DCAGDU3F.js +0 -1
  77. package/dist/assets/chat-DNIePdaQ.js +0 -1
  78. package/dist/assets/chat-DhofDrgA.js +0 -1
  79. package/dist/assets/chat-cxuX4gFa.js +0 -1
  80. package/dist/assets/common-BH1mb9Im.js +0 -1
  81. package/dist/assets/common-C29pCVfm.js +0 -1
  82. package/dist/assets/common-CrGjglH4.js +0 -1
  83. package/dist/assets/common-D7usadq4.js +0 -1
  84. package/dist/assets/common-KzRPhobM.js +0 -1
  85. package/dist/assets/common-tmj0IcQS.js +0 -1
  86. package/dist/assets/i18n-DD-_8vnT.js +0 -2
  87. package/dist/assets/index-0LBBDKsK.js +0 -147
  88. package/dist/assets/index-Dv6bXQoD.css +0 -1
  89. package/dist/assets/utils-B-rhScDN.js +0 -1
  90. package/dist/server/entry.d.ts +0 -2
  91. package/dist/server/entry.js +0 -12764
  92. package/dist/server/entry.js.map +0 -1
  93. package/dist/server/handlers.d.ts +0 -51
  94. package/dist/server/handlers.js +0 -253
  95. package/dist/server/handlers.js.map +0 -1
  96. package/dist/server/index.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Usage, KanbanBoard, KanbanBoardSummary, KanbanTask } from '@wrongstack/core';
1
+ import { Usage } from '@wrongstack/core';
2
+ import { KanbanBoard, KanbanBoardSummary, KanbanTask } from '@wrongstack/kanban';
2
3
 
3
4
  interface WSMessage {
4
5
  type: string;
@@ -1949,6 +1950,21 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1949
1950
  } | {
1950
1951
  type: 'mailbox.agent_registered';
1951
1952
  payload: Record<string, unknown>;
1953
+ } | {
1954
+ type: 'mailbox.messages';
1955
+ payload: {
1956
+ messages: Array<Record<string, unknown>>;
1957
+ error?: string | undefined;
1958
+ };
1959
+ } | {
1960
+ type: 'mailbox.agents';
1961
+ payload: {
1962
+ agents: Array<Record<string, unknown>>;
1963
+ error?: string | undefined;
1964
+ };
1965
+ } | {
1966
+ type: 'pong';
1967
+ payload?: Record<string, unknown> | undefined;
1952
1968
  } | {
1953
1969
  type: 'process.list';
1954
1970
  payload: {
package/package.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.283.1",
3
+ "version": "0.284.1",
4
4
  "license": "MIT",
5
- "description": "Browser-based WebUI for WrongStack — React + Vite frontend with WebSocket backend that drives the same agent kernel as the CLI/TUI.",
5
+ "description": "Browser-based WebUI for WrongStack — React + Vite frontend. The WebSocket backend lives in the separate @wrongstack/webui-server package (extracted in PR #018b to remove the CLI -> @wrongstack/webui/server cross-package edge).",
6
6
  "keywords": [
7
7
  "wrongstack",
8
8
  "ai",
9
9
  "agent",
10
10
  "llm",
11
- "claude",
12
11
  "openai",
13
12
  "webui",
14
- "react",
15
- "websocket"
13
+ "react"
16
14
  ],
17
15
  "homepage": "https://github.com/WrongStack/WrongStack#readme",
18
16
  "repository": {
@@ -35,7 +33,8 @@
35
33
  "exports": {
36
34
  ".": {
37
35
  "types": "./dist/index.d.ts",
38
- "import": "./dist/index.js"
36
+ "import": "./dist/index.js",
37
+ "default": "./dist/index.js"
39
38
  },
40
39
  "./server": {
41
40
  "types": "./dist/server/index.d.ts",
@@ -49,9 +48,6 @@
49
48
  },
50
49
  "main": "./dist/index.js",
51
50
  "types": "./dist/index.d.ts",
52
- "bin": {
53
- "wstackui": "./dist/server/entry.js"
54
- },
55
51
  "dependencies": {
56
52
  "@fontsource-variable/ibm-plex-sans": "^5.2.8",
57
53
  "@fontsource/ibm-plex-mono": "^5.2.7",
@@ -70,7 +66,6 @@
70
66
  "clsx": "^2.1.1",
71
67
  "i18next": "^26.3.4",
72
68
  "i18next-resources-to-backend": "^1.2.1",
73
- "jszip": "^3.10.1",
74
69
  "lucide-react": "^1.22.0",
75
70
  "monaco-editor": "^0.55.1",
76
71
  "qrcode": "^1.5.4",
@@ -82,46 +77,38 @@
82
77
  "remark-gfm": "^4.0.1",
83
78
  "tailwind-merge": "^3.6.0",
84
79
  "virtua": "^0.49.1",
85
- "ws": "^8.21.0",
86
80
  "zustand": "^5.0.14",
87
- "@wrongstack/core": "0.283.1",
88
- "@wrongstack/tools": "0.283.1",
89
- "@wrongstack/providers": "0.283.1",
90
- "@wrongstack/runtime": "0.283.1",
91
- "@wrongstack/mcp": "0.283.1"
92
- },
93
- "peerDependencies": {
94
- "node-pty": "^1.1.0"
81
+ "@wrongstack/kanban": "0.284.1",
82
+ "@wrongstack/core": "0.284.1",
83
+ "@wrongstack/webui-server": "0.284.1",
84
+ "@wrongstack/tools": "0.284.1"
95
85
  },
96
- "peerDependenciesMeta": {
97
- "node-pty": {
98
- "optional": true
99
- }
86
+ "optionalDependencies": {
87
+ "node-pty": "1.2.0-beta.14"
100
88
  },
101
89
  "devDependencies": {
102
- "@playwright/test": "^1.61.1",
90
+ "@playwright/test": "^1.61.0",
103
91
  "@tailwindcss/vite": "^4.3.1",
104
92
  "@testing-library/dom": "^10.4.1",
105
- "@testing-library/react": "^16.3.2",
93
+ "@testing-library/react": "^16.3.0",
106
94
  "@types/node": "^26.0.1",
107
- "@types/react": "^19.2.17",
108
- "@types/react-dom": "^19.2.3",
109
- "@types/ws": "^8.18.1",
110
- "@vitejs/plugin-react": "^6.0.3",
111
- "@vitest/coverage-v8": "^4.1.9",
112
- "jsdom": "^29.1.1",
113
- "node-pty": "^1.1.0",
95
+ "@types/react": "^19.2.0",
96
+ "@types/react-dom": "^19.2.0",
97
+ "@types/ws": "^8.18.0",
98
+ "@vitejs/plugin-react": "^6.0.0",
99
+ "@vitest/coverage-v8": "^4.1.0",
100
+ "jsdom": "^29.1.0",
114
101
  "tailwindcss": "^4.3.1",
115
- "tsup": "^8.5.1",
116
- "typescript": "^6.0.3",
102
+ "tsup": "^8.5.0",
103
+ "typescript": "^6.0.0",
117
104
  "vite": "^8.1.0",
118
- "vitest": "^4.1.9"
105
+ "vitest": "^4.1.0",
106
+ "@wrongstack/sdd": "0.284.1"
119
107
  },
120
108
  "scripts": {
121
109
  "dev": "vite",
122
110
  "build": "vite build && tsup",
123
111
  "typecheck": "tsc --noEmit",
124
- "start": "node dist/server/entry.js",
125
112
  "test": "vitest run",
126
113
  "test:watch": "vitest",
127
114
  "test:coverage": "vitest run --coverage"
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Fr as r,Lr as i,Wr as a,fi as o,lt as s,nr as c,or as l,pt as u,rt as d,si as f,sn as p}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as m}from"./ws-client-Dglowar-.js";import{R as h}from"./index-0LBBDKsK.js";var g=e(t(),1),_=n();function v(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function y(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function b(e){return e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function x(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function S(e){return e.includes(`error`)||e.includes(`fail`)?`text-destructive`:e.includes(`warn`)?`text-[hsl(var(--warning))]`:e.includes(`success`)||e.includes(`complete`)?`text-[hsl(var(--success))]`:`text-muted-foreground`}function C({icon:e,label:t,value:n,sub:r,color:i=`text-muted-foreground`}){return(0,_.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`mt-0.5 ${i}`,children:e}),(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums text-foreground`,children:n}),(0,_.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t}),r?(0,_.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground/70`,children:r}):null]})]})}function w(){let{t:e}=o(),[t,n]=(0,g.useState)(null),[w,T]=(0,g.useState)([]),[E,D]=(0,g.useState)([]),[O,k]=(0,g.useState)(null),[A,j]=(0,g.useState)(!0),[M,N]=(0,g.useState)(!1),P=(0,g.useRef)(null),F=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics/summary`);e.ok&&n(await e.json())}catch{}},[]),I=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/analytics?limit=50`);e.ok&&T((await e.json()).events)}catch{}},[]),L=(0,g.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);e.ok&&D(await e.json())}catch{}},[]),R=(0,g.useCallback)(async()=>{if(!M){N(!0);try{let e=m(h.getState().wsUrl);P.current=e;let t=e.on(`stats.get`,e=>{let n=e.payload;k(n),N(!1),t()});e.getStats(),setTimeout(()=>{N(!1),t()},8e3)}catch{N(!1)}}},[M]);(0,g.useEffect)(()=>{let e=()=>{Promise.all([F(),I(),L(),R()]).finally(()=>j(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[F,I,L,R]);let{totalAgents:z,activeAgents:B,totalToolCalls:V,totalIterations:H}=(0,g.useMemo)(()=>{let e=0,t=0,n=0,r=0;for(let i of E)for(let a of i.agents)e++,a.status===`running`&&t++,n+=a.toolCalls,r+=a.iterations;return{totalAgents:e,activeAgents:t,totalToolCalls:n,totalIterations:r}},[E]),U=(0,g.useMemo)(()=>t?Object.entries(t.categoryBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,8):[],[t]),W=(0,g.useMemo)(()=>t?Object.entries(t.eventBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,10):[],[t]),G=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`error`)&&(e+=r);return e},[t]),K=(0,g.useMemo)(()=>{if(!t)return 0;let e=0;for(let[n,r]of Object.entries(t.eventBreakdown))n.toLowerCase().includes(`warn`)&&(e+=r);return e},[t]),q=(0,g.useMemo)(()=>[...w].reverse(),[w]);return A?(0,_.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,_.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,_.jsx)(a,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:analytics.loading`)]})}):(0,_.jsx)(`div`,{className:`h-full min-h-0 min-w-0 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,_.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,_.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(f,{className:`h-4 w-4 text-primary`}),(0,_.jsx)(`h1`,{className:`truncate text-base font-semibold`,children:e(`activity:analytics.heading`)})]}),(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.autoRefresh`)})]})}),(0,_.jsxs)(`div`,{className:`min-w-0 space-y-5`,children:[(0,_.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3`,children:[(0,_.jsx)(C,{icon:(0,_.jsx)(r,{className:`h-4 w-4`}),label:e(`activity:analytics.liveSessions`),value:E.length,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(d,{className:`h-4 w-4`}),label:e(`activity:analytics.agents`),value:`${B}/${z}`,sub:B>0?e(`activity:analytics.agentsActive`,{count:B}):void 0,color:`text-[hsl(var(--success))]`}),(0,_.jsx)(C,{icon:(0,_.jsx)(p,{className:`h-4 w-4`}),label:e(`activity:analytics.totalEvents`),value:t?.totalEvents??0,sub:e(`activity:analytics.categoriesSub`,{count:t?.uniqueCategories??0}),color:`text-[hsl(var(--warning))]`}),(0,_.jsx)(C,{icon:(0,_.jsx)(u,{className:`h-4 w-4`}),label:e(`activity:analytics.toolCalls`),value:V,sub:e(`activity:analytics.iterationsSub`,{count:H}),color:`text-[hsl(var(--success))]`}),(0,_.jsx)(C,{icon:(0,_.jsx)(c,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionCost`),value:O?b(O.cost):`—`,sub:O?e(`activity:analytics.tokensSub`,{input:y(O.usage.input),output:y(O.usage.output)}):void 0,color:`text-primary`}),(0,_.jsx)(C,{icon:(0,_.jsx)(l,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionDuration`),value:O?v(O.elapsedMs):`—`,sub:O?e(`activity:analytics.messagesSub`,{count:O.messages}):void 0,color:`text-muted-foreground`})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(s,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.eventsByCategory`)]}),U.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:U.map(([e,t])=>{let n=U[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,7rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-primary/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(f,{className:`h-3.5 w-3.5 text-[hsl(var(--warning))]`}),e(`activity:analytics.topEvents`)]}),W.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,_.jsx)(`div`,{className:`space-y-1.5`,children:W.map(([e,t])=>{let n=W[0]?.[1]??1,r=Math.round(t/n*100);return(0,_.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e)}`,children:e}),(0,_.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,_.jsx)(`div`,{className:`h-full rounded-full bg-[hsl(var(--warning)/0.7)] transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,_.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]})]}),(0,_.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(c,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.activeSessionUsage`)]}),O?(0,_.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-xs`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.provider`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.provider})]}),(0,_.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.model`)}),(0,_.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:O.model})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.inputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.input)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.outputTokens`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:y(O.usage.output)})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheRatio`)}),(0,_.jsxs)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:[(O.cache.ratio*100).toFixed(1),`%`]})]}),(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.filesRead`)}),(0,_.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:O.readFiles})]})]}):(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noSession`)})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(i,{className:`h-3.5 w-3.5 text-[hsl(var(--warning))]`}),e(`activity:analytics.healthErrors`)]}),(0,_.jsx)(`div`,{className:`space-y-2 text-xs`,children:t?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.errorEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-destructive`,children:G})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.warningEvents`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-[hsl(var(--warning))]`,children:K})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheHitRate`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-[hsl(var(--success))]`,children:O?`${(O.cache.ratio*100).toFixed(1)}%`:`—`})]}),(0,_.jsxs)(`div`,{className:`flex justify-between`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.totalCategories`)}),(0,_.jsx)(`span`,{className:`tabular-nums text-foreground`,children:t.uniqueCategories})]})]}):(0,_.jsx)(`p`,{className:`text-muted-foreground`,children:e(`activity:analytics.waitingData`)})})]})]}),(0,_.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,_.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,_.jsx)(r,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.recentEvents`)]}),w.length===0?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noRecentEvents`)}):(0,_.jsx)(`div`,{className:`max-h-64 space-y-1 overflow-y-auto`,children:q.map((e,t)=>(0,_.jsxs)(`div`,{className:`grid grid-cols-[4rem_minmax(0,7rem)_minmax(0,6rem)_minmax(0,1fr)] items-start gap-2 rounded px-2 py-1 text-xs hover:bg-muted/60`,children:[(0,_.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:x(e.timestamp)}),(0,_.jsx)(`span`,{className:`min-w-0 truncate ${S(e.event)}`,children:e.event}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.category}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-foreground/80`,children:e.label??e.sessionId??``})]},`${e.timestamp}-${t}`))})]})]})]})})}export{w as AnalyticsDashboard};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./chat-store-uNXIpAx_.js";import{m as n,p as r}from"./markdown-D0X23O-i.js";import{$r as i,Br as a,Gr as o,Gt as s,It as c,Kt as l,Lt as u,Wr as d,X as f,Xt as p,Z as m,ai as h,bt as g,ct as _,fi as v,fr as y,hi as b,ni as x,ot as S,ur as C}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as w}from"./utils-B-rhScDN.js";import{C as T,E,T as D,n as ee,p as O,r as k,s as A,t as j,z as M}from"./index-0LBBDKsK.js";var N=e(n(),1),P=r(),F={pending:{icon:(0,P.jsx)(y,{className:`w-4 h-4`}),color:`text-muted-foreground`,label:`Pending`},in_progress:{icon:(0,P.jsx)(C,{className:`w-4 h-4 animate-spin`}),color:`text-primary`,label:`In Progress`},blocked:{icon:(0,P.jsx)(p,{className:`w-4 h-4`}),color:`text-[hsl(var(--warning))]`,label:`Blocked`},failed:{icon:(0,P.jsx)(x,{className:`w-4 h-4`}),color:`text-destructive`,label:`Failed`},review:{icon:(0,P.jsx)(c,{className:`w-4 h-4`}),color:`text-[hsl(var(--info))]`,label:`Review`},completed:{icon:(0,P.jsx)(h,{className:`w-4 h-4`}),color:`text-[hsl(var(--success))]`,label:`Done`}},I={critical:`bg-destructive/15 text-destructive`,high:`bg-warning/15 text-warning`,medium:`bg-[hsl(var(--info)/0.15)] text-[hsl(var(--info))]`,low:`bg-muted text-muted-foreground`},L={feature:`bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))]`,bugfix:`bg-destructive/15 text-destructive`,refactor:`bg-primary/15 text-primary`,docs:`bg-info/15 text-info`,test:`bg-primary/15 text-primary`,chore:`bg-muted text-muted-foreground`};function R(e){if(!e)return``;let t=Math.floor(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;return r>0?`${n}h ${r}m`:`${n}h`}function z({task:e,onStatusChange:t,onRetry:n,agents:r,onAssign:i,compact:a,className:o}){let{t:s}=v(),l=F[e.status],[u,d]=(0,N.useState)(!1),f=e.status===`in_progress`;return(0,P.jsxs)(`div`,{className:w(`w-full text-left rounded-lg border p-3 transition-all hover:shadow-sm`,f?`border-primary/40 bg-primary/5`:e.status===`completed`?`border-[hsl(var(--success)/0.35)] bg-[hsl(var(--success)/0.06)]`:e.status===`failed`?`border-destructive/40 bg-destructive/5`:`border-border bg-card`,o),children:[(0,P.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,P.jsx)(`span`,{className:w(`mt-0.5`,l.color),"aria-label":f?s(`common:status.inProgress`):void 0,children:l.icon}),(0,P.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,P.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),(0,P.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,I[e.priority]),children:e.priority}),(0,P.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,L[e.type]),children:e.type})]}),e.description&&(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 line-clamp-2`,children:e.description})]})]}),e.assignee&&(0,P.jsxs)(`div`,{className:w(`mt-2 inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium`,f?`bg-primary/15 text-primary`:`bg-muted text-muted-foreground`),children:[f&&(0,P.jsx)(C,{className:`w-3 h-3 animate-spin`,"aria-label":s(`common:status.working`)}),(0,P.jsx)(`span`,{children:e.assignee})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-xs text-muted-foreground`,children:[e.estimateHours?(0,P.jsxs)(`span`,{children:[`~`,e.estimateHours,`h`]}):null,e.actualHours?(0,P.jsxs)(`span`,{children:[`• `,e.actualHours,`h`]}):null,e.startedAt?(0,P.jsxs)(`span`,{children:[`• `,R(Date.now()-e.startedAt)]}):null]}),e.tags.length>0&&(0,P.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.tags.map(e=>(0,P.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))}),!a&&(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 mt-2`,children:[t&&e.status!==`in_progress`&&e.status!==`completed`&&(0,P.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`in_progress`),className:`px-2 py-0.5 text-[10px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,children:s(`activity:task.start`)}),t&&e.status===`in_progress`&&(0,P.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`completed`),className:`px-2 py-0.5 text-[10px] rounded bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))] hover:bg-[hsl(var(--success)/0.25)] transition-colors`,children:s(`activity:task.complete`)}),n&&(e.status===`failed`||e.status===`completed`)&&(0,P.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,children:[(0,P.jsx)(c,{className:`w-3 h-3`}),` `,s(`activity:task.retry`)]}),i&&r&&r.length>0&&(u?(0,P.jsxs)(`select`,{autoFocus:!0,defaultValue:e.assignee??``,onChange:t=>{i(e.id,t.target.value),d(!1)},onBlur:()=>d(!1),className:`px-1 py-0.5 text-[10px] rounded border border-border bg-card`,children:[(0,P.jsx)(`option`,{value:``,children:s(`activity:task.unassigned`)}),r.map(e=>(0,P.jsx)(`option`,{value:e,children:e},e))]}):(0,P.jsxs)(`button`,{type:`button`,onClick:()=>d(!0),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,title:s(`activity:task.assignTitle`),children:[(0,P.jsx)(S,{className:`w-3 h-3`}),` `,s(`activity:task.assign`)]}))]})]})}var B=[{key:`pending`,label:`Pending`,match:[`pending`,`blocked`]},{key:`in_progress`,label:`In Progress`,match:[`in_progress`]},{key:`review`,label:`Review`,match:[`review`]},{key:`failed`,label:`Failed`,match:[`failed`]},{key:`completed`,label:`Done`,match:[`completed`]}],V={pending:`bg-muted text-muted-foreground`,ready:`bg-[hsl(var(--info)/0.15)] text-[hsl(var(--info))]`,running:`bg-primary/15 text-primary`,paused:`bg-warning/15 text-warning`,completed:`bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))]`,failed:`bg-destructive/15 text-destructive`,skipped:`bg-muted text-muted-foreground`};function H(){let{client:e}=T(),{t}=v(),n=M(e=>e.phases),[r,o]=(0,N.useState)(`phase`),[c,l]=(0,N.useState)(null),[u,d]=(0,N.useState)(null),f=(0,N.useMemo)(()=>n.flatMap(e=>(e.tasks??[]).map(t=>({...t,phaseId:e.id}))),[n]),p=(0,N.useMemo)(()=>[...new Set(f.map(e=>e.assignee).filter(e=>!!e))],[f]),m=(0,N.useCallback)(t=>e?.send?.(t),[e]),h=(0,N.useCallback)((e,t)=>m({type:`autophase.taskStatus`,payload:{taskId:e,status:t}}),[m]),g=(0,N.useCallback)(e=>m({type:`autophase.retryTask`,payload:{taskId:e}}),[m]),_=(0,N.useCallback)((e,t)=>m({type:`autophase.assignTask`,payload:{taskId:e,agentName:t||void 0}}),[m]),y=(0,N.useCallback)(e=>{A({title:t(`activity:board.newTaskTitle`),placeholder:t(`activity:board.newTaskPlaceholder`),confirmLabel:t(`activity:board.addTask`)}).then(t=>{t&&m({type:`autophase.addTask`,payload:{phaseId:e,title:t}})})},[m]),b=(0,N.useCallback)(e=>{c&&m({type:`autophase.moveTask`,payload:{taskId:c,toPhaseId:e}}),l(null),d(null)},[c,m]),x=(0,N.useCallback)(e=>{c&&m({type:`autophase.taskStatus`,payload:{taskId:c,status:e}}),l(null),d(null)},[c,m]),S={onStatusChange:h,onRetry:g,agents:p,onAssign:_};function C(e){return{draggable:!0,onDragStart:t=>{l(e),t.dataTransfer.effectAllowed=`move`},onDragEnd:()=>{l(null),d(null)}}}function E(e,t){return{onDragOver:t=>{t.preventDefault(),t.dataTransfer.dropEffect=`move`,u!==e&&d(e)},onDragLeave:()=>d(t=>t===e?null:t),onDrop:e=>{e.preventDefault(),t()},"data-hover":u===e||void 0}}return n.length===0?(0,P.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 items-center justify-center text-muted-foreground`,children:(0,P.jsx)(`p`,{className:`text-sm`,children:t(`activity:board.empty`)})}):(0,P.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2`,children:[(0,P.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t(`activity:board.summary`,{phases:n.length,tasks:f.length})}),(0,P.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,P.jsxs)(`button`,{type:`button`,onClick:()=>o(`phase`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,r===`phase`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,P.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.phases`)]}),(0,P.jsxs)(`button`,{type:`button`,onClick:()=>o(`status`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,r===`status`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,P.jsx)(a,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.statusTab`)]})]})]}),r===`phase`?(0,P.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 gap-3 overflow-x-auto p-3`,children:n.map(e=>{let n=f.filter(t=>t.phaseId===e.id);return(0,P.jsxs)(`div`,{...E(`phase:${e.id}`,()=>b(e.id)),className:w(`flex min-h-0 w-80 shrink-0 flex-col rounded-lg border bg-muted/30 transition-colors`,u===`phase:${e.id}`?`border-primary/60 bg-primary/5`:`border-border`),children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b border-border px-3 py-2`,children:[(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`truncate text-sm font-semibold`,children:e.name}),(0,P.jsx)(`span`,{className:w(`rounded px-1.5 py-0.5 text-[10px] font-medium capitalize`,V[e.status]),children:e.status})]}),(0,P.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.completedTasks,`/`,e.taskCount,` · `,e.progressPercent,`%`]})]}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>y(e.id),title:t(`activity:board.addTask`),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,P.jsx)(s,{className:`h-4 w-4`})})]}),(0,P.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-2`,children:n.length===0?(0,P.jsx)(`p`,{className:`px-1 py-4 text-center text-[11px] text-muted-foreground`,children:t(`activity:board.dropHere`)}):n.map(e=>(0,P.jsx)(`div`,{...C(e.id),className:w(c===e.id&&`opacity-50`),children:(0,P.jsx)(z,{task:e,...S})},e.id))})]},e.id)})}):(0,P.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-auto p-3`,children:(0,P.jsxs)(`div`,{className:`grid min-w-[900px] gap-2`,style:{gridTemplateColumns:`9rem repeat(${B.length}, minmax(0, 1fr))`},children:[(0,P.jsx)(`div`,{}),B.map(e=>(0,P.jsx)(`div`,{className:`px-2 pb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:t(`activity:board.status.${e.key}`)},e.key)),n.map(e=>(0,P.jsxs)(U,{children:[(0,P.jsx)(`div`,{className:`flex items-center pr-2`,children:(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,P.jsx)(`span`,{className:w(`mt-0.5 inline-block rounded px-1.5 py-0.5 text-[10px] capitalize`,V[e.status]),children:e.status})]})}),B.map(t=>{let n=f.filter(n=>n.phaseId===e.id&&t.match.includes(n.status)),r=`cell:${e.id}:${t.key}`;return(0,P.jsx)(`div`,{...E(r,()=>x(t.key)),className:w(`min-h-[4rem] space-y-2 rounded-md border p-1.5 transition-colors`,u===r?`border-primary/60 bg-primary/5`:`border-border bg-muted/20`),children:n.map(e=>(0,P.jsx)(`div`,{...C(e.id),className:w(c===e.id&&`opacity-50`),children:(0,P.jsx)(z,{task:e,compact:!0,...S})},e.id))},t.key)})]},e.id))]})})]})}function U({children:e}){return(0,P.jsx)(P.Fragment,{children:e})}function W({onClose:e}){let{client:n}=T(),{t:r}=v(),i=M(e=>e.phases),a=M(e=>e.overallPercent),c=M(e=>e.autonomous),h=M(e=>e.title),y=M(e=>e.goal),x=M(e=>e.status),S=M(e=>e.lastError),C=M(e=>e.graphs);(0,N.useEffect)(()=>{n?.send?.({type:`autophase.list`}),n?.send?.({type:`autophase.state`})},[n]);let A=E(e=>e.worktrees),F=E(e=>e.baseBranch),[I,L]=(0,N.useState)(``),[R,z]=(0,N.useState)(null),[B,V]=(0,N.useState)(!1),[U,W]=(0,N.useState)(!0),G=i.length>0,K=R!=null&&!G;(0,N.useEffect)(()=>{G&&z(null)},[G]);let q=(0,N.useCallback)(()=>{let e=I.trim();if(!e||R!=null)return;let r=t.getState();r.addMessage({role:`user`,content:e}),r.addMessage({role:`assistant`,content:b.t(`activity:autoPhase.planningAck`)}),z(e),L(``),n?.send?.({type:`autophase.start`,payload:{title:e,autonomous:!0,worktrees:U}}),D(`chat`)},[I,R,n,U]),J=(0,N.useCallback)(()=>{n?.send?.({type:`autophase.stop`,payload:{}}),z(null)},[n]),Y=(0,N.useCallback)(()=>{n?.send?.({type:`autophase.toggleAutonomous`,payload:{}})},[n]),X=(0,N.useCallback)(()=>{n?.send?.(x===`paused`?{type:`autophase.resume`,payload:{}}:{type:`autophase.pause`,payload:{}})},[n,x]),Z=(0,N.useCallback)(()=>{n?.send?.({type:`autophase.stop`,payload:{}})},[n]),Q=(0,N.useCallback)(()=>{n?.send?.({type:`autophase.clear`,payload:{}}),M.getState().clear(),z(null),L(``)},[n]),[te,$]=(0,N.useState)(!1),ne=(0,N.useCallback)(()=>{n?.send?.({type:`autophase.revert`,payload:{}}),$(!1)},[n]),re=x===`running`||x===`paused`,ie=x===`stopped`||x===`completed`||x===`failed`,ae=(0,N.useCallback)(e=>{e&&n?.send?.({type:`autophase.load`,payload:{graphId:e}})},[n]);return(0,P.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,P.jsxs)(`header`,{className:`flex shrink-0 flex-col gap-2 border-b bg-card px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,P.jsx)(o,{className:`h-5 w-5 text-muted-foreground`}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`h1`,{className:`text-lg font-semibold`,children:G&&h||`AutoPhase`}),G&&(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`activity:autoPhase.summary`,{count:i.length,pct:a})})]}),G&&(0,P.jsx)(`span`,{className:w(`rounded border px-2 py-0.5 text-[11px] font-medium capitalize`,x===`failed`?`border-destructive/40 bg-destructive/10 text-destructive`:x===`paused`||x===`stopped`?`border-warning/40 bg-warning/10 text-warning`:x===`completed`?`border-success/40 bg-success/10 text-success`:`border-primary/30 bg-primary/10 text-primary`),title:S??void 0,children:x})]}),(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 sm:justify-end`,children:[C.length>0&&(0,P.jsxs)(`select`,{value:G?C.find(e=>e.title===h)?.id??``:``,onChange:e=>ae(e.target.value),title:r(`activity:autoPhase.switchBoard`),className:`min-w-0 flex-1 rounded border border-border bg-card px-2 py-1 text-xs text-foreground sm:w-72 sm:flex-none`,children:[(0,P.jsx)(`option`,{value:``,disabled:!0,children:r(`activity:autoPhase.boardsCount`,{count:C.length})}),C.map(e=>(0,P.jsxs)(`option`,{value:e.id,children:[e.title,` · `,e.status]},e.id))]}),G&&(0,P.jsxs)(`button`,{type:`button`,onClick:Y,title:r(`activity:autoPhase.toggleAutonomousTitle`),className:w(`inline-flex items-center gap-1 rounded border px-2 py-1 text-xs transition-colors`,c?`border-primary/30 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:[(0,P.jsx)(f,{className:`h-3.5 w-3.5`}),` `,r(c?`activity:autoPhase.autonomous`:`activity:autoPhase.manual`)]}),re&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`button`,{type:`button`,onClick:X,title:r(x===`paused`?`activity:autoPhase.resumeTitle`:`activity:autoPhase.pauseTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[x===`paused`?(0,P.jsx)(l,{className:`h-3.5 w-3.5`}):(0,P.jsx)(p,{className:`h-3.5 w-3.5`}),r(x===`paused`?`activity:autoPhase.resume`:`activity:autoPhase.pause`)]}),(0,P.jsxs)(`button`,{type:`button`,onClick:Z,title:r(`activity:autoPhase.stopTitle`),className:`inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/20`,children:[(0,P.jsx)(g,{className:`h-3.5 w-3.5 fill-current`}),` `,r(`activity:autoPhase.stop`)]})]}),G&&ie&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`button`,{type:`button`,onClick:Q,title:r(`activity:autoPhase.newTitle`),className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 py-1 text-xs font-medium text-primary transition-colors hover:bg-primary/20`,children:[(0,P.jsx)(s,{className:`h-3.5 w-3.5`}),` `,r(`activity:autoPhase.newLabel`)]}),te?(0,P.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-warning/40 bg-warning/10 px-1.5 py-0.5 text-xs`,children:[(0,P.jsx)(`span`,{className:`text-warning`,children:r(`activity:autoPhase.revertConfirm`)}),(0,P.jsx)(`button`,{type:`button`,onClick:ne,className:`rounded bg-destructive/15 px-1.5 py-0.5 font-medium text-destructive hover:bg-destructive/25`,children:r(`common:action.yes`)}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>$(!1),className:`rounded px-1.5 py-0.5 text-muted-foreground hover:text-foreground`,children:r(`common:action.no`)})]}):(0,P.jsxs)(`button`,{type:`button`,onClick:()=>$(!0),title:r(`activity:autoPhase.revertTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[(0,P.jsx)(_,{className:`h-3.5 w-3.5`}),` `,r(`activity:autoPhase.revert`)]})]}),(0,P.jsx)(O,{variant:`ghost`,size:`icon`,onClick:e,children:(0,P.jsx)(m,{className:`h-4 w-4`})})]})]}),G&&y&&(0,P.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5`,children:[(0,P.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,P.jsx)(u,{className:`h-3 w-3`}),` `,r(`activity:autoPhase.goal`)]}),(0,P.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:y})]}),G?(0,P.jsx)(`div`,{className:`flex min-h-0 flex-1`,children:(0,P.jsx)(H,{})}):K?(0,P.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,P.jsxs)(`div`,{className:`max-w-lg w-full space-y-5 text-center`,children:[(0,P.jsx)(d,{className:`h-10 w-10 mx-auto animate-spin text-primary/70`}),(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(`h2`,{className:`text-xl font-semibold`,children:r(`activity:autoPhase.planning`)}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`activity:autoPhase.planningBody`)})]}),(0,P.jsxs)(`div`,{className:`rounded-lg border border-border bg-card px-4 py-3 text-left`,children:[(0,P.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,P.jsx)(u,{className:`h-3 w-3`}),` `,r(`activity:autoPhase.goal`)]}),(0,P.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:R})]}),(0,P.jsxs)(O,{variant:`outline`,onClick:J,className:`gap-2`,children:[(0,P.jsx)(g,{className:`h-4 w-4 fill-current`}),` `,r(`common:action.cancel`)]})]})}):(0,P.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,P.jsxs)(`div`,{className:`max-w-lg w-full space-y-6`,children:[(0,P.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,P.jsx)(u,{className:`h-10 w-10 mx-auto text-primary/60`}),(0,P.jsx)(`h2`,{className:`text-xl font-semibold`,children:r(`activity:autoPhase.startHeading`)}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`activity:autoPhase.startBody`)})]}),(0,P.jsx)(`textarea`,{value:I,onChange:e=>L(e.target.value),placeholder:r(`activity:autoPhase.startPlaceholder`),rows:5,className:`w-full rounded-lg border border-border bg-card px-4 py-3 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary/30 placeholder:text-muted-foreground/50`,onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),q())}}),(0,P.jsxs)(`label`,{className:`flex cursor-pointer items-center justify-center gap-2 text-xs text-muted-foreground`,children:[(0,P.jsx)(`input`,{type:`checkbox`,checked:U,onChange:e=>W(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),r(`activity:autoPhase.isolateLabel`)]}),(0,P.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,P.jsxs)(O,{onClick:q,disabled:!I.trim(),className:`flex-1 gap-2`,children:[(0,P.jsx)(l,{className:`h-4 w-4`}),r(`activity:autoPhase.startButton`)]})}),(0,P.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center`,children:[r(`activity:autoPhase.ctrlHint`),` ·`,` `,r(U?`activity:autoPhase.isolateOn`:`activity:autoPhase.isolateOff`)]})]})}),A.length>0&&(0,P.jsxs)(`div`,{className:`border-t bg-card/50 shrink-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-4 pt-2 text-xs`,children:[(0,P.jsx)(`button`,{type:`button`,onClick:()=>V(!1),className:w(`rounded px-2 py-0.5 border transition-colors`,B?`border-border text-muted-foreground hover:text-foreground`:`bg-primary/10 border-primary/30 text-primary`),children:r(`activity:autoPhase.lanes`)}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>V(!0),className:w(`rounded px-2 py-0.5 border transition-colors`,B?`bg-primary/10 border-primary/30 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:r(`activity:autoPhase.graph`)})]}),(0,P.jsxs)(`div`,{className:`space-y-2 px-4 pb-3`,children:[(0,P.jsx)(j,{}),B?(0,P.jsx)(k,{worktrees:A,baseBranch:F}):(0,P.jsx)(ee,{worktrees:A,baseBranch:F})]})]})]})}export{W as AutoPhaseView};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Kn as r,Z as i,fi as a,fr as o,jt as s}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{a as c,c as l,i as u,n as d,o as f,r as p,t as m}from"./monaco-DqY9Mr3N.js";import{t as h}from"./ws-client-Dglowar-.js";import{t as g}from"./utils-B-rhScDN.js";import{I as _,L as v,R as y,T as b,b as x,x as S}from"./index-0LBBDKsK.js";var C={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,json:`json`,css:`css`,html:`html`,svg:`xml`,md:`markdown`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sh:`shell`,bash:`shell`,ps1:`powershell`,py:`python`,rs:`rust`,go:`go`,rb:`ruby`,java:`java`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,sql:`sql`,xml:`xml`},w=Array.from(new Set(Object.values(C))).filter(e=>e!==`plaintext`),T=12e3,E=4e3,D=5e3,O=1e4;function k(e){return C[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function A(e){return e.match(/([A-Za-z_$][\w$]*)$/)?.[1]??``}function j(e,t){return e.triggerCharacter?!0:t.length>=3}function M(e,t){return e.triggerCharacter===`.`?!0:e.triggerCharacter?!1:/^(findBy|findAllBy|create|update|delete|remove|get[A-Z_]|set[A-Z_]|use[A-Z_])/.test(t)}function N(e){return[e.filePath,e.language,e.lineNumber,e.column,e.versionId??``,e.triggerCharacter??``,e.linePrefix.slice(-160),e.suffix.slice(0,160)].join(`\0`)}var P=e(t(),1),F=n();l.config({monaco:m});function I(e){switch(e){case`method`:return c.CompletionItemKind.Method;case`function`:return c.CompletionItemKind.Function;case`constructor`:return c.CompletionItemKind.Constructor;case`field`:return c.CompletionItemKind.Field;case`variable`:return c.CompletionItemKind.Variable;case`class`:return c.CompletionItemKind.Class;case`interface`:return c.CompletionItemKind.Interface;case`module`:return c.CompletionItemKind.Module;case`property`:return c.CompletionItemKind.Property;case`unit`:return c.CompletionItemKind.Unit;case`value`:return c.CompletionItemKind.Value;case`enum`:return c.CompletionItemKind.Enum;case`keyword`:return c.CompletionItemKind.Keyword;case`snippet`:return c.CompletionItemKind.Snippet;case`file`:return c.CompletionItemKind.File;case`reference`:return c.CompletionItemKind.Reference;default:return c.CompletionItemKind.Text}}function L(){let e=_(e=>e.openFiles),t=_(e=>e.activeFilePath),n=_(e=>e.setActiveFile),r=_(e=>e.closeFile);return e.length===0?null:(0,F.jsx)(`div`,{className:`flex items-center border-b bg-muted/40 overflow-x-auto shrink-0`,children:e.map(e=>{let a=e.path===t,s=e.path.split(`/`).pop()??e.path;return(0,F.jsxs)(`button`,{type:`button`,onClick:()=>n(e.path),onMouseDown:t=>{t.button===1&&(t.preventDefault(),r(e.path))},className:g(`group flex items-center gap-1.5 px-3 py-1.5 text-[11px] border-r whitespace-nowrap min-w-0 max-w-[180px] transition-colors`,a?`bg-background border-t-2 border-t-primary text-foreground -mb-px`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),title:e.path,children:[e.dirty&&(0,F.jsx)(o,{className:`h-2 w-2 fill-current text-primary shrink-0`}),(0,F.jsx)(`span`,{className:`truncate`,children:s}),(0,F.jsx)(i,{className:g(`h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity`,a&&`opacity-100`),onClick:t=>{t.stopPropagation(),r(e.path)}})]},e.path)})})}function R(){let{t:e}=a(),t=_(e=>e.openFiles),n=_(e=>e.activeFilePath),i=_(e=>e.updateContent),{theme:o}=S(),l=(0,P.useRef)(null),m=(0,P.useRef)(n),g=(0,P.useRef)(new Map),C=(0,P.useMemo)(()=>t.find(e=>e.path===n)??null,[t,n]),R=n?k(n):`plaintext`,z=x(),[B,V]=(0,P.useState)(!1);(0,P.useEffect)(()=>{m.current=n},[n]),(0,P.useEffect)(()=>{let e=x();u.setTheme(e)},[o]),(0,P.useEffect)(()=>{let e=w.map(e=>c.registerCompletionItemProvider(e,{triggerCharacters:[`.`,`_`],provideCompletionItems:async(e,t,n,r)=>{let i=m.current;if(!i)return{suggestions:[]};let a=e.getOffsetAt(t),o=e.getValue(),s=o.slice(Math.max(0,a-T),a),l=o.slice(a,a+E),u=e.getLineContent(t.lineNumber).slice(0,Math.max(0,t.column-1)),d=A(u),f={triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind};if(!j(f,d))return{suggestions:[]};let p=`cmp_${Date.now()}_${Math.random().toString(36).slice(2)}`,_=e.getWordUntilPosition(t),v={startLineNumber:t.lineNumber,endLineNumber:t.lineNumber,startColumn:_.startColumn,endColumn:t.column},b=h(y.getState().wsUrl),x=e=>e.map((e,t)=>({label:e.label,kind:I(e.kind),insertText:e.insertText,detail:e.detail??(e.source?`WrongStack ${e.source}`:void 0),documentation:e.documentation,sortText:e.sortText??`${String(t).padStart(3,`0`)}-${e.label}`,range:v,insertTextRules:e.kind===`snippet`?c.CompletionItemInsertTextRule.InsertAsSnippet:void 0})),S=N({filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,versionId:e.getVersionId(),triggerCharacter:n.triggerCharacter,linePrefix:u,suffix:l}),C=g.current.get(S);return C&&C.expiresAt>Date.now()?{suggestions:x(C.items)}:await new Promise(a=>{let c=!1,u=()=>{},m=null,h,_=e=>{c||(c=!0,u(),h!==void 0&&window.clearTimeout(h),m?.dispose(),a({suggestions:e}))};u=b.on(`completion.result`,e=>{let t=e;t.payload.requestId===p&&(g.current.set(S,{expiresAt:Date.now()+O,items:t.payload.items}),_(x(t.payload.items)))}),h=window.setTimeout(()=>_([]),D),m=r.onCancellationRequested(()=>_([])),b.requestCompletion({requestId:p,filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,content:o.length<=5e5?o:void 0,prefix:s,suffix:l,triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind,allowLlm:M(f,d)})})}}));return()=>{e.forEach(e=>{e.dispose()})}},[]);let H=(0,P.useCallback)(()=>{let e=l.current;if(!e)return null;let t=e.getSelection();if(!t||t.isEmpty())return null;let n=e.getModel();if(!n)return null;let r=n.getValueInRange(t);return r.trim()?{content:r,startLine:t.startLineNumber,endLine:t.endLineNumber}:null},[]),U=(0,P.useCallback)(()=>{b(`chat`),requestAnimationFrame(()=>{document.querySelector(`textarea[placeholder*="agent"], textarea[placeholder*="follow-up"]`)?.focus()})},[]),W=(0,P.useCallback)(()=>{let e=m.current;if(!e)return;let t=H();t&&(v.getState().addRef({kind:`snippet`,path:e,startLine:t.startLine,endLine:t.endLine,content:t.content}),U())},[H,U]),G=(0,P.useCallback)(()=>{let e=m.current;e&&(v.getState().addRef({kind:`file`,path:e}),U())},[U]),K=(0,P.useCallback)(t=>{l.current=t,u.setTheme(x()),t.onDidChangeCursorSelection(()=>{let e=t.getSelection();V(!!e&&!e.isEmpty())}),t.addAction({id:`wrongstack-send-to-chat`,label:e(`activity:codeEditor.sendSelectionAction`),contextMenuGroupId:`wrongstack`,contextMenuOrder:0,precondition:void 0,keybindings:[p.CtrlCmd|p.Shift|d.KeyL],run:e=>{let t=e.getSelection();t&&!t.isEmpty()?W():G()}})},[W,G]),q=(0,P.useCallback)(e=>{n&&e!==void 0&&i(n,e)},[n,i]);return(0,P.useEffect)(()=>{let e=e=>{let t=e.ctrlKey||e.metaKey,r=e.target?.tagName?.toLowerCase()===`textarea`||e.target?.closest(`.monaco-editor`)!==null;!t||!r||(e.key.toLowerCase()===`s`&&(e.preventDefault(),window.dispatchEvent(new CustomEvent(`wrongstack:save-file`,{detail:{filePath:n}}))),e.key.toLowerCase()===`w`&&(e.preventDefault(),n&&_.getState().closeFile(n)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),t.length===0?(0,F.jsx)(`div`,{className:`flex h-full min-w-0 items-center justify-center`,children:(0,F.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`activity:codeEditor.noFilesOpen`)}),(0,F.jsx)(`p`,{className:`text-[11px] text-muted-foreground/60`,children:e(`activity:codeEditor.selectToEdit`)})]})}):(0,F.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col overflow-hidden`,children:[(0,F.jsx)(L,{}),(0,F.jsxs)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:[(B||C)&&(0,F.jsx)(`div`,{className:`absolute top-2 right-2 z-10 flex items-center gap-1 rounded-lg border border-border bg-popover/95 backdrop-blur shadow-md p-1`,children:(0,F.jsxs)(`button`,{type:`button`,onClick:B?W:G,className:`inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] text-foreground hover:bg-accent transition-colors`,title:e(B?`activity:codeEditor.sendSelectedTitle`:`activity:codeEditor.mentionFileTitle`),children:[B?(0,F.jsx)(s,{className:`h-3 w-3`}):(0,F.jsx)(r,{className:`h-3 w-3`}),(0,F.jsx)(`span`,{children:e(B?`activity:codeEditor.sendToChat`:`activity:codeEditor.mentionFile`)})]})}),C?(0,F.jsx)(f,{language:R,value:C.content,onChange:q,theme:z,onMount:K,loading:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(`span`,{className:`text-[11px] text-muted-foreground animate-pulse`,children:e(`activity:codeEditor.loadingEditor`)})}),options:{minimap:{enabled:!1},fontSize:13,fontFamily:`'IBM Plex Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace`,lineNumbers:`on`,renderWhitespace:`selection`,scrollBeyondLastLine:!1,wordWrap:`off`,tabSize:2,smoothScrolling:!0,cursorBlinking:`smooth`,cursorSmoothCaretAnimation:`on`,bracketPairColorization:{enabled:!0},"semanticHighlighting.enabled":!0,automaticLayout:!0,padding:{top:8}}},C.path):(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e(`activity:codeEditor.selectTab`)})})]})]})}export{R as CodeEditor};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{At as r,Bt as i,Fr as a,In as o,Jr as s,Zn as c,fi as l,hi as u,lt as d,oi as f,si as p,ur as m}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";var h=e(t(),1),g=n();function _({title:e,value:t,subtitle:n,icon:r,color:i=`text-primary`,trend:a}){let{t:o}=l();return(0,g.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,g.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium`,children:e}),(0,g.jsx)(`p`,{className:`mt-1 truncate text-xl font-semibold tabular-nums sm:text-2xl ${i}`,children:t}),n&&(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:n})]}),(0,g.jsx)(`div`,{className:`shrink-0 rounded-lg bg-muted/70 p-2 ${i}`,children:(0,g.jsx)(r,{className:`w-5 h-5`})})]}),a&&(0,g.jsxs)(`div`,{className:`mt-2 flex items-center gap-1`,children:[a===`up`&&(0,g.jsx)(d,{className:`w-3 h-3 text-[hsl(var(--success))]`}),a===`down`&&(0,g.jsx)(d,{className:`w-3 h-3 rotate-180 text-destructive`}),(0,g.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:o(a===`up`?`activity:debug.trendUp`:a===`down`?`activity:debug.trendDown`:`activity:debug.trendStable`)})]})]})}function v(){let{t:e}=l(),[t,n]=(0,h.useState)({fileWatcher:null,system:null,lastUpdated:null,error:null}),[v,x]=(0,h.useState)(!0),[S,C]=(0,h.useState)(2e3),w=(0,h.useCallback)(async()=>{try{let e=await fetch(`/debug/watcher-metrics`),t=null,r=e.headers.get(`content-type`)??``;e.ok&&r.includes(`application/json`)&&(t=await e.json());let i={memoryUsage:{heapUsed:performance.memory?.usedJSHeapSize??0,heapTotal:performance.memory?.totalJSHeapSize??0,external:0,rss:0,arrayBuffers:0},uptime:performance.timeOrigin?performance.now()/1e3:0,cpuUsage:{user:0,system:0}};n({fileWatcher:t,system:i,lastUpdated:new Date,error:null})}catch(e){n(t=>({...t,error:e instanceof Error?e.message:u.t(`activity:debug.fetchFailed`)}))}finally{x(!1)}},[]);return(0,h.useEffect)(()=>{w();let e=setInterval(w,S);return()=>clearInterval(e)},[w,S]),(0,g.jsx)(`div`,{className:`h-full min-h-0 min-w-0 flex-1 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,g.jsxs)(`div`,{className:`mx-auto flex max-w-7xl flex-col gap-5`,children:[(0,g.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,g.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsxs)(`h1`,{className:`flex items-center gap-2 text-lg font-semibold sm:text-xl`,children:[(0,g.jsx)(p,{className:`h-5 w-5 text-primary`}),e(`activity:debug.heading`)]}),(0,g.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e(`activity:debug.subtitle`)})]}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,g.jsxs)(`label`,{className:`flex min-w-0 items-center gap-2 text-sm`,children:[(0,g.jsx)(i,{className:`w-4 h-4 text-muted-foreground`}),(0,g.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e(`activity:debug.refreshLabel`)}),(0,g.jsxs)(`select`,{value:S,onChange:e=>C(Number(e.target.value)),className:`h-9 rounded-md border border-border/70 bg-background/70 px-2 text-sm`,children:[(0,g.jsx)(`option`,{value:1e3,children:`1s`}),(0,g.jsx)(`option`,{value:2e3,children:`2s`}),(0,g.jsx)(`option`,{value:5e3,children:`5s`}),(0,g.jsx)(`option`,{value:1e4,children:`10s`})]})]}),(0,g.jsxs)(`button`,{onClick:()=>{x(!0),w()},disabled:v,className:`inline-flex h-9 items-center justify-center gap-2 rounded-md bg-primary px-3 text-sm font-medium text-primary-foreground shadow-sm shadow-primary/15 hover:bg-primary/90 disabled:opacity-50`,children:[(0,g.jsx)(i,{className:`w-4 h-4 ${v?`animate-spin`:``}`}),e(`common:action.refresh`)]})]})]})}),t.lastUpdated&&(0,g.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border/60 bg-card/55 px-3 py-2 text-sm text-muted-foreground`,children:[(0,g.jsx)(m,{className:`w-4 h-4`}),e(`activity:debug.lastUpdated`,{time:t.lastUpdated.toLocaleTimeString()})]}),t.error&&(0,g.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-destructive/25 bg-destructive/10 p-4 text-destructive`,children:[(0,g.jsx)(f,{className:`w-5 h-5 flex-shrink-0`}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`p`,{className:`font-medium`,children:e(`activity:debug.fetchFailed`)}),(0,g.jsx)(`p`,{className:`text-sm opacity-80`,children:t.error})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(c,{className:`h-4 w-4 text-primary`}),e(`activity:debug.fileWatcher`)]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.watcherStatus`),value:t.fileWatcher?.watcherActive?e(`activity:debug.running`):e(`activity:debug.stopped`),icon:r,color:t.fileWatcher?.watcherActive?`text-[hsl(var(--success))]`:`text-destructive`}),(0,g.jsx)(_,{title:e(`activity:debug.activeProjects`),value:t.fileWatcher?.activeProjects??0,subtitle:e(`activity:debug.projectsWatched`),icon:s,color:`text-primary`}),(0,g.jsx)(_,{title:e(`activity:debug.fileChanges`),value:t.fileWatcher?.fileChangesDetected??0,subtitle:e(`activity:debug.totalDetected`),icon:a,color:`text-primary`,trend:`neutral`}),(0,g.jsx)(_,{title:e(`activity:debug.filesProcessed`),value:t.fileWatcher?.filesProcessed??0,subtitle:e(`activity:debug.afterHash`),icon:o,color:`text-[hsl(var(--success))]`})]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mt-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.broadcastsSent`),value:t.fileWatcher?.broadcastsSent??0,subtitle:e(`activity:debug.toClients`),icon:d,color:`text-[hsl(var(--success))]`}),(0,g.jsx)(_,{title:e(`activity:debug.debounceResets`),value:t.fileWatcher?.debounceResets??0,subtitle:e(`activity:debug.rapidWrites`),icon:i,color:`text-[hsl(var(--warning))]`}),(0,g.jsx)(_,{title:e(`activity:debug.avgDebounce`),value:`${(t.fileWatcher?.averageDebounceDelayMs??0).toFixed(1)}ms`,subtitle:e(`activity:debug.actualDelay`),icon:m,color:`text-[hsl(var(--warning))]`}),(0,g.jsx)(_,{title:e(`activity:debug.totalDelay`),value:`${(t.fileWatcher?.totalDebounceDelayMs??0).toFixed(0)}ms`,subtitle:e(`activity:debug.sumDelays`),icon:p,color:`text-primary`})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(o,{className:`h-4 w-4 text-primary`}),e(`activity:debug.browserPerf`)]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,g.jsx)(_,{title:e(`activity:debug.heapUsed`),value:y(t.system?.memoryUsage?.heapUsed??0),subtitle:e(`activity:debug.jsHeap`),icon:p,color:`text-primary`}),(0,g.jsx)(_,{title:e(`activity:debug.heapTotal`),value:y(t.system?.memoryUsage?.heapTotal??0),subtitle:e(`activity:debug.totalHeap`),icon:p,color:`text-[hsl(var(--success))]`}),(0,g.jsx)(_,{title:e(`activity:debug.pageUptime`),value:b(t.system?.uptime??0),subtitle:e(`activity:debug.sinceLoad`),icon:m,color:`text-primary`})]})]}),(0,g.jsxs)(`section`,{children:[(0,g.jsxs)(`h2`,{className:`mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground`,children:[(0,g.jsx)(a,{className:`h-4 w-4 text-primary`}),e(`activity:debug.rawData`)]}),(0,g.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,g.jsx)(`pre`,{className:`overflow-x-auto text-xs font-mono text-muted-foreground`,children:JSON.stringify({fileWatcher:t.fileWatcher,browserMemory:t.system?.memoryUsage,pageUptime:t.system?.uptime},null,2)})})]})]})})}function y(e){if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return`${(e/t**r).toFixed(1)} ${n[r]}`}function b(e){return e<60?`${e.toFixed(0)}s`:e<3600?`${(e/60).toFixed(1)}m`:`${(e/3600).toFixed(1)}h`}export{v as DebugDashboard};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{c as t,m as n,p as r}from"./markdown-D0X23O-i.js";import{Ft as i,Kn as a,Tr as o,Z as s,ai as c,dn as l,fi as u,fr as d,hi as f,ht as p,it as m,jr as h,jt as g,ri as _,sn as v,ur as y,zt as b}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{n as x}from"./ui-store-isn1eTG7.js";import{t as S}from"./utils-B-rhScDN.js";import{T as C,d as w}from"./index-0LBBDKsK.js";var T=e(n(),1),E=r(),D={note:a,ask:_,assign:g,steer:i,btw:o,broadcast:g,status:d,result:c},O={high:`border-destructive/25 bg-destructive/10 text-destructive`,normal:`border-border bg-muted text-muted-foreground`,low:`border-primary/20 bg-primary/10 text-primary`};function k(e){return new Date(e).toLocaleString()}function A(e){let t=new Date(e),n=Date.now()-t.getTime();return n<6e4?f.t(`common:time.justNow`):n<36e5?f.t(`common:time.minutesAgo`,{count:Math.round(n/6e4)}):n<864e5?f.t(`common:time.hoursAgo`,{count:Math.round(n/36e5)}):n<6048e5?f.t(`common:time.daysAgo`,{count:Math.round(n/864e5)}):t.toLocaleDateString()}function j(){let{t:e}=u();return(0,E.jsx)(`div`,{className:`flex h-full min-h-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,E.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,E.jsx)(l,{className:`h-6 w-6`})}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:e(`activity:mailbox.emptyDetail`)}),(0,E.jsx)(`div`,{className:`mt-1 text-xs`,children:e(`activity:mailbox.emptyDetailHint`)})]})]})})}function M({readBy:e}){let{t}=u(),n=Object.entries(e);return n.length===0?null:(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide`,children:t(`activity:mailbox.readBy`)}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:n.map(([e,t])=>(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] bg-success/10 text-success`,title:k(t),children:[(0,E.jsx)(c,{className:`h-2.5 w-2.5`}),e]},e))})]})}function N({className:e}){let{t:n}=u(),r=x(e=>e.selectedMailMessage),i=x(e=>e.setSelectedMailMessage);(0,T.useEffect)(()=>()=>{i(null)},[i]);function a(){i(null),C(`chat`)}if(!r)return(0,E.jsx)(j,{});let o=D[r.type]??v,l=n(`activity:mailbox.type.${r.type}`,{defaultValue:r.type}),d=O[r.priority]??O.normal;return(0,E.jsx)(`div`,{className:S(`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:(0,E.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/70 bg-card/75 shadow-sm`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border/70 px-3 py-3 sm:px-4 shrink-0`,children:[(0,E.jsx)(`button`,{type:`button`,onClick:a,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-border/70 bg-background/60 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:mailbox.backToChat`),children:(0,E.jsx)(h,{className:`h-4 w-4`})}),(0,E.jsx)(`div`,{className:S(`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg`,r.completed?`bg-[hsl(var(--success)/0.1)]`:`bg-primary/10`),children:(0,E.jsx)(o,{className:S(`h-4 w-4`,r.completed?`text-[hsl(var(--success))]`:`text-primary`)})}),(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,E.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,E.jsx)(`h2`,{className:`text-sm font-semibold text-foreground truncate`,children:r.subject}),r.completed&&(0,E.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 rounded-md border border-[hsl(var(--success)/0.25)] bg-[hsl(var(--success)/0.08)] px-1.5 py-0.5 text-[10px] font-semibold text-[hsl(var(--success))]`,children:[(0,E.jsx)(c,{className:`h-3 w-3`}),n(`activity:mailbox.completed`)]}),(0,E.jsx)(`span`,{className:S(`rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase`,d),children:r.priority||`normal`})]}),(0,E.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2 text-[11px] text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`min-w-0 truncate font-medium text-foreground/80`,children:r.from}),(0,E.jsx)(`span`,{children:`→`}),(0,E.jsx)(`span`,{className:`min-w-0 truncate`,children:r.to===`*`||r.to===`all`?n(`activity:mailbox.everyone`):r.to}),(0,E.jsx)(`span`,{className:`opacity-40`,children:`•`}),(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(y,{className:`h-3 w-3`}),A(r.timestamp)]})]})]}),(0,E.jsx)(`button`,{type:`button`,onClick:a,className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:mailbox.closeTitle`),children:(0,E.jsx)(s,{className:`h-4 w-4`})})]}),(0,E.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:(0,E.jsx)(`div`,{className:`mx-auto w-full max-w-4xl px-4 py-5`,children:(0,E.jsx)(`div`,{className:`markdown-content prose prose-sm dark:prose-invert max-w-none text-sm leading-relaxed`,children:(0,E.jsx)(t,{components:w,children:r.body})})})}),(0,E.jsxs)(`div`,{className:`border-t border-border/70 bg-muted/20 px-4 py-3 shrink-0`,children:[(0,E.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-x-6 gap-y-2 text-xs`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(p,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{children:l})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,E.jsx)(`span`,{className:S(`rounded border px-1.5 py-0.5 text-[10px] font-semibold uppercase`,d),children:r.priority||`normal`})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(m,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{className:`truncate`,title:r.from,children:r.from})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,E.jsx)(y,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{children:k(r.timestamp)})]}),r.replyTo&&(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,E.jsx)(b,{className:`h-3 w-3 shrink-0`}),(0,E.jsx)(`span`,{className:`truncate`,children:n(`activity:mailbox.replyTo`,{id:r.replyTo})})]}),r.completed&&r.completedBy&&(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,E.jsx)(c,{className:`h-3 w-3 shrink-0 text-success`}),(0,E.jsx)(`span`,{children:r.completedAt?n(`activity:mailbox.completedByAt`,{name:r.completedBy,time:k(r.completedAt)}):n(`activity:mailbox.completedBy`,{name:r.completedBy})})]}),r.outcome&&(0,E.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,E.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:n(`activity:mailbox.outcome`)}),(0,E.jsx)(`span`,{children:r.outcome})]}),r.taskContext&&(0,E.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,E.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:n(`activity:mailbox.task`)}),(0,E.jsx)(`span`,{children:r.taskContext})]})]}),Object.keys(r.readBy??{}).length>0&&(0,E.jsx)(`div`,{className:`mt-3 pt-3 border-t border-border/50`,children:(0,E.jsx)(M,{readBy:r.readBy})})]})]})})}export{N as MailboxDetailView};
@@ -1,4 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{c as t,m as n,p as r,s as i}from"./markdown-D0X23O-i.js";import{$ as a,Cr as o,Dn as s,Fr as c,Nr as l,Nt as u,Sn as d,T as f,X as p,dn as m,et as h,fi as g,hi as _,in as v,it as y,jt as b,kn as x,nr as S,oi as C,or as w,pt as T,rt as E,un as ee,ur as D,xr as te}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{s as O}from"./ws-client-Dglowar-.js";import{t as ne}from"./session-store-DhcyG2AC.js";import{t as k}from"./utils-B-rhScDN.js";import{A,F as j,M,P as N,S as re,c as ie,d as P,f as F,j as ae,l as oe,u as I}from"./index-0LBBDKsK.js";import{a as L,c as R,d as se,f as ce,h as z,i as le,l as ue,m as B,n as de,o as fe,p as pe,r as me,s as he,t as ge,u as _e}from"./xyflow-CGx_hPAX.js";var V=e(n(),1),H=r();function U(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);return t<600?`${(t/10).toFixed(1)}s`:`${Math.floor(t/600)}m ${Math.round(t%600/10)}s`}var ve={user:{Icon:y,labelKey:`activity:message.roleYou`,avatarBg:`bg-primary`,avatarColor:`text-primary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-primary/20`,bubbleBg:`bg-primary`,bubbleBorder:`border-transparent`,textColor:`text-primary-foreground`},assistant:{Icon:o,labelKey:`activity:message.roleAssistant`,avatarBg:`bg-accent`,avatarColor:`text-accent-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-accent/20`,bubbleBg:`bg-card`,bubbleBorder:`border-border`,textColor:`text-foreground`},tool:{Icon:T,labelKey:`activity:message.roleTool`,avatarBg:`bg-secondary`,avatarColor:`text-secondary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-secondary/20`,bubbleBg:`bg-muted/80`,bubbleBorder:`border-border`,textColor:`text-foreground`},system:{Icon:o,labelKey:`activity:transcript.kindSystem`,avatarBg:`bg-muted`,avatarColor:`text-muted-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-muted/20`,bubbleBg:`bg-muted/50`,bubbleBorder:`border-border`,textColor:`text-muted-foreground`},error:{Icon:C,labelKey:`activity:transcript.kindError`,avatarBg:`bg-destructive`,avatarColor:`text-destructive-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-destructive/20`,bubbleBg:`bg-destructive/5`,bubbleBorder:`border-destructive/20`,textColor:`text-destructive`}};function W({entry:e}){let{t:n}=g();return e.role===`error`?(0,H.jsx)(oe,{text:e.text}):e.role===`tool`?(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5 tool-details`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,H.jsx)(T,{className:`h-3 w-3`}),(0,H.jsx)(`span`,{className:`font-mono`,children:e.tool??n(`activity:watch.toolFallback`)}),e.durationMs!==void 0&&(0,H.jsxs)(`span`,{className:`ml-auto text-[10px] text-muted-foreground font-normal tabular-nums`,children:[(0,H.jsx)(D,{className:`h-3 w-3 inline mr-0.5 align-text-bottom`}),U(e.durationMs)]})]}),e.input!==void 0&&e.input!==null&&(0,H.jsx)(`div`,{className:`p-3 bg-muted/50 rounded-lg overflow-x-auto`,children:(0,H.jsx)(ie,{input:e.input})}),e.output!==void 0&&e.output!==null?(0,H.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:typeof e.output==`string`?(0,H.jsx)(t,{remarkPlugins:[i],rehypePlugins:F,components:P,children:e.output}):(0,H.jsx)(`pre`,{className:`whitespace-pre-wrap font-mono text-xs bg-card rounded-lg p-2 border border-border overflow-x-auto`,children:JSON.stringify(e.output,null,2)})}):e.text?(0,H.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,H.jsx)(t,{remarkPlugins:[i],rehypePlugins:F,components:P,children:e.text})}):null,e.isError&&(0,H.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-destructive`,children:n(`activity:watch.toolFailed`)}),e.text&&(0,H.jsx)(`pre`,{className:`mt-1 text-xs whitespace-pre-wrap text-destructive/80`,children:e.text})]})]}):(0,H.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,H.jsx)(t,{remarkPlugins:[i],rehypePlugins:F,components:P,children:e.text})})}function ye({entry:e,isContinuation:t=!1}){let{t:n}=g(),r=ve[e.role],i=r.Icon;return(0,H.jsxs)(`div`,{className:`group flex gap-3 animate-message msg-bubble rounded-lg transition-shadow`,children:[t?(0,H.jsx)(`div`,{className:`flex-shrink-0 w-8`}):(0,H.jsx)(`div`,{className:k(`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center`,r.avatarBg,r.avatarColor,r.avatarRing),children:(0,H.jsx)(i,{className:`h-4 w-4`})}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5 min-w-0 flex-1`,children:[!t&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:k(`text-xs font-medium`,r.textColor),children:e.role===`tool`&&e.tool?e.tool:n(r.labelKey)}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.ts).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}),e.role===`tool`&&e.durationMs!==void 0&&(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[`· `,U(e.durationMs)]})]}),(0,H.jsx)(`div`,{className:k(`rounded-2xl px-4 py-3 border`,e.role===`user`&&`rounded-br-md`,e.role===`assistant`&&`rounded-bl-md`,e.role===`tool`&&`rounded-bl-sm`,e.role===`system`&&`rounded-bl-sm opacity-70`,e.role===`error`&&`rounded-bl-sm`,r.bubbleBg,r.bubbleBorder),children:(0,H.jsx)(`div`,{className:k(`text-sm leading-relaxed markdown-content`,r.textColor),children:(0,H.jsx)(W,{entry:e})})}),e.text&&e.role!==`error`&&(0,H.jsx)(`div`,{className:`opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,H.jsx)(I,{text:e.text,label:n(`common:action.copy`)})})]})]})}var be=[`steer`,`ask`,`assign`,`note`],G=2500;function xe({sessionId:e,limit:t=200}){let[n,r]=(0,V.useState)(null),{t:i}=g(),[a,s]=(0,V.useState)(null),[c,l]=(0,V.useState)(``),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(null),[m,h]=(0,V.useState)(`steer`),[v,y]=(0,V.useState)(`high`),[b,x]=(0,V.useState)([]),[S,C]=(0,V.useState)(!1),w=(0,V.useRef)(null),T=(0,V.useRef)(!0),E=(0,V.useRef)(!0),ee=ae(e=>e.liveSessions),D=(0,V.useMemo)(()=>ee.find(t=>t.sessionId===e),[ee,e]),te=(0,V.useMemo)(()=>{let e=D;return e?`${e.status}|${e.agents.map(e=>`${e.id}:${e.status}:${e.toolCalls??0}:${e.iterations??0}`).join(`,`)}`:``},[D]),O=D?.status===`active`||(D?.agents.some(e=>e.status===`running`||e.status===`streaming`)??!1),ne=(0,V.useMemo)(()=>{if(!D)return null;let e=D.agents.find(e=>e.status===`running`||e.status===`streaming`);return e?.currentTool?`🔧 ${e.currentTool}`:e?i(`activity:sessionWatch.working`,{name:e.name??e.id}):null},[D,i]),A=(0,V.useMemo)(()=>{if(!D)return null;let e=D.agents.find(e=>e.partialText&&(e.status===`streaming`||e.status===`running`))??D.agents.find(e=>e.partialText);return e?.partialText?{label:e.id===`leader`?i(`activity:sessionWatch.claude`):e.name||e.id,text:e.partialText}:null},[D,i]),j=(0,V.useCallback)(async()=>{try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/events?limit=${t}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();E.current&&(r(i),s(null))}catch(e){E.current&&s(e instanceof Error?e.message:String(e))}},[e,t]),M=(0,V.useCallback)(async()=>{try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/mailbox`);if(!t.ok)return;let n=await t.json();E.current&&Array.isArray(n.thread)&&x(n.thread)}catch{}},[e]);(0,V.useEffect)(()=>{E.current=!0,r(null),s(null),x([]),j(),M();let e=setInterval(()=>void j(),G),t=setInterval(()=>void M(),G);return()=>{E.current=!1,clearInterval(e),clearInterval(t)}},[j,M]),(0,V.useEffect)(()=>{te&&j()},[te,j]),(0,V.useEffect)(()=>{T.current&&w.current&&(w.current.scrollTop=w.current.scrollHeight)},[n,A]);let N=()=>{let e=w.current;e&&(T.current=e.scrollHeight-e.scrollTop-e.clientHeight<40)},re=async()=>{let t=c.trim();if(!(!t||u)){d(!0),p(null);try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:t,type:m,priority:v})});if(!n.ok)throw Error(`HTTP ${n.status}`);l(``),p(O?_.t(`activity:sessionWatch.sentRunning`):_.t(`activity:sessionWatch.sentIdle`)),M()}catch(e){p(_.t(`activity:sessionWatch.sentFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{d(!1)}}},ie=async()=>{if(!S){C(!0),p(null);try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/interrupt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:_.t(`activity:sessionWatch.interruptReason`)})});if(!t.ok)throw Error(`HTTP ${t.status}`);p(_.t(`activity:sessionWatch.interruptSent`)),M()}catch(e){p(_.t(`activity:sessionWatch.interruptFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{C(!1)}}},P=n?.entries??[];return(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 shrink-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,H.jsx)(`span`,{className:k(`h-1.5 w-1.5 rounded-full`,O?`bg-success animate-pulse`:`bg-muted-foreground`)}),i(`activity:sessionWatch.liveStream`)]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,H.jsxs)(`div`,{className:`text-[10px] text-muted-foreground`,children:[i(`activity:sessionWatch.events`,{count:n.total}),` · `,n.status]}),O&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>void ie(),disabled:S,title:i(`activity:sessionWatch.interruptTitle`),className:`rounded border border-destructive/40 bg-destructive/15 px-1.5 py-0.5 text-[10px] text-destructive hover:bg-destructive/25 disabled:opacity-40 transition-colors`,children:i(S?`activity:sessionWatch.interrupting`:`activity:sessionWatch.interrupt`)})]})]}),ne&&(0,H.jsxs)(`div`,{className:`mb-1.5 shrink-0 text-[10px] text-foreground truncate`,children:[`▶ `,ne]}),a&&(0,H.jsxs)(`div`,{className:`text-[11px] text-destructive mb-1 shrink-0`,children:[`· `,a]}),(0,H.jsxs)(`div`,{ref:w,onScroll:N,className:`min-h-0 min-w-0 flex-1 overflow-y-auto space-y-1.5 pr-1`,children:[P.length===0&&!a&&(0,H.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic`,children:i(`activity:sessionWatch.loading`)}),P.map((e,t)=>(0,H.jsx)(ye,{entry:e,isContinuation:t>0&&P[t-1].role===e.role},`${e.ts}-${t}`)),A&&(0,H.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-accent text-accent-foreground ring-2 ring-offset-2 ring-offset-background ring-accent/20`,children:(0,H.jsx)(o,{className:`h-4 w-4 animate-pulse`})}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[85%] min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground px-1`,children:A.label}),(0,H.jsx)(`div`,{className:`rounded-2xl rounded-bl-md px-4 py-3 bg-card border border-border`,children:(0,H.jsxs)(`span`,{className:`text-sm leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:[A.text,(0,H.jsx)(`span`,{className:`animate-pulse text-primary`,children:`▋`})]})})]})]})]}),b.length>0&&(0,H.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0 max-h-28 overflow-y-auto space-y-1`,children:[(0,H.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:i(`activity:mailbox.messages`)}),b.slice(-6).map(e=>{let t=e.completed?i(`activity:sessionWatch.done`):e.readByLeader?i(`activity:sessionWatch.read`):i(`activity:sessionWatch.delivered`);return(0,H.jsxs)(`div`,{className:`text-[10px] leading-snug`,children:[(0,H.jsx)(`span`,{className:k(`font-semibold mr-1.5`,e.fromLeader?`text-accent`:`text-primary`),children:e.fromLeader?i(`activity:sessionWatch.agent`):i(`activity:sessionWatch.you`)}),(0,H.jsx)(`span`,{className:`text-foreground whitespace-pre-wrap break-words`,children:e.body}),!e.fromLeader&&(0,H.jsx)(`span`,{className:k(`ml-1.5 text-[9px]`,e.completed?`text-success`:e.readByLeader?`text-primary`:`text-muted-foreground`),children:t})]},e.id)})]}),(0,H.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0`,children:[(0,H.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,H.jsx)(`select`,{value:m,onChange:e=>h(e.target.value),title:i(`activity:sessionWatch.msgType.${m}Hint`),className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:be.map(e=>(0,H.jsx)(`option`,{value:e,children:i(`activity:sessionWatch.msgType.${e}Label`)},e))}),(0,H.jsxs)(`select`,{value:v,onChange:e=>y(e.target.value),title:i(`activity:sessionWatch.priority`),className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:[(0,H.jsx)(`option`,{value:`high`,children:`high`}),(0,H.jsx)(`option`,{value:`normal`,children:`normal`}),(0,H.jsx)(`option`,{value:`low`,children:`low`})]})]}),(0,H.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,H.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),re())},rows:2,placeholder:i(`activity:sessionWatch.placeholder`,{label:i(`activity:sessionWatch.msgType.${m}Label`)}),className:`flex-1 resize-none rounded-md bg-muted border border-border px-2 py-1 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring`}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>void re(),disabled:u||!c.trim(),className:`shrink-0 rounded-md bg-primary text-primary-foreground px-2.5 py-1.5 text-xs hover:bg-primary/90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:u?`…`:i(`activity:sessionWatch.send`)})]}),f&&(0,H.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:f}),(0,H.jsx)(`div`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:i(`activity:sessionWatch.sendHint`)})]})]})}function K(e){return e==null||!Number.isFinite(e)?`0`:e<1e3?String(Math.round(e)):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Se(e,t){if(!e)return`never`;let n=Date.parse(e);if(!Number.isFinite(n))return`never`;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s ago`:r<3600?`${Math.round(r/60)}m ago`:r<86400?`${Math.round(r/3600)}h ago`:`${Math.round(r/86400)}d ago`}function Ce(e,t){if(!e)return``;let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s`:r<3600?`${Math.round(r/60)}m`:`${Math.round(r/3600)}h`}function we(e){if(!e)return;let t=e.split(`/`);return t[t.length-1]?.slice(0,18)}function Te(e,t=380){let n=new Map,r=Math.max(1,e.length);return e.forEach((e,i)=>{let a=(i-(r-1)/2)*t;n.set(e,600+a)}),n}function Ee(e,t,n){let r=Math.min(3,n),i=Math.floor(t/r),a=t%r;return{x:e-(Math.min(r,n-i*r)-1)*190/2+a*190,y:640+i*150}}function De(e){return e===`tui`?`tui`:e===`repl`||e===`cli`?`repl`:`webui`}function Oe(e){return e===`tui`?`TUI`:e===`repl`?`REPL`:`WebUI`}function ke(e){switch(e){case`running`:case`active`:return`active`;case`idle`:return`idle`;case`completed`:return`completed`;case`failed`:case`error`:return`error`;case`stopped`:return`offline`;default:return`idle`}}function Ae(e,t){let n=new Set,r=[];for(let i of e){let e=De(i.clientType),a=`client-${i.pid??i.sessionId}`,o=[],s=!1;for(let e of i.agents){n.add(e.id);let r=t.get(e.id),i=ke(r?.status??e.status);(i===`active`||i===`streaming`)&&(s=!0),o.push({officeId:`${a}__agent-${e.id}`,serverId:e.id,name:r?.name??e.name??e.id,status:i,iteration:r?.iteration??e.iterations??0,toolCalls:r?.toolCalls??e.toolCalls??0,costUsd:r?.costUsd??e.costUsd??0,tokensIn:r?.tokensIn??e.tokensIn??0,tokensOut:r?.tokensOut??e.tokensOut??0,ctxPct:r?.ctxPct??e.ctxPct,model:r?.model??e.model,lastActivityAt:e.lastActivityAt,currentTask:r?.currentTool??r?.lastTool??e.currentTool})}let c=i.status===`closing`||i.status===`stale`?`offline`:s?`active`:`idle`;r.push({id:a,type:e,label:i.projectName||Oe(e),sublabel:[Oe(e),i.gitBranch?`⎇ ${i.gitBranch}`:``,i.pid?`pid ${i.pid}`:``].filter(Boolean).join(` · `),status:c,sessionId:i.sessionId,pid:i.pid,branch:i.gitBranch,workingDir:i.workingDir,startedAt:i.startedAt,agents:o})}let i=[...t.values()].filter(e=>!n.has(e.id));if(i.length>0){let e=r.find(e=>e.type===`webui`);e||(e={id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI`,status:`idle`,agents:[]},r.push(e));for(let t of i){let n=ke(t.status);(n===`active`||n===`streaming`)&&(e.status=`active`),e.agents.push({officeId:`${e.id}__agent-${t.id}`,serverId:t.id,name:t.name,status:n,iteration:t.iteration??0,toolCalls:t.toolCalls??0,costUsd:t.costUsd??0,tokensIn:t.tokensIn??0,tokensOut:t.tokensOut??0,ctxPct:t.ctxPct,model:t.model,currentTask:t.currentTool??t.lastTool})}}return r.length===0&&r.push({id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI · connecting…`,status:`idle`,agents:[]}),r}function je(e){return e.startsWith(`tool`)?`hsl(var(--warning))`:e.startsWith(`mailbox`)?`hsl(var(--info))`:e.startsWith(`provider`)?`hsl(var(--primary))`:e.startsWith(`agent`)||e.startsWith(`subagent`)?`hsl(var(--success))`:e.includes(`error`)?`hsl(var(--destructive))`:`hsl(var(--primary))`}var q={primary:`hsl(var(--primary))`,info:`hsl(var(--info))`,success:`hsl(var(--success))`,warning:`hsl(var(--warning))`,destructive:`hsl(var(--destructive))`,muted:`hsl(var(--muted-foreground))`};function Me(e){return Math.min(100,Math.max(0,e??0))}function J({status:e,small:t,activity:n=0}){let r=t?`w-2 h-2`:`w-3 h-3`,i=t?4+n*4:6+n*6,a={idle:`bg-muted-foreground`,active:`bg-[hsl(var(--success))]`,streaming:`bg-primary`,completed:`bg-primary`,error:`bg-destructive`,offline:`bg-muted-foreground/60`},o={idle:q.muted,active:q.success,streaming:q.primary,completed:q.primary,error:q.destructive,offline:q.muted};return(0,H.jsx)(`span`,{className:k(`rounded-full`,r,n>0&&`animate-pulse`,a[e]),style:{boxShadow:n>0?`0 0 ${i}px ${o[e]}`:void 0}})}function Ne(){let{t:e}=g(),{clientCounts:t,currentSession:n,totalAgents:r,activeAgents:i,aggregate:a}=ae(f(e=>({clientCounts:e.clientCounts,currentSession:e.currentSession,totalAgents:e.totalAgents,activeAgents:e.activeAgents,aggregate:e.aggregate}))),s=t.tui+t.webui+t.repl,l=e=>e?.toLocaleString()??`0`;return(0,H.jsxs)(`div`,{className:`absolute left-4 top-20 z-10 rounded-xl border border-border/70 bg-card/90 p-3 text-foreground shadow-xl backdrop-blur`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,H.jsx)(c,{className:`h-3.5 w-3.5 text-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase text-muted-foreground`,children:e(`activity:office.sessionStats`)})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5 text-[10px]`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(E,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.clients`)})]}),(0,H.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,H.jsx)(`span`,{className:`text-[hsl(var(--success))]`,children:s})]})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 pl-4 text-[9px]`,children:[t.tui>0&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(T,{className:`h-2.5 w-2.5 text-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`TUI`}),(0,H.jsx)(`span`,{className:`font-mono text-[hsl(var(--success))]`,children:t.tui})]}),t.webui>0&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(v,{className:`h-2.5 w-2.5 text-primary`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`WebUI`}),(0,H.jsx)(`span`,{className:`font-mono text-primary`,children:t.webui})]}),t.repl>0&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(T,{className:`h-2.5 w-2.5 text-[hsl(var(--warning))]`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`REPL`}),(0,H.jsx)(`span`,{className:`font-mono text-[hsl(var(--warning))]`,children:t.repl})]})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(o,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.agents`)})]}),(0,H.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,H.jsx)(`span`,{className:`text-primary`,children:r})]})]}),n.model&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(w,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.model`)})]}),(0,H.jsx)(`span`,{className:`max-w-[120px] truncate font-mono text-primary`,title:n.model,children:n.model.split(`/`).pop()?.slice(0,16)})]}),n.mode&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(p,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.mode`)})]}),(0,H.jsx)(`span`,{className:k(`font-mono uppercase text-[9px] px-1.5 py-0.5 rounded`,n.mode===`auto`&&`bg-primary/10 text-primary`,n.mode===`suggest`&&`bg-[hsl(var(--success)/0.1)] text-[hsl(var(--success))]`,n.mode===`off`&&`bg-muted text-muted-foreground`,![`auto`,`suggest`,`off`].includes(n.mode||``)&&`bg-muted text-muted-foreground`),children:n.mode})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(x,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.toolCallsLabel`)})]}),(0,H.jsx)(`span`,{className:`font-mono text-[hsl(var(--warning))]`,children:l(a.toolCalls)})]}),(0,H.jsxs)(`div`,{className:`mt-1.5 space-y-1 border-t border-border/70 pt-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`IN`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.input`)})]}),(0,H.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:l(a.tokensIn)})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`OUT`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.output`)})]}),(0,H.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:l(a.tokensOut)})]})]}),(0,H.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-4 border-t border-border/70 pt-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(S,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.cost`)})]}),(0,H.jsx)(`span`,{className:`font-mono font-medium text-[hsl(var(--success))]`,children:(e=>e==null?`$0.0000`:`$${e.toFixed(4)}`)(a.costUsd)})]})]})]})}function Y(){let e={opacity:0,width:1,height:1,minWidth:0,border:`none`,background:`transparent`};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(L,{type:`target`,position:B.Top,style:e,isConnectable:!1}),(0,H.jsx)(L,{type:`source`,position:B.Bottom,style:e,isConnectable:!1})]})}function X({data:e}){let{t}=g();return(0,H.jsxs)(`div`,{className:`mt-2 flex items-center justify-between border-t border-border/60 pt-1.5 text-[8px] text-muted-foreground`,children:[(0,H.jsxs)(`span`,{children:[(0,H.jsx)(`span`,{className:`font-mono text-foreground`,children:e.agentCount??0}),` `,t(`activity:office.agentsSuffix`)]}),e.startedAt&&(0,H.jsx)(`span`,{children:t(`activity:office.upPrefix`,{time:Ce(e.startedAt,Date.now())})})]})}function Pe({data:e}){let{t}=g(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,i=e.status===`offline`,o=e.color||q.info;return(0,H.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-primary/15`,r&&`border-destructive/50 bg-destructive/10`,i&&`border-border/70 bg-muted/35 opacity-60`,!n&&!r&&!i&&`border-primary/30 bg-primary/10`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,H.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-primary/15`:`bg-primary/10`),children:(0,H.jsx)(v,{className:`h-5 w-5`,style:{color:o}})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:o},children:e.label}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.webuiClient`)})]}),(0,H.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,H.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,H.jsx)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(h,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{children:t(`activity:office.disconnected`)})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(a,{className:`h-3 w-3 text-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{children:t(`activity:office.connected`)})]})}),n&&(0,H.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-primary/20`,children:(0,H.jsx)(`div`,{className:`h-full animate-pulse bg-primary`,style:{width:`60%`}})}),(0,H.jsx)(X,{data:e})]})}function Z({data:e}){let{t}=g(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,i=e.color||q.success;return(0,H.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-[hsl(var(--success)/0.15)]`,r&&`border-destructive/50 bg-destructive/10`,!n&&!r&&`border-[hsl(var(--success)/0.3)] bg-[hsl(var(--success)/0.1)]`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,H.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-[hsl(var(--success)/0.15)]`:`bg-[hsl(var(--success)/0.1)]`),children:(0,H.jsx)(T,{className:`h-5 w-5`,style:{color:i}})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:i},children:e.label}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.tuiClient`)})]}),(0,H.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,H.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,H.jsx)(T,{className:`h-3 w-3 text-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{children:t(`activity:office.terminal`)})]}),(0,H.jsx)(X,{data:e})]})}function Fe({data:e}){let{t}=g(),n=e.status===`active`||e.status===`streaming`,r=e.color||q.warning;return(0,H.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-[hsl(var(--warning)/0.15)]`,!n&&`border-[hsl(var(--warning)/0.3)] bg-[hsl(var(--warning)/0.1)]`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,H.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-[hsl(var(--warning)/0.15)]`:`bg-[hsl(var(--warning)/0.1)]`),children:(0,H.jsx)(T,{className:`h-5 w-5`,style:{color:r}})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:r},children:e.label}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.repl`)})]}),(0,H.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,H.jsx)(`div`,{className:`mb-1 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,H.jsx)(X,{data:e})]})}function Ie({data:e}){let{t}=g(),n=e.status===`active`||e.status===`streaming`,r=e.color||q.primary;return(0,H.jsxs)(`div`,{className:`relative min-w-[200px] rounded-xl border-2 border-border/70 bg-card/90 p-4 shadow-lg backdrop-blur-sm transition-all`,children:[(0,H.jsx)(Y,{}),(0,H.jsx)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-primary px-2 py-0.5 text-[9px] font-bold text-primary-foreground`,children:t(`activity:office.coordinator`)}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 mb-3 mt-2`,children:[(0,H.jsx)(`div`,{className:k(`flex items-center justify-center w-12 h-12 rounded-xl`,n?`bg-primary/15`:`bg-primary/10`),children:(0,H.jsx)(w,{className:`h-6 w-6`,style:{color:r}})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-sm font-bold truncate`,style:{color:r},children:e.label}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:e.sublabel||t(`activity:office.fleetSummary`)})]}),(0,H.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px] mb-2`,children:[(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsxs)(`div`,{className:`font-mono`,children:[(0,H.jsx)(`span`,{className:`text-[hsl(var(--success))]`,children:e.agentsActive||0}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:` / `}),(0,H.jsx)(`span`,{className:`text-primary`,children:e.agentsTotal||0})]}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:officeMap.agents`)})]}),(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsx)(`div`,{className:`font-mono text-[hsl(var(--warning))]`,children:(e.toolCalls||0).toLocaleString()}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.toolCallsLabel`)})]}),(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsx)(`div`,{className:`font-mono text-foreground`,children:K(e.tokensIn)}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.tokensLabel`)})]}),(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsxs)(`div`,{className:`font-mono text-[hsl(var(--success))]`,children:[`$`,(e.costUsd||0).toFixed(3)]}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.cost`)})]})]}),n&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-primary`,children:[(0,H.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-primary`}),t(`activity:office.coordinatingFleet`)]})]})}function Le({data:e}){let{t}=g(),n=e.status===`active`||e.status===`streaming`,r=e.status===`error`,i=e.status===`completed`,a=e.color||q.primary,s=Me(e.ctxPct);return(0,H.jsxs)(`div`,{className:k(`rounded-lg border p-3 min-w-[150px] transition-all backdrop-blur-sm`,n&&`border-primary/50 bg-primary/10 shadow-lg shadow-primary/10`,r&&`border-destructive/50 bg-destructive/10`,i&&`border-border/70 bg-muted/35`,!n&&!r&&!i&&`border-primary/30 bg-primary/10`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,H.jsx)(o,{className:`h-4 w-4 shrink-0`,style:{color:a}}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-[11px] font-bold truncate`,style:{color:a},children:e.label}),e.model&&(0,H.jsx)(`div`,{className:`truncate text-[8px] text-muted-foreground`,children:we(e.model)})]}),(0,H.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),e.currentTask&&(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1 truncate text-[9px] text-primary`,children:[(0,H.jsx)(`span`,{className:k(`h-1.5 w-1.5 shrink-0 rounded-full bg-primary`,n&&`animate-pulse`)}),(0,H.jsx)(`span`,{className:`truncate font-mono`,children:e.currentTask})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-0.5 text-[9px] mb-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex justify-between`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`iter`}),(0,H.jsx)(`span`,{className:`font-mono text-foreground`,children:e.iteration||0})]}),(0,H.jsxs)(`div`,{className:`flex justify-between`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`tools`}),(0,H.jsx)(`span`,{className:`font-mono text-[hsl(var(--warning))]`,children:e.toolCalls||0})]}),(0,H.jsxs)(`div`,{className:`flex justify-between`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`tok`}),(0,H.jsx)(`span`,{className:`font-mono text-foreground`,children:K((e.tokensIn||0)+(e.tokensOut||0))})]}),(0,H.jsxs)(`div`,{className:`flex justify-between`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`cost`}),(0,H.jsxs)(`span`,{className:`font-mono text-[hsl(var(--success))]`,children:[`$`,(e.costUsd||0).toFixed(3)]})]})]}),s>0&&(0,H.jsxs)(`div`,{className:`mb-1`,children:[(0,H.jsxs)(`div`,{className:`mb-0.5 flex justify-between text-[8px] text-muted-foreground`,children:[(0,H.jsx)(`span`,{children:`ctx`}),(0,H.jsxs)(`span`,{className:k(`font-mono`,s>=90?`text-destructive`:s>=70?`text-[hsl(var(--warning))]`:`text-muted-foreground`),children:[s,`%`]})]}),(0,H.jsx)(`div`,{className:`h-1 overflow-hidden rounded-full bg-muted`,children:(0,H.jsx)(`div`,{className:k(`h-full`,s>=90?`bg-destructive`:s>=70?`bg-[hsl(var(--warning))]`:`bg-primary`),style:{width:`${s}%`}})})]}),e.lastActivityAt&&(0,H.jsxs)(`div`,{className:k(`flex items-center gap-1 text-[8px]`,n?`text-muted-foreground/70`:`text-muted-foreground`),children:[i&&(0,H.jsx)(`span`,{className:`text-[hsl(var(--success))]`,children:t(`activity:office.donePrefix`)}),r&&(0,H.jsx)(`span`,{className:`text-destructive`,children:t(`activity:office.failedPrefix`)}),(0,H.jsx)(`span`,{children:t(`activity:office.seenPrefix`,{time:Se(e.lastActivityAt,Date.now())})})]})]})}function Re({data:e}){let{t}=g();return(0,H.jsxs)(`div`,{className:k(`rounded-lg border border-dashed p-3 min-w-[120px] transition-all opacity-40`,`border-border/70 bg-muted/30`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,H.jsx)(l,{className:`h-4 w-4 text-muted-foreground`}),(0,H.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,H.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:e.label})}),(0,H.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),(0,H.jsx)(`div`,{className:`text-[9px] text-muted-foreground`,children:t(`activity:office.availableDesk`)})]})}function Q({data:e}){let{t}=g(),n=e.color||q.warning,r=(e.unreadCount||0)>0;return(0,H.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,r&&`border-[hsl(var(--warning)/0.5)] bg-[hsl(var(--warning)/0.1)] shadow-lg shadow-[hsl(var(--warning)/0.1)]`,!r&&`border-[hsl(var(--warning)/0.3)] bg-[hsl(var(--warning)/0.06)]`),children:[(0,H.jsx)(Y,{}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,H.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,r?`bg-[hsl(var(--warning)/0.18)]`:`bg-[hsl(var(--warning)/0.1)]`),children:(0,H.jsx)(m,{className:`h-5 w-5`,style:{color:n}})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-xs font-bold`,style:{color:n},children:t(`activity:office.mailboxHub`)}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:r?t(`activity:office.unreadSuffix`,{count:e.unreadCount||0}):t(`activity:office.allClear`)})]}),r&&(0,H.jsx)(`div`,{className:`flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--warning))] text-[10px] font-bold text-background`,children:e.unreadCount})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px]`,children:[(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-[hsl(var(--warning))]`,children:[(0,H.jsx)(b,{className:`h-3 w-3`}),(0,H.jsx)(`span`,{children:e.messageCount||0})]}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.total`)})]}),(0,H.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-[hsl(var(--success))]`,children:[(0,H.jsx)(s,{className:`h-3 w-3`}),(0,H.jsx)(`span`,{children:e.unreadCount||0})]}),(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.unreadLabel`)})]})]}),e.sublabel&&(0,H.jsxs)(`div`,{className:`mt-2 truncate border-t border-border/60 pt-1.5 text-[9px] text-muted-foreground`,children:[`✉ `,e.sublabel]})]})}var ze={webui:Pe,tui:Z,repl:Fe,coordinator:Ie,agent:Le,mailbox:Q,desk:Re},Be={wire:({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i,targetPosition:a,data:o,selected:s})=>{let c=o?.color||q.primary,l=A(e=>e.animateEdges),u=o?.animated&&l?Math.max(.15,o?.intensity??.6):0,[d,f,p]=z({sourceX:e,sourceY:t,sourcePosition:i??B.Bottom,targetX:n,targetY:r,targetPosition:a??B.Top,curvature:.28}),m=5+u*7,h=5+u*4,g=m+h,_=`${Math.max(.5,1.6-u).toFixed(2)}s`;return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:s?2.5:1.4,strokeOpacity:s?.9:.28,className:`react-flow__edge-path`}),u>.05&&(0,H.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:2.2,strokeOpacity:.45+u*.5,strokeDasharray:`${m} ${h}`,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 ${2+u*4}px ${c})`},children:(0,H.jsx)(`animate`,{attributeName:`stroke-dashoffset`,from:g,to:`0`,dur:_,repeatCount:`indefinite`})}),o?.label&&u>.1&&(0,H.jsx)(le,{children:(0,H.jsx)(`div`,{style:{position:`absolute`,transform:`translate(-50%, -50%) translate(${f}px, ${p}px)`},className:`pointer-events-none rounded-full border border-border/70 bg-card/90 px-1.5 py-0.5 text-[8px] font-medium text-foreground backdrop-blur-sm`,children:o.label})})]})}};function Ve({events:e,now:t}){let{t:n}=g(),r=e.slice(0,14);return(0,H.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 z-10 pointer-events-none px-3 pb-3`,children:(0,H.jsxs)(`div`,{className:`pointer-events-auto mx-auto max-w-3xl rounded-lg border border-border/70 bg-card/90 px-3 py-2 shadow-xl backdrop-blur`,children:[(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-[10px] uppercase text-primary`,children:[(0,H.jsx)(c,{className:`h-3 w-3`}),n(`activity:office.liveActivity`)]}),r.length===0?(0,H.jsx)(`div`,{className:`text-[11px] italic text-muted-foreground`,children:n(`activity:office.waitingActivity`)}):(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5 max-h-32 overflow-hidden`,children:r.map(e=>{let r=Math.max(0,Math.round((t-e.timestamp)/1e3));return(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] leading-tight`,children:[(0,H.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full shrink-0`,style:{backgroundColor:je(e.kind)}}),(0,H.jsx)(`span`,{className:`flex-1 truncate text-foreground`,children:e.label}),(0,H.jsx)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:r<1?n(`activity:office.now`):`${r}s`})]},e.id)})})]})})}function $(){let{t:e}=g(),{fitView:t}=pe(),n=O(e=>e.events),r=j(e=>e.agents),i=j(e=>e.agentTranscripts),a=j(e=>e.leaderId),s=ae(e=>e.liveSessions),c=M(e=>e.messages),l=ne(e=>e.session),f=(0,V.useMemo)(()=>Ae(s,r),[s,r]),p=A(e=>e.showHud),h=A(e=>e.showLegend),_=A(e=>e.showMinimap),y=A(e=>e.showControls),x=A(e=>e.showFeed),S=A(e=>e.setShowFeed),C=A(e=>e.background),[E,D,ie]=ce([]),[P,F,oe]=se([]),[I,L]=(0,V.useState)(null),[R,z]=(0,V.useState)(null),[le,B]=(0,V.useState)(!1),[U,ve]=(0,V.useState)(``),[W,ye]=(0,V.useState)(!1),[be,G]=(0,V.useState)(null),De=(0,V.useMemo)(()=>{if(I?.data.kind!==`agent`)return N;let e=I.data.serverId??(I.id.includes(`__agent-`)?I.id.split(`__agent-`).pop():I.id.replace(/^agent-/,``));return e?i.get(e)??N:N},[i,I]),ke=(0,V.useCallback)(async()=>{let e=U.trim();if(!(!e||W)){ye(!0),G(null);try{let t=await fetch(`/api/fleet/broadcast`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();ve(``),G(`Delivered to ${n.delivered??0}/${n.targets??0} session(s)`)}catch(e){G(`Failed: ${e instanceof Error?e.message:String(e)}`)}finally{ye(!1)}}},[U,W]),je=(0,V.useRef)(new Map),J=4e3,Y=(0,V.useRef)(new Map),X=(0,V.useRef)(new Map),Pe=(0,V.useRef)(new Map),Z=(0,V.useRef)(new Map),Fe=(0,V.useRef)(``);(0,V.useEffect)(()=>{let n=[],i=[],o=Date.now(),s=Math.max(1,...f.map(e=>e.agents.length||1)),l=Math.max(380,Math.min(3,s)*190+80),u=Te(f.map(e=>e.id),l),d=c.filter(e=>!e.completed&&(e.readByCount??0)===0).length,p=c.length?[...c].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp))[0]:void 0;n.push({id:`mailbox`,type:`mailbox`,position:{x:830,y:50},data:{label:e(`activity:office.mailboxHub`),kind:`mailbox`,status:d>0?`active`:`idle`,unreadCount:d,messageCount:c.length,sublabel:p?`${p.from} → ${p.to}: ${p.subject}`:void 0,color:q.warning}});let m=0,h=0,g=0,_=0,v=0;for(let e of f)for(let t of e.agents)h+=1,(t.status===`active`||t.status===`streaming`)&&(m+=1),g+=t.toolCalls,_+=t.costUsd,v+=t.tokensIn+t.tokensOut;let y=a?r.get(a):null,b=m>0;n.push({id:`coordinator`,type:`coordinator`,position:{x:370,y:50},data:{label:e(`activity:office.fleetHqLabel`),sublabel:e(`activity:office.clientsSuffix`,{count:f.length}),kind:`coordinator`,status:y?.status===`failed`?`error`:b?`active`:`idle`,connections:f.length,agentsActive:m,agentsTotal:h,toolCalls:g,costUsd:_,tokensIn:v,color:q.primary}});let x={tui:q.success,webui:q.info,repl:q.warning};for(let t of f){let r=u.get(t.id)??600,a=x[t.type],s=t.status===`active`;if(n.push({id:t.id,type:t.type,position:{x:r,y:370},data:{label:t.label,sublabel:t.sublabel,kind:t.type,status:t.status,sessionId:t.sessionId,pid:t.pid,branch:t.branch,workingDir:t.workingDir,startedAt:t.startedAt,agentCount:t.agents.length,color:a}}),i.push({id:`${t.id}->coordinator`,source:t.id,target:`coordinator`,type:`wire`,animated:s,data:{color:a,animated:s,label:e(`activity:office.controlLabel`),flowType:`task`}}),i.push({id:`mailbox->${t.id}`,source:`mailbox`,target:t.id,type:`wire`,animated:d>0,data:{color:q.warning,animated:d>0,label:d>0?`${d}`:void 0,flowType:`mail`}}),t.agents.length===0){n.push({id:`desk-${t.id}`,type:`desk`,position:{x:r,y:640},data:{label:e(`activity:office.idleDesk`),kind:`agent`,status:`idle`,color:q.muted}});continue}t.agents.forEach((a,s)=>{let c=a.status===`active`||a.status===`streaming`,l=Z.current.get(a.serverId);if(l&&(a.toolCalls>l.toolCalls||a.iteration>l.iteration)||c){je.current.set(a.officeId,o+J);let e=X.current.get(a.officeId)??0;X.current.set(a.officeId,Math.min(1,e+(1-e)*.5));for(let e of[`${t.id}->${a.officeId}`,`${t.id}->coordinator`]){let t=Y.current.get(e)??0;Y.current.set(e,Math.min(1,t+.5))}}Z.current.set(a.serverId,{toolCalls:a.toolCalls,iteration:a.iteration}),n.push({id:a.officeId,type:`agent`,position:Ee(r,s,t.agents.length),data:{label:a.name,kind:`agent`,status:a.status,serverId:a.serverId,sessionId:t.sessionId,currentTask:a.currentTask,iteration:a.iteration,toolCalls:a.toolCalls,costUsd:a.costUsd,tokensIn:a.tokensIn,tokensOut:a.tokensOut,ctxPct:a.ctxPct,model:a.model,lastActivityAt:a.lastActivityAt,color:q.primary}}),i.push({id:`${t.id}->${a.officeId}`,source:t.id,target:a.officeId,type:`wire`,animated:c,data:{color:q.primary,animated:c,label:c?a.currentTask??e(`activity:office.taskFallback`):void 0,flowType:`task`}})})}let S=new Set(f.flatMap(e=>e.agents.map(e=>e.serverId)));for(let e of[...Z.current.keys()])S.has(e)||Z.current.delete(e);let C=n.map(e=>{let t=je.current.get(e.id),n=X.current.get(e.id)??0;return t&&t>o&&e.data.status!==`error`&&e.data.status!==`offline`?{...e,data:{...e.data,status:`active`,vizActivity:n}}:{...e,data:{...e.data,vizActivity:n}}}),w=i.map(e=>{let t=Y.current.get(e.id)??0;return t>.05?{...e,animated:!0,data:{...e.data,animated:!0,intensity:t}}:e}),T=new Map;for(let e of C)T.set(e.id,{...e.position});Pe.current=T,D(C),F(w);let E=C.map(e=>e.id).sort().join(`|`);if(E!==Fe.current){Fe.current=E;let e=setTimeout(()=>t({padding:.2,duration:300}),50);return()=>clearTimeout(e)}},[f,a,r,c,l,J,D,F,t]);let Ie=f.flatMap(e=>e.agents.map(t=>({clientId:e.id,clientType:e.type,officeId:t.officeId,serverId:t.serverId}))),Le=f.map(e=>e.id),Re=new Map;for(let e of Ie)(!Re.has(e.serverId)||e.clientType===`webui`)&&Re.set(e.serverId,e.officeId);function Q(e){return Re.get(e)??`agent-${e}`}function $(e){let t=e.split(`__agent-`)[0];return t&&t!==e?`${t}->${e}`:`coordinator->${e}`}function He(e){switch(e.kind){case`mailbox:send`:case`mailbox:deliver`:return{nodes:[`mailbox`],edges:e.kind===`mailbox:send`?Le.map(e=>`mailbox->${e}`):[],status:`active`};case`agent:spawned`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:`active`}}case`agent:tool`:case`tool:started`:case`tool:progress`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:e.kind===`tool:progress`||e.kind===`tool:started`?`streaming`:`active`}}case`tool:executed`:{let t=Q(e.target??e.source);return{nodes:[t],edges:[$(t)],status:`active`}}case`provider:call`:case`provider:delta`:case`provider:response`:return{nodes:[`coordinator`],edges:[],status:e.kind===`provider:delta`?`streaming`:`active`};case`iteration:start`:case`iteration:end`:return{nodes:[`coordinator`],edges:Ie.map(e=>$(e.officeId)),status:e.kind===`iteration:start`?`streaming`:`active`};case`agent:text`:{let t=Q(e.source);return{nodes:[t],edges:[$(t)],status:`streaming`}}case`agent:status`:{let t=Q(e.source);return{nodes:[`coordinator`,t],edges:[$(t)],status:e.data&&typeof e.data==`object`&&`status`in e.data&&String(e.data.status)===`failed`?`error`:`completed`}}case`agent:ctx`:return{nodes:[Q(e.source)],edges:[],status:`active`};case`budget:extended`:return{nodes:[`coordinator`,Q(e.source)],edges:[],status:`active`};case`context:compacted`:case`context:repaired`:return{nodes:[`coordinator`],edges:[],status:`active`};case`error`:return{nodes:e.source?[Q(e.source)]:[],edges:[],status:`error`};case`cost:update`:return{nodes:[`coordinator`],edges:[],status:`active`};case`fleet:snapshot`:{let t=e.data?.sessions??[],n=[`coordinator`];for(let e of t)if(e.agents)for(let t of e.agents){let e=Q(t.id);n.includes(e)||n.push(e)}return{nodes:n,edges:[],status:`active`}}default:return{nodes:[],edges:[],status:`idle`}}}(0,V.useEffect)(()=>{if(n.length===0)return;let e=n[0];if(!e)return;let{nodes:t,edges:r,status:i}=He(e),a=Date.now();t.length>0&&(t.forEach(e=>{je.current.set(e,a+J);let t=X.current.get(e)??0;X.current.set(e,Math.min(1,t+(1-t)*.5))}),D(e=>e.map(e=>t.includes(e.id)?{...e,data:{...e.data,status:i,vizActivity:X.current.get(e.id)??0}}:e))),r.length>0&&(r.forEach(e=>{let t=Y.current.get(e)??0;Y.current.set(e,Math.min(1,t+.5))}),F(e=>e.map(e=>r.includes(e.id)?{...e,animated:!0,data:{...e.data,animated:!0,intensity:Y.current.get(e.id)??1}}:e)))},[n,D,F,J,r]),(0,V.useEffect)(()=>{let e=setInterval(()=>{let e=new Map,t=!1;for(let[n,r]of Y.current){let i=r*.85;i<.05?(Y.current.delete(n),e.set(n,{intensity:0,animated:!1}),t=!0):(Y.current.set(n,i),e.set(n,{intensity:i,animated:!0}),t=!0)}t&&F(t=>t.map(t=>{let n=e.get(t.id);return n?{...t,animated:n.animated,data:{...t.data,animated:n.animated,intensity:n.intensity}}:t}));let n=new Map,r=!1;for(let[e,t]of X.current){let i=t*.9;i<.03?(X.current.delete(e),n.set(e,0),r=!0):(X.current.set(e,i),n.set(e,i),r=!0)}r&&D(e=>e.map(e=>{let t=n.get(e.id);return t===void 0?e:{...e,data:{...e.data,vizActivity:t}}}))},1e3);return()=>clearInterval(e)},[F,D]);let Ue=(0,V.useCallback)(e=>F(t=>ue({...e,type:`wire`},t)),[F]),We=(0,V.useCallback)((e,t)=>{L(t)},[]),Ge=(0,V.useCallback)(()=>{L(null)},[]);(0,V.useEffect)(()=>{if(!R)return;let e=e=>{e.key===`Escape`&&z(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[R]);let Ke=(0,V.useCallback)(()=>{D(e=>e.map(e=>{let t=Pe.current.get(e.id);return t?{...e,position:{...t}}:e})),setTimeout(()=>t({padding:.2,duration:300}),50)},[D,t]),[,qe]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let e=setInterval(()=>qe(e=>e+1),2e3);return()=>clearInterval(e)},[]),(0,H.jsxs)(`div`,{className:`relative h-full w-full overflow-hidden bg-[hsl(var(--surface-2)/0.55)]`,children:[(0,H.jsx)(`div`,{className:`absolute inset-0 opacity-[0.03]`,style:{backgroundImage:`
2
- linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px),
3
- linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px)
4
- `,backgroundSize:`40px 40px`}}),p&&(0,H.jsx)(Ne,{}),(0,H.jsx)(`div`,{className:`absolute top-3 left-1/2 -translate-x-1/2 z-10`,children:(0,H.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/90 px-4 py-2 shadow-xl backdrop-blur`,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-bold text-foreground`,children:[(0,H.jsx)(te,{className:`h-4 w-4 text-primary`}),e(`activity:office.fleetHq`),(0,H.jsx)(`span`,{className:`ml-2 h-2 w-2 animate-pulse rounded-full bg-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{className:`text-[10px] font-normal text-muted-foreground`,children:e(`activity:office.live`)})]})})}),h&&(0,H.jsxs)(`div`,{className:`absolute bottom-4 left-4 z-10 rounded-lg border border-border/70 bg-card/90 p-3 text-[10px] shadow-xl backdrop-blur`,children:[(0,H.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendStatus`)}),(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-[hsl(var(--success))]`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendActive`)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendIdle`)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-destructive`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendError`)})]})]})]}),h&&(0,H.jsxs)(`div`,{className:`absolute bottom-4 right-4 z-10 rounded-lg border border-border/70 bg-card/90 p-3 text-[10px] shadow-xl backdrop-blur`,children:[(0,H.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendConnections`)}),(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`text-[hsl(var(--warning))]`,children:`✉`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendMail`)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`text-primary`,children:`→`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendTask`)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`text-[hsl(var(--success))]`,children:`●`}),(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendStatusConn`)})]})]})]}),(0,H.jsxs)(_e,{nodes:E,edges:P,onNodesChange:ie,onEdgesChange:oe,onConnect:Ue,onNodeClick:We,onPaneClick:Ge,nodeTypes:ze,edgeTypes:Be,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:1.5,defaultEdgeOptions:{type:`wire`},proOptions:{hideAttribution:!0},children:[(0,H.jsxs)(he,{position:`top-right`,className:`flex items-center gap-2`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:Ke,title:e(`activity:office.arrangeTitle`),className:`flex items-center gap-1.5 rounded-md border border-border/70 bg-card/90 px-2.5 py-1.5 text-xs text-foreground shadow-sm transition-colors hover:bg-accent`,children:[(0,H.jsx)(d,{className:`h-3.5 w-3.5`}),e(`activity:office.arrange`)]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>S(!x),title:e(`activity:office.feedTitle`),className:k(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,x?`border-primary/35 bg-primary/10 text-primary`:`border-border/70 bg-card/90 text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,H.jsx)(u,{className:`h-3.5 w-3.5`}),e(`activity:office.feed`)]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>B(e=>!e),title:e(`activity:office.broadcastTitle`),className:k(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,le?`border-[hsl(var(--warning)/0.35)] bg-[hsl(var(--warning)/0.1)] text-[hsl(var(--warning))]`:`border-border/70 bg-card/90 text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,H.jsx)(b,{className:`h-3.5 w-3.5`}),e(`activity:office.broadcast`)]})]}),C!==`none`&&(0,H.jsx)(ge,{variant:C===`lines`?de.Lines:C===`cross`?de.Cross:de.Dots,gap:20,size:1,color:`hsl(var(--border) / 0.35)`}),y&&(0,H.jsx)(me,{className:`rounded-lg border border-border/70 bg-card/90 [&>button]:bg-card [&>button]:text-foreground`}),_&&(0,H.jsx)(fe,{className:`rounded-lg border border-border/70 bg-card/90`,nodeColor:e=>{switch(e.data.kind){case`coordinator`:return q.primary;case`webui`:return q.info;case`tui`:return q.success;case`repl`:return q.warning;case`mailbox`:return q.warning;case`agent`:return q.primary;default:return q.primary}},maskColor:`hsl(var(--background) / 0.72)`})]}),x&&(0,H.jsx)(Ve,{events:n,now:Date.now()}),le&&(0,H.jsxs)(`div`,{className:`absolute right-4 top-16 z-30 w-80 rounded-xl border border-[hsl(var(--warning)/0.35)] bg-card/95 p-3 shadow-2xl backdrop-blur`,children:[(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-semibold text-[hsl(var(--warning))]`,children:[(0,H.jsx)(b,{className:`h-3.5 w-3.5`}),` `,e(`activity:office.broadcastToAll`)]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>B(!1),className:`text-base leading-none text-muted-foreground hover:text-foreground`,children:`×`})]}),(0,H.jsx)(`textarea`,{value:U,onChange:e=>ve(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),ke())},rows:3,placeholder:e(`activity:office.broadcastPlaceholder`),className:`w-full resize-none rounded-md border border-border/70 bg-background/70 px-2 py-1 text-[11px] text-foreground placeholder:text-muted-foreground focus:border-[hsl(var(--warning)/0.45)] focus:outline-none`}),(0,H.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:e(`activity:office.broadcastSendHint`)}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>void ke(),disabled:W||!U.trim(),className:`rounded-md border border-[hsl(var(--warning)/0.35)] bg-[hsl(var(--warning)/0.12)] px-2.5 py-1 text-[11px] text-[hsl(var(--warning))] transition-colors hover:bg-[hsl(var(--warning)/0.18)] disabled:cursor-not-allowed disabled:opacity-40`,children:W?`…`:e(`activity:office.broadcast`)})]}),be&&(0,H.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:be})]}),I&&(0,H.jsxs)(`div`,{className:k(`absolute top-20 right-4 bg-background border border-border rounded-lg p-4 shadow-xl z-20`,I.data.kind===`agent`?`w-[28rem] max-w-[calc(100%-2rem)]`:I.data.sessionId?`w-80`:`w-64`),children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[I.data.kind===`webui`&&(0,H.jsx)(v,{className:`h-4 w-4 text-info`}),I.data.kind===`tui`&&(0,H.jsx)(T,{className:`h-4 w-4 text-success`}),I.data.kind===`coordinator`&&(0,H.jsx)(w,{className:`h-4 w-4 text-primary`}),I.data.kind===`agent`&&(0,H.jsx)(o,{className:`h-4 w-4 text-primary`}),I.data.kind===`mailbox`&&(0,H.jsx)(m,{className:`h-4 w-4 text-[hsl(var(--warning))]`}),(0,H.jsx)(`span`,{className:`text-sm font-bold text-foreground`,children:I.data.label})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[I.data.sessionId&&(0,H.jsx)(`button`,{type:`button`,title:e(`activity:office.openFullView`),onClick:()=>z({sessionId:I.data.sessionId,label:I.data.label}),className:`text-muted-foreground hover:text-primary`,children:(0,H.jsx)(ee,{className:`h-3.5 w-3.5`})}),(0,H.jsx)(`button`,{onClick:Ge,className:`text-muted-foreground hover:text-foreground text-lg leading-none`,children:`×`})]})]}),(()=>{let t=I.data,n=Date.now(),r=({k:e,v:t,accent:n})=>(0,H.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground shrink-0`,children:e}),(0,H.jsx)(`span`,{className:k(`font-mono truncate text-right`,n??`text-foreground/80`),children:t})]}),i=t.kind===`agent`,a=t.kind===`webui`||t.kind===`tui`||t.kind===`repl`,o=(t.tokensIn||0)+(t.tokensOut||0),s=Me(t.ctxPct);return(0,H.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,H.jsx)(r,{k:`Status`,v:String(t.status).toUpperCase(),accent:k(t.status===`active`&&`text-[hsl(var(--success))]`,t.status===`streaming`&&`text-primary`,t.status===`error`&&`text-destructive`,t.status===`idle`&&`text-muted-foreground`,t.status===`offline`&&`text-muted-foreground/50`)}),i&&(0,H.jsxs)(H.Fragment,{children:[t.model&&(0,H.jsx)(r,{k:`Model`,v:we(t.model),accent:`text-primary`}),t.currentTask&&(0,H.jsx)(r,{k:`Tool`,v:t.currentTask,accent:`text-primary`}),(0,H.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`}),(0,H.jsx)(r,{k:`Tool calls`,v:t.toolCalls||0,accent:`text-[hsl(var(--warning))]`}),(0,H.jsx)(r,{k:`Tokens in`,v:K(t.tokensIn)}),(0,H.jsx)(r,{k:`Tokens out`,v:K(t.tokensOut)}),(0,H.jsx)(r,{k:`Tokens total`,v:K(o)}),s>0&&(0,H.jsx)(r,{k:`Context`,v:`${s}%`,accent:s>=90?`text-destructive`:s>=70?`text-[hsl(var(--warning))]`:`text-foreground/70`}),(0,H.jsx)(r,{k:`Cost`,v:`$${(t.costUsd||0).toFixed(4)}`,accent:`text-[hsl(var(--success))]`}),t.lastActivityAt&&(0,H.jsx)(r,{k:`Last seen`,v:Se(t.lastActivityAt,n),accent:`text-muted-foreground`}),(0,H.jsx)(`div`,{className:`pt-2`,children:(0,H.jsx)(re,{entries:De,agentName:t.label,compact:!0,maxHeightClassName:`max-h-64`})})]}),a&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(r,{k:`Surface`,v:Oe(t.kind),accent:`text-foreground/80`}),t.branch&&(0,H.jsx)(r,{k:`Branch`,v:`⎇ ${t.branch}`,accent:`text-foreground/70`}),t.pid!=null&&(0,H.jsx)(r,{k:`PID`,v:t.pid}),t.workingDir&&(0,H.jsx)(r,{k:`Dir`,v:t.workingDir,accent:`text-muted-foreground`}),(0,H.jsx)(r,{k:`Agents`,v:t.agentCount??0,accent:`text-primary`}),t.startedAt&&(0,H.jsx)(r,{k:`Uptime`,v:Ce(t.startedAt,n),accent:`text-foreground/70`})]}),t.kind===`mailbox`&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(r,{k:`Total messages`,v:t.messageCount||0,accent:`text-[hsl(var(--warning))]`}),(0,H.jsx)(r,{k:`Unread`,v:t.unreadCount||0,accent:`text-[hsl(var(--warning))]`}),c.length>0&&(0,H.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-border pt-2`,children:[(0,H.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e(`activity:office.recent`)}),[...c].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp)).slice(0,6).map(t=>(0,H.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px]`,children:[(0,H.jsx)(`span`,{className:k(`mt-1 h-1.5 w-1.5 shrink-0 rounded-full`,!t.completed&&(t.readByCount??0)===0?`bg-[hsl(var(--warning))]`:t.completed?`bg-[hsl(var(--success))]`:`bg-muted`)}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-foreground/80`,children:t.subject||e(`activity:office.noSubject`)}),(0,H.jsxs)(`div`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:[t.from,` → `,t.to,` · `,Se(t.timestamp,n)]})]})]},t.id))]})]}),t.kind===`coordinator`&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(r,{k:`Connections`,v:t.connections||0,accent:`text-primary`}),(0,H.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`})]}),(i||a)&&t.sessionId&&(0,H.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 h-72`,children:(0,H.jsx)(xe,{sessionId:t.sessionId})})]})})()]}),R&&(0,H.jsxs)(`div`,{className:`absolute inset-y-0 right-0 z-30 flex w-[min(680px,92%)] flex-col border-l border-border bg-background shadow-2xl`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2.5 shrink-0 bg-card`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,H.jsx)(o,{className:`h-4 w-4 text-primary shrink-0`}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:`truncate text-sm font-bold text-foreground`,children:R.label}),(0,H.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e(`activity:office.fullOperationStream`)})]})]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>z(null),title:e(`activity:office.closeEsc`),className:`text-muted-foreground hover:text-foreground text-xl leading-none shrink-0`,children:`×`})]}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,H.jsx)(xe,{sessionId:R.sessionId,limit:500})})]})]})}function He(){return(0,H.jsx)(R,{children:(0,H.jsx)($,{})})}export{He as OfficeMapPanel};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{bt as r,fi as i,pt as a,wt as o}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as s}from"./utils-B-rhScDN.js";import{C as c,g as l,h as u,m as d,y as f}from"./index-0LBBDKsK.js";var p=e(t(),1),m=n();function h({open:e,onClose:t,className:n}){let{t:h}=i(),[g,_]=(0,p.useState)([]),v=c(),y=(0,p.useRef)(null),b=(0,p.useRef)(null);(0,p.useEffect)(()=>{if(!(!e||!v.client?.isConnected))return v.client.send?.({type:`process.list`}),y.current=v.client.on?.(`process.list`,e=>{let t=e?.payload;t?.processes&&_(t.processes)})??null,b.current=setInterval(()=>{v.client.send?.({type:`process.list`})},3e3),()=>{y.current?.(),b.current&&clearInterval(b.current)}},[e,v.client]);let x=(0,p.useCallback)(e=>{v.client.send?.({type:`process.kill`,payload:{pid:e}})},[v.client]),S=(0,p.useCallback)(()=>{v.client.send?.({type:`process.killAll`})},[v.client]),C=g.filter(e=>e.status===`running`);return(0,m.jsx)(d,{open:e,onOpenChange:e=>{e||t()},children:(0,m.jsxs)(u,{className:s(`max-w-lg gap-0 p-0 overflow-hidden flex flex-col max-h-[75dvh] pt-[10dvh]`,n),showCloseButton:!1,children:[(0,m.jsx)(f,{className:`sr-only`,children:h(`activity:process.heading`)}),(0,m.jsx)(l,{className:`sr-only`,children:h(`activity:process.subtitle`,{active:C.length,total:g.length})}),(0,m.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b shrink-0`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,m.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-warning/10 text-warning`,children:(0,m.jsx)(a,{className:`h-4 w-4`})}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h2`,{className:`text-sm font-semibold`,children:h(`activity:process.heading`)}),(0,m.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:h(`activity:process.subtitle`,{active:C.length,total:g.length})})]})]}),(0,m.jsx)(`div`,{className:`flex items-center gap-1`,children:C.length>0&&(0,m.jsxs)(`button`,{type:`button`,onClick:S,className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs text-destructive hover:bg-destructive/10 transition-colors font-medium`,children:[(0,m.jsx)(r,{className:`h-3 w-3 fill-current`}),h(`activity:process.killAll`)]})})]}),(0,m.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:g.length===0?(0,m.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,m.jsx)(a,{className:`h-10 w-10 opacity-15`}),(0,m.jsx)(`p`,{className:`text-sm font-medium`,children:h(`activity:process.emptyTitle`)}),(0,m.jsx)(`p`,{className:`text-xs text-center max-w-xs`,children:h(`activity:process.emptyBody`)})]}):(0,m.jsx)(`div`,{className:`divide-y`,children:g.map(e=>{let t=e.status===`running`?Math.floor((Date.now()-e.startedAt)/1e3):null,n=t?t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`:null,i=e.protected===!0;return(0,m.jsxs)(`div`,{className:s(`flex items-center justify-between px-4 py-3 text-xs transition-colors`,e.status===`running`?`bg-background hover:bg-muted/30`:`bg-muted/20 text-muted-foreground`),children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,m.jsx)(`span`,{className:s(`led shrink-0`,e.status===`running`?i?`text-info`:`text-[hsl(var(--success))] led-pulse`:`text-muted-foreground`)}),(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground shrink-0`,children:h(`activity:process.pidLabel`,{pid:e.pid})}),(0,m.jsx)(`span`,{className:`font-medium truncate`,children:e.tool}),i&&(0,m.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1 py-0.5 rounded text-[9px] bg-info/10 text-info font-medium shrink-0`,title:h(`activity:process.protectedTitle`),children:[(0,m.jsx)(o,{className:`h-2.5 w-2.5`}),h(`activity:process.protected`)]})]}),(0,m.jsx)(`code`,{className:`text-[10px] text-muted-foreground/70 truncate block mt-0.5 font-mono`,children:e.command})]})]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0 ml-3`,children:[n&&(0,m.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:n}),e.status===`running`&&!i&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>x(e.pid),className:`p-1.5 rounded-md hover:bg-destructive/10 hover:text-destructive transition-colors`,title:h(`activity:process.killTitle`,{pid:e.pid}),children:(0,m.jsx)(r,{className:`h-3.5 w-3.5 fill-current`})})]})]},e.pid)})})})]})})}export{h as ProcessMonitor};
@@ -1,2 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Fr as r,It as i,Kt as a,Lr as o,Pn as s,Wr as c,X as l,Xt as u,Z as d,ai as f,br as p,bt as m,ct as h,dt as g,er as ee,fi as _,hi as v,jr as y,ni as b,or as x,ot as S,ur as C,xt as w}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as T}from"./utils-B-rhScDN.js";import{C as E,_ as D,a as te,g as O,h as k,k as A,m as j,o as M,p as N,v as P,y as F}from"./index-0LBBDKsK.js";import{a as I,c as L,i as R,l as ne,n as z,o as B,r as V,s as re,t as H}from"./SddFlowGraph-DK7RD9NA.js";var U=e(t(),1),W=n();function ie({feed:e,now:t}){let{t:n}=_();return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-3 py-2 text-xs font-semibold text-foreground`,children:[(0,W.jsx)(r,{className:`h-3.5 w-3.5 text-warning`}),n(`activity:sdd.activityHeading`)]}),(0,W.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 space-y-1 overflow-auto p-2`,children:e.length===0?(0,W.jsx)(`p`,{className:`px-1 pt-4 text-center text-[11px] text-muted-foreground`,children:n(`activity:sdd.feedEmpty`)}):e.map((e,n)=>{let r=V[e.kind]??V.started,i=r.icon;return(0,W.jsxs)(`div`,{className:T(`sdd-rise flex items-start gap-2 rounded-md px-2 py-1.5 text-[11px]`,n===0?`bg-muted`:`hover:bg-muted`),children:[(0,W.jsx)(i,{className:T(`mt-0.5 h-3.5 w-3.5 shrink-0`,r.color)}),(0,W.jsx)(`span`,{className:`flex-1 leading-snug text-foreground`,children:e.text}),(0,W.jsx)(`span`,{className:`shrink-0 tabular-nums text-[10px] text-muted-foreground`,children:B(e.ts,t)})]},`${e.ts}-${n}`)})})]})}function G({open:e,onOpenChange:t,snapshot:n,busy:r,onConfirm:i}){let{t:a}=_(),s=n?.mergedCommits?.length??0,l=n?.baseBranch,[u,d]=(0,U.useState)(!1);(0,U.useEffect)(()=>{e&&d(!1)},[e]);let f=n?.status===`running`||n?.status===`paused`,p=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.worktreeBranch&&e.add(t.worktreeBranch);return e.size},[n?.tasks]),m=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.add(t.agentName);return e.size},[n?.tasks]);return(0,W.jsx)(j,{open:e,onOpenChange:e=>!r&&t(e),children:(0,W.jsxs)(k,{className:`sm:max-w-lg border-destructive/50`,children:[(0,W.jsxs)(P,{children:[(0,W.jsxs)(F,{className:`flex items-center gap-2`,children:[(0,W.jsx)(g,{className:`h-5 w-5 text-destructive`}),a(`activity:sdd.destroyTitle`)]}),(0,W.jsx)(O,{children:a(`activity:sdd.destroyDesc`)})]}),(0,W.jsxs)(`ul`,{className:`space-y-1.5 py-1 text-sm`,children:[f&&(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:m>0?a(`activity:sdd.stopRunAgents`,{count:m}):a(`activity:sdd.stopRun`)})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:p>0?a(`activity:sdd.removeWorktreesCount`,{count:p}):a(`activity:sdd.removeWorktreesAll`)})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:a(`activity:sdd.deleteArtifacts`)})]})]}),s>0&&(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 rounded-md border border-warning/30 bg-warning/5 p-2.5 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked),className:`mt-0.5 h-4 w-4 accent-warning`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`font-medium`,children:a(`activity:sdd.revertMerged`,{count:s})}),` `,`on `,(0,W.jsx)(`code`,{className:`text-xs`,children:l??a(`activity:sdd.baseBranchFallback`)}),(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:a(`activity:sdd.revertHint`)})]})]}),(0,W.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md bg-muted/50 p-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(o,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-warning`}),a(s>0&&!u?`activity:sdd.noteLeaveMerged`:`activity:sdd.noteAbandon`)]}),(0,W.jsxs)(D,{className:`gap-2 sm:gap-2`,children:[(0,W.jsx)(N,{variant:`outline`,size:`sm`,disabled:r,onClick:()=>t(!1),children:a(`common:action.cancel`)}),(0,W.jsx)(N,{size:`sm`,disabled:r,onClick:()=>i(u),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(c,{className:`mr-1 h-3.5 w-3.5 animate-spin`}),` `,a(`activity:sdd.destroying`)]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(g,{className:`mr-1 h-3.5 w-3.5`}),` `,a(`activity:sdd.destroyAll`)]})})]})]})})}var K=[{key:`pending`,labelKey:`kanbanBacklog`,accent:`border-border/70`,head:`text-muted-foreground`},{key:`queued`,labelKey:`kanbanReady`,accent:`border-primary/35`,head:`text-primary`},{key:`in_progress`,labelKey:`kanbanRunning`,accent:`border-[hsl(var(--warning)/0.45)]`,head:`text-[hsl(var(--warning))]`},{key:`review`,labelKey:`kanbanReview`,accent:`border-primary/35`,head:`text-primary`},{key:`failed`,labelKey:`kanbanFailed`,accent:`border-destructive/35`,head:`text-destructive`},{key:`completed`,labelKey:`kanbanDone`,accent:`border-[hsl(var(--success)/0.35)]`,head:`text-[hsl(var(--success))]`}];function q({tasks:e,selectedId:t,onTaskClick:n}){let{t:r}=_(),i=(0,U.useMemo)(()=>{let t=new Map;for(let e of K)t.set(e.key,[]);for(let n of e){let e=n.displayStatus===`blocked`?`pending`:n.displayStatus===`cancelled`?`failed`:n.displayStatus;(t.get(e)??t.get(`pending`))?.push(n)}return t},[e]);return(0,W.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 gap-3 overflow-x-auto p-4`,children:K.map(e=>{let a=i.get(e.key)??[];return(0,W.jsxs)(`div`,{className:`flex min-h-0 w-64 shrink-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:T(`mb-2 flex items-center gap-2 border-b-2 pb-1.5`,e.accent),children:[(0,W.jsx)(`span`,{className:T(`text-xs font-bold uppercase tracking-wide`,e.head),children:r(`activity:sdd.${e.labelKey}`)}),(0,W.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 text-[10px] text-muted-foreground`,children:a.length})]}),(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto pr-1`,children:[a.map(e=>(0,W.jsx)(J,{task:e,selected:e.id===t,onClick:()=>n(e.id)},e.id)),a.length===0&&(0,W.jsx)(`div`,{className:`rounded-md border border-dashed border-border py-6 text-center text-[10px] text-muted-foreground`,children:r(`activity:sdd.kanbanEmpty`)})]})]},e.key)})})}function J({task:e,selected:t,onClick:n}){let r=e.displayStatus===`in_progress`;return(0,W.jsxs)(`button`,{type:`button`,onClick:n,className:T(`sdd-node-enter w-full rounded-lg border bg-card/85 p-2 text-left shadow-sm transition hover:border-primary/35 hover:bg-accent/35`,t?`border-primary/55 ring-1 ring-primary/35`:`border-border/70`,r&&`sdd-node-running`,e.displayStatus===`completed`&&`sdd-node-complete`,e.displayStatus===`failed`&&`sdd-node-failed`),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r&&(0,W.jsx)(c,{className:`h-3 w-3 animate-spin text-[hsl(var(--warning))]`}),e.displayStatus===`completed`&&(0,W.jsx)(p,{className:`h-3 w-3 text-[hsl(var(--success))]`}),e.displayStatus===`failed`&&(0,W.jsx)(d,{className:`h-3 w-3 text-destructive`}),(0,W.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.shortId}),(0,W.jsx)(`span`,{className:T(`ml-auto rounded px-1.5 text-[9px] font-bold uppercase`,L(e.priority).chip),children:e.priority})]}),(0,W.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:e.title}),(e.agentName||e.worktreeBranch||e.retries)&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[e.agentName&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`span`,{className:T(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,r?`bg-[hsl(var(--warning))] sdd-agent-live`:`bg-muted-foreground`),children:I(e.agentName)}),(0,W.jsx)(`span`,{className:`max-w-[80px] truncate text-[10px] text-muted-foreground`,children:e.agentName})]}),e.retries?(0,W.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,W.jsx)(i,{className:`h-2.5 w-2.5`}),e.retries]}):null,e.worktreeBranch&&(0,W.jsx)(s,{className:`ml-auto h-2.5 w-2.5 text-muted-foreground`})]})]})}function ae({task:e,allTasks:t,feed:n,now:r,modelCandidates:a,defaultModel:o,onClose:c,onRetry:l,onReassign:u,onSetModel:f,onSetVerification:h,onCancel:ee,onDelete:v,onSplit:b,onSelectTask:x}){let{t:E}=_(),D=ne(e.displayStatus),O=D.icon,k=e.displayStatus===`in_progress`,A=e.displayStatus===`pending`||e.displayStatus===`blocked`||e.displayStatus===`queued`,[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(``),[F,R]=(0,U.useState)(null),[z,B]=(0,U.useState)(!1),[V,H]=(0,U.useState)(``),[ie,G]=(0,U.useState)(!1),[K,q]=(0,U.useState)(e.verificationCommand??``),J=()=>{N.trim()&&(u(e.id,N.trim()),M(!1),P(``))},ae=()=>{let t=V.split(`
2
- `).map(e=>e.trim()).filter(Boolean).map(e=>{let[t,...n]=e.split(`::`),r=(t??``).trim();return{title:r,description:n.join(`::`).trim()||r}}).filter(e=>e.title);t.length&&(b(e.id,t),B(!1),H(``))},se=(0,U.useMemo)(()=>new Map(t.map(e=>[e.shortId,e])),[t]),X=(0,U.useMemo)(()=>t.filter(t=>t.deps.includes(e.shortId)),[t,e.shortId]),Z=(0,U.useMemo)(()=>n.filter(t=>t.taskShortId===e.shortId),[n,e.shortId]),ce=e.startedAt&&!e.completedAt?re(r-e.startedAt):e.startedAt&&e.completedAt?re(e.completedAt-e.startedAt):null;return(0,W.jsxs)(`div`,{className:`sdd-rise flex h-full min-h-0 min-w-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border/70 bg-card/70 px-3 py-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`text-muted-foreground hover:text-foreground`,title:E(`activity:sddTask.backTitle`),children:(0,W.jsx)(y,{className:`h-4 w-4`})}),(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,W.jsxs)(`span`,{className:T(`ml-auto flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px]`,D.ring,D.text),children:[(0,W.jsx)(O,{className:T(`h-3 w-3`,k&&`animate-spin`)}),D.label]})]}),(0,W.jsxs)(`div`,{className:`min-h-0 min-w-0 flex-1 space-y-3 overflow-auto p-3`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold leading-snug text-foreground`,children:e.title}),e.agentName&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border/70 bg-muted/45 p-2`,children:[(0,W.jsx)(`span`,{className:T(`flex h-7 w-7 items-center justify-center rounded-full text-[10px] font-bold text-white`,k?`bg-[hsl(var(--warning))] sdd-agent-live`:`bg-muted-foreground`),children:I(e.agentName)}),(0,W.jsxs)(`div`,{className:`leading-tight`,children:[(0,W.jsx)(`div`,{className:`text-xs font-medium text-foreground`,children:e.agentName}),(0,W.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:E(k?`activity:sddTask.workingOn`:`activity:sddTask.assigned`)})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5 text-[11px]`,children:[(0,W.jsx)(Y,{label:E(`activity:sddTask.metaPriority`),children:(0,W.jsx)(`span`,{className:T(`font-medium uppercase`,L(e.priority).text),children:e.priority})}),(0,W.jsx)(Y,{label:E(`activity:sddTask.metaType`),children:e.type}),ce&&(0,W.jsx)(Y,{label:e.completedAt?E(`activity:sddTask.metaDuration`):E(`activity:sddTask.metaElapsed`),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(C,{className:`h-3 w-3 text-muted-foreground`}),ce]})}),e.retries?(0,W.jsx)(Y,{label:E(`activity:sddTask.metaRetries`),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1 text-destructive`,children:[(0,W.jsx)(i,{className:`h-3 w-3`}),e.retries]})}):null,e.worktreeBranch&&(0,W.jsx)(Y,{label:E(`activity:sddTask.metaWorktree`),full:!0,children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-foreground`,title:e.worktreeBranch,children:[(0,W.jsx)(s,{className:`h-3 w-3 text-muted-foreground`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.worktreeBranch})]})})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[E(`activity:sddTask.workerModel`),!e.model&&o&&(0,W.jsxs)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:[`· `,E(`activity:sddTask.runDefault`,{model:o})]})]}),(0,W.jsx)(te,{value:e.model,provider:e.provider,candidates:a,placeholder:o?E(`activity:sddTask.runDefaultPlaceholderModel`,{model:o}):E(`activity:sddTask.runDefaultPlaceholder`),onPick:(t,n)=>f(e.id,t,n),onReset:e.model?()=>f(e.id,void 0,void 0):void 0}),e.fallbackModels&&e.fallbackModels.length>0&&(0,W.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:e.fallbackModels.map((e,t)=>(0,W.jsxs)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[9px] text-muted-foreground`,children:[`↳ `,e]},t))})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[E(`activity:sddTask.verificationCmd`),(0,W.jsxs)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:[`· `,E(`activity:sddTask.gatesCompletion`)]})]}),ie?(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:K,onChange:e=>q(e.target.value),onKeyDown:t=>{t.key===`Enter`?(h(e.id,K.trim()||void 0),G(!1)):t.key===`Escape`&&(q(e.verificationCommand??``),G(!1))},placeholder:E(`activity:sddTask.verifyPlaceholder`),className:`w-full rounded border border-border bg-background px-2 py-1 font-mono text-[11px] text-foreground`}),(0,W.jsxs)(`div`,{className:`flex gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>{h(e.id,K.trim()||void 0),G(!1)},className:`rounded bg-primary px-2 py-0.5 text-[10px] text-primary-foreground hover:opacity-90`,children:E(`common:action.save`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{q(e.verificationCommand??``),G(!1)},className:`rounded bg-muted px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.cancel`)})]})]}):e.verificationCommand?(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`code`,{className:`flex-1 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] text-foreground`,children:e.verificationCommand}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.edit`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>h(e.id,void 0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.clear`)})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`rounded border border-dashed border-border px-2 py-1 text-[10px] text-muted-foreground hover:bg-muted`,children:E(`activity:sddTask.addVerify`)})]}),e.description&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:E(`activity:sddTask.description`)}),(0,W.jsx)(`p`,{className:`whitespace-pre-wrap rounded-md bg-muted p-2 text-[11px] leading-relaxed text-foreground`,children:e.description})]}),Z.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:E(`activity:sddTask.timeline`)}),(0,W.jsx)(`div`,{className:`space-y-1 border-l border-border pl-2.5`,children:Z.map((e,t)=>(0,W.jsxs)(`div`,{className:`relative text-[11px] leading-snug text-foreground`,children:[(0,W.jsx)(`span`,{className:T(`absolute -left-[14px] top-1 h-1.5 w-1.5 rounded-full`,e.kind===`completed`?`bg-[hsl(var(--success))]`:e.kind===`failed`?`bg-destructive`:e.kind===`retrying`?`bg-[hsl(var(--warning))]`:`bg-primary`)}),e.text]},`${e.ts}-${t}`))})]}),e.deps.length>0&&(0,W.jsx)(oe,{title:E(`activity:sddTask.dependsOn`),shortIds:e.deps,byShort:se,onSelectTask:x}),X.length>0&&(0,W.jsx)(oe,{title:E(`activity:sddTask.blocks`),shortIds:X.map(e=>e.shortId),byShort:se,onSelectTask:x})]}),(0,W.jsxs)(`div`,{className:`border-t border-border p-2`,children:[j?(0,W.jsxs)(`div`,{className:`sdd-rise flex items-center gap-1.5`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:N,onChange:e=>P(e.target.value),onKeyDown:e=>{e.key===`Enter`&&J(),e.key===`Escape`&&M(!1)},placeholder:E(`activity:sddTask.newWorkerPlaceholder`),className:`min-w-0 flex-1 rounded-md border border-border/70 bg-background px-2 py-1.5 text-xs outline-none focus:border-primary/60`}),(0,W.jsx)(`button`,{type:`button`,onClick:J,disabled:!N.trim(),className:`rounded-md bg-primary/10 px-2 py-1.5 text-xs font-medium text-primary hover:bg-primary/15 disabled:opacity-40`,children:(0,W.jsx)(p,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>M(!1),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]}):F?(0,W.jsxs)(`div`,{className:`sdd-rise flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex-1 text-xs text-foreground`,children:E(F===`stop`?`activity:sddTask.confirmStop`:`activity:sddTask.confirmDelete`)}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{F===`stop`?ee(e.id):v(e.id),R(null)},className:`inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2.5 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(p,{className:`h-3.5 w-3.5`}),` `,E(F===`stop`?`common:action.stop`:`common:action.delete`)]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>R(null),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]}):(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),title:E(`activity:sddTask.retryTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-[hsl(var(--warning)/0.12)] py-1.5 text-xs font-medium text-[hsl(var(--warning))] hover:bg-[hsl(var(--warning)/0.18)]`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5`}),` `,E(`common:action.retry`)]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>M(!0),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(S,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.reassign`)]}),k&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>R(`stop`),title:E(`activity:sddTask.stopTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-destructive/10 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(m,{className:`h-3.5 w-3.5`}),` `,E(`common:action.stop`)]}),!k&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>B(!0),title:E(`activity:sddTask.splitTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.split`)]}),A&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>R(`delete`),title:E(`activity:sddTask.deleteTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-destructive/10 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(g,{className:`h-3.5 w-3.5`}),` `,E(`common:action.delete`)]})]}),z&&(0,W.jsxs)(`div`,{className:`mt-2 flex flex-col gap-2`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,htmlFor:`sdd-split-input`,children:E(`activity:sddTask.splitHint`)}),(0,W.jsx)(`textarea`,{id:`sdd-split-input`,autoFocus:!0,rows:3,value:V,onChange:e=>H(e.target.value),placeholder:E(`activity:sddTask.splitPlaceholder`),className:`w-full resize-y rounded-md border border-border/70 bg-background px-2 py-1.5 text-xs text-foreground focus:outline-none focus:ring-1 focus:ring-ring`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:ae,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.splitInto`)]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{B(!1),H(``)},className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]})]})]})]})}function Y({label:e,children:t,full:n}){return(0,W.jsxs)(`div`,{className:T(`rounded-md border border-border bg-muted/50 px-2 py-1`,n&&`col-span-2`),children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-foreground`,children:t})]})}function oe({title:e,shortIds:t,byShort:n,onSelectTask:r}){return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(e=>{let t=n.get(e);return(0,W.jsxs)(`button`,{type:`button`,disabled:!t,onClick:()=>t&&r(t.id),className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-foreground hover:bg-muted disabled:opacity-50`,title:t?.title,children:[(0,W.jsx)(`span`,{className:T(`h-1.5 w-1.5 rounded-full`,ne(t?.displayStatus??`pending`).dot)}),(0,W.jsx)(`span`,{className:`font-mono`,children:e})]},e)})})]})}function se({pct:e}){let t=2*Math.PI*26,n=t-Math.max(0,Math.min(100,e))/100*t;return(0,W.jsxs)(`div`,{className:`relative h-16 w-16 shrink-0`,children:[(0,W.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:`h-16 w-16 -rotate-90`,children:[(0,W.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`hsl(var(--muted))`,strokeWidth:`6`}),(0,W.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`url(#sddgrad)`,strokeWidth:`6`,strokeLinecap:`round`,strokeDasharray:t,strokeDashoffset:n,style:{transition:`stroke-dashoffset 0.6s cubic-bezier(0.16,1,0.3,1)`}}),(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`sddgrad`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,W.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--primary))`}),(0,W.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--info))`})]})})]}),(0,W.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm font-bold text-foreground`,children:[Math.round(e),`%`]})]})}function X({onClose:e}){let{t}=_(),{client:n}=E(),s=A(e=>e.snapshot),c=A(e=>e.lifecycleResult),f=A(e=>e.destroying),p=A(e=>e.setDestroying),v=A(e=>e.setLifecycleResult),[y,b]=(0,U.useState)(()=>Date.now()),[S,C]=(0,U.useState)(null),[w,D]=(0,U.useState)(`graph`),[te,O]=(0,U.useState)(!1);(0,U.useEffect)(()=>{n?.send?.({type:`sdd.board.get`})},[n]);let k=s&&(s.status===`running`||s.status===`paused`);(0,U.useEffect)(()=>{if(!k)return;let e=setInterval(()=>b(Date.now()),1e3);return b(Date.now()),()=>clearInterval(e)},[k]);let j=(0,U.useCallback)(e=>n?.send?.(e),[n]),P=(0,U.useRef)(null),F=(0,U.useCallback)(e=>{P.current=null,j({type:`sdd.board.destroy`,payload:{revertMerged:e}})},[j]),L=(0,U.useCallback)(e=>{O(!1),v(null),p(!0),k?(j({type:`sdd.board.stop`,payload:{}}),P.current={revertMerged:e,deadline:Date.now()+2e4}):F(e)},[k,j,F,p,v]);(0,U.useEffect)(()=>{let e=P.current;e&&(!k||Date.now()>=e.deadline)&&F(e.revertMerged)},[k,s,F]);let ne=(0,U.useCallback)(()=>{v(null),j({type:`sdd.board.cleanup_worktrees`,payload:{}})},[j,v]),B=(0,U.useCallback)(()=>{v(null),j({type:`sdd.board.rollback`,payload:{}})},[j,v]),V=(0,U.useMemo)(()=>(s?.tasks??[]).map(e=>({id:e.id,shortId:e.shortId,title:e.title,displayStatus:e.displayStatus,priority:e.priority,deps:e.deps,agentName:e.agentName,worktreeBranch:e.worktreeBranch})),[s?.tasks]),K=(0,U.useMemo)(()=>{let e=new Map;for(let t of s?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.set(t.agentName,{name:t.agentName,task:t.title});return[...e.values()]},[s?.tasks]),J=(0,U.useCallback)(e=>C(e),[]),Y=(0,U.useCallback)(e=>j({type:`sdd.board.retry`,payload:{taskId:e}}),[j]),oe=(0,U.useCallback)(()=>j({type:`sdd.board.retry_all_failed`,payload:{}}),[j]),X=(0,U.useCallback)((e,t)=>{let n=t.trim();n&&j({type:`sdd.board.reassign`,payload:{taskId:e,agentName:n}})},[j]),Z=(0,U.useCallback)((e,t,n)=>j({type:`sdd.board.set_task_model`,payload:{taskId:e,model:t,provider:n}}),[j]),le=(0,U.useCallback)((e,t)=>j({type:`sdd.board.set_task_verification`,payload:{taskId:e,verificationCommand:t}}),[j]),ue=(0,U.useCallback)(e=>j({type:`sdd.board.cancel_task`,payload:{taskId:e}}),[j]),de=(0,U.useCallback)(e=>{j({type:`sdd.board.delete_task`,payload:{taskId:e}}),C(null)},[j]),fe=(0,U.useCallback)((e,t)=>{j({type:`sdd.board.split_task`,payload:{taskId:e,subtasks:t}}),C(null)},[j]),pe=M(S!==null),me=(0,U.useMemo)(()=>s?.tasks.find(e=>e.id===S)??null,[s?.tasks,S]),$=s?.progress,he=s?.diagnostics?.deadlockChains??[];return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,W.jsxs)(`header`,{className:`sdd-sheen shrink-0 border-b border-border px-4 pb-3 pt-2.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{className:`h-5 w-5 text-warning`}),(0,W.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:s?.title??t(`activity:sddBoard.titleFallback`)}),s&&(0,W.jsx)(`span`,{className:T(`rounded-full border px-2 py-0.5 text-[11px] font-medium capitalize`,R[s.status]??R.idle),children:s.status}),s?.defaultModel&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-muted-foreground`,title:t(`activity:sddBoard.defaultModelTitle`),children:[(0,W.jsx)(x,{className:`h-3 w-3 text-primary`}),s.defaultModel]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[s&&(0,W.jsx)(`div`,{className:`flex items-center rounded-md border border-border bg-muted p-0.5 text-[11px]`,children:[`graph`,`kanban`].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>D(e),className:T(`rounded px-2 py-0.5 capitalize transition`,w===e?`bg-primary/12 text-primary`:`text-muted-foreground hover:text-foreground`),children:t(e===`graph`?`activity:sddBoard.graphLabel`:`activity:sddBoard.kanbanLabel`)},e))}),k&&($?.failed??0)>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:oe,title:t(`activity:sddBoard.retryAllTitle`),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.retryFailed`,{count:$?.failed??0})]}),k&&(0,W.jsxs)(W.Fragment,{children:[s?.status===`paused`?(0,W.jsxs)(`button`,{type:`button`,onClick:()=>j({type:`sdd.board.resume`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-success/15 px-2.5 py-1 text-xs font-medium text-success hover:bg-success/25`,children:[(0,W.jsx)(a,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.resume`)]}):(0,W.jsxs)(`button`,{type:`button`,onClick:()=>j({type:`sdd.board.pause`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(u,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.pause`)]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>j({type:`sdd.board.stop`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-destructive/15 px-2.5 py-1 text-xs font-medium text-destructive hover:bg-destructive/25`,children:[(0,W.jsx)(m,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.stop`)]})]}),s&&!k&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,onClick:ne,title:t(`activity:sddBoard.cleanTitle`),className:`inline-flex items-center gap-1 rounded-md bg-muted px-2.5 py-1 text-xs font-medium text-muted-foreground hover:bg-muted/80`,children:[(0,W.jsx)(ee,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.cleanWorktrees`)]}),(s.mergedCommits?.length??0)>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:B,title:t(`activity:sddBoard.rollbackTitle`,{count:s.mergedCommits?.length??0,base:s.baseBranch??t(`activity:sdd.baseBranchFallback`)}),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(h,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.rollback`,{count:s.mergedCommits?.length??0})]})]}),s&&(f?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-destructive/15 px-2.5 py-1 text-xs font-medium text-destructive`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5 animate-spin`}),` `,t(k?`activity:sddBoard.stopping`:`activity:sddBoard.destroying`)]}):(0,W.jsxs)(`button`,{type:`button`,onClick:()=>O(!0),title:t(`activity:sddBoard.destroyTitle`),className:`inline-flex items-center gap-1 rounded-md bg-destructive px-2.5 py-1 text-xs font-medium text-destructive-foreground hover:bg-destructive/90`,children:[(0,W.jsx)(g,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.destroy`)]})),(0,W.jsx)(N,{variant:`ghost`,size:`icon`,onClick:e,children:(0,W.jsx)(d,{className:`h-4 w-4`})})]})]}),s&&$&&(0,W.jsxs)(`div`,{className:`mt-2.5 flex items-center gap-5`,children:[(0,W.jsx)(se,{pct:$.percentComplete}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-xs`,children:[(0,W.jsx)(Q,{label:t(`activity:sddBoard.statDone`),value:`${$.completed}/${$.total}`,color:`text-success`}),$.inProgress>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statRunning`),value:$.inProgress,color:`text-warning`}),$.failed>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statFailed`),value:$.failed,color:`text-destructive`}),(0,W.jsx)(Q,{label:t(`activity:sddBoard.statWave`),value:s.wave+1,color:`text-primary`}),k&&s.startedAt>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statElapsed`),value:re(y-s.startedAt),color:`text-foreground`})]}),(0,W.jsx)(`div`,{className:`flex min-h-[24px] items-center gap-1.5`,children:K.length===0?(0,W.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:t(`activity:sddBoard.noActiveWorkers`)}):K.map((e,t)=>(0,W.jsxs)(`span`,{title:`${e.name} → ${e.task}`,className:`flex items-center gap-1 rounded-full bg-muted py-0.5 pl-0.5 pr-2`,children:[(0,W.jsx)(`span`,{className:T(`sdd-agent-live flex h-5 w-5 items-center justify-center rounded-full text-[9px] font-bold text-white`,z[t%z.length]),children:I(e.name)}),(0,W.jsx)(`span`,{className:`max-w-[90px] truncate text-[11px] text-foreground`,children:e.name})]},e.name))})]})]})]}),c&&(0,W.jsx)(ce,{result:c,onDismiss:()=>v(null)}),he.length>0&&(0,W.jsxs)(`div`,{className:`flex items-start gap-2 border-b border-destructive/30 bg-destructive/5 px-4 py-2 text-xs text-destructive`,children:[(0,W.jsx)(o,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-semibold`,children:t(`activity:sddBoard.deadlock`)}),he.map(e=>(0,W.jsxs)(`div`,{className:`font-mono`,children:[e.blocked,` ← `,e.blockedBy.join(`, `)]},e.blocked))]})]}),(0,W.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:s?w===`graph`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(H,{tasks:V,columns:s.columns,onTaskClick:J}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 rounded-full bg-black/40 px-2 py-0.5 text-[10px] text-muted-foreground backdrop-blur`,children:t(`activity:sddBoard.clickTaskHint`)})]}):(0,W.jsx)(q,{tasks:s.tasks,selectedId:S,onTaskClick:J}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 text-sm text-muted-foreground`,children:[(0,W.jsx)(l,{className:`h-10 w-10 text-primary/40`}),(0,W.jsx)(`p`,{className:`text-foreground`,children:t(`activity:sddBoard.noRunTitle`)}),(0,W.jsx)(`p`,{className:`max-w-sm text-center text-xs text-muted-foreground`,children:t(`activity:sddBoard.noRunBody`)})]})}),s&&(0,W.jsx)(`aside`,{className:`w-80 shrink-0 border-l border-border bg-card`,children:me?(0,W.jsx)(ae,{task:me,allTasks:s.tasks,feed:s.feed??[],now:y,modelCandidates:pe,defaultModel:s.defaultModel,onClose:()=>C(null),onRetry:Y,onReassign:X,onSetModel:Z,onSetVerification:le,onCancel:ue,onDelete:de,onSplit:fe,onSelectTask:C},me.id):(0,W.jsx)(ie,{feed:s.feed??[],now:y})})]}),(0,W.jsx)(G,{open:te,onOpenChange:O,snapshot:s,busy:f,onConfirm:L})]})}function Z(e){let t=e.op===`cleanup_worktrees`?`lcClean`:e.op===`rollback`?`lcRollback`:`lcDestroy`,n=v.t(`activity:sddBoard.${t}`);if(!e.ok)return v.t(`activity:sddBoard.lcFailed`,{op:n,reason:e.reason??v.t(`activity:sddBoard.lcUnknownError`)});let r=[];typeof e.removed==`number`&&r.push(v.t(`activity:sddBoard.lcWorktrees`,{count:e.removed})),typeof e.reverted==`number`&&e.reverted>0&&r.push(v.t(`activity:sddBoard.lcCommits`,{count:e.reverted})),e.deleted?.length&&r.push(v.t(`activity:sddBoard.lcDeleted`,{items:e.deleted.join(`, `)}));let i=r.length?r.join(` · `):v.t(`activity:sddBoard.lcNothing`);return e.reason?v.t(`activity:sddBoard.lcNote`,{op:n,body:i,reason:e.reason}):v.t(`activity:sddBoard.lcOk`,{op:n,body:i})}function ce({result:e,onDismiss:t}){let n=!e.ok||!!e.reason;return(0,W.jsxs)(`div`,{className:T(`flex items-start gap-2 border-b px-4 py-2 text-xs`,n?`border-warning/30 bg-warning/5 text-warning`:`border-success/30 bg-success/5 text-success`),children:[n?(0,W.jsx)(b,{className:`mt-0.5 h-4 w-4 shrink-0`}):(0,W.jsx)(f,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{className:`flex-1`,children:Z(e)}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`shrink-0 opacity-60 hover:opacity-100`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]})}function Q({label:e,value:t,color:n}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1`,children:[(0,W.jsx)(`span`,{className:T(`font-semibold tabular-nums`,n),children:t}),(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e})]})}export{X as SddBoardView};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Er as r,Et as i,Gr as a,It as o,Kt as s,Lr as c,Mn as l,Pn as u,Sr as d,Wr as f,Z as p,br as m,fi as h,pr as g,xt as _}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as v}from"./utils-B-rhScDN.js";import{a as y,c as b,m as x,n as S,o as C,p as w,r as T,t as E,u as D}from"./xyflow-CGx_hPAX.js";var O=e(t(),1),k={pending:{label:`Pending`,icon:g,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`},queued:{label:`Ready`,icon:g,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--primary))`},in_progress:{label:`Running`,icon:f,spin:!0,text:`text-[hsl(var(--warning))]`,ring:`border-[hsl(var(--warning)/0.45)] bg-[hsl(var(--warning)/0.1)]`,dot:`bg-[hsl(var(--warning))]`,hex:`hsl(var(--warning))`},blocked:{label:`Blocked`,icon:g,text:`text-destructive`,ring:`border-destructive/30 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},review:{label:`Review`,icon:g,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--info))`},failed:{label:`Failed`,icon:p,text:`text-destructive`,ring:`border-destructive/45 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},completed:{label:`Done`,icon:m,text:`text-[hsl(var(--success))]`,ring:`border-[hsl(var(--success)/0.35)] bg-[hsl(var(--success)/0.1)]`,dot:`bg-[hsl(var(--success))]`,hex:`hsl(var(--success))`},cancelled:{label:`Cancelled`,icon:r,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`}};function A(e){return k[e]??k.pending}var j={critical:{text:`text-destructive`,chip:`bg-destructive/10 text-destructive`},high:{text:`text-[hsl(var(--warning))]`,chip:`bg-[hsl(var(--warning)/0.12)] text-[hsl(var(--warning))]`},medium:{text:`text-primary`,chip:`bg-primary/10 text-primary`},low:{text:`text-muted-foreground`,chip:`bg-muted text-muted-foreground`}};function M(e){return j[e]??j.medium}var N={running:`border-primary/35 bg-primary/10 text-primary`,paused:`border-[hsl(var(--warning)/0.35)] bg-[hsl(var(--warning)/0.1)] text-[hsl(var(--warning))]`,stopped:`border-border/70 bg-muted text-muted-foreground`,completed:`border-[hsl(var(--success)/0.35)] bg-[hsl(var(--success)/0.1)] text-[hsl(var(--success))]`,failed:`border-destructive/35 bg-destructive/10 text-destructive`,deadlocked:`border-destructive/35 bg-destructive/10 text-destructive`,idle:`border-border bg-muted text-muted-foreground`},P=[`bg-[hsl(var(--warning))]`,`bg-primary`,`bg-[hsl(var(--success))]`,`bg-destructive`,`bg-secondary`,`bg-muted-foreground`,`bg-accent`],F={started:{icon:s,color:`text-[hsl(var(--warning))]`},completed:{icon:m,color:`text-[hsl(var(--success))]`},failed:{icon:p,color:`text-destructive`},retrying:{icon:o,color:`text-[hsl(var(--warning))]`},wave:{icon:a,color:`text-primary`},deadlock:{icon:c,color:`text-destructive`},verification_failed:{icon:i,color:`text-destructive`},conflict:{icon:l,color:`text-[hsl(var(--warning))]`},split:{icon:_,color:`text-primary`},supervisor:{icon:d,color:`text-primary`}};function I(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t[1]?.[0]??``)).toUpperCase()||`·`}function L(e){let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?t%60?`${n}m ${t%60}s`:`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function R(e,t){let n=Math.max(0,Math.floor((t-e)/1e3));if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m`:`${Math.floor(r/60)}h`}var z=n(),B=300,V=128,H=240,U={pending:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`},queued:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},in_progress:{ring:`border-[hsl(var(--warning)/0.45)]`,chip:`bg-[hsl(var(--warning)/0.12)] text-[hsl(var(--warning))]`,dot:`bg-[hsl(var(--warning))]`},blocked:{ring:`border-destructive/30`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},review:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},failed:{ring:`border-destructive/45`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},completed:{ring:`border-[hsl(var(--success)/0.35)]`,chip:`bg-[hsl(var(--success)/0.12)] text-[hsl(var(--success))]`,dot:`bg-[hsl(var(--success))]`},cancelled:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`}};function W({data:e}){let t=e.task,{t:n}=h(),r=U[t.displayStatus],i=t.displayStatus===`in_progress`,a=t.displayStatus===`completed`?m:t.displayStatus===`failed`?p:i?f:g;return(0,z.jsxs)(`div`,{className:v(`sdd-node-enter group relative rounded-lg border bg-card/95 px-2.5 py-2 text-left shadow-lg backdrop-blur`,r.ring,i&&`sdd-node-running`,t.displayStatus===`completed`&&`sdd-node-complete`,t.displayStatus===`failed`&&`sdd-node-failed`,e.onTaskClick&&`cursor-pointer hover:brightness-125`),style:{width:H,animationDelay:`${Math.min(e.index*45,600)}ms`},onClick:()=>e.onTaskClick?.(t.id),children:[(0,z.jsx)(y,{type:`target`,position:x.Left,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsx)(y,{type:`source`,position:x.Right,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(a,{className:v(`h-3.5 w-3.5`,i&&`animate-spin`,r.chip.split(` `).find(e=>e.startsWith(`text`)))}),(0,z.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:t.shortId}),(0,z.jsx)(`span`,{className:v(`font-mono text-[10px] font-bold uppercase`,M(t.priority).text),children:t.priority[0]}),(0,z.jsx)(`span`,{className:v(`ml-auto rounded px-1.5 py-px text-[9px] font-medium`,r.chip),children:n(`activity:sdd.status.${t.displayStatus}`)})]}),(0,z.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:t.title}),(t.agentName||t.worktreeBranch)&&(0,z.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[t.agentName&&(0,z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,z.jsx)(`span`,{className:v(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,i?`bg-[hsl(var(--warning))] sdd-agent-live`:`bg-muted-foreground`),children:I(t.agentName)}),(0,z.jsx)(`span`,{className:`max-w-[88px] truncate text-[10px] text-muted-foreground`,children:t.agentName})]}),t.retries?(0,z.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,z.jsx)(o,{className:`h-2.5 w-2.5`}),t.retries]}):null,t.worktreeBranch&&(0,z.jsxs)(`span`,{className:`ml-auto flex items-center gap-0.5 text-[9px] text-muted-foreground`,title:t.worktreeBranch,children:[(0,z.jsx)(u,{className:`h-2.5 w-2.5`}),(0,z.jsx)(`span`,{className:`max-w-[70px] truncate`,children:t.worktreeBranch.replace(/^.*\//,``)})]})]})]})}function G({data:e}){return(0,z.jsx)(`div`,{className:`whitespace-nowrap text-[11px] font-bold uppercase text-muted-foreground`,children:e.label})}var K={task:W,colLabel:G};function q(e,t,n){let r=new Map(e.map(e=>[e.shortId,e])),i=[],a=0;t.forEach((e,t)=>{i.push({id:`__col_${t}`,position:{x:t*B,y:-52},data:{label:e.label},draggable:!1,selectable:!1,type:`colLabel`,style:{pointerEvents:`none`}}),e.taskIds.forEach((e,o)=>{let s=r.get(e);s&&i.push({id:s.id,position:{x:t*B,y:o*V},data:{task:s,index:a++,onTaskClick:n},type:`task`,draggable:!0})})});let o=[];for(let t of e)for(let e of t.deps){let n=r.get(e);if(!n)continue;let i=n.displayStatus===`completed`&&(t.displayStatus===`in_progress`||t.displayStatus===`queued`);o.push({id:`${n.id}->${t.id}`,source:n.id,target:t.id,animated:i,className:i?`sdd-edge-flow`:void 0,style:{stroke:A(t.displayStatus).hex,strokeWidth:i?2.2:1.4,opacity:t.displayStatus===`pending`?.4:.85}})}return{nodes:i,edges:o}}function J({tasks:e,columns:t,onTaskClick:n}){let{fitView:r}=w(),{nodes:i,edges:a}=(0,O.useMemo)(()=>q(e,t,n),[e,t,n]),o=e.length;return(0,O.useEffect)(()=>{let e=setTimeout(()=>r({padding:.18,duration:400}),60);return()=>clearTimeout(e)},[o,r]),(0,z.jsxs)(D,{nodes:i,edges:a,nodeTypes:K,fitView:!0,fitViewOptions:{padding:.18},minZoom:.2,maxZoom:1.6,proOptions:{hideAttribution:!0},nodesConnectable:!1,elementsSelectable:!!n,children:[(0,z.jsx)(E,{variant:S.Dots,gap:22,size:1,color:`hsl(var(--border))`}),(0,z.jsx)(T,{showInteractive:!1,className:`!bottom-2 !left-2`}),(0,z.jsx)(C,{pannable:!0,zoomable:!0,nodeStrokeWidth:2,maskColor:`hsl(var(--background) / 0.65)`,nodeColor:e=>{let t=e.data?.task?.displayStatus;return t?A(t).hex:`hsl(var(--muted-foreground))`},className:`!bottom-2 !right-2 !h-24 !w-40 overflow-hidden rounded-md border border-border/70 bg-card`})]})}function Y({tasks:e,columns:t,onTaskClick:n}){return(0,z.jsx)(b,{children:(0,z.jsx)(J,{tasks:e,columns:t,onTaskClick:n})})}export{I as a,M as c,N as i,A as l,P as n,R as o,F as r,L as s,Y as t};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{$ as r,Fr as i,Hn as a,Vt as o,Wr as s,ai as c,et as l,fi as u,hi as d,ii as f,oi as p,or as m,ur as h}from"./vendor-OWPFcqeg.js";import"./i18n-DD-_8vnT.js";import{t as g}from"./utils-B-rhScDN.js";var _=e(t(),1),v=n();async function y(e){try{let t=await e.clone().json(),n=typeof t.error==`string`?t.error:t.message;if(typeof n==`string`&&n.trim())return n}catch{try{let t=await e.text();if(t.trim())return t.trim()}catch{}}return e.statusText||`HTTP ${e.status}`}function b(e){switch(e){case`running`:return{icon:(0,v.jsx)(i,{className:`h-3.5 w-3.5`}),cls:`text-[hsl(var(--success))]`};case`streaming`:return{icon:(0,v.jsx)(o,{className:`h-3.5 w-3.5`}),cls:`text-primary`};case`waiting_user`:return{icon:(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),cls:`text-[hsl(var(--warning))]`};case`error`:return{icon:(0,v.jsx)(p,{className:`h-3.5 w-3.5`}),cls:`text-destructive`};case`idle`:return{icon:(0,v.jsx)(f,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`};default:return{icon:(0,v.jsx)(c,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`}}}function x(e){switch(e){case`active`:return{icon:(0,v.jsx)(r,{className:`h-3.5 w-3.5`}),cls:`text-[hsl(var(--success))]`,badge:`border-[hsl(var(--success)/0.25)] bg-[hsl(var(--success)/0.08)] text-[hsl(var(--success))]`};case`idle`:return{icon:(0,v.jsx)(l,{className:`h-3.5 w-3.5`}),cls:`text-primary`,badge:`border-primary/25 bg-primary/10 text-primary`};case`closing`:return{icon:(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),cls:`text-[hsl(var(--warning))]`,badge:`border-[hsl(var(--warning)/0.25)] bg-[hsl(var(--warning)/0.1)] text-[hsl(var(--warning))]`};default:return{icon:(0,v.jsx)(l,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`,badge:`border-border bg-muted text-muted-foreground`}}}function S(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`<1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function C(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/1e3);if(n<10)return d.t(`common:time.justNow`);if(n<60)return d.t(`common:time.secondsAgo`,{count:n});let r=Math.floor(n/60);return r<60?d.t(`common:time.minutesAgo`,{count:r}):d.t(`common:time.hoursAgo`,{count:Math.floor(r/60)})}function w(){let{t:e}=u(),[t,n]=(0,_.useState)([]),[i,o]=(0,_.useState)(!0),[c,d]=(0,_.useState)(null),f=(0,_.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);if(!e.ok){if(e.status===404){d(null),n([]);return}throw Error(`HTTP ${e.status}: ${await y(e)}`)}if(!(e.headers.get(`content-type`)?.toLowerCase()??``).includes(`application/json`)){d(null),n([]);return}let t=await e.json();if(!Array.isArray(t)){d(null),n([]);return}n(t),d(null)}catch(e){if(e instanceof SyntaxError){d(null),n([]);return}d(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,_.useEffect)(()=>{f();let e=setInterval(f,5e3);return()=>clearInterval(e)},[f]);let w=t.filter(e=>e.status===`active`).length,T=t.reduce((e,t)=>e+t.agentCount,0);return i?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,v.jsx)(s,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:liveSessions.loading`)]})}):c?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface max-w-lg rounded-xl p-5 text-center`,children:[(0,v.jsx)(p,{className:`mx-auto h-8 w-8 text-[hsl(var(--warning))]`}),(0,v.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e(`activity:liveSessions.apiUnavailable`)}),(0,v.jsx)(`p`,{className:`mt-1 break-words text-xs text-muted-foreground`,children:c})]})}):t.length===0?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface max-w-md rounded-xl p-6 text-center text-muted-foreground`,children:[(0,v.jsx)(l,{className:`mx-auto h-9 w-9 opacity-50`}),(0,v.jsx)(`p`,{className:`mt-3 text-sm font-medium text-foreground`,children:e(`activity:liveSessions.empty`)}),(0,v.jsx)(`p`,{className:`mt-1 text-xs`,children:e(`activity:liveSessions.autoRefresh`)})]})}):(0,v.jsx)(`div`,{className:`h-full min-h-0 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,v.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-col gap-4`,children:[(0,v.jsx)(`header`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,v.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(r,{className:`h-4 w-4 text-primary`}),(0,v.jsx)(`h2`,{className:`text-base font-semibold`,children:e(`activity:liveSessions.heading`,{count:t.length})})]}),(0,v.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:e(`activity:liveSessions.autoRefresh`)})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 text-center sm:min-w-[22rem]`,children:[(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums`,children:t.length}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Sessions`})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums text-[hsl(var(--success))]`,children:w}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Active`})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums`,children:T}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Agents`})]})]})]})}),(0,v.jsx)(`div`,{className:`grid gap-3`,children:t.map(t=>{let n=x(t.status);return(0,v.jsxs)(`article`,{className:`rounded-xl border border-border/70 bg-card/75 p-3 shadow-sm sm:p-4`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,v.jsx)(`span`,{className:n.cls,children:n.icon}),(0,v.jsx)(`h3`,{className:`min-w-0 truncate text-sm font-semibold`,title:t.projectName,children:t.projectName}),(0,v.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground`,children:t.projectSlug}),(0,v.jsx)(`span`,{className:`inline-flex items-center rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase ${n.badge}`,children:t.status})]}),(0,v.jsxs)(`div`,{className:`mt-2 grid gap-1.5 text-xs text-muted-foreground md:grid-cols-[minmax(0,1fr)_auto]`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,v.jsx)(m,{className:`h-3.5 w-3.5 shrink-0`}),(0,v.jsx)(`span`,{className:`min-w-0 truncate font-mono`,title:t.workingDir,children:t.workingDir})]}),(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.gitBranch?(0,v.jsxs)(`span`,{className:`inline-flex min-w-0 max-w-full items-center gap-1 text-primary`,children:[(0,v.jsx)(a,{className:`h-3.5 w-3.5 shrink-0`}),(0,v.jsx)(`span`,{className:`truncate font-mono`,children:t.gitBranch})]}):null,(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),S(t.startedAt)]}),(0,v.jsx)(`span`,{className:`font-mono`,children:e(`activity:liveSessions.pidLabel`,{pid:t.pid})})]})]})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs sm:grid-cols-3 lg:w-64`,children:[(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Agents`}),(0,v.jsx)(`div`,{className:`font-semibold tabular-nums`,children:t.agentCount})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Status`}),(0,v.jsx)(`div`,{className:`truncate font-mono font-semibold`,children:t.status})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Runtime`}),(0,v.jsx)(`div`,{className:`font-mono font-semibold`,children:S(t.startedAt)})]})]})]}),(0,v.jsxs)(`div`,{className:`mt-3 overflow-hidden rounded-lg border border-border/70 bg-background/45`,children:[t.agents.length===0?(0,v.jsx)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground`,children:e(`activity:liveSessions.noAgents`)}):(0,v.jsx)(`div`,{className:`divide-y divide-border/60`,children:t.agents.slice(0,5).map(t=>{let n=b(t.status);return(0,v.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-2 gap-y-1 px-3 py-2 text-xs sm:grid-cols-[auto_minmax(0,1fr)_minmax(0,14rem)_auto]`,children:[(0,v.jsx)(`span`,{className:g(`mt-0.5 shrink-0`,n.cls),children:n.icon}),(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsx)(`div`,{className:`truncate font-medium`,title:t.name,children:t.name}),(0,v.jsx)(`div`,{className:`font-mono text-[10px] text-muted-foreground`,children:e(`activity:liveSessions.agentMeta`,{iter:t.iterations,tools:t.toolCalls,ago:C(t.lastActivityAt)})})]}),(0,v.jsx)(`div`,{className:`min-w-0 font-mono text-[10px] text-muted-foreground sm:text-xs`,children:t.currentTool?(0,v.jsx)(`span`,{className:`block truncate`,title:t.currentTool,children:t.currentTool}):(0,v.jsx)(`span`,{className:`text-muted-foreground/60`,children:t.status})}),(0,v.jsx)(`span`,{className:`hidden font-mono text-[10px] text-muted-foreground sm:block`,children:C(t.lastActivityAt)})]},t.id)})}),t.agents.length>5?(0,v.jsx)(`div`,{className:`border-t border-border/60 px-3 py-2 text-xs text-muted-foreground`,children:e(`activity:liveSessions.andMore`,{count:t.agents.length-5})}):null]})]},t.sessionId)})})]})})}export{w as SessionsDashboard};