@wrongstack/webui 0.285.0 → 0.286.0

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 (178) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/assets/{AnalyticsDashboard-Bn2wIgV0.js → AnalyticsDashboard-BDpQqHtX.js} +1 -1
  3. package/dist/assets/AutoPhaseView-BL_RSAcj.js +1 -0
  4. package/dist/assets/{ChangesView-C_r4kccO.js → ChangesView-Dqfa8YFA.js} +1 -1
  5. package/dist/assets/{CodeEditor-DSpqZ-mS.js → CodeEditor-De8voGEi.js} +1 -1
  6. package/dist/assets/DebugDashboard-D0C8_NWJ.js +1 -0
  7. package/dist/assets/{DesignGalleryView-Bk3HH3al.js → DesignGalleryView-Dwn2JYAL.js} +1 -1
  8. package/dist/assets/KanbanView-BUugea4e.js +1 -0
  9. package/dist/assets/MailboxDetailView-DCjSrQNI.js +1 -0
  10. package/dist/assets/OfficeMapPanel-Bqqys7xo.js +4 -0
  11. package/dist/assets/{ProcessMonitor-dUyYv3Z4.js → ProcessMonitor-CS1LSf39.js} +1 -1
  12. package/dist/assets/{QueuePanel-BdwvWRuB.js → QueuePanel-Cs7k3M-4.js} +1 -1
  13. package/dist/assets/{RefreshDebugView-eZwtZXgZ.js → RefreshDebugView-Di0lyXKv.js} +1 -1
  14. package/dist/assets/SddBoardView-Dv9R7tBM.js +2 -0
  15. package/dist/assets/SddFlowGraph-BGPIWq7W.js +1 -0
  16. package/dist/assets/SddWizard-BWaJb5ZH.js +1 -0
  17. package/dist/assets/{SessionsDashboard-pMXfRTwN.js → SessionsDashboard-B1u7rjTK.js} +1 -1
  18. package/dist/assets/SetupScreen-nZMY7jM6.js +1 -0
  19. package/dist/assets/SkillDetailView-CQevybc9.js +3 -0
  20. package/dist/assets/SpecsView-Xw9k8Llw.js +1 -0
  21. package/dist/assets/TerminalPanel-CPuqFiXC.js +1 -0
  22. package/dist/assets/{activity-CcEdxJjx.js → activity-Bt5JliZ2.js} +2 -2
  23. package/dist/assets/activity-DVbfo6OS.js +5 -0
  24. package/dist/assets/activity-DkmpcH1_.js +5 -0
  25. package/dist/assets/{activity-T9kySYDT.js → activity-HUfcj2wp.js} +3 -3
  26. package/dist/assets/activity-lQ47COGt.js +5 -0
  27. package/dist/assets/activity-mgahm8RV.js +5 -0
  28. package/dist/assets/activity-naMKylQi.js +5 -0
  29. package/dist/assets/chat-BNf8yQ-i.js +1 -0
  30. package/dist/assets/chat-BwmYDkLr.js +1 -0
  31. package/dist/assets/chat-C_9_T_Py.js +1 -0
  32. package/dist/assets/chat-CmZiF8Sm.js +1 -0
  33. package/dist/assets/chat-DW62ursN.js +1 -0
  34. package/dist/assets/chat-DfjGjYKF.js +1 -0
  35. package/dist/assets/chat-eXJFi4bY.js +1 -0
  36. package/dist/assets/chat-store-Dy1m3oen.js +5 -0
  37. package/dist/assets/commandPalette-BcMV6x3_.js +1 -0
  38. package/dist/assets/commandPalette-C4o2rUOp.js +1 -0
  39. package/dist/assets/commandPalette-C5U6qfth.js +1 -0
  40. package/dist/assets/commandPalette-CBJfByB7.js +1 -0
  41. package/dist/assets/commandPalette-CrYfIhnW.js +1 -0
  42. package/dist/assets/commandPalette-Dgd8HfNm.js +1 -0
  43. package/dist/assets/{i18n-BMePmaPJ.js → i18n-ClFSbktB.js} +2 -2
  44. package/dist/assets/index-DGwt4pL3.js +157 -0
  45. package/dist/assets/index-pw_NYdQ9.css +1 -0
  46. package/dist/assets/local-prefs-DUm4LFyu.js +1 -0
  47. package/dist/assets/markdown-BRAejDWd.js +44 -0
  48. package/dist/assets/{monaco-XnLmrAXJ.js → monaco-MjnRih9i.js} +1 -1
  49. package/dist/assets/{monaco-theme-Lsd14tM-.js → monaco-theme-DhdHiZEb.js} +1 -1
  50. package/dist/assets/{session-store-P-JnaPPK.js → session-store-BOmBeF9r.js} +1 -1
  51. package/dist/assets/settings-BehzuKKh.js +1 -0
  52. package/dist/assets/settings-CO8sA1-8.js +1 -0
  53. package/dist/assets/settings-CSb_3QO0.js +1 -0
  54. package/dist/assets/settings-CVkZ15Hv.js +1 -0
  55. package/dist/assets/settings-DRDu_6WL.js +1 -0
  56. package/dist/assets/settings-Dj8eonZG.js +1 -0
  57. package/dist/assets/settings-DkZAyCk6.js +1 -0
  58. package/dist/assets/{ui-store-ComQYc5F.js → ui-store-LCpXBvQT.js} +1 -1
  59. package/dist/assets/utils-Bl7Yr7Bw.js +1 -0
  60. package/dist/assets/{vendor-CyLvG8N0.js → vendor-C9iFsXuW.js} +28 -28
  61. package/dist/assets/ws-client-WVS5hdJj.js +1 -0
  62. package/dist/assets/{xyflow-oYDGUYW6.js → xyflow-YzHYNDhB.js} +3 -3
  63. package/dist/components/ChatInput/image-attachments.d.ts +58 -0
  64. package/dist/components/ChatInput/image-attachments.d.ts.map +1 -0
  65. package/dist/components/ChatInput/slash-routing.d.ts +8 -0
  66. package/dist/components/ChatInput/slash-routing.d.ts.map +1 -1
  67. package/dist/components/ChatInput/use-paste-drop.d.ts +14 -4
  68. package/dist/components/ChatInput/use-paste-drop.d.ts.map +1 -1
  69. package/dist/components/ChatInput.d.ts.map +1 -1
  70. package/dist/components/ChatView/index.d.ts.map +1 -1
  71. package/dist/components/InspectorPanel.d.ts.map +1 -1
  72. package/dist/components/MailboxPanel.d.ts.map +1 -1
  73. package/dist/components/MessageBubble/AttachmentGallery.d.ts +12 -0
  74. package/dist/components/MessageBubble/AttachmentGallery.d.ts.map +1 -0
  75. package/dist/components/MessageBubble/LazyMarkdown.d.ts +27 -0
  76. package/dist/components/MessageBubble/LazyMarkdown.d.ts.map +1 -0
  77. package/dist/components/MessageBubble/ToolInputView.d.ts.map +1 -1
  78. package/dist/components/MessageBubble/index.d.ts.map +1 -1
  79. package/dist/components/ModelPickDialog.d.ts +22 -0
  80. package/dist/components/ModelPickDialog.d.ts.map +1 -0
  81. package/dist/components/ModelPicker.d.ts.map +1 -1
  82. package/dist/components/RefinePanel.d.ts.map +1 -1
  83. package/dist/components/SddFlowGraph.d.ts.map +1 -1
  84. package/dist/components/SddTaskDrawer.d.ts.map +1 -1
  85. package/dist/components/SearchOverlay.d.ts.map +1 -1
  86. package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -1
  87. package/dist/components/SettingsPanel/MCPSection.d.ts +21 -0
  88. package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -1
  89. package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -1
  90. package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -1
  91. package/dist/components/SettingsPanel/RoutingSection.d.ts +6 -0
  92. package/dist/components/SettingsPanel/RoutingSection.d.ts.map +1 -0
  93. package/dist/components/SettingsPanel/ShadowSection.d.ts.map +1 -1
  94. package/dist/components/SettingsPanel/ToolsSection.d.ts.map +1 -1
  95. package/dist/components/SettingsPanel/index.d.ts.map +1 -1
  96. package/dist/components/SidePanel/SkillsList.d.ts.map +1 -1
  97. package/dist/components/SidePanel/index.d.ts.map +1 -1
  98. package/dist/components/SkillDetailView.d.ts.map +1 -1
  99. package/dist/components/TaskCard.d.ts.map +1 -1
  100. package/dist/components/TerminalPanel.d.ts.map +1 -1
  101. package/dist/components/Toaster.d.ts +0 -7
  102. package/dist/components/Toaster.d.ts.map +1 -1
  103. package/dist/components/TodosPanel.d.ts.map +1 -1
  104. package/dist/components/WelcomeScreen.d.ts +8 -1
  105. package/dist/components/WelcomeScreen.d.ts.map +1 -1
  106. package/dist/components/ui/sparkline.d.ts.map +1 -1
  107. package/dist/hooks/useWebSocket.d.ts +1 -1
  108. package/dist/hooks/useWebSocket.d.ts.map +1 -1
  109. package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -1
  110. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +3 -1
  111. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +1 -1
  112. package/dist/index.css +1 -1
  113. package/dist/index.css.map +1 -1
  114. package/dist/index.html +15 -15
  115. package/dist/index.js +21246 -19585
  116. package/dist/index.js.map +4 -4
  117. package/dist/lib/analytics.d.ts +2 -0
  118. package/dist/lib/analytics.d.ts.map +1 -1
  119. package/dist/lib/default-prompt-pools.d.ts +27 -0
  120. package/dist/lib/default-prompt-pools.d.ts.map +1 -0
  121. package/dist/lib/utils.d.ts +7 -0
  122. package/dist/lib/utils.d.ts.map +1 -1
  123. package/dist/lib/ws-client.d.ts +6 -2
  124. package/dist/lib/ws-client.d.ts.map +1 -1
  125. package/dist/stores/chat-store.d.ts +10 -1
  126. package/dist/stores/chat-store.d.ts.map +1 -1
  127. package/dist/stores/local-prefs.d.ts +18 -0
  128. package/dist/stores/local-prefs.d.ts.map +1 -1
  129. package/dist/stores/mailbox-store.d.ts +10 -0
  130. package/dist/stores/mailbox-store.d.ts.map +1 -1
  131. package/dist/stores/types.d.ts +14 -0
  132. package/dist/stores/types.d.ts.map +1 -1
  133. package/dist/types.d.ts +200 -1
  134. package/dist/types.d.ts.map +1 -1
  135. package/package.json +7 -7
  136. package/dist/assets/AutoPhaseView-DWp3yHpI.js +0 -1
  137. package/dist/assets/DebugDashboard-DWKLI7lR.js +0 -1
  138. package/dist/assets/KanbanView-CJqlvsbc.js +0 -1
  139. package/dist/assets/MailboxDetailView-BwWagFay.js +0 -1
  140. package/dist/assets/OfficeMapPanel-QFPaXTZ9.js +0 -4
  141. package/dist/assets/SddBoardView-OtKwEtAp.js +0 -2
  142. package/dist/assets/SddFlowGraph-MVMUCMEy.js +0 -1
  143. package/dist/assets/SddWizard-c7g68RFx.js +0 -1
  144. package/dist/assets/SkillDetailView-CcdIF-85.js +0 -2
  145. package/dist/assets/SpecsView-yunV-Xfj.js +0 -1
  146. package/dist/assets/TerminalPanel-BIYT1IB3.js +0 -1
  147. package/dist/assets/activity-3lpGdUIy.js +0 -5
  148. package/dist/assets/activity-Bi6wI_Cg.js +0 -5
  149. package/dist/assets/activity-CSPSX--m.js +0 -5
  150. package/dist/assets/activity-Cv0CmTyM.js +0 -5
  151. package/dist/assets/activity-Doy5Yots.js +0 -5
  152. package/dist/assets/chat--Zry3Atx.js +0 -1
  153. package/dist/assets/chat-0DeGMNFQ.js +0 -1
  154. package/dist/assets/chat-BErfSQjE.js +0 -1
  155. package/dist/assets/chat-CX5cjaC-.js +0 -1
  156. package/dist/assets/chat-CibJIps5.js +0 -1
  157. package/dist/assets/chat-Dr5SJikx.js +0 -1
  158. package/dist/assets/chat-Siz8aWTB.js +0 -1
  159. package/dist/assets/chat-store-De7J1E26.js +0 -5
  160. package/dist/assets/commandPalette-2M1hYRuH.js +0 -1
  161. package/dist/assets/commandPalette-BE_ljQwl.js +0 -1
  162. package/dist/assets/commandPalette-BYf22WAi.js +0 -1
  163. package/dist/assets/commandPalette-BZhacjvy.js +0 -1
  164. package/dist/assets/commandPalette-CTE9ITWg.js +0 -1
  165. package/dist/assets/commandPalette-RxWSjQIg.js +0 -1
  166. package/dist/assets/index-CbrHWxbT.css +0 -1
  167. package/dist/assets/index-CyTNJHe8.js +0 -154
  168. package/dist/assets/local-prefs-BBMxai9I.js +0 -1
  169. package/dist/assets/markdown-D0X23O-i.js +0 -44
  170. package/dist/assets/settings-BVvx94WK.js +0 -1
  171. package/dist/assets/settings-CKNx8p9I.js +0 -1
  172. package/dist/assets/settings-CQ4x-iFD.js +0 -1
  173. package/dist/assets/settings-CmHCQRVI.js +0 -1
  174. package/dist/assets/settings-D-SHf0yS.js +0 -1
  175. package/dist/assets/settings-DgGu17XI.js +0 -1
  176. package/dist/assets/settings-TqprB9wO.js +0 -1
  177. package/dist/assets/utils-CU_o9ioU.js +0 -1
  178. package/dist/assets/ws-client-CwL51TNh.js +0 -1
@@ -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,X as f,Y 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-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{s as O}from"./ws-client-CwL51TNh.js";import{t as ne}from"./session-store-P-JnaPPK.js";import{t as k}from"./utils-CU_o9ioU.js";import{A,F as j,I as M,M as re,S as ie,c as ae,d as N,f as P,j as oe,l as se,u as F}from"./index-CyTNJHe8.js";import{a as I,c as L,d as ce,f as le,h as R,i as ue,l as de,m as z,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve}from"./xyflow-oYDGUYW6.js";var B=e(n(),1),V=r();function H(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 ye={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 U({entry:e}){let{t:n}=g();return e.role===`error`?(0,V.jsx)(se,{text:e.text}):e.role===`tool`?(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5 tool-details`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,V.jsx)(T,{className:`h-3 w-3`}),(0,V.jsx)(`span`,{className:`font-mono`,children:e.tool??n(`activity:watch.toolFallback`)}),e.durationMs!==void 0&&(0,V.jsxs)(`span`,{className:`ml-auto text-[10px] text-muted-foreground font-normal tabular-nums`,children:[(0,V.jsx)(D,{className:`h-3 w-3 inline mr-0.5 align-text-bottom`}),H(e.durationMs)]})]}),e.input!==void 0&&e.input!==null&&(0,V.jsx)(`div`,{className:`p-3 bg-muted/50 rounded-lg overflow-x-auto`,children:(0,V.jsx)(ae,{input:e.input})}),e.output!==void 0&&e.output!==null?(0,V.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:typeof e.output==`string`?(0,V.jsx)(t,{remarkPlugins:[i],rehypePlugins:P,components:N,children:e.output}):(0,V.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,V.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,V.jsx)(t,{remarkPlugins:[i],rehypePlugins:P,components:N,children:e.text})}):null,e.isError&&(0,V.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-xs font-medium text-destructive`,children:n(`activity:watch.toolFailed`)}),e.text&&(0,V.jsx)(`pre`,{className:`mt-1 text-xs whitespace-pre-wrap text-destructive/80`,children:e.text})]})]}):(0,V.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,V.jsx)(t,{remarkPlugins:[i],rehypePlugins:P,components:N,children:e.text})})}function be({entry:e,isContinuation:t=!1}){let{t:n}=g(),r=ye[e.role],i=r.Icon;return(0,V.jsxs)(`div`,{className:`group flex gap-3 animate-message msg-bubble rounded-lg transition-shadow`,children:[t?(0,V.jsx)(`div`,{className:`flex-shrink-0 w-8`}):(0,V.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,V.jsx)(i,{className:`h-4 w-4`})}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5 min-w-0 flex-1`,children:[!t&&(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:k(`text-xs font-medium`,r.textColor),children:e.role===`tool`&&e.tool?e.tool:n(r.labelKey)}),(0,V.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,V.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[`· `,H(e.durationMs)]})]}),(0,V.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,V.jsx)(`div`,{className:k(`text-sm leading-relaxed markdown-content`,r.textColor),children:(0,V.jsx)(U,{entry:e})})}),e.text&&e.role!==`error`&&(0,V.jsx)(`div`,{className:`opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,V.jsx)(F,{text:e.text,label:n(`common:action.copy`)})})]})]})}var xe=[`steer`,`ask`,`assign`,`note`],W=2500;function Se({sessionId:e,limit:t=200}){let[n,r]=(0,B.useState)(null),{t:i}=g(),[a,s]=(0,B.useState)(null),[c,l]=(0,B.useState)(``),[u,d]=(0,B.useState)(!1),[f,p]=(0,B.useState)(null),[m,h]=(0,B.useState)(`steer`),[v,y]=(0,B.useState)(`high`),[b,x]=(0,B.useState)([]),[S,C]=(0,B.useState)(!1),w=(0,B.useRef)(null),T=(0,B.useRef)(!0),E=(0,B.useRef)(!0),ee=oe(e=>e.liveSessions),D=(0,B.useMemo)(()=>ee.find(t=>t.sessionId===e),[ee,e]),te=(0,B.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,B.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,B.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,B.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,B.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,B.useEffect)(()=>{E.current=!0,r(null),s(null),x([]),j(),M();let e=setInterval(()=>{document.hidden||(j(),M())},W);return()=>{E.current=!1,clearInterval(e)}},[j,M]),(0,B.useEffect)(()=>{te&&j()},[te,j]),(0,B.useEffect)(()=>{T.current&&w.current&&(w.current.scrollTop=w.current.scrollHeight)},[n,A]);let re=()=>{let e=w.current;e&&(T.current=e.scrollHeight-e.scrollTop-e.clientHeight<40)},ie=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)}}},ae=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)}}},N=n?.entries??[];return(0,V.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 shrink-0`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,V.jsxs)(`div`,{className:`text-[10px] text-muted-foreground`,children:[i(`activity:sessionWatch.events`,{count:n.total}),` · `,n.status]}),O&&(0,V.jsx)(`button`,{type:`button`,onClick:()=>void ae(),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,V.jsxs)(`div`,{className:`mb-1.5 shrink-0 text-[10px] text-foreground truncate`,children:[`▶ `,ne]}),a&&(0,V.jsxs)(`div`,{className:`text-[11px] text-destructive mb-1 shrink-0`,children:[`· `,a]}),(0,V.jsxs)(`div`,{ref:w,onScroll:re,className:`min-h-0 min-w-0 flex-1 overflow-y-auto space-y-1.5 pr-1`,children:[N.length===0&&!a&&(0,V.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic`,children:i(`activity:sessionWatch.loading`)}),N.map((e,t)=>(0,V.jsx)(be,{entry:e,isContinuation:t>0&&N[t-1].role===e.role},`${e.ts}-${t}`)),A&&(0,V.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,V.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,V.jsx)(o,{className:`h-4 w-4 animate-pulse`})}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[85%] min-w-0`,children:[(0,V.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground px-1`,children:A.label}),(0,V.jsx)(`div`,{className:`rounded-2xl rounded-bl-md px-4 py-3 bg-card border border-border`,children:(0,V.jsxs)(`span`,{className:`text-sm leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:[A.text,(0,V.jsx)(`span`,{className:`animate-pulse text-primary`,children:`▋`})]})})]})]})]}),b.length>0&&(0,V.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0 max-h-28 overflow-y-auto space-y-1`,children:[(0,V.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,V.jsxs)(`div`,{className:`text-[10px] leading-snug`,children:[(0,V.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,V.jsx)(`span`,{className:`text-foreground whitespace-pre-wrap break-words`,children:e.body}),!e.fromLeader&&(0,V.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,V.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0`,children:[(0,V.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,V.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:xe.map(e=>(0,V.jsx)(`option`,{value:e,children:i(`activity:sessionWatch.msgType.${e}Label`)},e))}),(0,V.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,V.jsx)(`option`,{value:`high`,children:`high`}),(0,V.jsx)(`option`,{value:`normal`,children:`normal`}),(0,V.jsx)(`option`,{value:`low`,children:`low`})]})]}),(0,V.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,V.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),ie())},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,V.jsx)(`button`,{type:`button`,onClick:()=>void ie(),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,V.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:f}),(0,V.jsx)(`div`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:i(`activity:sessionWatch.sendHint`)})]})]})}function G(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 Ce(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 we(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 Te(e){if(!e)return;let t=e.split(`/`);return t[t.length-1]?.slice(0,18)}function Ee(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 De(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 Oe(e){return e===`tui`?`tui`:e===`repl`||e===`cli`?`repl`:`webui`}function ke(e){return e===`tui`?`TUI`:e===`repl`?`REPL`:`WebUI`}function K(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=Oe(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=K(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`||i.status===`lost`?`offline`:s?`active`:`idle`;r.push({id:a,type:e,label:i.projectName||ke(e),sublabel:[ke(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=K(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-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,V.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}=oe(p(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,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,V.jsx)(c,{className:`h-3.5 w-3.5 text-success`}),(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase text-muted-foreground`,children:e(`activity:office.sessionStats`)})]}),(0,V.jsxs)(`div`,{className:`space-y-1.5 text-[10px]`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(E,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.clients`)})]}),(0,V.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,V.jsx)(`span`,{className:`text-success`,children:s})]})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3 pl-4 text-[9px]`,children:[t.tui>0&&(0,V.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(T,{className:`h-2.5 w-2.5 text-success`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`TUI`}),(0,V.jsx)(`span`,{className:`font-mono text-success`,children:t.tui})]}),t.webui>0&&(0,V.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(v,{className:`h-2.5 w-2.5 text-primary`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`WebUI`}),(0,V.jsx)(`span`,{className:`font-mono text-primary`,children:t.webui})]}),t.repl>0&&(0,V.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(T,{className:`h-2.5 w-2.5 text-warning`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`REPL`}),(0,V.jsx)(`span`,{className:`font-mono text-warning`,children:t.repl})]})]}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(o,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.agents`)})]}),(0,V.jsxs)(`span`,{className:`font-mono text-foreground`,children:[i,` `,(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`/`}),` `,(0,V.jsx)(`span`,{className:`text-primary`,children:r})]})]}),n.model&&(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(w,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.model`)})]}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(f,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:officeMap.mode`)})]}),(0,V.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-success/10 text-success`,n.mode===`off`&&`bg-muted text-muted-foreground`,![`auto`,`suggest`,`off`].includes(n.mode||``)&&`bg-muted text-muted-foreground`),children:n.mode})]}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(x,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.toolCallsLabel`)})]}),(0,V.jsx)(`span`,{className:`font-mono text-warning`,children:l(a.toolCalls)})]}),(0,V.jsxs)(`div`,{className:`mt-1.5 space-y-1 border-t border-border/70 pt-1.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`IN`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.input`)})]}),(0,V.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:l(a.tokensIn)})]}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:`OUT`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.output`)})]}),(0,V.jsx)(`span`,{className:`font-mono text-[9px] text-foreground`,children:l(a.tokensOut)})]})]}),(0,V.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-4 border-t border-border/70 pt-1.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(S,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.cost`)})]}),(0,V.jsx)(`span`,{className:`font-mono font-medium text-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,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(I,{type:`target`,position:z.Top,style:e,isConnectable:!1}),(0,V.jsx)(I,{type:`source`,position:z.Bottom,style:e,isConnectable:!1})]})}function X({data:e}){let{t}=g();return(0,V.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,V.jsxs)(`span`,{children:[(0,V.jsx)(`span`,{className:`font-mono text-foreground`,children:e.agentCount??0}),` `,t(`activity:office.agentsSuffix`)]}),e.startedAt&&(0,V.jsx)(`span`,{children:t(`activity:office.upPrefix`,{time:we(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,V.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,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,V.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-primary/15`:`bg-primary/10`),children:(0,V.jsx)(v,{className:`h-5 w-5`,style:{color:o}})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:o},children:e.label}),(0,V.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.webuiClient`)})]}),(0,V.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,V.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,V.jsx)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:i?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(h,{className:`h-3 w-3 text-muted-foreground`}),(0,V.jsx)(`span`,{children:t(`activity:office.disconnected`)})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(a,{className:`h-3 w-3 text-success`}),(0,V.jsx)(`span`,{children:t(`activity:office.connected`)})]})}),n&&(0,V.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-primary/20`,children:(0,V.jsx)(`div`,{className:`h-full animate-pulse bg-primary`,style:{width:`60%`}})}),(0,V.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,V.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-success/15`,r&&`border-destructive/50 bg-destructive/10`,!n&&!r&&`border-success/30 bg-success/10`),children:[(0,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,V.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-success/15`:`bg-success/10`),children:(0,V.jsx)(T,{className:`h-5 w-5`,style:{color:i}})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:i},children:e.label}),(0,V.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.tuiClient`)})]}),(0,V.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,V.jsx)(`div`,{className:`mb-2 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,V.jsx)(T,{className:`h-3 w-3 text-success`}),(0,V.jsx)(`span`,{children:t(`activity:office.terminal`)})]}),(0,V.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,V.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,n&&`shadow-lg shadow-warning/15`,!n&&`border-warning/30 bg-warning/10`),children:[(0,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,V.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-warning/15`:`bg-warning/10`),children:(0,V.jsx)(T,{className:`h-5 w-5`,style:{color:r}})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:r},children:e.label}),(0,V.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:t(`activity:office.repl`)})]}),(0,V.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,V.jsx)(`div`,{className:`mb-1 truncate text-[10px] text-muted-foreground`,children:e.sublabel}),(0,V.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,V.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,V.jsx)(Y,{}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-3 mb-3 mt-2`,children:[(0,V.jsx)(`div`,{className:k(`flex items-center justify-center w-12 h-12 rounded-xl`,n?`bg-primary/15`:`bg-primary/10`),children:(0,V.jsx)(w,{className:`h-6 w-6`,style:{color:r}})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-sm font-bold truncate`,style:{color:r},children:e.label}),(0,V.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:e.sublabel||t(`activity:office.fleetSummary`)})]}),(0,V.jsx)(J,{status:e.status,activity:e.vizActivity??0})]}),(0,V.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px] mb-2`,children:[(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsxs)(`div`,{className:`font-mono`,children:[(0,V.jsx)(`span`,{className:`text-success`,children:e.agentsActive||0}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:` / `}),(0,V.jsx)(`span`,{className:`text-primary`,children:e.agentsTotal||0})]}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:officeMap.agents`)})]}),(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsx)(`div`,{className:`font-mono text-warning`,children:(e.toolCalls||0).toLocaleString()}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.toolCallsLabel`)})]}),(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsx)(`div`,{className:`font-mono text-foreground`,children:G(e.tokensIn)}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.tokensLabel`)})]}),(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsxs)(`div`,{className:`font-mono text-success`,children:[`$`,(e.costUsd||0).toFixed(3)]}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.cost`)})]})]}),n&&(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-primary`,children:[(0,V.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,V.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,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,V.jsx)(o,{className:`h-4 w-4 shrink-0`,style:{color:a}}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-[11px] font-bold truncate`,style:{color:a},children:e.label}),e.model&&(0,V.jsx)(`div`,{className:`truncate text-[8px] text-muted-foreground`,children:Te(e.model)})]}),(0,V.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),e.currentTask&&(0,V.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1 truncate text-[9px] text-primary`,children:[(0,V.jsx)(`span`,{className:k(`h-1.5 w-1.5 shrink-0 rounded-full bg-primary`,n&&`animate-pulse`)}),(0,V.jsx)(`span`,{className:`truncate font-mono`,children:e.currentTask})]}),(0,V.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-0.5 text-[9px] mb-1.5`,children:[(0,V.jsxs)(`div`,{className:`flex justify-between`,children:[(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`iter`}),(0,V.jsx)(`span`,{className:`font-mono text-foreground`,children:e.iteration||0})]}),(0,V.jsxs)(`div`,{className:`flex justify-between`,children:[(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`tools`}),(0,V.jsx)(`span`,{className:`font-mono text-warning`,children:e.toolCalls||0})]}),(0,V.jsxs)(`div`,{className:`flex justify-between`,children:[(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`tok`}),(0,V.jsx)(`span`,{className:`font-mono text-foreground`,children:G((e.tokensIn||0)+(e.tokensOut||0))})]}),(0,V.jsxs)(`div`,{className:`flex justify-between`,children:[(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`cost`}),(0,V.jsxs)(`span`,{className:`font-mono text-success`,children:[`$`,(e.costUsd||0).toFixed(3)]})]})]}),s>0&&(0,V.jsxs)(`div`,{className:`mb-1`,children:[(0,V.jsxs)(`div`,{className:`mb-0.5 flex justify-between text-[8px] text-muted-foreground`,children:[(0,V.jsx)(`span`,{children:`ctx`}),(0,V.jsxs)(`span`,{className:k(`font-mono`,s>=90?`text-destructive`:s>=70?`text-warning`:`text-muted-foreground`),children:[s,`%`]})]}),(0,V.jsx)(`div`,{className:`h-1 overflow-hidden rounded-full bg-muted`,children:(0,V.jsx)(`div`,{className:k(`h-full`,s>=90?`bg-destructive`:s>=70?`bg-warning`:`bg-primary`),style:{width:`${s}%`}})})]}),e.lastActivityAt&&(0,V.jsxs)(`div`,{className:k(`flex items-center gap-1 text-[8px]`,n?`text-muted-foreground/70`:`text-muted-foreground`),children:[i&&(0,V.jsx)(`span`,{className:`text-success`,children:t(`activity:office.donePrefix`)}),r&&(0,V.jsx)(`span`,{className:`text-destructive`,children:t(`activity:office.failedPrefix`)}),(0,V.jsx)(`span`,{children:t(`activity:office.seenPrefix`,{time:Ce(e.lastActivityAt,Date.now())})})]})]})}function Re({data:e}){let{t}=g();return(0,V.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,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,V.jsx)(l,{className:`h-4 w-4 text-muted-foreground`}),(0,V.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,V.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:e.label})}),(0,V.jsx)(J,{status:e.status,small:!0,activity:e.vizActivity??0})]}),(0,V.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,V.jsxs)(`div`,{className:k(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,r&&`border-warning/50 bg-warning/10 shadow-lg shadow-warning/10`,!r&&`border-warning/30 bg-warning/6`),children:[(0,V.jsx)(Y,{}),(0,V.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,V.jsx)(`div`,{className:k(`flex items-center justify-center w-10 h-10 rounded-lg`,r?`bg-warning/18`:`bg-warning/10`),children:(0,V.jsx)(m,{className:`h-5 w-5`,style:{color:n}})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`text-xs font-bold`,style:{color:n},children:t(`activity:office.mailboxHub`)}),(0,V.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:r?t(`activity:office.unreadSuffix`,{count:e.unreadCount||0}):t(`activity:office.allClear`)})]}),r&&(0,V.jsx)(`div`,{className:`flex h-5 w-5 items-center justify-center rounded-full bg-warning text-[10px] font-bold text-background`,children:e.unreadCount})]}),(0,V.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px]`,children:[(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-warning`,children:[(0,V.jsx)(b,{className:`h-3 w-3`}),(0,V.jsx)(`span`,{children:e.messageCount||0})]}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.total`)})]}),(0,V.jsxs)(`div`,{className:`rounded bg-muted/40 p-1.5 text-center`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-success`,children:[(0,V.jsx)(s,{className:`h-3 w-3`}),(0,V.jsx)(`span`,{children:e.unreadCount||0})]}),(0,V.jsx)(`div`,{className:`text-muted-foreground`,children:t(`activity:office.unreadLabel`)})]})]}),e.sublabel&&(0,V.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]=R({sourceX:e,sourceY:t,sourcePosition:i??z.Bottom,targetX:n,targetY:r,targetPosition:a??z.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,V.jsxs)(V.Fragment,{children:[(0,V.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,V.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,V.jsx)(`animate`,{attributeName:`stroke-dashoffset`,from:g,to:`0`,dur:_,repeatCount:`indefinite`})}),o?.label&&u>.1&&(0,V.jsx)(ue,{children:(0,V.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,V.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 z-10 pointer-events-none px-3 pb-3`,children:(0,V.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,V.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-[10px] uppercase text-primary`,children:[(0,V.jsx)(c,{className:`h-3 w-3`}),n(`activity:office.liveActivity`)]}),r.length===0?(0,V.jsx)(`div`,{className:`text-[11px] italic text-muted-foreground`,children:n(`activity:office.waitingActivity`)}):(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] leading-tight`,children:[(0,V.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full shrink-0`,style:{backgroundColor:je(e.kind)}}),(0,V.jsx)(`span`,{className:`flex-1 truncate text-foreground`,children:e.label}),(0,V.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}=me(),n=O(e=>e.events),r=M(e=>e.agents),i=M(e=>e.agentTranscripts),a=M(e=>e.leaderId),s=oe(e=>e.liveSessions),c=re(e=>e.messages),l=ne(e=>e.session),f=(0,B.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,ae]=le([]),[N,P,se]=ce([]),[F,I]=(0,B.useState)(null),[L,R]=(0,B.useState)(null),[ue,z]=(0,B.useState)(!1),[H,ye]=(0,B.useState)(``),[U,be]=(0,B.useState)(!1),[xe,W]=(0,B.useState)(null),Oe=(0,B.useMemo)(()=>{if(F?.data.kind!==`agent`)return j;let e=F.data.serverId??(F.id.includes(`__agent-`)?F.id.split(`__agent-`).pop():F.id.replace(/^agent-/,``));return e?i.get(e)??j:j},[i,F]),K=(0,B.useCallback)(async()=>{let e=H.trim();if(!(!e||U)){be(!0),W(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();ye(``),W(`Delivered to ${n.delivered??0}/${n.targets??0} session(s)`)}catch(e){W(`Failed: ${e instanceof Error?e.message:String(e)}`)}finally{be(!1)}}},[H,U]),je=(0,B.useRef)(new Map),J=4e3,Y=(0,B.useRef)(new Map),X=(0,B.useRef)(new Map),Pe=(0,B.useRef)(new Map),Z=(0,B.useRef)(new Map),Fe=(0,B.useRef)(``);(0,B.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=Ee(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:De(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),P(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,P,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,B.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))}),P(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,P,J,r]),(0,B.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&&P(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)},[P,D]);let Ue=(0,B.useCallback)(e=>P(t=>de({...e,type:`wire`},t)),[P]),We=(0,B.useCallback)((e,t)=>{I(t)},[]),Ge=(0,B.useCallback)(()=>{I(null)},[]);(0,B.useEffect)(()=>{if(!L)return;let e=e=>{e.key===`Escape`&&R(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[L]);let Ke=(0,B.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,B.useState)(0);return(0,B.useEffect)(()=>{let e=setInterval(()=>{document.hidden||qe(e=>e+1)},2e3);return()=>clearInterval(e)},[]),(0,V.jsxs)(`div`,{className:`relative h-full w-full overflow-hidden bg-[hsl(var(--surface-2)/0.55)]`,children:[(0,V.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,V.jsx)(Ne,{}),(0,V.jsx)(`div`,{className:`absolute top-3 left-1/2 -translate-x-1/2 z-10`,children:(0,V.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/90 px-4 py-2 shadow-xl backdrop-blur`,children:(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-bold text-foreground`,children:[(0,V.jsx)(te,{className:`h-4 w-4 text-primary`}),e(`activity:office.fleetHq`),(0,V.jsx)(`span`,{className:`ml-2 h-2 w-2 animate-pulse rounded-full bg-success`}),(0,V.jsx)(`span`,{className:`text-[10px] font-normal text-muted-foreground`,children:e(`activity:office.live`)})]})})}),h&&(0,V.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,V.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendStatus`)}),(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-success`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendActive`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-muted-foreground`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendIdle`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`h-2 w-2 animate-pulse rounded-full bg-destructive`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendError`)})]})]})]}),h&&(0,V.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,V.jsx)(`div`,{className:`mb-2 font-bold text-foreground`,children:e(`activity:office.legendConnections`)}),(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`text-warning`,children:`✉`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendMail`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`text-primary`,children:`→`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendTask`)})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`text-success`,children:`●`}),(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:office.legendStatusConn`)})]})]})]}),(0,V.jsxs)(ve,{nodes:E,edges:N,onNodesChange:ae,onEdgesChange:se,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,V.jsxs)(ge,{position:`top-right`,className:`flex items-center gap-2`,children:[(0,V.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,V.jsx)(d,{className:`h-3.5 w-3.5`}),e(`activity:office.arrange`)]}),(0,V.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,V.jsx)(u,{className:`h-3.5 w-3.5`}),e(`activity:office.feed`)]}),(0,V.jsxs)(`button`,{type:`button`,onClick:()=>z(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`,ue?`border-warning/35 bg-warning/10 text-warning`:`border-border/70 bg-card/90 text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,V.jsx)(b,{className:`h-3.5 w-3.5`}),e(`activity:office.broadcast`)]})]}),C!==`none`&&(0,V.jsx)(_e,{variant:C===`lines`?fe.Lines:C===`cross`?fe.Cross:fe.Dots,gap:20,size:1,color:`hsl(var(--border) / 0.35)`}),y&&(0,V.jsx)(he,{className:`rounded-lg border border-border/70 bg-card/90 [&>button]:bg-card [&>button]:text-foreground`}),_&&(0,V.jsx)(pe,{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,V.jsx)(Ve,{events:n,now:Date.now()}),ue&&(0,V.jsxs)(`div`,{className:`absolute right-4 top-16 z-30 w-80 rounded-xl border border-warning/35 bg-card/95 p-3 shadow-2xl backdrop-blur`,children:[(0,V.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-semibold text-warning`,children:[(0,V.jsx)(b,{className:`h-3.5 w-3.5`}),` `,e(`activity:office.broadcastToAll`)]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>z(!1),className:`text-base leading-none text-muted-foreground hover:text-foreground`,children:`×`})]}),(0,V.jsx)(`textarea`,{value:H,onChange:e=>ye(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),K())},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-warning/45 focus:outline-none`}),(0,V.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between`,children:[(0,V.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:e(`activity:office.broadcastSendHint`)}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>void K(),disabled:U||!H.trim(),className:`rounded-md border border-warning/35 bg-warning/12 px-2.5 py-1 text-[11px] text-warning transition-colors hover:bg-warning/18 disabled:cursor-not-allowed disabled:opacity-40`,children:U?`…`:e(`activity:office.broadcast`)})]}),xe&&(0,V.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:xe})]}),F&&(0,V.jsxs)(`div`,{className:k(`absolute top-20 right-4 bg-background border border-border rounded-lg p-4 shadow-xl z-20`,F.data.kind===`agent`?`w-[28rem] max-w-[calc(100%-2rem)]`:F.data.sessionId?`w-80`:`w-64`),children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[F.data.kind===`webui`&&(0,V.jsx)(v,{className:`h-4 w-4 text-info`}),F.data.kind===`tui`&&(0,V.jsx)(T,{className:`h-4 w-4 text-success`}),F.data.kind===`coordinator`&&(0,V.jsx)(w,{className:`h-4 w-4 text-primary`}),F.data.kind===`agent`&&(0,V.jsx)(o,{className:`h-4 w-4 text-primary`}),F.data.kind===`mailbox`&&(0,V.jsx)(m,{className:`h-4 w-4 text-warning`}),(0,V.jsx)(`span`,{className:`text-sm font-bold text-foreground`,children:F.data.label})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[F.data.sessionId&&(0,V.jsx)(`button`,{type:`button`,title:e(`activity:office.openFullView`),onClick:()=>R({sessionId:F.data.sessionId,label:F.data.label}),className:`text-muted-foreground hover:text-primary`,children:(0,V.jsx)(ee,{className:`h-3.5 w-3.5`})}),(0,V.jsx)(`button`,{onClick:Ge,className:`text-muted-foreground hover:text-foreground text-lg leading-none`,children:`×`})]})]}),(()=>{let t=F.data,n=Date.now(),r=({k:e,v:t,accent:n})=>(0,V.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,V.jsx)(`span`,{className:`text-muted-foreground shrink-0`,children:e}),(0,V.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,V.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,V.jsx)(r,{k:`Status`,v:String(t.status).toUpperCase(),accent:k(t.status===`active`&&`text-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,V.jsxs)(V.Fragment,{children:[t.model&&(0,V.jsx)(r,{k:`Model`,v:Te(t.model),accent:`text-primary`}),t.currentTask&&(0,V.jsx)(r,{k:`Tool`,v:t.currentTask,accent:`text-primary`}),(0,V.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`}),(0,V.jsx)(r,{k:`Tool calls`,v:t.toolCalls||0,accent:`text-warning`}),(0,V.jsx)(r,{k:`Tokens in`,v:G(t.tokensIn)}),(0,V.jsx)(r,{k:`Tokens out`,v:G(t.tokensOut)}),(0,V.jsx)(r,{k:`Tokens total`,v:G(o)}),s>0&&(0,V.jsx)(r,{k:`Context`,v:`${s}%`,accent:s>=90?`text-destructive`:s>=70?`text-warning`:`text-foreground/70`}),(0,V.jsx)(r,{k:`Cost`,v:`$${(t.costUsd||0).toFixed(4)}`,accent:`text-success`}),t.lastActivityAt&&(0,V.jsx)(r,{k:`Last seen`,v:Ce(t.lastActivityAt,n),accent:`text-muted-foreground`}),(0,V.jsx)(`div`,{className:`pt-2`,children:(0,V.jsx)(ie,{entries:Oe,agentName:t.label,compact:!0,maxHeightClassName:`max-h-64`})})]}),a&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(r,{k:`Surface`,v:ke(t.kind),accent:`text-foreground/80`}),t.branch&&(0,V.jsx)(r,{k:`Branch`,v:`⎇ ${t.branch}`,accent:`text-foreground/70`}),t.pid!=null&&(0,V.jsx)(r,{k:`PID`,v:t.pid}),t.workingDir&&(0,V.jsx)(r,{k:`Dir`,v:t.workingDir,accent:`text-muted-foreground`}),(0,V.jsx)(r,{k:`Agents`,v:t.agentCount??0,accent:`text-primary`}),t.startedAt&&(0,V.jsx)(r,{k:`Uptime`,v:we(t.startedAt,n),accent:`text-foreground/70`})]}),t.kind===`mailbox`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(r,{k:`Total messages`,v:t.messageCount||0,accent:`text-warning`}),(0,V.jsx)(r,{k:`Unread`,v:t.unreadCount||0,accent:`text-warning`}),c.length>0&&(0,V.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-border pt-2`,children:[(0,V.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,V.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px]`,children:[(0,V.jsx)(`span`,{className:k(`mt-1 h-1.5 w-1.5 shrink-0 rounded-full`,!t.completed&&(t.readByCount??0)===0?`bg-warning`:t.completed?`bg-success`:`bg-muted`)}),(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsx)(`div`,{className:`truncate text-foreground/80`,children:t.subject||e(`activity:office.noSubject`)}),(0,V.jsxs)(`div`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:[t.from,` → `,t.to,` · `,Ce(t.timestamp,n)]})]})]},t.id))]})]}),t.kind===`coordinator`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(r,{k:`Connections`,v:t.connections||0,accent:`text-primary`}),(0,V.jsx)(r,{k:`Iterations`,v:t.iteration||0,accent:`text-primary`})]}),(i||a)&&t.sessionId&&(0,V.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 h-72`,children:(0,V.jsx)(Se,{sessionId:t.sessionId})})]})})()]}),L&&(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2.5 shrink-0 bg-card`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,V.jsx)(o,{className:`h-4 w-4 text-primary shrink-0`}),(0,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsx)(`div`,{className:`truncate text-sm font-bold text-foreground`,children:L.label}),(0,V.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e(`activity:office.fullOperationStream`)})]})]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>R(null),title:e(`activity:office.closeEsc`),className:`text-muted-foreground hover:text-foreground text-xl leading-none shrink-0`,children:`×`})]}),(0,V.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,V.jsx)(Se,{sessionId:L.sessionId,limit:500})})]})]})}function He(){return(0,V.jsx)(L,{children:(0,V.jsx)($,{})})}export{He as OfficeMapPanel};
@@ -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-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{t as T}from"./utils-CU_o9ioU.js";import{C as E,_ as D,a as te,b as O,g as k,h as A,k as j,m as M,o as N,v as P,y as F}from"./index-CyTNJHe8.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-MVMUCMEy.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)(A,{open:e,onOpenChange:e=>!r&&t(e),children:(0,W.jsxs)(k,{className:`sm:max-w-lg border-destructive/50`,children:[(0,W.jsxs)(F,{children:[(0,W.jsxs)(O,{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)(D,{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)(P,{className:`gap-2 sm:gap-2`,children:[(0,W.jsx)(M,{variant:`outline`,size:`sm`,disabled:r,onClick:()=>t(!1),children:a(`common:action.cancel`)}),(0,W.jsx)(M,{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-warning/45`,head:`text-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-success/35`,head:`text-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-warning`}),e.displayStatus===`completed`&&(0,W.jsx)(p,{className:`h-3 w-3 text-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-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-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-success`:e.kind===`failed`?`bg-destructive`:e.kind===`retrying`?`bg-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-warning/12 py-1.5 text-xs font-medium text-warning hover:bg-warning/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=j(e=>e.snapshot),c=j(e=>e.lifecycleResult),f=j(e=>e.destroying),p=j(e=>e.setDestroying),v=j(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 A=(0,U.useCallback)(e=>n?.send?.(e),[n]),P=(0,U.useRef)(null),F=(0,U.useCallback)(e=>{P.current=null,A({type:`sdd.board.destroy`,payload:{revertMerged:e}})},[A]),L=(0,U.useCallback)(e=>{O(!1),v(null),p(!0),k?(A({type:`sdd.board.stop`,payload:{}}),P.current={revertMerged:e,deadline:Date.now()+2e4}):F(e)},[k,A,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),A({type:`sdd.board.cleanup_worktrees`,payload:{}})},[A,v]),B=(0,U.useCallback)(()=>{v(null),A({type:`sdd.board.rollback`,payload:{}})},[A,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=>A({type:`sdd.board.retry`,payload:{taskId:e}}),[A]),oe=(0,U.useCallback)(()=>A({type:`sdd.board.retry_all_failed`,payload:{}}),[A]),X=(0,U.useCallback)((e,t)=>{let n=t.trim();n&&A({type:`sdd.board.reassign`,payload:{taskId:e,agentName:n}})},[A]),Z=(0,U.useCallback)((e,t,n)=>A({type:`sdd.board.set_task_model`,payload:{taskId:e,model:t,provider:n}}),[A]),le=(0,U.useCallback)((e,t)=>A({type:`sdd.board.set_task_verification`,payload:{taskId:e,verificationCommand:t}}),[A]),ue=(0,U.useCallback)(e=>A({type:`sdd.board.cancel_task`,payload:{taskId:e}}),[A]),de=(0,U.useCallback)(e=>{A({type:`sdd.board.delete_task`,payload:{taskId:e}}),C(null)},[A]),fe=(0,U.useCallback)((e,t)=>{A({type:`sdd.board.split_task`,payload:{taskId:e,subtasks:t}}),C(null)},[A]),pe=N(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:()=>A({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:()=>A({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:()=>A({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)(M,{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-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{t as v}from"./utils-CU_o9ioU.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-oYDGUYW6.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-warning`,ring:`border-warning/45 bg-warning/10`,dot:`bg-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-success`,ring:`border-success/35 bg-success/10`,dot:`bg-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-warning`,chip:`bg-warning/12 text-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-warning/35 bg-warning/10 text-warning`,stopped:`border-border/70 bg-muted text-muted-foreground`,completed:`border-success/35 bg-success/10 text-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-warning`,`bg-primary`,`bg-success`,`bg-destructive`,`bg-secondary`,`bg-muted-foreground`,`bg-accent`],F={started:{icon:s,color:`text-warning`},completed:{icon:m,color:`text-success`},failed:{icon:p,color:`text-destructive`},retrying:{icon:o,color:`text-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-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-warning/45`,chip:`bg-warning/12 text-warning`,dot:`bg-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-success/35`,chip:`bg-success/12 text-success`,dot:`bg-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),role:e.onTaskClick?`button`:void 0,tabIndex:e.onTaskClick?0:void 0,onKeyDown:n=>{e.onTaskClick&&(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),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-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{Cr as r,Lt as i,St as a,Wr as o,Z as s,br as c,en as ee,fi as l,gr as u,it as d,jt as f,mt as te,yr as p,zr as m}from"./vendor-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{t as h}from"./utils-CU_o9ioU.js";import{C as ne,O as g,a as re,i as ie,m as _,o as ae,w as oe}from"./index-CyTNJHe8.js";import{c as se,t as ce}from"./SddFlowGraph-MVMUCMEy.js";var v=e(t(),1),y=n(),b={idle:`phaseStart`,questioning:`phaseInterview`,spec_review:`phaseSpecReview`,implementation:`phasePlanning`,task_review:`phaseTaskReview`,executing:`phaseRunning`,done:`phaseDone`},x=[`questioning`,`spec_review`,`implementation`,`task_review`,`executing`];function S({onClose:e}){let{t}=l(),{client:n}=ne(),r=g(e=>e.snapshot),d=g(e=>e.agentText),S=g(e=>e.error),T=g(e=>e.startedRunId),E=g(e=>e.setStartedRunId),[D,le]=(0,v.useState)(``),[O,k]=(0,v.useState)(``),[A,j]=(0,v.useState)(!1),[M,ue]=(0,v.useState)(!0),[N,P]=(0,v.useState)(!0),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(void 0),[z,B]=(0,v.useState)(void 0),[V,H]=(0,v.useState)([]),[U,de]=(0,v.useState)(4),[W,fe]=(0,v.useState)(!0),G=ae(F),K=(0,v.useCallback)(e=>n?.send?.(e),[n]),q=(0,v.useRef)(null);(0,v.useEffect)(()=>{K({type:`sdd.spec.get`})},[K]),(0,v.useEffect)(()=>{q.current?.scrollIntoView({behavior:`smooth`,block:`end`})},[r?.answers.length??0,d]),(0,v.useEffect)(()=>{T&&(oe(`sddboard`),E(null))},[T,E]);let J=r?.busy??!1,Y=r?.phase??`idle`,X=!!r;(0,v.useEffect)(()=>{X&&j(!1)},[X]);let pe=r?.answers[r.answers.length-1]?.question??``,me=!!r&&(r.taskCount>0||!!r.graphId||Y===`task_review`||Y===`executing`),Z=()=>{let e=D.trim();!e||J||A||(j(!0),K({type:`sdd.spec.start`,payload:{goal:e}}))},Q=()=>{let e=O.trim();!e||J||(K({type:`sdd.spec.message`,payload:{text:e}}),k(``))},he=()=>!J&&K({type:`sdd.spec.approve`,payload:{}}),ge=()=>{K({type:`sdd.run.start`,payload:{parallelSlots:U,worktrees:W,...L?{model:L,provider:z}:{},...V.length?{fallbackModels:V}:{}}}),I(!1)},$=(0,v.useMemo)(()=>(r?.board?.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,retries:e.retries})),[r?.board]),_e=$.length>0;return(0,y.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,y.jsxs)(`header`,{className:`sdd-sheen flex shrink-0 items-center justify-between border-b border-border px-4 py-2`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(m,{className:`h-5 w-5 text-primary`}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h1`,{className:`text-lg font-semibold`,children:r?.title||t(`activity:sddWizard.titleFallback`)}),X&&(0,y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t(`activity:sddWizard.${b[Y]??`phaseStart`}`),Y===`questioning`&&` · ${t(`activity:sddWizard.questionsSuffix`,{cur:r?.questionCount??0,max:r?.maxQuestions??0})}`,r&&r.taskCount>0?` · ${t(`activity:sddWizard.tasksSuffix`,{count:r.taskCount})}`:``]})]}),J&&(0,y.jsx)(o,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[me&&(0,y.jsxs)(`div`,{className:`relative flex items-center gap-1.5`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),title:t(`activity:sddWizard.runCfgTitle`),className:h(`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium`,L||V.length?`border-primary/40 bg-primary/10 text-primary`:`border-border bg-muted text-muted-foreground hover:text-foreground`),children:[(0,y.jsx)(a,{className:`h-3.5 w-3.5`}),L||t(`activity:sddWizard.modelsLabel`)]}),(0,y.jsxs)(`button`,{type:`button`,onClick:ge,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,y.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddWizard.startRun`)]}),F&&(0,y.jsxs)(`div`,{className:`sdd-rise absolute right-0 top-9 z-50 w-72 rounded-lg border border-border bg-popover p-3 shadow-xl`,children:[(0,y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.defaultWorkerModel`)}),(0,y.jsx)(re,{value:L,provider:z,candidates:G,placeholder:t(`activity:sddWizard.leaderDefaultPlaceholder`),resetLabel:t(`activity:sddWizard.useSessionDefault`),onPick:(e,t)=>{R(e),B(t)},onReset:L?()=>{R(void 0),B(void 0)}:void 0}),(0,y.jsx)(`div`,{className:`mb-1 mt-3 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.fallbackChain`)}),(0,y.jsx)(ie,{value:V,candidates:G,onChange:H}),(0,y.jsx)(`p`,{className:`mt-2 text-[10px] text-muted-foreground`,children:t(`activity:sddWizard.appliesToAll`)}),(0,y.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2`,children:[(0,y.jsx)(`label`,{htmlFor:`sdd-slots`,className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.parallelAgents`)}),(0,y.jsx)(`input`,{id:`sdd-slots`,type:`number`,min:1,max:16,value:U,onChange:e=>{let t=Number.parseInt(e.target.value,10);de(Number.isFinite(t)?Math.min(16,Math.max(1,t)):1)},className:`w-16 rounded-md border border-border bg-background px-2 py-1 text-right text-xs outline-none focus:border-primary`})]}),(0,y.jsxs)(`label`,{className:`mt-2 flex cursor-pointer items-center justify-between gap-2`,children:[(0,y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.isolateWorktrees`)}),(0,y.jsx)(`input`,{type:`checkbox`,checked:W,onChange:e=>fe(e.target.checked),className:`h-3.5 w-3.5 accent-primary`})]}),(0,y.jsx)(`p`,{className:`mt-1 text-[10px] text-muted-foreground`,children:t(W?`activity:sddWizard.worktreeOn`:`activity:sddWizard.worktreeOff`)})]})]}),(0,y.jsx)(_,{variant:`ghost`,size:`icon`,onClick:e,children:(0,y.jsx)(s,{className:`h-4 w-4`})})]})]}),X&&(0,y.jsx)(`div`,{className:`flex shrink-0 items-center gap-1 border-b bg-card/50 px-4 py-1.5 text-[11px]`,children:x.map((e,n)=>{let r=e===Y,i=x.indexOf(Y)>n;return(0,y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,y.jsxs)(`span`,{className:h(`rounded-full px-2 py-0.5`,r?`bg-primary/15 text-primary`:i?`text-success`:`text-muted-foreground`),children:[i&&(0,y.jsx)(c,{className:`mr-0.5 inline h-3 w-3`}),t(`activity:sddWizard.${b[e]}`)]}),n<x.length-1&&(0,y.jsx)(`span`,{className:`text-muted-foreground/40`,children:`→`})]},e)})}),(0,y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-4`,children:[S&&(0,y.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/5 p-2 text-xs text-destructive`,children:S}),X?(0,y.jsxs)(`div`,{className:`space-y-4`,children:[_e&&(0,y.jsxs)(`div`,{className:`sdd-rise overflow-hidden rounded-lg border border-primary/20 bg-[hsl(var(--surface-2)/0.85)]`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>ue(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-1.5 text-[11px] font-medium text-primary hover:bg-muted/40`,children:[M?(0,y.jsx)(p,{className:`h-3.5 w-3.5`}):(0,y.jsx)(u,{className:`h-3.5 w-3.5`}),(0,y.jsx)(ee,{className:`h-3.5 w-3.5`}),t(`activity:sddWizard.taskGraphSummary`,{count:r?.taskCount??0}),(0,y.jsx)(`span`,{className:`ml-auto text-muted-foreground`,children:t(M?`activity:sddWizard.dragToExplore`:`activity:sddWizard.show`)})]}),M&&(0,y.jsx)(`div`,{className:`h-[32dvh] min-h-[200px]`,children:(0,y.jsx)(ce,{tasks:$,columns:r?.board?.columns??[]})})]}),(0,y.jsxs)(`div`,{className:`mx-auto max-w-2xl space-y-3`,children:[r?.goal&&(0,y.jsxs)(`div`,{className:`rounded-md border border-border bg-muted/30 px-3 py-2`,children:[(0,y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,y.jsx)(te,{className:`h-3 w-3`}),` `,t(`activity:sddWizard.goalLabel`)]}),(0,y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:r.goal})]}),r?.answers.length||d&&Y===`questioning`||J?(0,y.jsxs)(`div`,{className:`space-y-2.5`,children:[r?.answers.map((e,t)=>(0,y.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,y.jsx)(w,{role:`assistant`,text:e.question}),(0,y.jsx)(w,{role:`user`,text:e.answer})]},t)),d&&Y===`questioning`&&d!==pe&&(0,y.jsx)(w,{role:`assistant`,text:d}),J&&(0,y.jsx)(w,{role:`assistant`,text:``,thinking:!0})]}):null,r?.spec&&(0,y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card p-3`,children:[(0,y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-sm font-semibold`,children:[(0,y.jsx)(m,{className:`h-3.5 w-3.5 text-primary`}),r.spec.title]}),(0,y.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:r.spec.overview}),(0,y.jsx)(`ul`,{className:`space-y-0.5 text-xs`,children:r.spec.requirements.map((e,t)=>(0,y.jsxs)(`li`,{className:`flex gap-1.5`,children:[(0,y.jsx)(`span`,{className:h(`shrink-0 font-mono uppercase`,se(e.priority).text),children:e.priority[0]}),(0,y.jsx)(`span`,{children:e.description})]},t))})]}),d&&(Y===`implementation`||Y===`task_review`)&&(0,y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>P(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-2 text-sm font-semibold hover:bg-muted/40`,children:[N?(0,y.jsx)(p,{className:`h-3.5 w-3.5`}):(0,y.jsx)(u,{className:`h-3.5 w-3.5`}),(0,y.jsx)(m,{className:`h-3.5 w-3.5 text-primary`}),` `,t(`activity:sddWizard.implementationPlan`)]}),N&&(0,y.jsx)(`div`,{className:`max-h-[40dvh] overflow-auto px-3 py-2`,children:(0,y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:C(d)})})]}),d&&Y!==`questioning`&&Y!==`implementation`&&Y!==`task_review`&&!r?.spec&&(0,y.jsx)(w,{role:`assistant`,text:d}),(Y===`spec_review`||Y===`implementation`||Y===`task_review`)&&(0,y.jsxs)(_,{variant:`secondary`,onClick:he,disabled:J,children:[(0,y.jsx)(c,{className:`mr-1.5 h-4 w-4`}),t(Y===`spec_review`?`activity:sddWizard.approveSpec`:Y===`task_review`?`activity:sddWizard.approveTasks`:`activity:sddWizard.approvePlan`)]}),(0,y.jsx)(`div`,{ref:q})]})]}):(0,y.jsxs)(`div`,{className:`mx-auto mt-8 max-w-xl`,children:[(0,y.jsx)(`label`,{className:`mb-2 block text-sm font-medium`,htmlFor:`sdd-goal`,children:t(`activity:sddWizard.goalPrompt`)}),(0,y.jsx)(`textarea`,{id:`sdd-goal`,value:D,onChange:e=>le(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&Z()},rows:4,placeholder:t(`activity:sddWizard.goalPlaceholder`),className:`w-full resize-none rounded-md border border-border bg-card px-3 py-2 text-sm outline-none focus:border-primary`}),(0,y.jsx)(_,{className:`mt-3`,onClick:Z,disabled:!D.trim()||A,children:A?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(o,{className:`mr-1.5 h-4 w-4 animate-spin`}),` `,t(`activity:sddWizard.startingInterview`)]}):(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(m,{className:`mr-1.5 h-4 w-4`}),` `,t(`activity:sddWizard.startInterview`)]})}),(0,y.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:t(`activity:sddWizard.introBody`)})]})]}),X&&Y!==`executing`&&Y!==`done`&&(0,y.jsxs)(`div`,{className:`flex shrink-0 items-end gap-2 border-t bg-card px-4 py-2`,children:[(0,y.jsx)(`textarea`,{value:O,onChange:e=>k(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Q())},rows:1,placeholder:t(Y===`questioning`?`activity:sddWizard.answerPlaceholder`:`activity:sddWizard.changePlaceholder`),disabled:J,className:`max-h-32 flex-1 resize-none rounded-md border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary disabled:opacity-50`}),(0,y.jsx)(_,{size:`icon`,onClick:Q,disabled:J||!O.trim(),children:(0,y.jsx)(f,{className:`h-4 w-4`})})]})]})}function C(e){let t=e.replace(/```json[\s\S]*?```/gi,``).trim();return t.length>0?t:e.trim()}function w({role:e,text:t,live:n,thinking:i}){let a=e===`user`;return(0,y.jsxs)(`div`,{className:h(`sdd-rise flex items-start gap-2`,a&&`flex-row-reverse`),children:[(0,y.jsx)(`span`,{className:h(`mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full`,a?`bg-info/15 text-info`:`bg-primary/15 text-primary`,(n||i)&&`sdd-agent-live`),children:a?(0,y.jsx)(d,{className:`h-3.5 w-3.5`}):(0,y.jsx)(r,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(`div`,{className:h(`max-w-[80%] whitespace-pre-wrap rounded-2xl px-3 py-2 text-sm leading-relaxed text-foreground`,a?`rounded-tr-sm bg-info/10`:`rounded-tl-sm bg-muted`),children:i?(0,y.jsxs)(`span`,{className:`flex items-center gap-1 py-0.5`,children:[(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-200ms]`}),(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-100ms]`}),(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground`})]}):t})]})}export{S as SddWizard};
@@ -1,2 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{c as t,m as n,o as r,p as i}from"./markdown-D0X23O-i.js";import{Bn as ee,Bt as te,Kn as ne,Or as a,Wr as o,Yt as re,Z as ie,Zt as ae,br as oe,cr as se,dt as s,fi as c,gr as l,hi as u,jn as ce,t as le,tr as ue,vr as de,wr as fe,zr as pe}from"./vendor-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{n as me}from"./ui-store-ComQYc5F.js";import{t as d}from"./utils-CU_o9ioU.js";import{C as he,T as ge,d as f}from"./index-CyTNJHe8.js";var p=e(n(),1),m=i();function h(e){return e===`project`||e===`user`}function g(e){let t=e.match(/^(.+?)\/SKILL(?:\.save)?\.md$/);return t?t[1]:null}function _e({source:e}){let{t}=c(),n=e===`project`?`project`:e===`user`?`user`:`bundled`;return(0,m.jsx)(`span`,{className:d(`inline-flex items-center rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,n===`project`&&`border-success/25 bg-success/8 text-success`,n===`user`&&`border-primary/25 bg-primary/10 text-primary`,n===`bundled`&&`border-border/70 bg-muted/60 text-muted-foreground`),children:t(`activity:skillDetail.${{project:`scopeProject`,user:`scopeGlobal`,bundled:`scopeBundled`}[n]}`)})}function _({className:e}){let{t:n}=c(),{client:i}=he(),_=me(e=>e.skillsState),v=me(e=>e.setSkillsState),y=_.selectedSkill,b=_.navHistory,x=_.historyIndex,[S,C]=(0,p.useState)(null),[ve,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(null),[D,O]=(0,p.useState)(!1),[k,A]=(0,p.useState)(``),[j,M]=(0,p.useState)(!1),[N,P]=(0,p.useState)(null),[F,I]=(0,p.useState)(!1),[L,R]=(0,p.useState)(null),[z,B]=(0,p.useState)(!1),V=(0,p.useRef)(``),[H,ye]=(0,p.useState)(!1),[U,W]=(0,p.useState)(null),[be,xe]=(0,p.useState)(!1),[G,K]=(0,p.useState)(null),[q,Se]=(0,p.useState)(!1);(0,p.useEffect)(()=>{if(!G)return;let e=e=>{e.key===`Escape`&&K(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[G]);let[Ce,we]=(0,p.useState)([]),J=(0,p.useRef)(_);J.current=_;let Y=(0,p.useRef)(!1),X=(0,p.useMemo)(()=>k?{lines:k.split(`
2
- `).length,words:k.trim()?k.trim().split(/\s+/).length:0,chars:k.length}:{lines:0,words:0,chars:0},[k]),Z=(0,p.useMemo)(()=>{if(!k)return null;let e=5*1024*1024,t=new Blob([k]).size;return t>=e?{level:`critical`,used:t,limit:e}:t>=4194304?{level:`warn`,used:t,limit:e}:null},[k]);(0,p.useEffect)(()=>{if(!L)return;let e=setTimeout(()=>R(null),2e3);return()=>clearTimeout(e)},[L]),(0,p.useEffect)(()=>{if(!D||!y)return;let e=setInterval(()=>{k&&k!==V.current&&(V.current=k,localStorage.setItem(`skills_draft_${y.name}`,JSON.stringify({content:k,savedAt:Date.now()})),R(Date.now()))},5e3);return()=>clearInterval(e)},[D,k,y]),(0,p.useEffect)(()=>{if(!y||!D)return;let e=localStorage.getItem(`skills_draft_${y.name}`);if(e)try{let{content:t}=JSON.parse(e);t&&t!==k&&t!==V.current&&(A(t),V.current=t,B(!0))}catch{}},[y?.name,D]),(0,p.useEffect)(()=>{if(!i||!y)return;w(!0),C(null),E(null);let e=setTimeout(()=>{w(!1),E(u.t(`activity:skillDetail.timeoutError`))},1e4),t=t=>{clearTimeout(e);let n=t;n.payload.error?E(n.payload.error):n.payload.name&&C(n.payload),w(!1)},n=e=>{let t=e;ye(!1);let n=J.current;if(t.payload.success){let e={...n.knownRefs};for(let n of t.payload.updated??[])e[n.name]=n.newRef;v({...n,knownRefs:e,updateAvailableCount:0}),W({updated:t.payload.updated??[],unchanged:t.payload.unchanged??[],errors:t.payload.errors??[]}),i.send({type:`skills.list`})}else W({updated:[],unchanged:[],errors:[{name:``,error:t.payload.error??u.t(`activity:skillDetail.updateFailed`)}]})},r=e=>{let t=e;t.payload.skills&&we(t.payload.skills)};return i.on(`skills.content`,t),i.on(`skills.updated`,n),i.on(`skills.list`,r),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}),()=>{clearTimeout(e),i.off(`skills.content`,t),i.off(`skills.updated`,n),i.off(`skills.list`,r)}},[i,y?.name,y?.source]),(0,p.useEffect)(()=>{D&&(O(!1),A(``),P(null))},[y?.name]);let Q=(0,p.useCallback)(e=>Ce.find(t=>t.name.toLowerCase()===e.toLowerCase()),[Ce]),Te=(0,p.useCallback)(e=>{let t=Q(e);if(t){Y.current=!1;let e=b.slice(0,x+1);e.push(t),v({...J.current,selectedSkill:t,navHistory:e,historyIndex:e.length-1}),O(!1),A(``),W(null)}},[Q,b,x,v]),Ee=(0,p.useCallback)(()=>{if(x<=0)return;Y.current=!0;let e=x-1,t=b[e];v({...J.current,selectedSkill:t,historyIndex:e}),O(!1),A(``),W(null)},[x,b,v]),De=(0,p.useCallback)(()=>{if(x>=b.length-1)return;Y.current=!0;let e=x+1,t=b[e];v({...J.current,selectedSkill:t,historyIndex:e}),O(!1),A(``),W(null)},[x,b,v]),$=(0,p.useCallback)(()=>{ge(`chat`)},[]),Oe=(0,p.useCallback)(()=>{S&&(A(S.body),V.current=S.body,B(!1),P(null),O(!0),I(!1))},[S]),ke=(0,p.useCallback)(()=>{O(!1),A(``),P(null),I(!1),B(!1),y&&localStorage.removeItem(`skills_draft_${y.name}`)},[y]),Ae=(0,p.useCallback)(()=>{!y||!S||(B(!1),A(S.body),V.current=S.body,y&&localStorage.removeItem(`skills_draft_${y.name}`))},[y,S]),je=(0,p.useCallback)(()=>{if(!i||!y||!k.trim())return;M(!0),P(null);let e=t=>{let n=t;M(!1),n.payload.success?(V.current=``,localStorage.removeItem(`skills_draft_${y.name}`),B(!1),O(!1),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}),i.send({type:`skills.list`})):P(n.payload.error??u.t(`activity:skillDetail.saveFailed`)),i.off(`skills.edited`,e)};i.on(`skills.edited`,e),i.editSkill(y.name,k)},[i,y,k]),Me=(0,p.useCallback)(()=>{!i||!y||(ye(!0),W(null),i.checkForUpdates(y.name,y.source===`user`))},[i,y]),Ne=(0,p.useCallback)(()=>{y?.sourceUrl&&navigator.clipboard.writeText(y.sourceUrl).then(()=>{xe(!0),setTimeout(()=>xe(!1),2e3)})},[y]),Pe=(0,p.useCallback)(()=>{if(!S?.body)return;let e=new Blob([S.body],{type:`text/markdown`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${S.name.replace(/\//g,`_`)}-SKILL.md`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[S]),Fe=(0,p.useCallback)(async e=>{if(!i||!e)return;Se(!0);let t=e=>{let n=e;Se(!1),n.payload.success?(K(null),i.send({type:`skills.list`}),$()):P(n.payload.error??u.t(`activity:skillDetail.uninstallFailed`)),i.off(`skills.uninstalled`,t)};i.on(`skills.uninstalled`,t),i.uninstallSkill(e.name,e.source===`user`)},[i,$]);return y?(0,m.jsxs)(`div`,{className:d(`flex h-full min-h-0 min-w-0 flex-col gap-3 overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:[(0,m.jsxs)(`div`,{className:`shrink-0 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,m.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[(0,m.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,m.jsx)(pe,{className:`h-4 w-4`})}),(0,m.jsx)(`h1`,{className:`min-w-0 truncate text-base font-semibold`,children:y.name}),y.version&&(0,m.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`v`,y.version]}),(0,m.jsx)(_e,{source:y.source})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:y.description||y.trigger}),y.sourceUrl&&(0,m.jsxs)(`div`,{className:`mt-2 flex min-w-0 items-center gap-1`,children:[(0,m.jsxs)(`a`,{href:`https://${y.sourceUrl.replace(`github:`,``)}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,title:n(`activity:skillDetail.openSourceRepo`),children:[(0,m.jsx)(ce,{className:`h-3 w-3 shrink-0`}),(0,m.jsx)(`span`,{className:`truncate font-mono`,children:y.sourceUrl})]}),(0,m.jsx)(`button`,{type:`button`,onClick:Ne,className:`flex shrink-0 items-center text-muted-foreground transition-colors hover:text-foreground`,title:n(`activity:skillDetail.copySourceUrl`),children:be?(0,m.jsx)(oe,{className:`h-3 w-3 text-success`}):(0,m.jsx)(se,{className:`h-3 w-3`})})]}),y.scope.length>0&&(0,m.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:y.scope.map(e=>(0,m.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-muted text-muted-foreground`,children:e},e))}),U&&(0,m.jsxs)(`div`,{className:`mt-2 text-xs space-y-1`,children:[U.updated.length>0&&(0,m.jsx)(`div`,{className:`text-success`,children:n(`activity:skillDetail.updatedLabel`,{list:U.updated.map(e=>`${e.name} (${e.oldRef} → ${e.newRef})`).join(`, `)})}),U.unchanged.length>0&&(0,m.jsx)(`div`,{className:`text-muted-foreground`,children:n(`activity:skillDetail.upToDateLabel`,{list:U.unchanged.join(`, `)})}),U.errors.length>0&&(0,m.jsx)(`div`,{className:`text-destructive`,children:n(`activity:skillDetail.errorsLabel`,{list:U.errors.map(e=>`${e.name?`${e.name}: `:``}${e.error}`).join(`; `)})})]})]}),(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 lg:ml-auto lg:shrink-0 lg:justify-end`,children:[h(y.source)&&y.sourceUrl&&(0,m.jsx)(`button`,{type:`button`,onClick:Me,disabled:H,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50`,title:n(`activity:skillDetail.checkUpdatesTitle`),children:H?(0,m.jsx)(o,{className:`h-3.5 w-3.5 animate-spin`}):(0,m.jsx)(te,{className:`h-3.5 w-3.5`})}),y.source!==`bundled`&&!D&&(0,m.jsx)(`button`,{type:`button`,onClick:Pe,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.exportTitle`),children:(0,m.jsx)(ue,{className:`h-3.5 w-3.5`})}),h(y.source)&&!D&&(0,m.jsx)(`button`,{type:`button`,onClick:Oe,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.editTitle`),children:(0,m.jsx)(re,{className:`h-3.5 w-3.5`})}),h(y.source)&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(y),className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive`,title:n(`activity:skillDetail.uninstallTitle`),children:(0,m.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,m.jsx)(`button`,{type:`button`,onClick:$,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.closeTitle`),children:(0,m.jsx)(ie,{className:`h-4 w-4`})})]})]}),b.length>1&&(0,m.jsxs)(`div`,{className:`mt-3 flex min-w-0 items-center gap-1 rounded-lg border border-border/60 bg-muted/35 px-2 py-1`,children:[(0,m.jsx)(`button`,{type:`button`,onClick:Ee,disabled:x<=0,className:d(`rounded p-1 transition-colors`,x<=0?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:n(`activity:skillDetail.backTitle`),children:(0,m.jsx)(de,{className:`h-4 w-4`})}),(0,m.jsx)(`button`,{type:`button`,onClick:De,disabled:x>=b.length-1,className:d(`rounded p-1 transition-colors`,x>=b.length-1?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:n(`activity:skillDetail.forwardTitle`),children:(0,m.jsx)(l,{className:`h-4 w-4`})}),(0,m.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto text-xs`,children:b.map((e,t)=>(0,m.jsxs)(`span`,{className:`flex items-center shrink-0`,children:[t>0&&(0,m.jsx)(l,{className:`h-3 w-3 text-muted-foreground/40 mx-0.5 shrink-0`}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>{t<x&&(Y.current=!0,v({...J.current,selectedSkill:e,historyIndex:t}),O(!1),A(``),W(null))},className:d(`hover:text-primary cursor-pointer transition-colors`,t===x?`text-primary font-medium`:`text-muted-foreground`),children:e.name})]},e.name+t))})]})]}),S&&(S.relatedFiles.length>0||S.references.length>0)&&(0,m.jsxs)(`div`,{className:`shrink-0 space-y-2 rounded-xl border border-border/70 bg-card/70 px-4 py-3 shadow-sm`,children:[S.relatedFiles.length>0&&(0,m.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,m.jsx)(ee,{className:`h-3 w-3`}),(0,m.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:n(`activity:skillDetail.relatedFiles`)})]}),S.relatedFiles.map(e=>{let t=g(e);return t&&Q(t)?(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Te(t),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] transition-colors hover:border-primary/40 hover:text-primary`,title:n(`activity:skillDetail.goToSkillTitle`,{name:t}),children:[(0,m.jsx)(a,{className:`h-2.5 w-2.5`}),e]},e):(0,m.jsx)(`span`,{className:`rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:e},e)})]}),S.references.length>0&&(0,m.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,m.jsx)(ne,{className:`h-3 w-3`}),(0,m.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:n(`activity:skillDetail.references`)})]}),S.references.map(e=>{let t=g(e)??e.replace(/\.md$/,``);return Q(t)?(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Te(t),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-primary/20 bg-primary/5 px-1.5 py-0.5 text-[10px] text-primary transition-colors hover:border-primary/30 hover:bg-primary/10`,title:n(`activity:skillDetail.goToSkillTitle`,{name:t}),children:[(0,m.jsx)(a,{className:`h-2.5 w-2.5`}),t]},e):(0,m.jsx)(`span`,{className:`rounded-md bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:t},e)})]})]}),(0,m.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden rounded-xl border border-border/70 bg-card/70 shadow-sm`,children:ve?(0,m.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center text-muted-foreground`,children:[(0,m.jsx)(o,{className:`mx-auto mb-2 h-6 w-6 animate-spin text-primary`}),(0,m.jsx)(`p`,{children:n(`activity:skillDetail.loadingContent`)})]}):D?(0,m.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-border/70 bg-muted/30 px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`activity:skillDetail.editingLabel`,{name:y.name})}),(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:n(`activity:skillDetail.editStats`,{lines:X.lines,words:X.words,chars:X.chars})}),Z&&(0,m.jsx)(`span`,{className:`text-xs tabular-nums ${Z.level===`critical`?`font-medium text-destructive`:`text-warning`}`,children:n(`activity:skillDetail.charsWarningFmt`,{used:(Z.used/(1024*1024)).toFixed(1),limit:(Z.limit/(1024*1024)).toFixed(0)})}),L&&(0,m.jsx)(`span`,{className:`text-xs text-success animate-pulse`,children:n(`activity:skillDetail.draftSaved`)}),z&&(0,m.jsx)(`span`,{className:`animate-pulse text-xs text-warning`,children:n(`activity:skillDetail.draftRestored`)})]}),(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[N&&(0,m.jsx)(`span`,{className:`text-xs text-destructive`,children:N}),z&&(0,m.jsx)(`button`,{type:`button`,onClick:Ae,className:`rounded-md border border-warning/35 px-2 py-1 text-[10px] text-warning transition-colors hover:bg-warning/10`,children:n(`activity:skillDetail.discardDraft`)}),(0,m.jsx)(`button`,{type:`button`,onClick:ke,className:`rounded-md border border-border/70 px-2 py-1 text-xs transition-colors hover:bg-accent`,children:n(`common:action.cancel`)}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>I(e=>!e),title:n(F?`activity:skillDetail.hidePreviewTitle`:`activity:skillDetail.splitViewTitle`),className:`rounded-md border px-2 py-1 text-xs transition-colors ${F?`border-primary/40 bg-primary/10 text-primary`:`border-border/70 text-muted-foreground hover:bg-accent`}`,children:(0,m.jsx)(ae,{className:`h-3 w-3 inline`})}),(0,m.jsx)(`button`,{type:`button`,onClick:je,disabled:j||!k.trim(),className:`rounded-md bg-primary px-3 py-1 text-xs text-primary-foreground shadow-sm shadow-primary/15 transition-colors hover:bg-primary/90 disabled:opacity-50`,children:j?(0,m.jsx)(o,{className:`h-3 w-3 animate-spin inline`}):n(`common:action.save`)})]})]}),F?(0,m.jsxs)(`div`,{className:`flex flex-1 min-h-0 gap-0.5`,children:[(0,m.jsx)(`div`,{className:`flex-1 min-w-0 flex flex-col min-h-0`,children:(0,m.jsx)(le,{value:k,onChange:e=>A(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:n(`activity:skillDetail.contentPlaceholder`)})}),(0,m.jsx)(`div`,{className:`w-px bg-border flex-shrink-0`}),(0,m.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-background/45 p-4 prose prose-sm dark:prose-invert max-w-none`,children:(0,m.jsx)(t,{rehypePlugins:[r],components:f,children:k})})]}):(0,m.jsx)(le,{value:k,onChange:e=>A(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:n(`activity:skillDetail.contentPlaceholder`)})]}):S?(0,m.jsx)(`div`,{className:`h-full min-h-0 overflow-y-auto p-5 sm:p-6 prose prose-sm dark:prose-invert max-w-none`,children:(0,m.jsx)(t,{rehypePlugins:[r],components:f,children:S.body})}):T?(0,m.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center`,children:[(0,m.jsx)(`p`,{className:`text-destructive mb-2`,children:n(`activity:skillDetail.loadFailed`)}),(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:T}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>{i&&y&&(w(!0),E(null),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}))},className:`mt-4 rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent`,children:n(`common:action.retry`)})]}):(0,m.jsx)(`div`,{className:`flex h-full min-h-[16rem] items-center justify-center p-8 text-center text-muted-foreground`,children:n(`activity:skillDetail.noContent`)})}),G&&(0,m.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/45 p-4 backdrop-blur-sm`,onClick:e=>{e.target===e.currentTarget&&K(null)},children:(0,m.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":n(`activity:skillDetail.uninstallSkillHeading`),className:`flex max-h-[calc(100dvh-2rem)] w-[380px] max-w-[90vw] flex-col overflow-hidden rounded-xl border border-border/70 bg-card shadow-2xl`,children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between border-b border-border/70 p-4`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(s,{className:`h-4 w-4 text-destructive`}),(0,m.jsx)(`span`,{className:`font-semibold text-sm`,children:n(`activity:skillDetail.uninstallSkillHeading`)})]}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(null),"aria-label":n(`common:action.close`),className:`rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,m.jsx)(ie,{className:`h-4 w-4`})})]}),(0,m.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-4`,children:[(0,m.jsx)(`p`,{className:`text-sm`,children:n(`activity:skillDetail.uninstallConfirm`,{name:G.name})}),(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:skillDetail.uninstallRemovePath`,{path:G.source===`user`?`~/.wrongstack/skills`:`.wrongstack/skills`})})]}),(0,m.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-border/70 bg-muted/20 p-4`,children:[(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(null),disabled:q,className:`rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent disabled:opacity-50`,children:n(`common:action.cancel`)}),(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Fe(G),disabled:q,className:`flex items-center gap-1.5 rounded-md bg-destructive px-3 py-1.5 text-xs text-destructive-foreground transition-colors hover:bg-destructive/90 disabled:cursor-not-allowed disabled:opacity-50`,children:[q&&(0,m.jsx)(o,{className:`h-3 w-3 animate-spin`}),n(`activity:skillDetail.uninstallAction`)]})]})]})})]}):(0,m.jsx)(`div`,{className:d(`flex h-full min-h-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4 text-muted-foreground`,e),children:(0,m.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center`,children:[(0,m.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary`,children:(0,m.jsx)(fe,{className:`h-6 w-6`})}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`p`,{className:`text-base font-medium text-foreground`,children:n(`activity:skillDetail.noSkillSelected`)}),(0,m.jsx)(`p`,{className:`mt-1 text-sm`,children:n(`activity:skillDetail.selectSkillHint`)})]}),(0,m.jsx)(`button`,{type:`button`,onClick:$,className:`mt-1 rounded-md border border-border/70 bg-card/70 px-4 py-2 text-sm text-foreground shadow-sm transition-colors hover:bg-accent`,children:n(`activity:skillDetail.goToChat`)})]})})}export{_ as SkillDetailView};
@@ -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,It as i,Kn as a,Kt as o,Wr as s,Z as c,ai as l,en as u,fi as d,fr as f,gr as p,hn as m,ni as h,ur as g,xn as _,yr as v}from"./vendor-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{t as y}from"./utils-CU_o9ioU.js";import{C as b,D as x,m as S,w as C}from"./index-CyTNJHe8.js";var w=e(t(),1),T=n(),E={completed:{icon:(0,T.jsx)(l,{className:`h-3.5 w-3.5`}),label:`Completed`,text:`text-success`,ring:`border-success/35`},in_progress:{icon:(0,T.jsx)(s,{className:`h-3.5 w-3.5 animate-spin`}),label:`Running`,text:`text-primary`,ring:`border-primary/45`},queued:{icon:(0,T.jsx)(g,{className:`h-3.5 w-3.5`}),label:`Queued`,text:`text-warning`,ring:`border-warning/35`},blocked:{icon:(0,T.jsx)(m,{className:`h-3.5 w-3.5`}),label:`Blocked`,text:`text-destructive`,ring:`border-destructive/30`},pending:{icon:(0,T.jsx)(f,{className:`h-3.5 w-3.5`}),label:`Pending`,text:`text-muted-foreground`,ring:`border-border/70`},review:{icon:(0,T.jsx)(i,{className:`h-3.5 w-3.5`}),label:`Review`,text:`text-primary`,ring:`border-primary/35`},failed:{icon:(0,T.jsx)(h,{className:`h-3.5 w-3.5`}),label:`Failed`,text:`text-destructive`,ring:`border-destructive/45`},cancelled:{icon:(0,T.jsx)(r,{className:`h-3.5 w-3.5`}),label:`Cancelled`,text:`text-muted-foreground`,ring:`border-border/70`}},D=[`completed`,`in_progress`,`queued`,`blocked`,`pending`,`failed`],O={critical:{label:`Crit`,cls:`bg-destructive/10 text-destructive`},high:{label:`High`,cls:`bg-destructive/10 text-destructive`},medium:{label:`Med`,cls:`bg-warning/12 text-warning`},low:{label:`Low`,cls:`bg-success/12 text-success`}};function k({columns:e,onTaskClick:t}){let{t:n}=d();return e.length===0?(0,T.jsx)(`div`,{className:`flex h-40 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:board.emptySpec`)}):(0,T.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,T.jsx)(`h3`,{className:`mb-3 text-sm font-semibold text-foreground`,children:n(`activity:board.depGraphHeading`)}),(0,T.jsx)(`div`,{className:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:D.map(e=>(0,T.jsxs)(`span`,{className:y(`inline-flex items-center gap-1.5`,E[e].text),children:[E[e].icon,(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:n(`activity:board.status.${e}`)})]},e))}),(0,T.jsx)(`div`,{className:`flex gap-3 overflow-x-auto pb-2`,children:e.map((n,r)=>(0,T.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,T.jsxs)(`div`,{className:`w-60 shrink-0`,children:[(0,T.jsx)(`div`,{className:`mb-2 border-b border-border/60 pb-1 text-center text-xs font-medium uppercase text-muted-foreground`,children:n.label}),(0,T.jsx)(`div`,{className:`space-y-2`,children:n.tasks.map(e=>(0,T.jsx)(A,{task:e,onClick:t},e.id))})]}),r<e.length-1&&(0,T.jsx)(`div`,{className:`flex h-full items-center pt-8 text-muted-foreground/60`,children:(0,T.jsx)(p,{className:`h-5 w-5`})})]},n.label))})]})}function A({task:e,onClick:t}){let n=E[e.displayStatus],r=O[e.priority],{t:i}=d();return(0,T.jsxs)(`button`,{type:`button`,onClick:()=>t?.(e.id),className:y(`w-full rounded-lg border bg-background/55 p-2.5 text-left shadow-sm transition-colors hover:border-primary/35 hover:bg-accent/35`,n.ring),children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,T.jsxs)(`span`,{className:y(`inline-flex items-center gap-1.5 text-xs font-medium`,n.text),children:[n.icon,(0,T.jsx)(`span`,{className:`font-mono text-foreground`,children:e.shortId})]}),(0,T.jsx)(`span`,{className:y(`rounded px-1.5 py-0.5 text-[10px] font-medium`,r.cls),children:r.label})]}),(0,T.jsx)(`p`,{className:`mt-1.5 text-xs text-foreground`,children:e.title}),e.deps.length>0&&(0,T.jsxs)(`p`,{className:`mt-1 font-mono text-[10px] text-muted-foreground`,children:[`← `,e.deps.join(`, `)]}),e.agentName&&(0,T.jsxs)(`div`,{className:y(`mt-1.5 inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px]`,e.displayStatus===`in_progress`?`bg-primary/10 text-primary`:`bg-muted text-muted-foreground`),title:e.worktreeBranch?i(`activity:board.worktreePrefix`,{branch:e.worktreeBranch}):void 0,children:[e.displayStatus===`in_progress`&&(0,T.jsx)(s,{className:`h-3 w-3 animate-spin`}),(0,T.jsx)(`span`,{children:e.agentName})]})]})}function j(e){return e.columns.map(e=>({name:e.label,description:``,priority:`medium`,estimateHours:e.tasks.length,parallelizable:!1,taskTemplates:e.tasks.map(e=>({title:e.title,description:e.description,type:e.type,priority:e.priority,estimateHours:1}))}))}function M({onClose:e}){let{client:t}=b(),{t:n}=d(),r=x(e=>e.specs),i=x(e=>e.detail),s=x(e=>e.expandedSpecId),l=x(e=>e.setExpanded),[f,m]=(0,w.useState)(`graph`),h=(0,w.useCallback)(e=>{!i||i.specId!==e.id||(t?.send?.({type:`autophase.start`,payload:{title:e.title,phases:j(i),autonomous:!0}}),C(`autophase`))},[i,t]);(0,w.useEffect)(()=>{t?.send?.({type:`specs.list`})},[t]);let g=(0,w.useCallback)(e=>{s===e.id?l(null):(l(e.id),t?.send?.({type:`specs.get`,payload:{specId:e.id}}))},[s,l,t]),E=i?.columns.flatMap(e=>e.tasks)??[],D={done:E.filter(e=>e.status===`completed`).length,running:E.filter(e=>e.status===`in_progress`).length,pending:E.filter(e=>e.status===`pending`||e.displayStatus===`queued`).length};return(0,T.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,T.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between border-b bg-card px-4 py-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(a,{className:`h-5 w-5 text-warning`}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h1`,{className:`text-lg font-semibold`,children:n(`activity:specs.heading`)}),(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:specs.subtitle`)})]})]}),(0,T.jsx)(S,{variant:`ghost`,size:`icon`,onClick:e,children:(0,T.jsx)(c,{className:`h-4 w-4`})})]}),(0,T.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:r.length===0?(0,T.jsx)(`div`,{className:`flex h-40 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:specs.empty`,{command:`/sdd`})}):(0,T.jsx)(`div`,{className:`space-y-3`,children:r.map(e=>{let t=s===e.id,r=e.total>0?Math.round(e.completed/e.total*100):0;return(0,T.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60`,children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>g(e),className:`flex w-full items-start gap-3 p-4 text-left`,children:[(0,T.jsx)(`span`,{className:`mt-1 text-muted-foreground`,children:t?(0,T.jsx)(v,{className:`h-4 w-4`}):(0,T.jsx)(p,{className:`h-4 w-4`})}),(0,T.jsx)(a,{className:`mt-0.5 h-4 w-4 text-muted-foreground`}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.displayId}),(0,T.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] capitalize text-muted-foreground`,children:e.status})]}),(0,T.jsx)(`h2`,{className:`mt-1 text-base font-semibold`,children:e.title}),(0,T.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,T.jsx)(`div`,{className:`h-2 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,T.jsx)(`div`,{className:`h-full rounded-full bg-success transition-all`,style:{width:`${r}%`}})}),(0,T.jsxs)(`span`,{className:`shrink-0 font-mono text-xs text-muted-foreground`,children:[e.completed,`/`,e.total]})]})]})]}),t&&(0,T.jsxs)(`div`,{className:`border-t border-border p-4`,children:[(0,T.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`text-sm font-medium`,children:[n(`activity:specs.tasks`,{count:i?.total??e.total}),i&&(0,T.jsxs)(`span`,{className:`ml-3 text-xs font-normal text-muted-foreground`,children:[(0,T.jsx)(`span`,{className:`text-success`,children:n(`activity:specs.doneCount`,{count:D.done})}),` `,(0,T.jsx)(`span`,{className:`text-primary`,children:n(`activity:specs.runningCount`,{count:D.running})}),` `,(0,T.jsx)(`span`,{children:n(`activity:specs.pendingCount`,{count:D.pending})})]})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxs)(`button`,{type:`button`,disabled:!i||i.specId!==e.id,onClick:()=>h(e),title:n(`activity:specs.runTitle`),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning transition-colors hover:bg-warning/25 disabled:opacity-40`,children:[(0,T.jsx)(o,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.run`)]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>m(`list`),className:y(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,f===`list`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,T.jsx)(_,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.list`)]}),(0,T.jsxs)(`button`,{type:`button`,onClick:()=>m(`graph`),className:y(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,f===`graph`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,T.jsx)(u,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.graph`)]})]})]})]}),!i||i.specId!==e.id?(0,T.jsx)(`div`,{className:`flex h-24 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:specs.loadingTasks`)}):f===`graph`?(0,T.jsx)(k,{columns:i.columns}):(0,T.jsx)(`div`,{className:`space-y-1.5`,children:E.map(e=>(0,T.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md border border-border bg-card px-3 py-2`,children:[(0,T.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,T.jsx)(`span`,{className:`flex-1 text-sm`,children:e.title}),(0,T.jsx)(`span`,{className:`text-xs capitalize text-muted-foreground`,children:e.displayStatus.replace(`_`,` `)})]},e.id))})]})]},e.id)})})})]})}export{M as SpecsView};
@@ -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{Gt as r,It as i,Rr as a,Z as o,dt as s,fi as c,hi as l}from"./vendor-CyLvG8N0.js";import"./i18n-BMePmaPJ.js";import{t as u}from"./ws-client-CwL51TNh.js";import{t as d}from"./session-store-P-JnaPPK.js";import{n as f}from"./ui-store-ComQYc5F.js";import{t as p}from"./utils-CU_o9ioU.js";import{z as m}from"./index-CyTNJHe8.js";import{n as h,t as g}from"./xterm-B9RXJkIu.js";var _=e(t(),1),v=`wrongstack.terminalDockHeight`;function y(e){let t=typeof window>`u`?640:Math.max(140,Math.min(640,Math.floor(window.innerHeight*.55),window.innerHeight-260));return Math.min(Math.max(Math.round(e),140),t)}var b=n(),x={background:`#1e1e2e`,foreground:`#cdd6f4`,cursor:`#f5e0dc`,selectionBackground:`#585b70`,black:`#45475a`,red:`#f38ba8`,green:`#a6e3a1`,yellow:`#f9e2af`,blue:`#89b4fa`,magenta:`#f5c2e7`,cyan:`#94e2d5`,white:`#bac2de`,brightBlack:`#585b70`,brightRed:`#f38ba8`,brightGreen:`#a6e3a1`,brightYellow:`#f9e2af`,brightBlue:`#89b4fa`,brightMagenta:`#f5c2e7`,brightCyan:`#94e2d5`,brightWhite:`#a6adc8`},S=8;function C(e=!1){return typeof window>`u`?300:y(window.innerHeight*(e?.32:.4))}function w(e=!1){if(typeof window>`u`)return C(e);try{let t=window.localStorage.getItem(v),n=t?Number.parseInt(t,10):NaN;return Number.isFinite(n)?y(n):C(e)}catch{return C(e)}}function T(e){try{window.localStorage.setItem(v,String(y(e)))}catch{}}function E(){try{return crypto.randomUUID()}catch{return`term-${Date.now()}-${Math.floor(Math.random()*1e6)}`}}function D(e){return{id:E(),name:`Terminal ${e}`,status:`starting`}}function O({desktopShell:e=!1,onClose:t}){let n=(0,_.useRef)(null),{t:l}=c(),u=(0,_.useRef)(1),[m,h]=(0,_.useState)(()=>w(e)),[g,v]=(0,_.useState)(()=>[D(1)]),[x,C]=(0,_.useState)(()=>g[0]?.id??``),O=f(e=>e.terminalCreateNonce),A=(0,_.useRef)(O),j=d(e=>e.projectName),M=d(e=>e.cwd);(0,_.useEffect)(()=>{let e=()=>{h(e=>{let t=y(e);return T(t),t})};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let N=e=>{e.preventDefault(),n.current?.();let t=e.clientY,r=m,i=document.body.style.cursor,a=document.body.style.userSelect;document.body.style.cursor=`ns-resize`,document.body.style.userSelect=`none`;let o=e=>{let n=y(r+t-e.clientY);h(n),T(n)},s=()=>{document.body.style.cursor=i,document.body.style.userSelect=a,window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),n.current===s&&(n.current=null)};n.current=s,window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s,{once:!0}),window.addEventListener(`pointercancel`,s,{once:!0})};(0,_.useEffect)(()=>()=>n.current?.(),[]);let P=()=>{v(e=>{if(e.length>=S)return e;u.current+=1;let t=D(u.current);return C(t.id),[...e,t]})};(0,_.useEffect)(()=>{O!==A.current&&(A.current=O,P())},[O]);let F=e=>{v(n=>{let r=n.findIndex(t=>t.id===e);if(r===-1)return n;let i=n.filter(t=>t.id!==e);return i.length===0?(queueMicrotask(t),i):(x===e&&C(i[Math.max(0,r-1)]?.id??i[0]?.id??``),i)})},I=e=>{let t=E();v(n=>{let r=!1,i=n.map(n=>n.id===e?(r=!0,{...n,id:t,status:`starting`,exitCode:void 0}):n);return r&&C(t),i})},L=()=>{v([]),C(``),queueMicrotask(t)},R=(e,t)=>{v(n=>n.map(n=>n.id===e?{...n,...t}:n))},z=g.find(e=>e.id===x)??g[0]??null;return(0,b.jsxs)(`div`,{"data-terminal-dock":!0,style:{height:m},"data-shell":e?`desktop`:`browser`,className:p(`z-30 flex min-h-0 shrink-0 flex-col border-t border-border/70 bg-card shadow-2xl`,e&&`ws-terminal-desktop`),children:[(0,b.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,title:l(`activity:terminal.resize`),onPointerDown:N,className:`h-1.5 cursor-ns-resize bg-muted/70 transition-colors hover:bg-primary/35`}),(0,b.jsxs)(`div`,{className:p(`flex min-w-0 items-center justify-between gap-3 border-b border-border/70 bg-card/85`,e?`px-2 py-1`:`px-3 py-1.5`),children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-foreground`,children:[(0,b.jsx)(a,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,b.jsx)(`span`,{className:`font-medium`,children:l(e?`activity:terminal.labelSingular`:`activity:terminal.labelPlural`)}),(0,b.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:j||M||l(`activity:terminal.projectShell`)})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`button`,{type:`button`,onClick:P,disabled:g.length>=S,title:g.length>=S?l(`activity:terminal.maxTerminals`,{count:S}):l(`activity:terminal.newTerminal`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(r,{className:`h-4 w-4`})}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>z&&I(z.id),disabled:!z,title:l(`activity:terminal.restart`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(`button`,{type:`button`,onClick:L,disabled:g.length===0,title:l(`activity:terminal.closeAll`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(`button`,{type:`button`,onClick:t,title:l(`activity:terminal.closeDock`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,b.jsx)(o,{className:`h-4 w-4`})})]})]}),(0,b.jsx)(`div`,{className:p(`flex min-w-0 items-center gap-1 overflow-x-auto border-b border-border/70 bg-[hsl(var(--surface-2)/0.45)]`,e?`px-1.5 py-0.5`:`px-2 py-1`),children:g.map(t=>(0,b.jsxs)(`div`,{className:p(`group inline-flex items-center rounded border text-xs transition-colors`,e?`h-6 min-w-[92px] max-w-[148px]`:`h-7 min-w-[112px] max-w-[180px]`,x===t.id?`border-primary/35 bg-primary/10 text-primary`:`border-transparent bg-transparent text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,b.jsxs)(`button`,{type:`button`,onClick:()=>C(t.id),title:t.status===`exited`?`${t.name} exited`:t.name,className:`inline-flex min-w-0 flex-1 items-center gap-2 px-2 text-left`,children:[(0,b.jsx)(`span`,{className:p(`h-1.5 w-1.5 shrink-0 rounded-full`,t.status===`running`&&`bg-success`,t.status===`starting`&&`bg-primary`,t.status===`exited`&&`bg-destructive`)}),(0,b.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[t.name,t.status===`exited`&&typeof t.exitCode==`number`?` (${t.exitCode})`:``]})]}),(0,b.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),F(t.id)},className:`mr-1 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground opacity-70 hover:bg-accent hover:text-foreground hover:opacity-100`,title:l(`activity:terminal.closeTab`,{name:t.name}),children:(0,b.jsx)(o,{className:`h-3 w-3`})})]},t.id))}),M&&!e&&(0,b.jsx)(`div`,{className:`min-w-0 truncate border-b border-border/60 bg-muted/30 px-3 py-1 text-[11px] font-mono text-muted-foreground`,children:M}),(0,b.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:g.map(e=>(0,b.jsx)(k,{id:e.id,active:e.id===x,onRunning:()=>R(e.id,{status:`running`}),onExit:t=>R(e.id,{status:`exited`,exitCode:t})},e.id))})]})}function k({id:e,active:t,onRunning:n,onExit:r}){let i=(0,_.useRef)(null),a=(0,_.useRef)(null),o=(0,_.useRef)(null),s=(0,_.useRef)(n),c=(0,_.useRef)(r),d=m(e=>e.wsConnected);return(0,_.useEffect)(()=>{s.current=n,c.current=r},[r,n]),(0,_.useEffect)(()=>{let t=i.current;if(!t)return;let n=new g({fontFamily:`"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace`,fontSize:13,cursorBlink:!0,theme:x,scrollback:5e3}),r=new h;a.current=n,o.current=r,n.loadAddon(r),n.open(t);try{r.fit()}catch{}let d=u(m.getState().wsUrl);d.send({type:`terminal.create`,payload:{id:e,cols:n.cols,rows:n.rows}});let f=!1,p=d.on(`terminal.output`,t=>{t.type===`terminal.output`&&t.payload.id===e&&(f||(f=!0,s.current()),n.write(t.payload.data))}),_=d.on(`terminal.exit`,t=>{t.type===`terminal.exit`&&t.payload.id===e&&(n.write(`\r\n\x1b[2m${l.t(`activity:terminal.processExited`,{code:t.payload.exitCode})}\x1b[0m\r\n`),c.current(t.payload.exitCode))}),v=n.onData(t=>{d.send({type:`terminal.input`,payload:{id:e,data:t}})}),y=new ResizeObserver(()=>{if(t.offsetParent)try{r.fit(),d.send({type:`terminal.resize`,payload:{id:e,cols:n.cols,rows:n.rows}})}catch{}});return y.observe(t),()=>{p(),_(),v.dispose(),y.disconnect(),d.send({type:`terminal.close`,payload:{id:e}}),n.dispose(),a.current=null,o.current=null}},[e,d]),(0,_.useEffect)(()=>{t&&window.requestAnimationFrame(()=>{try{o.current?.fit();let t=a.current;t&&(u(m.getState().wsUrl).send({type:`terminal.resize`,payload:{id:e,cols:t.cols,rows:t.rows}}),t.focus())}catch{}})},[t,e]),(0,b.jsx)(`div`,{ref:i,className:p(`absolute inset-0 min-h-0 min-w-0 overflow-hidden px-2 py-1`,t?`block`:`hidden`)})}export{O as TerminalPanel};
@@ -1,5 +0,0 @@
1
- var e={chat:`Sitzung`,agents:`Agents`,history:`Verlauf`,files:`Dateien`,changes:`Änderungen`,mailbox:`Postfach`,skills:`Skills`,worktrees:`Worktrees`,design:`Design Studio`,officemap:`Bürokarte`,settings:`Einstellungen`,sddwizard:`Neues SDD-Projekt`,specs:`Spezifikationen`,sddboard:`Live-Board`,autophase:`Phasen`,fleet:`Fleet`,inspector:`Inspektor`,prompts:`Prompts`},t={returnToChat:`{{name}} — zurück zum Chat`,returnToChatDefault:`WrongStack — zurück zum Chat`},n={connected:`Verbunden`,disconnected:`Getrennt`,idle:`Inaktiv`,thinking:`Denkt nach`,running:`Läuft`,waiting:`Wartend`,done:`Fertig`,stopped:`Gestoppt`},r={moreWithHidden:`Mehr, {{count}} ausgeblendete Elemente`,moreOptions:`Weitere Optionen`,moreCompactHidden:`Mehr — {{count}} ausgeblendete Panels/Ansichten, Palette, Design, Monitore`,moreCompact:`Mehr — Palette, Design, Monitore`,moreFull:`Mehr — Palette, Design, Tastenkürzel, Monitore`,commandPalette:`Befehls-Palette`,keyboardShortcuts:`Tastenkürzel`,panels:`Panels`,views:`Ansichten`,theme:`Design`,monitors:`Monitore`,fleetMonitor:`Fleet-Monitor`,agentsMonitor:`Agents-Monitor`},i={dragHint:`Ziehen zum Skalieren · Doppelklick zum Zurücksetzen`,collapse:`Panel einklappen (Ctrl+\\)`},a={openDashboard:`Sitzungs-Dashboard öffnen`},o={pending:`ausstehend…`,empty:`Noch keine Agents`,emptyHint:`Subagents erscheinen hier, wenn die Fleet aktiv ist.`,runningCount:`{{count}} läuft`,totalCount:`{{count}} gesamt`,openFull:`Vollständige Agents-Ansicht öffnen`,agentsLive:`AGENTS · LIVE`,doneCount:`{{count}} fertig`,failedCount:`{{count}} fehlgeschlagen`,modelsLabel:`Modelle`,shownLabel:`angezeigt`,totalLabel:`gesamt`,leaderFleetTotals:`(Leader {{leader}} · Fleet {{fleet}})`,navHintJk:`j/k oder ↑↓ zum Navigieren`,escCloseDetail:`· Esc um Detail zu schließen`,noAgentsRunning:`Keine Agents aktiv.`,contextUsage:`Kontext-Nutzung`,lastToolLabel:`zuletzt:`,unknownSession:`Unbekannte Session`,sessionCopyTitle:`Session: {{sid}} — klicken zum Kopieren`,sessionWord:`Session`,agentsCountSuffix_one:`{{count}} Agent`,agentsCountSuffix_other:`{{count}} Agents`,sessionTitle:`Session: {{sid}}`,projectSuffix:` · Projekt: {{name}}`,statusIdle:`idle`},s={fileCount_one:`{{count}} Datei`,fileCount_other:`{{count}} Dateien`,refreshTitle:`Änderungen aktualisieren`,loading:`Änderungen werden geladen…`,clean:`Keine Änderungen — Arbeitsbaum ist sauber.`,selectPrompt:`Wähle eine geänderte Datei, um den Diff anzuzeigen.`,unified:`Vereinigt`,unifiedTitle:`Vereinigter Diff`,edit:`Bearbeiten`,editTitle:`Side-by-side bearbeitbarer Diff`,loadingDiff:`Diff wird geladen…`,diffTimeout:`Das Diff ist nicht angekommen. Die Datei wurde evtl. geändert oder die Verbindung getrennt.`,binary:`Binärdatei — Diff nicht angezeigt.`,tooLarge:`Datei zu groß für Diff.`},c={showPanel:`Inspektor-Panel anzeigen (Fleet / Agents / Audit)`,hidePanel:`Inspektor-Panel ausblenden`,label:`Inspektor`,openAudit:`Audit-Tab öffnen`,tabFleet:`Fleet`,tabAgents:`Agents`,tabAudit:`Audit`,collapseAria:`Inspektor-Panel einklappen`,collapseTitle:`Einklappen (Esc)`,noAgentsActive:`Keine Agents aktiv`,agentsAppearHint:`Agents erscheinen hier, wenn die Fleet aktiv ist.`,selected:`{{name}} (ausgewählt)`},l={header:`Nächste Schritte`,autoSubmitting:`automatisches Senden in`,clickToFill:`Klicken zum Ausfüllen`,clickToFillTitle:`Klicken zum Ausfüllen: {{text}}`,auto:`auto`,willAutoSubmit:`Wird nach Countdown automatisch gesendet`},u={onlineCount:`{{count}} online`,messages:`Nachrichten`,deleteAllTitle:`Alle Nachrichten löschen`,deleteAll:`Alle löschen`,deleting:`Wird gelöscht…`,purgeTitle:`Veraltete/verwaiste Nachrichten bereinigen`,purge:`Bereinigen`,purging:`Wird bereinigt…`,newLabel:`NEU`,empty:`Noch keine Nachrichten.`,offlineCount:`+{{count}} offline`,timeNow:`jetzt`,deleteAllConfirmTitle_one:`{{count}} Nachricht löschen?`,deleteAllConfirmTitle_other:`Alle {{count}} Nachrichten löschen?`,deleteAllConfirmBody:`Die Mailbox-Datei wird für jeden Agent abgeschnitten. Dies kann nicht rückgängig gemacht werden.`,purgeConfirmTitle:`Veraltete Nachrichten bereinigen?`,purgeConfirmBody:`Entfernt abgeschlossene Nachrichten älter als 1 Tag und unvollständige Nachrichten älter als 7 Tage. Aktive Nachrichten bleiben erhalten.`,type:{note:`Notiz`,ask:`Frage`,assign:`Zuweisung`,steer:`Lenken`,btw:`Nebenbei`,broadcast:`Rundruf`,status:`Status`,result:`Ergebnis`},emptyDetail:`Keine Nachricht ausgewählt`,emptyDetailHint:`Klicke im Mailbox-Panel auf eine Nachricht, um sie hier anzuzeigen.`,readBy:`Gelesen von`,backToChat:`Zurück zum Chat`,completed:`Erledigt`,everyone:`alle`,closeTitle:`Schließen (Esc)`,replyTo:`Antwort auf: {{id}}`,completedBy:`Von {{name}} erledigt`,completedByAt:`Von {{name}} am {{time}} erledigt`,outcome:`Ergebnis:`,task:`Aufgabe:`,messageNotFound:`Nachricht nicht gefunden`,messageNotFoundHint:`Diese Nachricht wurde möglicherweise gelöscht oder bereinigt.`},d={recentSessions:`Letzte Sitzungen`,deleteEmptyTitle_one:`{{count}} leere Sitzung löschen?`,deleteEmptyTitle_other:`{{count}} leere Sitzungen löschen?`,deleteEmptyConfirmBody:`Sitzungen ohne Token-Nutzung werden von der Festplatte entfernt.`,filterPlaceholder:`Titel, Modell, Anbieter filtern…`,clearFilter:`Filter löschen`,noHistory:`Noch kein Verlauf`,noHistoryHint:`Deine Konversationen erscheinen hier`,noMatches:`Keine Treffer`,noMatchesHint:`Versuche einen anderen Filter`,group:{favorites:`Favoriten`,today:`Heute`,yesterday:`Gestern`,thisWeek:`Diese Woche`,earlier:`Früher`},nicknamePlaceholder:`Spitzname`,empty:`(leer)`,resuming:`wird fortgesetzt…`,active:`aktiv`,renameTitleNickname:`{{nickname}} — original: {{title}}`,renameTitle:`{{title}}
2
-
3
- Doppelklick zum Umbenennen`,unfavorite:`Aus Favoriten entfernen`,markFavorite:`Als Favorit markieren`,deleteSessionConfirmTitle:`Sitzung löschen?`,deleteSessionConfirmBody:`"{{name}}" wird von der Festplatte entfernt. Dies kann nicht rückgängig gemacht werden.`,deleteSessionTitle:`Sitzung löschen`},f={actions:{abort:`Abbrechen`,newSession:`Neue Sitzung`,export:`Export`,compact:`Komprimieren`,newSessionTitle:`Neue Sitzung starten (Ctrl+N)`,exportTitle:`Chat als Markdown exportieren (Ctrl+E)`,compactTitle:`Kontextfenster komprimieren`,clearTitle:`Kontext löschen (Ctrl+L)`},model:`Modell`,modelTitle:`Modell ändern (Ctrl+M)`,context:`Kontext`,contextTitle:`Klicken für eine Kontextaufschlüsselung`,sessionLabel:`Sitzung`,stats:{messages:`Nachrichten`,elapsed:`Verstrichen`,tokens:`Tokens`,cost:`Kosten`,iteration:`Iteration`,agents:`Agents`,tokensSub:`{{in}} rein / {{out}} raus`,iterationOf:`von {{max}}`,agentsRunning:`{{count}} läuft`},plan:`Plan`,planComplete:`{{pct}}% fertig`,pinned:`Angeheftet`,quickSettings:`Schnelleinstellungen`,autonomy:`Autonomie`,autonomyOptions:{off:`Aus`,suggest:`Vorschlagen`,auto:`Auto`,eternal:`Endlos`,"eternal-parallel":`Endlos Parallel`},yolo:`YOLO-Modus`,yoloTitle:`Tool-Bestätigungsdialoge überspringen`,refine:`Prompts verfeinern`,refineTitle:`Prompts vor dem Senden umschreiben`,sound:`Ton bei Fertigstellung`,soundTitle:`Sanften Gong abspielen, wenn ein Lauf endet`,sessionId:`Sitzung {{id}}`},p={status:{running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`,timeout:`Zeitüberschreitung`,stopped:`gestoppt`},leader:`Leader`,providerModel:`Anbieter / Modell`,elapsed:`Verstrichen`,running:`läuft…`,iterations:`Iterationen`,toolCalls:`Tool-Aufrufe`,cost:`Kosten`,budgetExtensions:`Budget-Erweiterungen`,activity:`Aktivität`,budgetWarning:`Budget-Warnung`,contextWindow:`Kontextfenster`,tokensUsed:`{{used}} / {{max}} Tokens`,toolRunning:`läuft…`,lastTool:`letztes Tool`,error:`Fehler`,finalOutput:`Endgültige Ausgabe`,copyOutput:`Ausgabe kopieren`,liveOutput:`Live-Ausgabe`,waitingOutput:`Warte auf Ausgabe…`,outputHint:`Die Ausgabe erscheint hier, sobald der Agent Text streamt.`,toolLog:`Tool-Log ({{count}} Aufrufe)`,fail:`Fehlschlag`,moreTools:`+{{count}} weitere Tools`,cardRunning:`läuft {{tool}}`,cardLastTool:`zuletzt: {{tool}}`,contextPercent:`Kontext {{pct}}%`,doneCount:`{{count}} fertig`,errCount:`{{count}} Fehler`,statusRunning:`läuft`,statusDone:`fertig`,statusFailed:`fehlgeschlagen`,statusTimeout:`Timeout`,statusStopped:`gestoppt`,sessionPrefix:`Session:`,currentTask:`Aktuelle Task`,performance:`Performance`,uniqueTools:`Eindeutige Tools`,avgPerTool:`ø {{ms}}ms pro Tool`,context:`Kontext`,tokens:`Token`,ctxUsed:`{{pct}}% genutzt`,completed:`abgeschlossen`,budgetWarningTitle:`⚡ Budget-Warnung`,hittingLimit:`Erreicht {{kind}}-Limit ({{used}}/{{limit}})`,hittingLimitTitle:`⚡ erreicht {{kind}}-Limit ({{used}}/{{limit}})`,budgetExt_one:`{{count}} Budget-Erweiterung`,budgetExt_other:`{{count}} Budget-Erweiterungen`,extendedTimes_one:`Agent hat sein Budget {{count}}-mal wegen langer Tasks erweitert`,extendedTimes_other:`Agent hat sein Budget {{count}}-mal wegen langer Tasks erweitert`,errorLabel:`Fehler`,failureReason:`Fehlergrund`,failed:`Fehlgeschlagen`,fleetMonitor:`FLEET-MONITOR`,runningCount:`{{count}} läuft`,totalAgents_one:`{{count}} Agent gesamt`,totalAgents_other:`{{count}} Agents gesamt`,noLeader:`kein Leader`,closeFleet:`Fleet-Monitor schließen`,colName:`Name`,colStatus:`Status`,colActivity:`Aktivität`,colIters:`Iter.`,colTools:`Tools`,colCost:`Kosten`,colCtx:`CTX`,colExt:`Erw.`,colReason:`Grund`,noAgentsActive:`Keine Agents aktiv`,agentsAppear:`Agents erscheinen hier, wenn die Fleet aktiv ist.`,agentTimeline:`Agent-Zeitleiste`,noAgentEvents:`Noch keine Agent-Konversationsereignisse.`,navHint:`↑↓ navigieren`,selectDetailHint:`↵ Detail wählen`,escHint:`Esc Auswahl aufheben / schließen`,detailedView:`Detailansicht`,closeBtn:`✕ schließen`,selectAgentDetail:`Wähle einen Agent für detaillierte Informationen`,selectAgentBody:`Klicke einen Agent in der Liste für detaillierte Metriken, Tool-Logs, Streaming-Ausgabe und mehr — ähnlich der Chat-Verlauf-Detailansicht.`,navigateWord:`navigieren`,selectWord:`wählen`,deselectWord:`aufheben`},m={wsNotConnected:`WebSocket nicht verbunden`,noData:`Keine Debug-Daten empfangen. Der Server unterstützt möglicherweise kein Context-Debugging.`,title:`Kontext-Aufschlüsselung`,windowUsage:`Fensterauslastung`,contextMode:`Kontextmodus`,fetching:`Kontext-Aufschlüsselung wird geladen…`,systemPrompt:`System-Prompt`,tools:`Tools`,messages:`Nachrichten`,tokenAllocation:`Token-Verteilung`,systemTitle:`System: {{tokens}}`,toolsTitle:`Tools: {{tokens}}`,messagesTitle:`Nachrichten: {{tokens}}`,system:`System`,toolBreakdown:`Tool-Aufschlüsselung`,messagesSummary:`Nachrichten ({{count}}) — {{total}} Tok`,barWithTokens:`Kontextfenster: {{tokens}} / {{max}} Token ({{pct}})`,barPct:`Kontextfenster: {{pct}}`,barClick:` — für Aufschlüsselung klicken`},h={header:`✨ Prompt verfeinern`,autoSend:`Auto-Send in {{count}} s`,cancelTitle:`Abbrechen (Esc)`,editLabel:`Verfeinerten Prompt bearbeiten:`,editPlaceholder:`Verfeinerten Prompt bearbeiten ...`,useEdit:`Bearbeitung verwenden`,original:`Original`,refined:`Verfeinert`,yourLanguage:`(deine Sprache)`,refinedTitle:`Klicken oder Enter drücken, um diese Version zu verwenden`,english:`Englisch`,englishTitle:`e drücken, um die englische Version zu verwenden`,hintRefined:`verfeinert`,hintEnglish:`Englisch`,hintOriginal:`original`,hintEdit:`bearbeiten`,edit:`Bearbeiten`,useRefined:`Verfeinerte verwenden`},g={heading:`Spezifikationen`,subtitle:`Spezifikationsgetriebene Entwicklung anzeigen und verwalten`,empty:`Keine Specs gefunden. Mit {{command}} eine erstellen.`,tasks:`Aufgaben ({{count}})`,doneCount:`{{count}} erledigt`,runningCount:`{{count}} läuft`,pendingCount:`{{count}} ausstehend`,runTitle:`Dieses Spec als Live-AutoPhase-Board ausführen`,run:`Ausführen`,list:`Liste`,graph:`Graph`,loadingTasks:`Aufgaben werden geladen…`},_={heading:`F5-Resilienz-Prüfer`,subtitle:`Bestätigt, dass die letzte aktive Sitzung, das Transkript und der UI-Zustand einen Page-Refresh überstehen. Öffne diese Ansicht und drücke F5 — jede grüne Zeile sollte grün bleiben.`,recordProbe:`Probe aufzeichnen`,latestSession:`Letzte aktive Sitzung`,restoredLocal:`Aus localStorage wiederhergestellt`,sessionIdExtra:`Session-ID: {{id}}`,noSessionYet:`es wurde noch keine Sitzung gestartet`,activePointer:`Aktiver Session-Zeiger`,lastVisited:`lastVisitedAt-Zeitstempel`,never:`nie`,persistedEnv:`Persistierte Umgebung`,transcriptRehydrate:`Chat-Transkript-Rehydratation`,localTranscript:`Lokales Transkript wiederhergestellt`,messagesExtra:`{{count}} Nachrichten, {{queued}} in Warteschlange`,noMessages:`0 Nachrichten`,noBleed:`Kein Session-Übergriff`,bleedExtra:`gebunden={{bound}} vs aktiv={{active}}`,transcriptBinds:`Transkript bindet an die aktive Sitzung`,uiWorkspace:`UI-Workspace`,noneValue:`(keine)`,payloadSize:`localStorage-Payload (4 Schlüssel): {{count}} Zeichen`,probeLog:`Probe-Protokoll`,noProbes:`Noch keine Probes — drücke oben "Probe aufzeichnen" oder F5 in dieser Ansicht, um einen Rehydratations-Check aufzuzeichnen.`,simulatedF5:`simuliertes F5: persist rehydrate erneut ausführen`},v={status:{pending:`Ausstehend`,in_progress:`In Arbeit`,review:`Review`,failed:`Fehlgeschlagen`,completed:`Erledigt`,queued:`In Warteschlange`,blocked:`Blockiert`,cancelled:`Abgebrochen`},newTaskTitle:`Neue Aufgabe`,newTaskPlaceholder:`Aufgabentitel…`,addTask:`Aufgabe hinzufügen`,empty:`Noch keine Phasen — starte einen AutoPhase-Lauf, um das Board zu füllen.`,summary:`{{phases}} Phasen · {{tasks}} Aufgaben`,phases:`Phasen`,statusTab:`Status`,dropHere:`Aufgaben hier ablegen`,emptySpec:`Noch keine Aufgaben in dieser Spec.`,depGraphHeading:`Abhängigkeitsgraph`,worktreePrefix:`Worktree: {{branch}}`},y={trendUp:`Steigend`,trendDown:`Fallend`,trendStable:`Stabil`,heading:`Debug-Dashboard`,subtitle:`Echtzeit-Monitoring für WrongStack WebUI`,refreshLabel:`Aktualisieren:`,lastUpdated:`Zuletzt aktualisiert: {{time}}`,fetchFailed:`Metriken konnten nicht abgerufen werden`,fileWatcher:`File-Watcher`,watcherStatus:`Watcher-Status`,running:`Läuft`,stopped:`Gestoppt`,activeProjects:`Aktive Projekte`,projectsWatched:`Überwachte Projekte`,fileChanges:`Dateiänderungen`,totalDetected:`Gesamt erkannt`,filesProcessed:`Verarbeitete Dateien`,afterHash:`Nach Hash-Filter`,broadcastsSent:`Gesendete Broadcasts`,toClients:`An WebUI-Clients`,debounceResets:`Debounce-Zurücksetzungen`,rapidWrites:`Schnelle aufeinanderfolgende Schreibvorgänge`,avgDebounce:`Ø Debounce-Verzögerung`,actualDelay:`Tatsächliche Verzögerung`,totalDelay:`Gesamtverzögerung`,sumDelays:`Summe aller Verzögerungen`,browserPerf:`Browser-Leistung`,heapUsed:`Heap verwendet`,jsHeap:`JavaScript-Heap`,heapTotal:`Heap gesamt`,totalHeap:`Gesamte Heap-Größe`,pageUptime:`Seiten-Laufzeit`,sinceLoad:`Seit Seitenladung`,rawData:`Rohdaten`},b={using:`Verwendet`,noModelPicked:`(kein Modell gewählt)`,clearAllowlist:`Allowlist löschen`,clearAllowlistAria:`Gespeicherte Allowlist für {{provider}} löschen`,refresh:`Vom Server aktualisieren`,refreshAria:`Modellliste für {{provider}} aktualisieren`,probing:`Prüfe…`,use:`Verwenden`,useModelAria:`Modell {{model}} für {{provider}} verwenden`,differsHint:`Die geprüfte Liste weicht von der gespeicherten Allowlist ab — führe {{command}} erneut aus, um zu speichern.`},x={expandChip:`{{label}} ausklappen`,collapseChip:`{{label}} einklappen`,ahead:`{{count}} voraus`,behind:`{{count}} hinterher`,linesAdded:`{{count}} Zeilen hinzugefügt`,linesDeleted:`{{count}} Zeilen gelöscht`,untrackedFiles:`{{count}} unversionierte Dateien`,customizeTitle:`Dock-Chips anpassen`,dockChips:`Dock-Chips`,noActiveGoal:`Kein aktives Ziel`,noActiveGoalDetail:`Starte ein Ziel aus dem Chat oder dem Goal-Befehl.`},S={leaderBadge:`LEADER`,iters:`Iter.`,tools:`Tools`,activityBins:`Aktivität (12 Bins)`,streamingOutput:`Streaming-Ausgabe`,recentTools:`Letzte Tools`,finalOutput:`Endgültige Ausgabe`,heading:`Agents-Monitor`,prevAgent:`Vorheriger Agent`,nextAgent:`Nächster Agent`,closeAria:`Agents-Monitor schließen`,hintPage:`←→ Seite`,hintNavigate:`↑↓ Liste navigieren`,hintEsc:`Esc schließen`},C={resize:`Terminals skalieren`,labelSingular:`Terminal`,labelPlural:`Terminals`,projectShell:`Projekt-Shell`,maxTerminals:`Maximal {{count}} Terminals`,newTerminal:`Neues Terminal`,restart:`Aktives Terminal neu starten`,closeAll:`Alle Terminals schließen`,closeDock:"Terminal-Dock schließen (Ctrl+`)",closeTab:`{{name}} schließen`,processExited:`[Prozess mit Code {{code}} beendet]`},w={liveStream:`Live-Stream`,events_one:`{{count}} Ereignis`,events_other:`{{count}} Ereignisse`,interruptTitle:`Diesen Agenten kooperativ beim nächsten Schritt stoppen (kein Process-Kill)`,interrupt:`⏸ Unterbrechen`,interrupting:`…`,loading:`Sitzung wird geladen…`,done:`✓✓ erledigt`,read:`✓ gelesen`,delivered:`⏳ zugestellt`,agent:`Agent`,you:`Du`,working:`{{name}} · arbeitet`,claude:`Claude`,priority:`Priorität`,placeholder:`{{label}} → an diese Sitzung…`,send:`Senden`,sendHint:`⌘/Ctrl+Enter zum Senden · beim nächsten Iterationsschritt des Agenten sichtbar`,msgType:{steerLabel:`🔄 Lenken`,steerHint:`Verhalten während der Aufgabe anpassen`,askLabel:`❓ Fragen`,askHint:`Frage — erwartet eine Antwort`,assignLabel:`📋 Zuweisen`,assignHint:`Eine zu erledigende Aufgabe`,noteLabel:`💬 Notiz`,noteHint:`Zur Info, nicht dringend`},sentRunning:`Zugestellt — der laufende Agent sieht es beim nächsten Schritt`,sentIdle:`Zugestellt — Ziel ist inaktiv; erscheint im Postfach, gelesen beim nächsten Lauf`,sentFailed:`Fehlgeschlagen: {{error}}`,interruptReason:`Operator hat Stopp aus Fleet HQ angefordert`,interruptSent:`Unterbrechung gesendet — Agent stoppt beim nächsten Schritt (kein Kill)`,interruptFailed:`Unterbrechung fehlgeschlagen: {{error}}`},T={empty:`Noch keine Seiteneffekte aufgezeichnet.`,emptyHint:`Bash-Befehle, Paketinstallationen und Netzwerkanfragen erscheinen hier.`,heading:`Seiteneffekte`,exportTitle:`Gefilterte Seiteneffekte als CSV exportieren`,all:`Alle`,colTime:`Zeit`,colTool:`Tool`,colRisk:`Risiko`,colDetail:`Detail`,colOutcome:`Ergebnis`},E={elapsedHm:`vor {{h}}h {{m}}m`,elapsedMs:`vor {{m}}m {{s}}s`,elapsedS:`vor {{s}}s`,heading:`Fleet-Monitor`,clientsHeading:`Verbundene Clients`,terminal:`Terminal`,webui:`Web-UI`,repl:`REPL`,totalConnected:`insgesamt verbunden`,mailQueue:`Mail-Warteschlange`,total:`Gesamt`,open:`Offen`,unread:`Ungelesen`,agents:`Agents`,messagesSub:`Nachrichten`,uncompletedSub:`unabgeschlossen`,waitingSub:`wartend`,ofTotal:`von {{count}} gesamt`,agentRoster:`Agenten-Roster`,liveMailActivity:`Live-Mail-Aktivität`,noActivity:`Keine aktuelle Aktivität`,mailboxAgents:`Mailbox-Agents`,noMailboxAgents:`Keine Agents registriert`,moreCount:`+{{count}} weitere`,agentFallback:`Agent`,fleetAgents:`Fleet-Agents`,noFleetAgents:`Keine Fleet-Agents aktiv`,iter:`Iter.`,mailType:{sent:`Gesendet`,delivered:`Zugestellt`,read:`Gelesen`,completed:`Abgeschlossen`}},D={status:{pending:`ausstehend`,queued:`in Warteschlange`,in_progress:`läuft`,blocked:`blockiert`,review:`Review`,failed:`fehlgeschlagen`,completed:`erledigt`,cancelled:`abgebrochen`},activityHeading:`Aktivität`,feedEmpty:`Noch nichts — Ereignisse erscheinen hier, sobald Agents Aufgaben übernehmen und abschließen.`,destroyTitle:`SDD-Projekt zerstören?`,destroyDesc:`Das löscht den Run und seine Arbeit. Nicht rückgängig zu machen (das optionale Commit-Revert ist historienwahrend).`,stopRun:`Run stoppen`,stopRunAgents_one:`Run stoppen ({{count}} Agent arbeitet)`,stopRunAgents_other:`Run stoppen ({{count}} Agents arbeiten)`,removeWorktreesAll:`Alle Git-Worktrees + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,removeWorktreesCount_one:`{{count}} Git-Worktree + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,removeWorktreesCount_other:`{{count}} Git-Worktrees + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,deleteArtifacts:`Alle SDD-Artefakte löschen (Specs, Task-Graph, Board, Session)`,revertMerged_one:`Auch {{count}} gemergtes Commit revertieren`,revertMerged_other:`Auch {{count}} gemergte Commits revertieren`,revertHint:`Fügt Revert-Commits hinzu (Historie bleibt). Wird verweigert, wenn der Working Tree dirty ist.`,baseBranchFallback:`der Basis-Branch`,noteLeaveMerged:`Gemergte Commits bleiben auf dem Basis-Branch. Setze den Haken oben, um sie auch rückgängig zu machen.`,noteAbandon:`Stelle sicher, dass du diesen Run wirklich aufgeben willst.`,destroying:`Zerstöre…`,destroyAll:`Alles zerstören`,kanbanBacklog:`Backlog`,kanbanReady:`Bereit`,kanbanRunning:`Läuft`,kanbanReview:`Review`,kanbanFailed:`Fehlgeschlagen`,kanbanDone:`Erledigt`,kanbanEmpty:`leer`},O={collapseToLines:`Auf erste {{count}} Zeilen einklappen`,showAllLines:`Alle {{total}} Zeilen anzeigen ({{more}} mehr)`,exitCode:`Exit-Code:`,jsonLines:`JSON · {{count}} Zeilen`,collapse:`einklappen`,expand:`ausklappen`},k={heading:`Design Studio — Galerie`,kitsCount:`{{count}} Kits`,searchPlaceholder:`Kits suchen…`,stackTitle:`Stack für Use + Materialize`,wrote:`{{path}} geschrieben`,materializeFailed:`Materialize fehlgeschlagen: {{error}}`,verifyError:`Prüfen: {{error}}`,verifyOffPalette:`Prüfen: {{pct}}% on-palette — {{count}} off-palette in {{files}} Datei(en)`,verifyClean:`Prüfen: sauber ✓ ({{files}} Datei(en) on-palette)`,writing:`Theme-Datei wird geschrieben…`,scanning:`UI-Dateien werden gescannt…`,active:`Aktiv`,reapply:`Erneut anwenden`,use:`Verwenden`,materializeTitle:`Tokens in eine {{stack}}-Theme-Datei schreiben`,materialize:`Materialisieren`,verifyTitle:`UI-Dateien auf Off-Palette-Farben prüfen`,verify:`Prüfen`,colors:`Farben`},A={summary_one:`{{count}} Phase · {{pct}}% fertig`,summary_other:`{{count}} Phasen · {{pct}}% fertig`,switchBoard:`Board wechseln`,boardsCount_one:`{{count}} Board…`,boardsCount_other:`{{count}} Boards…`,toggleAutonomousTitle:`Autonomen Modus umschalten`,autonomous:`Autonom`,manual:`Manuell`,resumeTitle:`Lauf fortsetzen`,pauseTitle:`Lauf pausieren`,resume:`Fortsetzen`,pause:`Pausieren`,stopTitle:`Lauf stoppen — bricht laufende Agents sofort ab`,stop:`Stopp`,newTitle:`Dieses Board löschen und einen neuen AutoPhase-Lauf starten`,newLabel:`Neu`,revertConfirm:`Commits des Laufs zurücksetzen?`,revertTitle:`Diesen Lauf zurücknehmen — gelandete Commits per git-revert und Worktrees entfernen`,revert:`Zurücknehmen`,goal:`Ziel`,planning:`Phasen werden geplant…`,planningBody:`Dein Ziel wurde empfangen. WrongStack zerlegt es in Phasen und Aufgaben — das Board erscheint hier, sobald der Plan steht.`,startHeading:`Phasenplan starten`,startBody:`Beschreibe, was du bauen willst. WrongStack plant Phasen und Aufgaben und führt sie aus — beobachte und lenke den Lauf auf dem Board.`,startPlaceholder:`z.B. Eine REST-API für Benutzerverwaltung mit Express und SQLite bauen...`,isolateLabel:`Jede Phase im eigenen Git-Worktree isolieren`,startButton:`AutoPhase starten`,ctrlHint:`Ctrl+Enter zum Starten`,isolateOn:`Phasen laufen in isolierten Worktrees, squash-merged zurück`,isolateOff:`Phasen laufen direkt auf dem aktuellen Branch`,lanes:`Spuren`,graph:`Graph`,planningAck:`🚀 **AutoPhase** — verstanden. Plane Phasen für dein Ziel…`},j={noObservers:`Keine Live-Beobachter`,observerTitle:`Als nur-lesen-Beobachter beitreten (Phase 1)`,observerRole:`Beobachter`,annotatorTitle:`Als Annotator beitreten — hinterlasse Notizen zu Tool-Aufrufen (Phase 2)`,annotatorRole:`Annotator`,controllerTitle:`Als Controller beitreten — kann die Agent-Schleife pausieren (Phase 3)`,controllerRole:`Controller`,errorPrefix:`Collab: {{error}}`,dismiss:`verwerfen`,observers_one:`{{count}} Beobachter`,observers_other:`{{count}} Beobachter`,annotationsTitle:`{{count}} offene Anmerkung(en) — Annotatoren prüfen diese Sitzung`,notes_one:`{{count}} Notiz`,notes_other:`{{count}} Notizen`,pausedTitle:`Agent-Schleife pausiert — ein Controller prüft`,paused:`pausiert`,joinedTitle:`Beigetreten {{time}}`,grantTitle:`Kontrolle geben — diesen Teilnehmer zum Controller befördern`,injectTitle:`Ein synthetisches Ergebnis für einen laufenden Tool-Aufruf injizieren`,inject:`Injizieren`,resumeTitle:`Agent-Schleife fortsetzen`,resume:`Fortsetzen`,pauseTitle:`Agent vor dem nächsten Tool-Aufruf pausieren`,pauseAgent:`Agent pausieren`,leaveTitle:`Beobachter-Sitzung verlassen`,leave:`Verlassen`,injectToolResult:`Tool-Ergebnis injizieren`,close:`schließen`,targetTool:`Ziel-tool_use-id`,targetPlaceholder:`laufenden Aufruf wählen oder tool_use-id eingeben`,toolFallback:`Tool`,noPendingTools:`Keine laufenden Tool-Aufrufe — gib eine tool_use-id ein oder pausiere den Agent zuerst.`,resultContent:`Ergebnisinhalt`,resultPlaceholder:`Synthetisches Tool-Ergebnis, das dem Agent statt der Ausführung zugeführt wird`,markError:`als Fehler markieren`,reasonPlaceholder:`Grund (Audit-Log)`,queueInjection:`Injektion einreihen`,controllerInjection:`Controller-Injektion`},M={reconnecting:`Verbinde erneut mit Backend (Versuch {{attempt}}) — erneut in {{remaining}} s`,disconnected:`Verbindung zum Backend getrennt`,retry:`Jetzt erneut versuchen`,retryTitle:`Verbindung jetzt erneut versuchen`,dismissTitle:`Verwerfen (Chip in der Topbar zeigt weiterhin den Status)`},N={modePrefix:`Modus:`,activeTitle:`Aktiver Modus`,heading:`Modus`,defaultName:`Standard`,defaultDesc:`Standard-Agent-Verhalten`},P={clickTitle:`Klicken für Kostenaufschlüsselung pro Zug`,heading:`Kostenaufschlüsselung`,noPricing:`Keine Preisgebung für das aktuelle Modell — Kostenwerte sind null.`,noTurns:`Noch keine abgeschlossenen Züge. Führe einen Prompt aus, um hier die Kosten pro Zug zu sehen.`,topExpensive_one:`Teuerster Zug`,topExpensive_other:`Die {{count}} teuersten Züge`},F={runDefault:`Run-Standard`,useRunDefault:`Run-Standard verwenden`,filterPlaceholder:`Modelle filtern…`,loading:`Modelle werden geladen…`,noMatch:`Kein Treffer`},I={filterPlaceholder:`Anbieter und Modelle filtern…`,noSavedProviders:`Keine gespeicherten Anbieter — zuerst einen Schlüssel in den Einstellungen registrieren.`,active:`aktiv`},L={todos:`Todos`,tasks:`Aufgaben`,plan:`Plan`},R={toggleAria:`Umschalten: {{content}}`,removeTitle:`Todo entfernen`,removeAria:`"{{content}}" entfernen`,completedCount_one:`{{count}} erledigt`,completedCount_other:`{{count}} erledigt`},z={start:`Starten`,complete:`Abschließen`,retry:`Erneut versuchen`,assign:`Zuweisen`,assignTitle:`Agent zuweisen`,unassigned:`Nicht zugewiesen`,statusPending:`Ausstehend`,statusInProgress:`In Arbeit`,statusBlocked:`Blockiert`,statusFailed:`Fehlgeschlagen`,statusReview:`Review`,statusDone:`Erledigt`,startTitle:`Starten`,completeTitle:`Abschließen`,fail:`Fehlschlagen`,failTitle:`Als fehlgeschlagen markieren`,boardCount:`{{total}} Aufgaben · {{done}} erledigt`},B={toolCalls_one:`{{count}} Werkzeugaufruf`,toolCalls_other:`{{count}} Werkzeugaufrufe`},V={removeTitle:`Referenz entfernen`,linesCount_one:`{{count}} Zeile`,linesCount_other:`{{count}} Zeilen`},H={statusOpen:`Offen`,statusInProgress:`In Arbeit`,statusDone:`Erledigt`,startTitle:`Starten`,doneTitle:`Als erledigt markieren`,reopenTitle:`Wieder öffnen`,reopen:`Wieder öffnen`},U={heading:`@ Dateien`,noMatch:`Keine Dateien passen zu „{{query}}“`,searching:`Projekt wird durchsucht…`},W={dismiss:`Verwerfen`},G={placeholder:`Im Chat suchen…`,prevHit:`Vorheriger Treffer`,nextHit:`Nächster Treffer`,close:`Schließen (Esc)`},K={statusPending:`Ausstehend`,statusReady:`Bereit`,statusRunning:`Läuft`,statusPaused:`Pausiert`,statusCompleted:`Abgeschlossen`,statusFailed:`Fehlgeschlagen`,statusSkipped:`Übersprungen`,heading:`Phasen`,autonomousOn:`● Autonom`,autonomousOff:`○ Manuell`,autonomousOnTitle:`Autonomer Modus aktiv — klicken zum Pausieren`,autonomousOffTitle:`Manueller Modus — klicken zum Aktivieren des autonomen Modus`,overallProgress:`Gesamtfortschritt`,tasksSuffix:`{{done}}/{{total}} Aufgaben`,agentsSuffix_one:`{{count}} Agent`,agentsSuffix_other:`{{count}} Agents`},q={triggerTitle:`Kontextfenster-Modus`,ctxPrefix:`ctx:`,opsHeading:`Kontextoperationen`,compactNow:`Jetzt komprimieren`,compactNowDesc:`Alte Tool-Ausgaben kürzen`,compactAggressive:`Aggressiv komprimieren`,compactAggressiveDesc:`Maximale Kürzung jetzt`,repairContext:`Kontext reparieren`,repairDesc:`Verwaiste Tool-Use-Blöcke beheben`,debugContext:`Kontext debuggen`,debugDesc:`Größenaufschlüsselung pro Abschnitt`,windowHeading:`Kontextfenster`,keepElide:`{{k}} letzte behalten · {{t}}+ Token kürzen`,fallbackName:`Ausgeglichen`,fallbackDesc:`Standard-Rolling-Komprimierung`},J={kindAssistant:`Assistent`,kindThinking:`Denken`,kindToolCall:`Werkzeugaufruf`,kindToolResult:`Werkzeugergebnis`,kindError:`Fehler`,kindStatus:`Status`,kindSystem:`System`,title:`Chat-Verlauf`,copyTitle:`Agenten-Chatverlauf kopieren`,empty:`Noch kein Chat-Verlauf für diesen Agenten.`},Y={heading:`Autonomiemodus`,titlePrefix:`Autonomie: {{label}}`,descOff:`Volle manuelle Kontrolle — Agent wartet auf deine Eingabe.`,descSuggest:`Agent schlägt nächste Schritte vor, wartet aber auf Genehmigung.`,descAuto:`Agent setzt nach kurzer Bestätigungsverzögerung automatisch fort.`,descEternal:`Agent läuft autonom, bis das Ziel erreicht ist.`,descEternalParallel:`Multi-Agenten autonome Ausführung — Fleet-Modus.`},X={heading:`Nachrichtenwarteschlange`,subtitle:`{{count}} in Warteschlange · Nachrichten werden gesendet, bevor der Agent fertig ist`,btwTitle:`Nebenbei — als Folgenachricht gesendet, ohne den laufenden Agent zu unterbrechen`,steerTitle:`Lenken — unterbricht den laufenden Agent und leitet ihn mit dieser Nachricht um`,queueTitle:`Eingereiht — zurückgehalten bis der aktuelle Agent-Lauf endet, dann in Reihenfolge gesendet`,sortNewestTitle:`Nach neuesten sortiert — klicken für älteste zuerst`,sortOldestTitle:`Nach ältesten sortiert — klicken für neueste zuerst`,newest:`Neueste`,oldest:`Älteste`,clear:`Leeren`,clearTitle:`Alle Nachrichten aus der Warteschlange löschen`,closeTitle:`Schließen`,emptyTitle:`Warteschlange ist leer`,emptyBody:`Nutze die btw-/steer-/„Zur Warteschlange“-Schaltflächen neben der Eingabe, um Nachrichten hinzuzufügen. Eingereihte Einträge werden in Reihenfolge gesendet, wenn der aktuelle Agent-Lauf endet.`,removeTitle:`Aus Warteschlange entfernen`,footer:`Nachrichten werden in Ankunftsreihenfolge gesendet, wenn der aktuelle Agent-Lauf endet. Nutze die Sortierung, um neueste zuerst zu sehen.`},Z={heading:`Sitzungs-Checkpoints`,countSuffix_one:`{{count}} Checkpoint`,countSuffix_other:`{{count}} Checkpoints`,description:`Sitzung zu einem beliebigen Checkpoint zurückspulen. Nachrichten und Dateiänderungen kehren zu diesem Punkt zurück — das LLM setzt von dort fort, als wäre nichts danach passiert.`,emptyTitle:`Noch keine Checkpoints`,emptyBody:`Checkpoints werden automatisch bei jeder gesendeten Nachricht erstellt. Sende ein paar Nachrichten und komme zurück.`,latest:`aktuell`,msgSuffix_one:`{{count}} Nachricht`,msgSuffix_other:`{{count}} Nachrichten`,footerPre:`Beliebigen Checkpoint zum Zurückspulen klicken`,footerPost:`zum Schließen`},Q={statusActive:`Aktiv`,statusPaused:`Pausiert`,statusDone:`Erledigt`,statusFailed:`Fehlgeschlagen`,statusAbandoned:`Aufgegeben`,heading:`Ziel`,refined:`Verfeinert`,progress:`Fortschritt`,iterations:`Iterationen`,deliverables:`Lieferobjekte`,recentActivity:`Letzte Aktivität`},$={cleanTitle_one:`{{count}} verwaisten Worktree entfernen?`,cleanTitle_other:`{{count}} verwaiste Worktrees entfernen?`,cleanMessage:`Entfernt jeden übriggebliebenen Git-Worktree + wstack/ap-Branch vorheriger Läufe zwangsweise. Nicht gemergte Arbeit darin geht verloren.`,cleanConfirm:`Verwaiste entfernen`,orphanCount_one:`{{count}} verwaister Worktree aus vorherigen Läufen`,orphanCount_other:`{{count}} verwaiste Worktrees aus vorherigen Läufen`,andMore:`…und {{count}} weitere`,cleanButtonTitle:`Alle verwaisten Worktrees + Branches zwangsweise entfernen`,removed_one:`✓ {{count}} verwaister Worktree entfernt.`,removed_other:`✓ {{count}} verwaiste Worktrees entfernt.`,cleanupFailed:`Bereinigung fehlgeschlagen`,lanesHeading:`Worktrees`,base:`Basis`,isolatedCount_one:`{{count}} isoliert`,isolatedCount_other:`{{count}} isoliert`,statusAllocating:`zuweisend`,statusActive:`aktiv`,statusCommitting:`committend`,statusMerging:`mergend`,statusMerged:`gemergt`,statusConflict:`Konflikt`,statusFailed:`fehlgeschlagen`,conflictBadge:`KONFLIKT`,graphAria:`Worktree-Branch-Graph ab {{base}}`,mergedLabel:`✓ gemergt → {{base}}`},ee={heading:`Laufende Prozesse`,subtitle:`{{active}} aktiv · {{total}} gesamt`,killAll:`Alle beenden`,emptyTitle:`Keine Prozesse verfolgt`,emptyBody:`Prozesse erscheinen hier, wenn der Agent bash- oder exec-Tools ausführt. Aktive Prozesse zeigen eine pulsierende LED.`,pidLabel:`PID {{pid}}`,protected:`geschützt`,protectedTitle:`Geschützt — überlebt kill/killAll`,killTitle:`PID {{pid}} beenden`},te={tooLarge:`Diff ausgelassen (Datei zu groß für die Inline-Darstellung).`},ne={placeholder:`Ausweichmodell hinzufügen…`,emptyHint:`Wird in Reihenfolge versucht, wenn das primäre Modell ratelimitiert oder hängt.`,moveUp:`Nach oben`,moveDown:`Nach unten`,manualPlaceholder:`anbieter/modell`,addTitle:`Modellreferenz hinzufügen`},re={loading:`Sitzungen werden geladen...`,apiUnavailable:`Sitzungs-API nicht verfügbar:`,empty:`Keine Live-Sitzungen. Öffne eine weitere wstack-Instanz, um sie hier zu sehen.`,heading:`Live-Sitzungen ({{count}})`,autoRefresh:`Auto-Aktualisierung alle 5 s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} Iterationen · {{tools}} Tools · {{ago}}`,andMore:`... und {{count}} weitere`,noAgents:`Keine Agents`},ie={applyTitle:`Die bearbeitete Version auf die Festplatte schreiben`,applying:`Anwenden…`,applied:`Angewandt`,apply:`Anwenden`},ae={showStack_one:`Stack-Trace zeigen ({{count}} Frame)`,showStack_other:`Stack-Trace zeigen ({{count}} Frames)`,hideStack_one:`Stack-Trace verbergen ({{count}} Frame)`,hideStack_other:`Stack-Trace verbergen ({{count}} Frames)`},oe={liveHeading:`Live`,clients:`Clients`,agents:`Agents`,model:`Modell`,mode:`Modus`,toolCalls:`Tool-Aufrufe`,displayHeading:`Anzeige`,statsHud:`Stats-HUD`,legends:`Legenden`,minimap:`Minimap`,zoomControls:`Zoom-Steuerung`,animateWires:`Kabel animieren`,backgroundHeading:`Hintergrund`,bgDots:`Punkte`,bgLines:`Linien`,bgCross:`Kreuz`,bgNone:`Keine`},se={noParams:`(keine Parameter)`,itemCount_one:`{{count}} Element`,itemCount_other:`{{count}} Elemente`,keyCount_one:`{{count}} Schlüssel`,keyCount_other:`{{count}} Schlüssel`},ce={roleYou:`Du`,roleTool:`Tool`,roleThinking:`Denken`,roleAssistant:`Assistent`,inputLabel:`Eingabe`,downloadTitle:`Als Datei herunterladen`,empty:`(leer)`,hideDetails:`Details verbergen`,showDetails:`Details zeigen`,showDetailsLines_one:`Details zeigen ({{count}} Zeile)`,showDetailsLines_other:`Details zeigen ({{count}} Zeilen)`,editHint:`⌘/Ctrl+Enter zum Speichern · Esc zum Abbrechen`,saveResend:`Speichern & erneut senden`,thinkingProcess:`Denkprozess`,thinkingMeta:`Iter {{iter}} · {{dur}} · {{lines}}`,replay:`Replay`,linesSuffix_one:`{{count}} Zeile`,linesSuffix_other:`{{count}} Zeilen`,copyLog:`Log kopieren`,showFullLog:`Vollständiges Log zeigen`,typing:`Tippt…`,noContent:`Kein Inhalt`,failedToSend:`⚠ Senden fehlgeschlagen`,autoPaused:`⚠️ _Auto-Fortsetzen pausiert — maximale aufeinanderfolgende automatische Züge erreicht. Tippe etwas zum Fortfahren (Autonomie bleibt an)._`,rsIterations:`Iterationen: {{n}}`,rsTools:`Tool-Aufrufe: {{n}}`,rsElapsed:`Verstrichen: {{s}}`,rsCost:`Kosten: {{c}}`,useInput:`Eingabe: {{n}}`,useOutput:`Ausgabe: {{n}}`,useCacheRead:`Cache-Lesung: {{n}}`,useCost:`Kosten: {{c}}`,renderedLabel:`Gerendert`,rawLabel:`Raw`,showRenderedTitle:`Gerendertes Markdown zeigen`,showRawTitle:`Raw-Markdown-Quelle zeigen`,editTitle:`Diesen Prompt bearbeiten & erneut senden`,editLabel:`Bearbeiten`,unpinTitle:`Lösen`,pinTitle:`Diese Antwort anheften`,pinnedLabel:`Angeheftet`,pinLabel:`Anheften`,regenerateTitle:`Diese Antwort neu generieren`,retryLabel:`Erneut versuchen`},le={toolFallback:`Tool`,toolFailed:`Tool fehlgeschlagen`},ue={heading:`Tastaturkürzel`,footerPre:`Jederzeit`,footerPost:`drücken, um diese Liste wieder zu öffnen.`,sectionGlobal:`Global`,sectionTuiParity:`TUI-Panel-Parität`,sectionFleet:`Fleet & Agents`,sectionChatInput:`Chat-Eingabe`,sectionChat:`Chat`,sectionChatNav:`Chat-Navigation (beim Nicht-Tippen)`,dCommandPalette:`Befehls-Palette öffnen`,dShowOverlay:`Diese Kürzel-Overlay zeigen`,dToggleSidebar:`Seitenleiste umschalten`,dOpenPanel:`Seitenleiste öffnen (Session, Agents, Verlauf, Dateien, Changes, Mailbox, Skills, Office Map)`,dDesignStudio:`Design-Studio-Seitenleiste öffnen`,dWorktrees:`Worktree-Seitenleiste öffnen`,dFocusInput:`Nachrichteneingabe fokussieren`,dSessionPanel:`Session-Panel`,dFleetOverlay:`Fleet-Monitor-Overlay`,dAgentsOverlay:`Agents-Monitor-Overlay`,dWorktreeMonitor:`Worktree-Monitor`,dPlanPanel:`Plan-Panel`,dTodosPanel:`Todos-Panel`,dQueuePanel:`Queue-Panel`,dProcessMonitor:`Prozess-Monitor`,dGoalPanel:`Ziel-Panel`,dSessionsDashboard:`Session-Dashboard`,dOfficeMap:`Koordinator-Office-Map`,dDockPicker:`Dock-Chip-Wähler`,dOpenFleet:`Fleet-Monitor-Overlay öffnen`,dOpenAgents:`Agents-Monitor-Overlay öffnen`,dNavigateAgents:`Agents im Monitor navigieren`,dSelectAgent:`Fokussierten Agent wählen`,dCloseOverlay:`Aktives Overlay schließen`,dSendMessage:`Nachricht senden`,dNewline:`Zeilenumbruch einfügen`,dRecallPrev:`Vorherigen Prompt abrufen (bei leerer Eingabe)`,dRecallNext:`Nächsten Prompt abrufen`,dSlashPopup:`Slash-Befehl-Popup öffnen`,dAutocomplete:`Hervorgehobenen Befehl autovervollständigen`,dDismissPopup:`Popup schließen / Eingabe löschen`,dSearchChat:`Im aktuellen Chat suchen`,dClearContext:`Kontext löschen (wie /clear)`,dNewSession:`Neue Session starten (wie /new)`,dExportMarkdown:`Chat als Markdown exportieren`,dModelSwitcher:`Quick-Model-Switcher-Overlay`,dCompactDensity:`Kompakte UI-Dichte umschalten`,dAbortRun:`Aktuellen Run abbrechen (während läuft)`,dFocusNext:`Nächste Nachricht fokussieren (Alias: ↓)`,dFocusPrev:`Vorherige Nachricht fokussieren (Alias: ↑)`,dJumpFirst:`Zur ersten Nachricht springen`,dJumpLast:`Zur letzten Nachricht springen`,dCopyFocused:`Fokussierten Nachrichtentext kopieren`,dClearFocused:`Fokussierte Nachricht löschen`},de={titleFallback:`Live SDD Board`,defaultModelTitle:`Run-Standard-Workermodell (pro-Task-Overrides haben Vorrang)`,graphLabel:`Graph`,kanbanLabel:`Kanban`,retryAllTitle:`Jede fehlgeschlagene Task zurück in pending einreihen`,retryFailed:`Fehlgeschlagene erneut ({{count}})`,resume:`Fortsetzen`,pause:`Pausieren`,stop:`Stopp`,cleanTitle:`Git-Worktrees + wstack/ap-Branches des Runs entfernen`,cleanWorktrees:`Worktrees bereinigen`,rollbackTitle:`{{count}} gemergte(s) Commit(s) auf {{base}} revertieren`,rollback:`Rollback ({{count}})`,stopping:`Stoppt…`,destroying:`Zerstört…`,destroyTitle:`Stoppen, alle Worktrees entfernen, optional gemergte Commits revertieren und das SDD-Projekt löschen`,destroy:`Zerstören`,statDone:`fertig`,statRunning:`läuft`,statFailed:`fehlgeschlagen`,statWave:`welle`,statElapsed:`verstrichen`,noActiveWorkers:`keine aktiven Worker`,deadlock:`Deadlock — Tasks blockiert durch fehlgeschlagene Arbeit:`,noRunTitle:`Kein aktiver SDD-Run.`,noRunBody:`Starte einen im New-SDD-Project-Assistenten oder per /sdd execute in der CLI — Agents erscheinen hier live, jeder in einem isolierten Worktree.`,clickTaskHint:`Task für Details klicken`,lcClean:`Bereinigen`,lcRollback:`Rollback`,lcDestroy:`Zerstören`,lcFailed:`{{op}} fehlgeschlagen: {{reason}}`,lcUnknownError:`unbekannter Fehler`,lcWorktrees_one:`{{count}} Worktree entfernt`,lcWorktrees_other:`{{count}} Worktrees entfernt`,lcCommits_one:`{{count}} Commit revertiert`,lcCommits_other:`{{count}} Commits revertiert`,lcDeleted:`gelöscht {{items}}`,lcNothing:`nichts zu tun`,lcNote:`{{op}}: {{body}} — Hinweis: {{reason}}`,lcOk:`{{op}}: {{body}}`},fe={backTitle:`Zur Aktivität zurück`,workingOn:`arbeitet an dieser Task`,assigned:`zugewiesen`,metaPriority:`Priorität`,metaType:`Typ`,metaDuration:`Dauer`,metaElapsed:`Verstrichen`,metaRetries:`Versuche`,metaWorktree:`Worktree`,workerModel:`Worker-Modell`,runDefault:`Run-Standard: {{model}}`,runDefaultPlaceholder:`Run-Standard`,runDefaultPlaceholderModel:`Run-Standard ({{model}})`,verificationCmd:`Verifikationsbefehl`,gatesCompletion:`schließt Completion ab (exit 0)`,verifyPlaceholder:`z. B. pnpm vitest run path/to/file`,addVerify:`+ Verifikationsbefehl hinzufügen`,description:`Beschreibung`,timeline:`Zeitleiste`,dependsOn:`Hängt ab von`,blocks:`Blockiert`,newWorkerPlaceholder:`Neuer Worker-Name…`,confirmStop:`Diese laufende Task stoppen?`,confirmDelete:`Diese Task aus dem Run löschen?`,retryTitle:`Diese Task zurück in pending einreihen`,reassign:`Neu zuweisen`,stopTitle:`Den Worker auf dieser Task abbrechen`,splitTitle:`Diese Task in separate Worker-Sub-Tasks aufteilen`,split:`Aufteilen`,splitHint:`Eine Sub-Task pro Zeile — Titel :: Beschreibung (Beschreibung optional)`,splitPlaceholder:`Datenlayer schreiben :: Repository hinzufügen
4
- UI verdrahten`,splitInto:`In Sub-Tasks aufteilen`,deleteTitle:`Diese nicht gestartete Task aus dem Run entfernen`},pe={phaseStart:`Start`,phaseInterview:`Interview`,phaseSpecReview:`Spec-Review`,phasePlanning:`Planung`,phaseTaskReview:`Task-Review`,phaseRunning:`Läuft`,phaseDone:`Fertig`,titleFallback:`Neues SDD-Projekt`,questionsSuffix:`{{cur}}/{{max}} Fragen`,tasksSuffix:`{{count}} Tasks`,runCfgTitle:`Run-Konfiguration — Standardmodell + Fallback-Kette`,modelsLabel:`Modelle`,startRun:`Run starten`,defaultWorkerModel:`Standard-Worker-Modell`,leaderDefaultPlaceholder:`Leader / Session-Standard`,useSessionDefault:`Session-Standard verwenden`,fallbackChain:`Fallback-Kette`,appliesToAll:`Gilt für jede Task. Pro-Task vom Live-Board nach Run-Start überschreiben.`,parallelAgents:`Parallele Agents`,isolateWorktrees:`In Git-Worktrees isolieren`,worktreeOn:`Jede Task läuft im eigenen Worktree, bei Abschluss squash-gemergt.`,worktreeOff:`Tasks laufen direkt auf dem aktuellen Branch (keine Isolation).`,goalPrompt:`Was willst du bauen?`,goalPlaceholder:`z. B. OAuth-Login (Google + GitHub) mit Session-Management hinzufügen`,startingInterview:`Interview startet…`,startInterview:`Interview starten`,introBody:`Ein isolierter Agent interviewt dich, um eine Spec zu bauen, zerlegt sie in einen abhängigkeitsgeordneten Task-Graphen, dann führt eine echte Multi-Agenten-Fleet ihn aus — live auf dem Board schauen.`,taskGraphSummary:`Task-Graph · {{count}} Tasks, abhängigkeitsgeordnet`,dragToExplore:`ziehen zum Erkunden`,show:`zeigen`,goalLabel:`Ziel`,implementationPlan:`Implementationsplan`,approveSpec:`Spec genehmigen → Implementation planen`,approveTasks:`Tasks genehmigen`,approvePlan:`Plan genehmigen`,answerPlaceholder:`Frage beantworten…`,changePlaceholder:`Änderung anfordern…`},me={emptyDir:`leer`,loadFailed:`Dateien konnten nicht geladen werden: {{error}}`,expandAllTitle:`Alle Verzeichnisse aufklappen`,expandAll:`Alle aufklappen`,collapseAllTitle:`Alle Verzeichnisse zuklappen`,collapse:`Zuklappen`,folders_one:`{{count}} Ordner`,folders_other:`{{count}} Ordner`,currentDirTitle:`Aktuelles Verzeichnis: {{path}}`,navigateToTitle:`Nach {{path}} navigieren`,filesSuffix_one:`{{count}} Datei`,filesSuffix_other:`{{count}} Dateien`,goToDir:`zum Ordner`,navigateParentTitle:`Zum übergeordneten Ordner von {{path}} navigieren`,parentDirectory:`übergeordneter Ordner`,noFiles:`Keine Dateien gefunden`,copyAbsPath:`Absoluten Pfad kopieren`,copyRelPath:`Relativen Pfad kopieren`,openInTerminal:`Im Terminal öffnen`,openInFileManager:`Im Dateimanager öffnen`,mentionInChat:`Im Chat erwähnen`,copyPath:`Pfad kopieren`},he={sendSelectionAction:`Auswahl an Chat senden`,noFilesOpen:`Keine Dateien offen`,selectToEdit:`Wähle eine Datei aus dem Explorer zum Bearbeiten`,sendSelectedTitle:`Ausgewählte Zeilen an Chat senden`,mentionFileTitle:`Diese Datei im Chat erwähnen`,sendToChat:`An Chat senden`,mentionFile:`Datei erwähnen`,loadingEditor:`Editor wird geladen…`,selectTab:`Wähle einen Tab um den Inhalt zu sehen`},ge={loading:`Analytics werden geladen…`,heading:`Analytics-Dashboard`,autoRefresh:`Auto-Aktualisierung alle 10 s`,liveSessions:`Live-Sessions`,agents:`Agents`,agentsActive:`{{count}} aktiv`,totalEvents:`Ereignisse gesamt`,categoriesSub:`{{count}} Kategorien`,toolCalls:`Tool-Aufrufe`,iterationsSub:`{{count}} Iterationen`,sessionCost:`Session-Kosten`,tokensSub:`{{input}} rein / {{output}} raus`,sessionDuration:`Session-Dauer`,messagesSub:`{{count}} Nachrichten`,eventsByCategory:`Ereignisse nach Kategorie`,noEvents:`Noch keine Ereignisse aufgezeichnet.`,topEvents:`Top-Ereignisse`,activeSessionUsage:`Aktive Session-Nutzung`,provider:`Anbieter`,model:`Modell`,inputTokens:`Eingabe-Token`,outputTokens:`Ausgabe-Token`,cacheRatio:`Cache-Verhältnis`,filesRead:`Gelesene Dateien`,noSession:`Keine aktive Session oder warte auf Daten…`,healthErrors:`Health & Fehler`,errorEvents:`Fehler-Ereignisse`,warningEvents:`Warn-Ereignisse`,cacheHitRate:`Cache-Trefferquote`,totalCategories:`Kategorien gesamt`,waitingData:`Warte auf Daten…`,recentEvents:`Letzte Ereignisse`,noRecentEvents:`Keine aktuellen Ereignisse. Interagiere mit der UI um Ereignisse zu erzeugen.`},_e={searchPlaceholder:`Prompts suchen…`,newPrompt:`+ Neues Prompt`,all:`Alle`,recent:`◷ Zuletzt`,favorites:`★ Favoriten`,noMatch:`Keine passenden Prompts.`,newPromptHeading:`Neues Prompt`,titlePlaceholder:`Titel *`,descPlaceholder:`Einzeilige Beschreibung`,categoryPlaceholder:`Kategorie`,tagsPlaceholder:`tags, kommasepariert`,contentPlaceholder:`Prompt-Inhalt * — {{name}} für Variablen`,variables:`Variablen`,addVar:`+ Var`,varNamePlaceholder:`Name`,varDescPlaceholder:`Beschreibung`,removeVarTitle:`Variable entfernen`,required:`erforderlich`,multiline:`mehrzeilig`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Prompt speichern`,saveFailed:`Prompt konnte nicht gespeichert werden.`,titleContentRequired:`Titel und Inhalt sind erforderlich.`,toggleFavoriteTitle:`Favorit umschalten`,selectOption:`— wählen —`,fillMissing:`Ausfüllen: {{missing}}`,insertIntoChat:`In Chat einfügen`,selectPromptHint:`Prompt zum Vorschauen und Einfügen wählen.`},ve={scopeProject:`Projekt`,scopeGlobal:`Global`,scopeBundled:`Gebündelt`,timeoutError:`Zeitüberschreitung der Anfrage. Bitte erneut versuchen.`,updateFailed:`Update fehlgeschlagen`,saveFailed:`Speichern fehlgeschlagen`,uninstallFailed:`Deinstallation fehlgeschlagen`,noSkillSelected:`Kein Skill gewählt`,selectSkillHint:`Wähle einen Skill aus der Sidebar um die Doku zu sehen`,goToChat:`Zum Chat`,openSourceRepo:`Quell-Repo öffnen`,copySourceUrl:`Quell-URL kopieren`,updatedLabel:`↑ Aktualisiert: {{list}}`,upToDateLabel:`— Aktuell: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Auf Updates prüfen`,exportTitle:`Skill als .md exportieren`,editTitle:`Skill bearbeiten`,uninstallTitle:`Skill deinstallieren`,closeTitle:`Schließen und zum Chat`,backTitle:`Zurück`,forwardTitle:`Vor`,relatedFiles:`Verwandte Dateien`,references:`Referenzen`,goToSkillTitle:`Zu {{name}}`,loadingContent:`Skill-Inhalt wird geladen…`,editingLabel:`Bearbeite {{name}}`,editStats:`{{lines}} Zeilen · {{words}} Wörter · {{chars}} Zeichen`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Entwurf gespeichert`,draftRestored:`Entwurf wiederhergestellt`,discardDraft:`Entwurf verwerfen`,splitViewTitle:`Geteilte Ansicht`,hidePreviewTitle:`Vorschau verbergen`,contentPlaceholder:`Skill-Inhalt (Markdown)...`,loadFailed:`Skill-Inhalt konnte nicht geladen werden`,noContent:`Kein Skill-Inhalt verfügbar`,uninstallSkillHeading:`Skill deinstallieren`,uninstallConfirm:`{{name}} deinstallieren?`,uninstallRemovePath:`Dies entfernt den Skill aus {{path}} und kann nicht rückgängig gemacht werden.`,uninstallAction:`Deinstallieren`},ye={sessionStats:`Session-Stats`,clients:`Clients`,input:`Eingabe`,output:`Ausgabe`,cost:`Kosten`,agentsSuffix:`Agents`,upPrefix:`seit {{time}}`,webuiClient:`WebUI-Client`,disconnected:`Getrennt`,connected:`Verbunden`,tuiClient:`TUI-Client`,terminal:`Terminal`,repl:`REPL`,coordinator:`KOORDINATOR`,fleetSummary:`Fleet-Zusammenfassung`,toolCallsLabel:`Tool-Aufrufe`,tokensLabel:`Token`,coordinatingFleet:`Koordiniert Fleet`,donePrefix:`✓ fertig ·`,failedPrefix:`✕ fehlgeschlagen ·`,seenPrefix:`vor {{time}} gesehen`,availableDesk:`Freier Schreibtisch`,mailboxHub:`Postfach-Zentrale`,unreadSuffix_one:`{{count}} ungelesen`,unreadSuffix_other:`{{count}} ungelesen`,allClear:`Alles erledigt`,total:`Gesamt`,unreadLabel:`Ungelesen`,liveActivity:`Live-Aktivität`,waitingActivity:`Warte auf Aktivität…`,now:`jetzt`,fleetHq:`WrongStack Fleet-Zentrale`,live:`LIVE`,legendStatus:`Status`,legendActive:`Aktiv`,legendIdle:`Idle`,legendError:`Fehler`,legendConnections:`Verbindungen`,legendMail:`Mail`,legendTask:`Task`,legendStatusConn:`Status`,arrange:`Anordnen`,arrangeTitle:`Knoten zurück zum Grundriss`,feed:`Feed`,feedTitle:`Live-Aktivitäts-Feed umschalten`,broadcast:`Broadcast`,broadcastTitle:`Nachricht an jede Live-Session im Projekt`,broadcastToAll:`An alle Sessions broadcasten`,broadcastPlaceholder:`Nachricht an jeden Live-Agent im Projekt…`,broadcastSendHint:`⌘/Ctrl+Enter zum Senden`,openFullView:`Vollständige Operationsansicht öffnen`,rowStatus:`Status`,rowModel:`Modell`,rowTool:`Tool`,rowIterations:`Iterationen`,rowToolCalls:`Tool-Aufrufe`,rowTokensIn:`Token rein`,rowTokensOut:`Token raus`,rowTokensTotal:`Token gesamt`,rowContext:`Kontext`,rowCost:`Kosten`,rowLastSeen:`Zuletzt gesehen`,rowSurface:`Oberfläche`,rowBranch:`Branch`,rowPid:`PID`,rowDir:`Verz.`,rowAgents:`Agents`,rowUptime:`Uptime`,rowConnections:`Verbindungen`,rowTotalMessages:`Nachrichten gesamt`,rowUnread:`Ungelesen`,recent:`Neueste`,noSubject:`(kein Betreff)`,fullOperationStream:`Vollständiger Operations-Stream`,closeEsc:`Schließen (Esc)`,idleDesk:`Freier Platz`,fleetHqLabel:`Fleet-Zentrale`,clientsSuffix_one:`{{count}} Client`,clientsSuffix_other:`{{count}} Clients`,taskFallback:`Task`,controlLabel:`Steuerung`},be={installTitle:`Skill installieren`,createTitle:`Skill erstellen`,exportTitle:`Alle Skills als .zip exportieren`,checkUpdatesTitle:`Auf Updates prüfen (alle Skills)`,searchPlaceholder:`Skills suchen…`,loading:`Lädt…`,noSkills:`Keine Skills installiert`,noMatch:`Keine Skills passen zum Filter`,noDescription:`Keine Beschreibung`,scopeForeign:`Fremd`,installHeading:`Skill Installieren`,installHint:`GitHub-Repo-Referenz (owner/repo) oder vollständige URL eingeben.`,installPlaceholder:`z. B. wrongstack/skill-name oder https://github.com/owner/repo`,installScope:`Installations-Scope:`,installBtn:`Installieren`,installedMsg:`Installiert: {{names}}`,installFailed:`Installation fehlgeschlagen`,createHeading:`Skill Erstellen`,createHint:`Neuen Skill scaffolding. Erste Zeile ist der Trigger; weitere Zeilen die Beschreibung.`,nameLabel:`Name`,namePlaceholder:`z. B. mein-neuer-skill`,descLabel:`Beschreibung / Trigger`,descPlaceholder:`Verwende diesen Skill bei <Trigger-Situation>.
5
- Trigger: User sagt "Schlüsselwort", "anderes".`,saveIn:`Speichern in:`,createBtn:`Skill Erstellen`,createdMsg:`Erstellt: {{name}}`,createFailed:`Erstellung fehlgeschlagen`},xe={noEvents:`Noch keine Ereignisse.`},Se={pickHint:`Kit wählen — der Agent hält sich daran.`,gallery:`Galerie`,galleryTitle:`Live-Vorschau-Galerie öffnen`,stackTitle:`Ziel-Stack`,loading:`Kits werden geladen…`,notFound:`Keine Design-Kits gefunden.`,bestFor:`Am besten für:`,light:`Hell`,dark:`Dunkel`},Ce={detached:`(losgelöst)`,count_one:`{{count}} Worktree`,count_other:`{{count}} Worktrees`,baseSuffix:` · Basis {{base}}`,baseLabel:`Basis`,cleanOrphans:`Verwaiste entfernen`,cleanOrphansTitle:`Alle verwaisten Worktrees entfernen`,liveBusyTitle:`Ein Lauf ist aktiv — zuerst stoppen`,rescanTitle:`Neu scannen`,removed_one:`{{count}} Worktree entfernt.`,removed_other:`{{count}} Worktrees entfernt.`,failed:`Fehlgeschlagen`,mergedIntoBase:`{{branch}} in Basis zusammengeführt.`,conflictMerge:`Konflikt beim Zusammenführen von {{branch}}: {{files}}`,seeGit:`siehe git`,mergeFailed:`Zusammenführen fehlgeschlagen: {{reason}}`,unknownReason:`unbekannt`,mergeConfirmTitle:`{{branch}} in {{base}} zusammenführen?`,mergeConfirmMsg:`Squash-merged diesen Branch auf den Basis-Branch. Bricht sauber ab bei Konflikten.`,mergeAction:`Zusammenführen`,removeConfirmTitle:`{{branch}} entfernen?`,removeConfirmMsg:`Entfernt das Worktree-Checkout und löscht seinen Branch. Nicht zusammengeführte Arbeit geht verloren.`,empty:`Keine Worktrees.`,emptyHint:`SDD-/AutoPhase-Läufe erstellen hier isolierte Worktrees. Verwaiste abgestürzter Läufe erscheinen ebenfalls.`,actOpenTerm:`Im Terminal öffnen`,actOpenFolder:`Ordner öffnen`,actViewChanges:`Änderungen ansehen`,actMerge:`In Basis zusammenführen`,actRemove:`Entfernen / verwerfen`,live:`live`,noUncommitted:`Keine ungespeicherten Änderungen`,commitsAhead_one:`{{count}} Commit voraus`,commitsAhead_other:`{{count}} Commits voraus`,more:`…{{count}} mehr`},we={heading:`Bürokarte`,headingHint:`Visualisieren Sie Ihre Flotte als Bürogrundriss mit Live-Agent-Status.`,statAgents:`Agenten`,statMail:`Post`,unreadSuffix:` ungelesen`,sectionView:`Ansicht`,sectionDisplay:`Anzeige`,sectionBackground:`Hintergrund`,sectionRecent:`Letzte Aktivität`,eventsTrackedSuffix:` Ereignisse verfolgt`,recentHint:`Post-Sends, Agent-Spawns und Statusänderungen erscheinen hier.`,sectionShortcuts:`Tastenkürzel`,sectionLegend:`Legende`,hudLabel:`HUD`,hudDesc:`Echtzeit-Sitzungsstatistik-Overlay anzeigen`,hudToggle:`HUD umschalten`,minimapLabel:`Minimap`,minimapDesc:`Übersichts-Minimap anzeigen`,minimapToggle:`Minimap umschalten`,controlsLabel:`Steuerung`,controlsDesc:`Zoom- und Fit-Steuerung anzeigen`,controlsToggle:`Steuerung umschalten`,animateLabel:`Kanten animieren`,animateDesc:`Fluss auf aktiven Verbindungen animieren`,animateToggle:`Kantenanimation umschalten`,legendLabel:`Legende anzeigen`,legendDesc:`Status- und Verbindungslegende anzeigen`,legendToggle:`Legende umschalten`,feedLabel:`Live-Feed`,feedDesc:`Unterer Streifen mit letzter prozessübergreifender Aktivität`,feedToggle:`Live-Feed umschalten`,fitView:`Anpassen`,zoomIn:`Vergrößern`,zoomOut:`Verkleinern`,resetZoom:`Zoom zurücksetzen`,legendActive:`Aktiv (läuft)`,legendIdle:`Inaktiv`,legendError:`Fehler`,legendOffline:`Offline`,bg:{dots:`Punkte`,lines:`Linien`,cross:`Kreuz`,none:`Keine`}},Te={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,autoPhase:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,analytics:ge,promptLib:_e,skillDetail:ve,office:ye,skillsList:be,timeline:xe,designStudio:Se,worktrees:Ce,officeSettings:we};export{o as agents,S as agentsMonitor,ge as analytics,A as autoPhase,Y as autonomy,v as board,t as brand,s as changes,Z as checkpoint,he as codeEditor,j as collab,M as connection,m as context,P as cost,q as ctxMode,y as debug,Te as default,k as design,Se as designStudio,te as diff,x as dock,ae as errorBody,ne as fallback,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Q as goal,a as history,c as inspector,re as liveSessions,u as mailbox,r as menu,ce as message,N as mode,F as model,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,ye as office,oe as officeMap,we as officeSettings,K as phase,H as plan,ee as process,_e as promptLib,b as providerModels,X as queue,h as refine,_ as refresh,D as sdd,de as sddBoard,fe as sddTask,pe as sddWizard,G as search,f as sessionPanel,w as sessionWatch,d as sessions,ue as shortcuts,T as sideEffects,i as sidePanel,ve as skillDetail,be as skillsList,g as specs,n as status,z as task,C as terminal,xe as timeline,W as toast,R as todos,B as toolGroup,se as toolInput,O as toolResult,J as transcript,le as watch,L as work,$ as worktree,Ce as worktrees};