@opencodex/cli 1.0.41 → 1.0.42

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 (68) hide show
  1. package/README.md +21 -17
  2. package/package.json +9 -9
  3. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +1 -0
  4. package/web/dist/assets/AutomationView-CO-jVhee.js +3 -0
  5. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +8 -0
  6. package/web/dist/assets/ChartsView-CAc37Sam.js +1 -0
  7. package/web/dist/assets/ConnectorsView-DP4bbh58.js +1 -0
  8. package/web/dist/assets/FileTreeView-DwsYfssO.js +1 -0
  9. package/web/dist/assets/HookConfigView-uFsqieii.js +2 -0
  10. package/web/dist/assets/InputArea-BY8quOiH.js +14 -0
  11. package/web/dist/assets/MemoryView-Bgd_lcTf.js +1 -0
  12. package/web/dist/assets/{MessageBubble-CV16DZMG.js → MessageBubble-CVGXupVH.js} +20 -20
  13. package/web/dist/assets/ModelsView-B271UV9L.js +1 -0
  14. package/web/dist/assets/PluginsView-Dz4fqQR1.js +2 -0
  15. package/web/dist/assets/ProjectsView-DF-YCV8y.js +1 -0
  16. package/web/dist/assets/SessionGrid-BIREstN2.js +4 -0
  17. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +4 -0
  18. package/web/dist/assets/SkillsView-CH2ghYL2.js +1 -0
  19. package/web/dist/assets/TemplatesTab-BGe7_67s.js +1 -0
  20. package/web/dist/assets/ThreadsView-XditIHZ4.js +2 -0
  21. package/web/dist/assets/ToolsView-BBzsFdVZ.js +1 -0
  22. package/web/dist/assets/{agentIconSet-Btsb_SC4.js → agentIconSet-B5GUQwel.js} +1 -1
  23. package/web/dist/assets/{api-CCt9DRQm.js → api-plEYhRn0.js} +1 -1
  24. package/web/dist/assets/common-Bbatsa0-.js +192 -0
  25. package/web/dist/assets/{icons-BvYhTENi.js → icons-CYDRRPKW.js} +1 -1
  26. package/web/dist/assets/index-CTbLW314.js +133 -0
  27. package/web/dist/assets/index-DdzVrZye.css +1 -0
  28. package/web/dist/assets/{markdown-DAQZeY5V.js → markdown-N5__3T-w.js} +1 -1
  29. package/web/dist/assets/{panels-DYiQiVWh.js → panels-CIPgN61N.js} +1 -1
  30. package/web/dist/assets/{react-vendor-BlngCquv.js → react-vendor-CB4cLN-6.js} +1 -1
  31. package/web/dist/assets/settingsStore-Xqln0d91.js +1 -0
  32. package/web/dist/assets/{state-_ZfNVAsd.js → state-CSZ50keL.js} +1 -1
  33. package/web/dist/assets/sttLanguages-CSNMgUTz.js +2 -0
  34. package/web/dist/assets/ttsSettings-BwXYpDnk.js +2 -0
  35. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +1 -0
  36. package/web/dist/assets/{useTranslation-BGmCDuQI.js → useTranslation-B-mfApCn.js} +1 -1
  37. package/web/dist/assets/{websocket-C9e3h7VU.js → websocket-BnDwh01e.js} +1 -1
  38. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +1 -0
  39. package/web/dist/index.html +18 -18
  40. package/web/dist/vendor/MANIFEST.json +24 -0
  41. package/web/dist/vendor/d3.min.js +2 -0
  42. package/web/dist/vendor/echarts.min.js +45 -0
  43. package/web/dist/assets/AssistantsView-dhdYVIy0.js +0 -1
  44. package/web/dist/assets/AutomationView-D1dU5ZV7.js +0 -1
  45. package/web/dist/assets/ChannelConfigView-CEPVZntU.js +0 -8
  46. package/web/dist/assets/ChartsView-DdN-beHW.js +0 -1
  47. package/web/dist/assets/ConnectorsView-CseCss9C.js +0 -1
  48. package/web/dist/assets/FileTreeView-Dnc3-gRF.js +0 -1
  49. package/web/dist/assets/HookConfigView-DA2h4HdJ.js +0 -1
  50. package/web/dist/assets/InputArea-DAgOOjOc.js +0 -14
  51. package/web/dist/assets/MemoryView-D6OUBi4-.js +0 -1
  52. package/web/dist/assets/ModelsView-BuqD9vWl.js +0 -1
  53. package/web/dist/assets/PluginsView-CIziDHFJ.js +0 -2
  54. package/web/dist/assets/ProjectsView-c6faWy32.js +0 -1
  55. package/web/dist/assets/SessionGrid-BZJHcklh.js +0 -4
  56. package/web/dist/assets/SettingsModal-BqdGEGW-.js +0 -4
  57. package/web/dist/assets/SkillsView-CB6CKkmb.js +0 -1
  58. package/web/dist/assets/TemplatesTab-B8efVwVZ.js +0 -1
  59. package/web/dist/assets/ThreadsView-CDoM0aNb.js +0 -2
  60. package/web/dist/assets/ToolsView-BG-xsWsO.js +0 -1
  61. package/web/dist/assets/cn-rx4uumOJ.js +0 -1
  62. package/web/dist/assets/common-BHXgEvgk.js +0 -192
  63. package/web/dist/assets/index-BNI6CNsY.css +0 -1
  64. package/web/dist/assets/index-BX-d2OBW.js +0 -130
  65. package/web/dist/assets/settingsStore-RLUAWgIk.js +0 -1
  66. package/web/dist/assets/sttLanguages-aqoVC79g.js +0 -2
  67. package/web/dist/assets/ttsSettings-DHo3OsOq.js +0 -15
  68. package/web/dist/assets/whatsNewStore-Bf_7lW8o.js +0 -1
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,Bn as n,Ht as r,Ln as i,Pn as a,Ur as o,V as s,W as c,Wn as l,Yn as u,_n as d,at as f,br as p,fr as m,ft as h,kr as g,m as _,n as v,ot as y,ur as b,vn as x,vr as S,xr as C,zr as w}from"./icons-BvYhTENi.js";import{r as T}from"./react-vendor-BlngCquv.js";import{t as E}from"./useTranslation-BGmCDuQI.js";import{l as D}from"./ttsSettings-DHo3OsOq.js";import{n as O,t as k}from"./cn-rx4uumOJ.js";import{v as A,x as j,y as M}from"./src-49LUQhkG.js";import{C as N,ht as P}from"./MessageBubble-CV16DZMG.js";import{n as ee,r as F,t as I}from"./InputArea-DAgOOjOc.js";import{t as L}from"./api-CCt9DRQm.js";import{I as R}from"./markdown-DAQZeY5V.js";import{A as z,b as te,g as B,h as V,u as H,v as ne,x as re,y as U}from"./common-BHXgEvgk.js";import{n as W,s as ie,u as ae}from"./ThreadsView-CDoM0aNb.js";import{C as oe,H as G,S as K,V as q,W as se,_ as ce,b as le,g as ue,v as de,w as J,x as fe,y as pe}from"./index-BX-d2OBW.js";var me=T(),Y=e(o(),1);function he(e={}){let t=e.enabled!==!1,n=G(e=>e.projects),r=G(e=>e.total),i=G(e=>e.hidden),a=G(e=>e.detail),o=G(e=>e.detailLoading),s=G(e=>e.detailError),c=G(e=>e.query),l=G(e=>e.sort),u=G(e=>e.stale),d=G(e=>e.loading),f=G(e=>e.lastError),p=G(e=>e.disabled),m=G(e=>e.openProjectId),h=G(e=>e.refresh);(0,Y.useEffect)(()=>{t&&G.getState().refresh()},[t]),(0,Y.useEffect)(()=>{t&&u&&G.getState().scheduleRefresh()},[t,u]),(0,Y.useEffect)(()=>{if(!t||typeof document>`u`)return;let e=()=>{document.visibilityState===`visible`&&G.getState().refresh()};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t]);let g=q(n,l),_=new Set(i),v=g.filter(e=>_.has(e.projectId));return{projects:g.filter(e=>!_.has(e.projectId)).filter(e=>e.rootExists),hiddenProjects:v,hiddenCount:v.length,total:r,detail:a,detailLoading:o,detailError:s,query:c,sort:l,stale:u,loading:d,lastError:f,disabled:p,openProjectId:m,setQuery:e=>G.getState().setQuery(e),setSort:e=>G.getState().setSort(e),openProject:e=>void G.getState().openProject(e),closeDetail:()=>G.getState().closeDetail(),enterProject:(e,t)=>G.getState().enterProject(e,t),backToProjectList:()=>G.getState().backToProjectList(),createProject:(e,t)=>G.getState().createProject(e,t),hideProject:e=>G.getState().hideProject(e),unhideProjects:e=>G.getState().unhideProjects(e),unhideAll:()=>G.getState().unhideAll(),probeEntry:()=>void G.getState().probeEntry(),refresh:()=>void h()}}var X=R();function ge({isOpen:e,onClose:t,projects:n,onRestore:r}){let{t:i}=E(),[a,o]=(0,Y.useState)(()=>new Set),s=(0,Y.useRef)(n);s.current=n,(0,Y.useEffect)(()=>{e&&o(new Set(s.current.map(e=>e.projectId)))},[e]);let c=n.length>0&&a.size===n.length,l=e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,X.jsxs)(V,{isOpen:e,onClose:t,title:i(`projects.hiddenModalTitle`),size:`md`,bodyClassName:`p-0`,children:[(0,X.jsxs)(`div`,{"data-testid":`projects-hidden-modal`,children:[(0,X.jsx)(`p`,{className:`border-b border-dark-border px-6 py-3 text-meta leading-relaxed text-dark-muted`,children:i(`projects.hiddenModalHint`)}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-dark-border/60 px-6 py-2`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>{o(c?new Set:new Set(n.map(e=>e.projectId)))},className:`text-meta text-dark-muted underline transition-colors hover:text-dark-text hover:no-underline`,"data-testid":`projects-hidden-toggle-all`,children:i(c?`projects.hiddenClearSelection`:`projects.hiddenSelectAll`)}),(0,X.jsx)(`span`,{className:`ms-auto text-meta tabular-nums text-dark-muted/70`,children:i(`projects.hiddenSelectedCount`,{count:a.size})})]}),(0,X.jsx)(`ul`,{className:`max-h-[50vh] overflow-y-auto custom-scrollbar`,"data-testid":`projects-hidden-list`,children:n.map(e=>{let t=a.has(e.projectId);return(0,X.jsx)(`li`,{children:(0,X.jsxs)(`label`,{className:k(`flex cursor-pointer items-center gap-2.5 border-b border-dark-border/40 px-6 py-2 transition-colors`,t?`bg-dark-hover/60`:`hover:bg-dark-hover/40`),"data-testid":`projects-hidden-row-${e.projectId}`,children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:t,onChange:()=>l(e.projectId),"data-testid":`projects-hidden-option-${e.projectId}`,className:`h-3.5 w-3.5 shrink-0 cursor-pointer`}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`truncate text-compact text-dark-text`,title:e.root,children:e.name}),!e.rootExists&&(0,X.jsx)(`span`,{className:`shrink-0 text-badge text-accent-yellow`,children:i(`projects.rootMissing`)})]}),(0,X.jsx)(`span`,{className:`mt-0.5 block truncate font-mono text-meta text-dark-muted/70`,title:e.root,children:e.root})]})]})},e.projectId)})})]}),(0,X.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-dark-border px-6 py-3`,children:[(0,X.jsx)(z,{onClick:t,children:i(`common.cancel`)}),(0,X.jsx)(z,{variant:`accent`,disabled:a.size===0,onClick:()=>{let e=n.filter(e=>a.has(e.projectId)).map(e=>e.projectId);e.length!==0&&(r(e),t())},"data-testid":`projects-hidden-confirm`,children:i(`projects.hiddenRestoreSelected`,{count:a.size})})]})]})}var _e={neutral:`border-dark-border bg-dark-hover/40 text-dark-muted`,ok:`border-accent-green/30 bg-accent-green/10 text-accent-green`,warn:`border-accent-yellow/40 bg-accent-yellow/10 text-accent-yellow`};function ve(e){return e.threads.waiting>0?{tone:`waiting`,live:!1}:e.threads.review>0?{tone:`review`,live:!1}:e.threads.working>0||e.sessions.running>0?{tone:`working`,live:!0}:{tone:`idle`,live:!1}}function Z({tone:e=`neutral`,testid:t,title:n,children:r}){return(0,X.jsx)(`span`,{"data-testid":t,title:n,className:k(`inline-flex shrink-0 items-center gap-0.5 rounded-full border px-1.5 py-px text-meta leading-4`,_e[e]),children:r})}function ye({icon:e,label:t,hint:n,disabled:r,testid:i,onClick:a}){let o=r?`${t} — ${n??``}`:t;return(0,X.jsx)(`button`,{type:`button`,"aria-label":o,title:o,"data-testid":i,"data-disabled":r?`true`:`false`,disabled:r,onClick:e=>{e.stopPropagation(),a()},className:`inline-flex h-6 w-6 items-center justify-center rounded-md text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent`,children:e})}var be=(0,Y.memo)(function({project:e,onOpen:t,onOpenFolder:n,onCopyRoot:r,onHide:a,now:o}){let{t:s}=E(),c=!e.rootExists,l=Object.values(e.threads).reduce((e,t)=>e+t,0),d=ve(e),f=N(e.lastActivityAt,o,s);return(0,X.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>t(e.projectId),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&n.target===n.currentTarget&&(n.preventDefault(),t(e.projectId))},className:k(`group relative flex cursor-pointer items-center gap-2.5 rounded-lg border px-3 py-2 text-start transition-colors`,c?`border-dashed border-dark-border/60 opacity-70`:`border-dark-border hover:border-accent-blue/40 hover:bg-dark-hover/40`),"data-testid":`project-row-${e.projectId}`,"data-root-missing":c?`true`:`false`,"data-status":d.tone,children:[(0,X.jsx)(`span`,{"aria-hidden":`true`,className:`status-dot shrink-0`,"data-tone":d.tone,"data-live":d.live?`true`:`false`,"data-testid":`project-status-${e.projectId}`}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`truncate text-compact font-semibold text-dark-text`,title:e.root,children:e.name}),(0,X.jsx)(`span`,{className:`shrink-0 rounded border border-dark-border px-1 py-px text-badge leading-4 text-dark-muted`,children:s(`projects.visibility`)}),c&&(0,X.jsx)(`span`,{className:`shrink-0 text-badge text-accent-yellow`,children:s(`projects.rootMissing`)})]}),(0,X.jsx)(`span`,{className:`mt-0.5 flex items-center gap-2 text-meta leading-tight text-dark-muted/70`,children:(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono`,title:e.root,children:e.root})})]}),(0,X.jsxs)(`span`,{className:`hidden shrink-0 items-center gap-1.5 md:flex`,children:[(0,X.jsxs)(Z,{testid:`project-sessions-${e.projectId}`,children:[s(`projects.sessionCount`,{count:e.sessions.total}),e.sessions.running>0&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{className:`text-dark-muted/40`,"aria-hidden":`true`,children:`·`}),(0,X.jsx)(`span`,{className:`inline-flex items-center gap-0.5 text-accent-blue`,"data-testid":`project-running`,children:s(`projects.runningCount`,{count:e.sessions.running})})]})]}),(0,X.jsx)(Z,{testid:`project-threads-${e.projectId}`,children:l>0?s(`projects.threadCount`,{count:l}):s(`projects.noThreads`)}),e.agentMd.present?(0,X.jsx)(Z,{tone:e.agentMd.truncated?`warn`:`ok`,testid:`project-agentmd-${e.projectId}`,title:e.agentMd.truncated?s(`projects.agentMdTruncated`,{bytes:e.agentMd.bytes??0}):s(`projects.agentMdBytes`,{bytes:e.agentMd.bytes??0}),children:e.agentMd.truncated?s(`projects.agentMdTruncatedShort`):s(`projects.agentMdReady`)}):(0,X.jsx)(Z,{testid:`project-agentmd-${e.projectId}`,children:s(`projects.agentMdAbsent`)}),c&&(0,X.jsx)(Z,{tone:`warn`,testid:`project-missing-${e.projectId}`,children:s(`projects.rootMissingChip`)})]}),f&&(0,X.jsx)(`span`,{className:`hidden shrink-0 font-mono text-meta tabular-nums text-dark-muted lg:block`,"data-testid":`project-activity-${e.projectId}`,children:f}),(0,X.jsxs)(`span`,{className:`flex shrink-0 items-center gap-0.5`,onClick:e=>e.stopPropagation(),children:[(0,X.jsx)(ye,{icon:(0,X.jsx)(x,{size:13,"aria-hidden":`true`}),label:s(`projects.openFolder`),hint:c?s(`projects.openFolderDisabled`):void 0,disabled:c,testid:`project-open-folder-${e.projectId}`,onClick:()=>n(e.root)}),(0,X.jsx)(ye,{icon:(0,X.jsx)(u,{size:13,"aria-hidden":`true`}),label:s(`projects.copyRoot`),testid:`project-copy-root-${e.projectId}`,onClick:()=>r(e.root)}),(0,X.jsx)(ye,{icon:(0,X.jsx)(i,{size:13,"aria-hidden":`true`}),label:s(c?`projects.removeView`:`projects.hide`),hint:s(`projects.hideHint`),testid:`project-hide-${e.projectId}`,onClick:()=>a(e.projectId)})]})]})}),xe=[`answer`,`thread`,`goal`,`handoff`,`approval`,`session`];function Se(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Q(e){return typeof e==`string`&&e.trim()?e:void 0}function Ce(e){let t=Se(e);if(!t)return null;let n=t.kind;if(typeof n!=`string`||!xe.includes(n))return null;let r={kind:n,reason:typeof t.reason==`string`?t.reason:``},i=Se(t.refs);if(i){let e={},t=Q(i.goalId);if(t&&(e.goalId=t),Array.isArray(i.threadIds)){let t=i.threadIds.filter(e=>typeof e==`string`&&!!e);t.length&&(e.threadIds=t)}let n=Q(i.projectKey);n&&(e.projectKey=n),Object.keys(e).length&&(r.refs=e)}let a=Se(t.suggest),o=a?Q(a.title):void 0;if(o){let e=a?Q(a.seed):void 0;r.suggest={title:o,...e?{seed:e}:{}}}return r}function we(e){switch(e){case`thread`:return`green`;case`goal`:return`purple`;case`handoff`:return`brand`;case`approval`:return`yellow`;case`session`:return`brand`;default:return`neutral`}}var Te=(0,Y.memo)(function({route:e,root:t,onOpenThread:n,onOpenSession:r}){let{t:i}=E(),a=P(e=>e.rows),o=P(e=>e.query),[s,c]=(0,Y.useState)(!1),[l,u]=(0,Y.useState)(null),[d,f]=(0,Y.useState)(!1);if(e.kind===`session`&&!e.suggest?.title)return(0,X.jsx)(`span`,{className:`mt-0.5 block text-meta text-dark-text-secondary`,children:e.reason});let p=e.refs?.threadIds?.[0],m=e.refs?.goalId,h=e.refs?.projectKey,g=Object.keys(a).length>0,_=!!p&&o===``&&g&&!a[p],v=!!p&&!!n&&!_,y=async()=>{let n=e.suggest?.title;if(n&&!s){c(!0),f(!1);try{let i=await L.sessions.create(n,t);if(i.success&&i.data){let a=e.suggest?.seed?.trim();a&&D.getState().setSessionInput(i.data.id,a),u(i.data.title||n),r?.(i.data.id,t,i.data.title||n)}else f(!0)}catch{f(!0)}finally{c(!1)}}};return(0,X.jsxs)(`span`,{className:`mt-1 block rounded-md border border-dark-border bg-dark-bg-tertiary/50 p-1.5`,"data-testid":`pm-route-card`,"data-route-kind":e.kind,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`status-pill`,"data-tone":we(e.kind),"data-testid":`pm-route-kind`,children:i(`projects.pmRouteKind.${e.kind}`)}),(0,X.jsx)(`span`,{className:`text-badge text-dark-text-secondary`,children:i(`projects.pmRouteTo`)})]}),e.reason?(0,X.jsx)(`span`,{className:`mt-0.5 block text-meta text-dark-text-secondary`,children:e.reason}):null,v?(0,X.jsxs)(`button`,{type:`button`,onClick:()=>n?.(p),className:`mt-1 inline-flex items-center gap-1 rounded bg-dark-hover/50 px-1.5 py-0.5 text-meta text-dark-text-primary hover:bg-dark-hover`,"data-testid":`pm-route-open-thread`,children:[i(`projects.pmRouteOpenThread`),(0,X.jsx)(`span`,{className:`font-mono text-dark-text-secondary`,children:p})]}):_?null:m?(0,X.jsxs)(`span`,{className:`mt-1 block font-mono text-badge text-dark-text-secondary`,"data-testid":`pm-route-goal-ref`,children:[i(`projects.pmRouteGoalRef`),`: `,m]}):h?(0,X.jsxs)(`span`,{className:`mt-1 block font-mono text-badge text-dark-text-secondary`,"data-testid":`pm-route-project-ref`,children:[i(`projects.pmRouteProjectRef`),`: `,h]}):null,e.kind===`session`?l?(0,X.jsx)(`span`,{className:`mt-1 block text-meta text-accent-green`,"data-testid":`pm-route-session-created`,children:i(`projects.pmRouteSessionCreated`,{title:l})}):(0,X.jsxs)(`span`,{className:`mt-1 block`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>void y(),disabled:s,className:`inline-flex items-center gap-1 rounded bg-accent-green/15 px-2 py-0.5 text-meta text-accent-green hover:bg-accent-green/25 disabled:opacity-50`,"data-testid":`pm-route-create-session`,children:i(s?`projects.pmRouteSessionCreating`:`projects.pmRouteCreateSession`)}),d?(0,X.jsx)(`span`,{className:`ms-1.5 text-badge text-accent-red`,"data-testid":`pm-route-create-failed`,children:i(`projects.pmRouteCreateFailed`)}):null]}):null]})});function Ee(e,t,n){let r=e.fields,i=e=>typeof r[e]==`string`?r[e]:``;switch(e.type){case`pm_started`:return(0,X.jsx)(`span`,{children:t(`projects.pmStarted`)});case`pm_stopped`:return(0,X.jsx)(`span`,{children:t(`projects.pmStopped`)});case`pm_wakeup`:{let e=i(`reason`),n=i(`summary`);return(0,X.jsxs)(`span`,{children:[t(`projects.pmWakeup`),e?(0,X.jsxs)(`span`,{className:`text-dark-text-secondary`,children:[` · `,e]}):null,n?(0,X.jsx)(`span`,{className:`block text-dark-text-secondary`,children:n}):null]})}case`pm_report`:{let e=i(`title`),a=i(`progressSummary`),o=i(`nextAction`),s=typeof r.approvalsPending==`number`?r.approvalsPending:0,c=Ce(r.route);return(0,X.jsxs)(`span`,{children:[e?(0,X.jsx)(`span`,{className:`font-medium`,children:e}):(0,X.jsx)(`span`,{children:t(`projects.pmReport`)}),a?(0,X.jsx)(`span`,{className:`block text-dark-text-secondary`,children:a}):null,o?(0,X.jsxs)(`span`,{className:`block text-dark-text-secondary`,children:[t(`projects.pmNextAction`),`: `,o]}):null,s>0?(0,X.jsxs)(`span`,{className:`mt-0.5 inline-flex items-center gap-1 text-accent-yellow`,children:[(0,X.jsx)(m,{size:12,"aria-hidden":`true`}),` `,s,` `,t(`projects.pmApprovalsPending`)]}):null,c?(0,X.jsx)(Te,{route:c,root:n.root,onOpenThread:n.onOpenThread,onOpenSession:n.onOpenSession}):null]})}case`pm_approval_requested`:return(0,X.jsx)(`span`,{children:t(`projects.pmApprovalRequested`)});case`pm_approval_resolved`:return(0,X.jsxs)(`span`,{children:[t(`projects.pmApprovalResolved`),i(`decision`)?(0,X.jsxs)(`span`,{className:`text-dark-text-secondary`,children:[` · `,i(`decision`)]}):null]});default:return(0,X.jsx)(`span`,{children:e.type})}}var De=(0,Y.memo)(function({root:e,onOpenThread:t,onOpenSession:n,children:r}){let{t:i}=E(),a=(0,Y.useMemo)(()=>j(e)??``,[e]),o=J(e=>e.residentByProject[a]??!1),s=J(e=>e.activityByProject[a]??ce),c=J(e=>e.approvals),l=(0,Y.useMemo)(()=>fe(c,a),[c,a]),u=J(e=>e.resolveApproval),[d,f]=(0,Y.useState)(!1),[h,_]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{a&&le(a)},[a]);let y=async()=>{if(a&&!h){_(!0);try{await oe(a,!o)}finally{_(!1)}}},x=s.slice(-20).reverse(),w=(0,Y.useMemo)(()=>{if(d)return null;let e=s.slice(-20);for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n||n.type!==`pm_report`)continue;let r=Ce(n.fields.route);if(r)return r}return null},[s,d]),T=(0,Y.useMemo)(()=>({root:e,onOpenThread:t,onOpenSession:n}),[e,t,n]);return(0,X.jsxs)(`section`,{"aria-label":i(`projects.pmPanel`),className:`flex min-h-0 min-w-0 flex-1 flex-col border-b border-dark-border`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 overflow-hidden px-3 py-2`,children:[(0,X.jsx)(g,{size:14,"aria-hidden":`true`,className:o?`text-accent-green`:`text-dark-text-secondary`}),(0,X.jsx)(`span`,{className:`min-w-0 shrink truncate text-xs font-medium`,children:i(`projects.pmPanel`)}),(0,X.jsxs)(`span`,{className:k(`inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-badge`,o?`bg-accent-green/15 text-accent-green`:`bg-dark-bg-tertiary text-dark-text-secondary`),children:[(0,X.jsx)(`span`,{className:k(`h-1.5 w-1.5 rounded-full`,o?`bg-accent-green`:`bg-dark-text-secondary`),"aria-hidden":`true`}),i(o?`projects.pmResident`:`projects.pmOff`)]}),(0,X.jsxs)(`div`,{className:`ms-auto flex shrink-0 items-center gap-1`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:y,disabled:h||!a,className:k(`rounded px-2 py-0.5 text-meta transition-colors`,o?`text-dark-text-secondary hover:bg-dark-bg-tertiary hover:text-dark-text-primary`:`bg-accent-green/15 text-accent-green hover:bg-accent-green/25`),children:i(o?`projects.pmStop`:`projects.pmStart`)}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>f(e=>!e),"aria-expanded":d,"aria-label":i(`projects.pmToggleTimeline`),className:`rounded p-1 text-dark-text-secondary hover:bg-dark-bg-tertiary hover:text-dark-text-primary`,children:d?(0,X.jsx)(p,{size:14,"aria-hidden":`true`}):(0,X.jsx)(S,{size:14,"aria-hidden":`true`})})]})]}),l.length>0&&(0,X.jsx)(`ul`,{className:`space-y-1.5 px-3 pb-2`,children:l.map(e=>(0,X.jsx)(`li`,{className:`rounded-md border border-accent-yellow bg-accent-yellow/15 p-2`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,X.jsx)(m,{size:13,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-accent-yellow`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`p`,{className:`truncate text-xs font-medium text-dark-text-primary`,children:e.title||e.requestedAction||i(`projects.pmApprovalCard`)}),e.summary?(0,X.jsx)(`p`,{className:`mt-0.5 line-clamp-3 text-meta text-dark-text-secondary`,children:e.summary}):null,(0,X.jsxs)(`div`,{className:`mt-1.5 flex gap-1.5`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void u(e.escalationId,`approve`),className:`inline-flex items-center gap-1 rounded bg-accent-green/15 px-2 py-0.5 text-meta text-accent-green hover:bg-accent-green/25`,children:[(0,X.jsx)(C,{size:11,"aria-hidden":`true`}),` `,i(`projects.pmApprove`)]}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void u(e.escalationId,`reject`),className:`inline-flex items-center gap-1 rounded bg-accent-red/15 px-2 py-0.5 text-meta text-accent-red hover:bg-accent-red/15`,children:[(0,X.jsx)(v,{size:11,"aria-hidden":`true`}),` `,i(`projects.pmReject`)]})]})]})]})},e.escalationId))}),w?(0,X.jsx)(`div`,{className:`px-3 pb-2`,children:(0,X.jsx)(Te,{route:w,root:T.root,onOpenThread:T.onOpenThread,onOpenSession:T.onOpenSession})}):null,r?(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:r}):null,d&&x.length>0&&(0,X.jsx)(`div`,{className:`px-3 pb-2`,children:(0,X.jsx)(`ul`,{className:`max-h-48 space-y-1.5 overflow-y-auto`,children:x.map(e=>(0,X.jsxs)(`li`,{className:`flex items-start gap-1.5 text-xs`,children:[e.type===`pm_report`?(0,X.jsx)(b,{size:12,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-accent-green`}):(0,X.jsx)(`span`,{className:`mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-dark-text-secondary`,"aria-hidden":`true`}),(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{className:`text-dark-text-primary`,children:Ee(e,i,T)}),(0,X.jsx)(`div`,{className:`text-badge text-dark-text-secondary`,children:N(e.at)})]})]},e.id))})})]})}),Oe=[],ke={setActiveTab:()=>{},createNewSession:()=>{},clearMessages:()=>{},setTheme:()=>{},setLogs:()=>{},setUnreadLogs:()=>{}},Ae=(0,Y.memo)(function({projectId:e,root:t,sessionId:n,onOpenThread:r,onOpenSession:i,onLoadSession:a,slashOptions:o,onStop:s,onPause:c,onResume:l}){let{t:u}=E(),d=J(e=>e.managers),f=J(e=>e.managersLoaded),p=J(e=>e.fetchManagers),m=J(t=>t.residentByProject[e]??!1),h=G(e=>e.setFocusedPmSession),g=G(e=>e.enterPmSession),_=G(e=>e.backToPmSessions);(0,Y.useEffect)(()=>{p()},[p]);let v=(0,Y.useMemo)(()=>d.find(t=>t.projectKey===e)?.managerSessionIds??[],[d,e]),y=v.includes(n)?n:f?v[0]??null:n;(0,Y.useEffect)(()=>{f&&(y?y!==n&&g(y):_())},[f,y,n,g,_]),(0,Y.useEffect)(()=>(h(y),()=>h(null)),[y,h]),(0,Y.useEffect)(()=>{y&&a&&a(y)},[y,a]);let b=D(e=>y?e.messagesBySession[y]??Oe:Oe),x=D(e=>y?e.generatingSessions.includes(y):!1),S=(0,Y.useCallback)(async t=>{let n=t.trim();n&&y&&(await K(e,n,y)?D.getState().addMessage(y,{id:`msg-${Date.now()}`,type:`user`,content:n,timestamp:Date.now()}):O.error(u(`projects.pmSendFailed`)))},[e,y,u]);return(0,X.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"data-testid":`coordinator-pane`,children:(0,X.jsx)(De,{root:t,onOpenThread:r,onOpenSession:i,children:y?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(F,{messages:b,isGenerating:x,isPaused:!1,sessionId:y}),(0,X.jsx)(I,{sessionId:y,onSend:S,onStop:()=>s?.(y),onPause:()=>c?.(y),onResume:()=>l?.(y),slashOptions:o??ke,inputDisabled:!m,inputDisabledHint:u(`projects.pmInputDisabled`)})]}):(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 text-center text-xs text-dark-muted`,children:u(`projects.coordinatorHint`)})})})}),je=(0,Y.memo)(function({projectName:e,projectRoot:t,missing:i,levelLabel:a,onBack:o,onBackToSessions:c,onOpenFolder:l,onNewSessionHere:u,threadsOpen:d,onToggleThreads:f,settingsOpen:p,onToggleSettings:m,onOpenMore:h,moreItemsCount:g}){let{t:_}=E(),v=e=>{let t=e.currentTarget.getBoundingClientRect();h(t.left,t.bottom+4,re(g))};return(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-3 py-2.5`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:o,className:`ui-icon-button`,title:_(`projects.back`),"aria-label":_(`projects.back`),"data-testid":`project-detail-back`,children:(0,X.jsx)(w,{size:15,"aria-hidden":`true`})}),(0,X.jsxs)(`nav`,{className:`min-w-0 flex items-baseline gap-1.5 text-sm`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:o,className:`shrink-0 text-dark-muted transition-colors hover:text-dark-text`,children:_(`projects.title`)}),(0,X.jsx)(`span`,{className:`shrink-0 text-dark-muted/50`,"aria-hidden":`true`,children:`›`}),(0,X.jsx)(`button`,{type:`button`,onClick:c,disabled:!c,className:k(`min-w-0 truncate transition-colors`,c?`text-dark-muted hover:text-dark-text`:`cursor-default text-dark-text`),"data-testid":`project-detail-name`,children:e}),(0,X.jsx)(`span`,{className:`shrink-0 text-dark-muted/50`,"aria-hidden":`true`,children:`›`}),(0,X.jsx)(`button`,{type:`button`,onClick:c,disabled:!c,className:k(`min-w-0 truncate transition-colors`,c?`text-dark-muted hover:text-dark-text`:`cursor-default font-medium text-dark-text`),"data-testid":`project-detail-level`,children:a})]}),(0,X.jsxs)(`div`,{className:`ms-auto flex items-center gap-2`,children:[t&&(0,X.jsx)(`span`,{className:`hidden min-w-0 max-w-[240px] truncate font-mono text-meta text-dark-muted lg:block`,title:t,"data-testid":`project-detail-root`,children:t}),(0,X.jsxs)(`button`,{type:`button`,onClick:l,disabled:i,className:`btn shrink-0 text-meta disabled:cursor-not-allowed disabled:opacity-50`,title:i?_(`projects.openFolderDisabled`):t,"data-testid":`project-detail-open-folder`,children:[(0,X.jsx)(x,{size:12,"aria-hidden":`true`}),_(`projects.openFolder`)]}),(0,X.jsxs)(`button`,{type:`button`,onClick:u,disabled:i,className:`btn shrink-0 text-meta disabled:cursor-not-allowed disabled:opacity-50`,title:_(i?`projects.newSessionDisabled`:`projects.newSessionHere`),"data-testid":`project-detail-new-session-btn`,children:[(0,X.jsx)(y,{size:12,"aria-hidden":`true`}),_(`projects.newSessionHere`)]}),(0,X.jsx)(`button`,{type:`button`,onClick:f,"aria-expanded":d,className:k(`ui-icon-button`,d&&`bg-accent-blue/10 text-accent-blue`),title:_(`projects.railTabs`),"aria-label":_(`projects.railTabs`),"data-testid":`project-detail-threads`,children:(0,X.jsx)(r,{size:14,"aria-hidden":`true`})}),(0,X.jsx)(`button`,{type:`button`,onClick:m,"aria-expanded":p,className:`ui-icon-button`,title:_(`projects.settings`),"aria-label":_(`projects.settings`),"data-testid":`project-detail-settings`,children:(0,X.jsx)(s,{size:14,"aria-hidden":`true`})}),(0,X.jsx)(`button`,{type:`button`,onClick:v,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v(e))},className:`ui-icon-button`,title:_(`projects.moreActions`),"aria-label":_(`projects.moreActions`),"aria-haspopup":`menu`,"data-testid":`project-detail-more`,children:(0,X.jsx)(n,{size:14,"aria-hidden":`true`})})]})]})}),Me=(0,Y.memo)(function({projectId:e,onOpenSession:t}){let{t:n}=E(),r=J(e=>e.managers),i=J(e=>e.fetchManagers),a=J(t=>t.residentByProject[e]??!1),[o,s]=(0,Y.useState)(!1),[c,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{i()},[i]);let p=(0,Y.useMemo)(()=>r.find(t=>t.projectKey===e)??null,[r,e]),m=J(e=>e.managersLoaded),h=p?.managerSessionIds??[],_=(0,Y.useCallback)(async()=>{if(o)return;s(!0);let r=await pe(e);await i(),s(!1),r?t(r):O.error(n(`projects.pmCreateFailed`),5e3)},[o,e,i,t,n]),b=(0,Y.useCallback)(async()=>{if(c)return;u(!0);let t=await oe(e,!0);await i(),u(!1),t?O.success(n(`projects.pmEnableDone`),3e3):O.error(n(`projects.pmEnableFailed`),5e3)},[c,e,i,n]),x=(0,Y.useCallback)(async t=>{if(d||typeof window<`u`&&!window.confirm(n(`projects.pmCloseSessionConfirm`)))return;f(t);let r=await de(e,t);await i(),f(null),r?O.success(n(`projects.pmCloseSessionDone`),3e3):O.error(n(`projects.pmCloseSessionFailed`),5e3)},[d,e,i,n]);return(0,X.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,"aria-label":n(`projects.pmSessionList`),"data-testid":`pm-session-list`,children:[(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 px-3 py-2`,children:[(0,X.jsx)(g,{size:14,className:k(`shrink-0`,a?`text-accent-green`:`text-dark-muted`),"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`text-xs font-medium text-dark-text`,children:n(`projects.pmSessionList`)}),(0,X.jsx)(`span`,{className:`rounded-full border border-dark-border bg-dark-hover/40 px-1.5 py-px text-badge leading-4 text-dark-muted`,"data-testid":`pm-session-count-pill`,children:n(`projects.pmSessionCount`,{count:h.length})}),!a&&(0,X.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-dark-hover/70 px-1.5 py-px text-badge text-dark-muted`,"data-testid":`pm-session-resident-pill`,children:n(`projects.pmOff`)}),(0,X.jsxs)(`div`,{className:`ms-auto flex items-center gap-1.5`,children:[!a&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>void b(),disabled:c,className:`btn shrink-0 text-meta disabled:opacity-50`,"data-testid":`pm-session-enable`,children:n(`projects.pmEnable`)}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void _(),disabled:o,className:`btn btn-primary shrink-0 text-meta disabled:opacity-50`,title:n(`projects.pmNewSession`),"data-testid":`pm-new-session`,children:[(0,X.jsx)(y,{size:12,"aria-hidden":`true`}),n(`projects.pmNewSession`)]})]})]}),(0,X.jsx)(`p`,{className:`shrink-0 px-3 pb-2 text-meta leading-relaxed text-dark-muted`,children:n(`projects.pmSessionListHint`)}),(0,X.jsx)(`div`,{className:`board-ground min-h-0 flex-1 overflow-y-auto px-3 pb-3 custom-scrollbar`,children:(0,X.jsxs)(`div`,{className:`mx-auto flex max-w-[980px] flex-col gap-1.5`,children:[m&&h.length===0?(0,X.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface px-3 py-4 text-center`,"data-testid":`pm-session-empty`,children:[(0,X.jsx)(`p`,{className:`text-xs text-dark-text`,children:n(`projects.emptyPmSessions`)}),(0,X.jsx)(`p`,{className:`mt-1 text-meta leading-relaxed text-dark-muted`,children:n(`projects.emptyPmSessionsHint`)})]}):null,h.map((e,r)=>{let i=r===0,o=!i;return(0,X.jsxs)(`div`,{className:`group relative`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>t(e),className:k(`flex w-full items-center gap-2.5 rounded-lg border border-dark-border bg-dark-surface px-3 py-2 text-start transition-colors hover:border-accent-blue/40 hover:bg-dark-hover/30`,o&&`pe-10`),"data-testid":`pm-session-row`,"data-session-id":e,children:[(0,X.jsx)(g,{size:13,"aria-hidden":`true`,className:k(`shrink-0`,a?`text-accent-green`:`text-dark-muted`)}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`truncate text-xs text-dark-text`,children:ue(h,e,n)}),i&&p?.isDuty&&(0,X.jsx)(`span`,{className:`shrink-0`,title:n(`projects.managerBadgeDuty`),children:(0,X.jsx)(l,{size:11,"aria-hidden":`true`,className:`text-accent-yellow`})})]}),(0,X.jsx)(`span`,{className:`mt-0.5 block truncate font-mono text-meta text-dark-muted/60`,title:e,children:e})]}),!o&&(0,X.jsx)(S,{size:13,"aria-hidden":`true`,className:`shrink-0 text-dark-muted opacity-0 transition-opacity group-hover:opacity-70`})]}),o&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>void x(e),disabled:d===e,"aria-label":n(`projects.pmCloseSession`),title:n(`projects.pmCloseSession`),className:k(`absolute end-2 top-1/2 -translate-y-1/2 rounded p-1 transition-opacity`,`text-dark-muted hover:text-accent-red disabled:opacity-50`,d===e?`opacity-100`:`opacity-0 focus-visible:opacity-100 group-hover:opacity-100`),"data-testid":`pm-close-session`,"data-session-id":e,children:(0,X.jsx)(v,{size:13,"aria-hidden":`true`})})]},e)})]})})]})}),Ne=200;function Pe({isOpen:e,onClose:t,projectId:n,currentName:r}){let{t:i}=E(),a=G(e=>e.renameProject),[o,s]=(0,Y.useState)(r),[c,l]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{e&&(s(r),l(!1))},[e,r]);let u=async()=>{let e=o.trim();if(e===r.trim()){t();return}l(!0);let s=await a(n,e===``?null:e);l(!1),s.ok?(O.success(i(`projects.renamed`),3e3),t()):O.error(s.error,6e3)};return(0,X.jsxs)(V,{isOpen:e,onClose:t,title:i(`projects.rename`),size:`sm`,children:[(0,X.jsx)(`label`,{className:`mb-1 block text-meta text-dark-text`,htmlFor:`project-rename-input`,children:i(`projects.renameLabel`)}),(0,X.jsx)(`input`,{id:`project-rename-input`,autoFocus:!0,value:o,maxLength:Ne,placeholder:r,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!c&&u()},className:`w-full rounded-lg border border-dark-border bg-dark-bg px-3 py-2 font-mono text-meta text-dark-text outline-none focus:border-accent-blue`,"data-testid":`project-rename-input`}),(0,X.jsx)(`p`,{className:`mt-1.5 text-meta leading-relaxed text-dark-muted`,children:i(`projects.renameHint`)}),(0,X.jsxs)(`div`,{className:`mt-5 flex justify-end gap-3`,children:[(0,X.jsx)(z,{onClick:t,"data-testid":`project-rename-cancel`,children:i(`common.cancel`)}),(0,X.jsx)(z,{variant:`accent`,onClick:()=>void u(),loading:c,"data-testid":`project-rename-submit`,children:i(`common.confirm`)})]})]})}var Fe=(0,Y.memo)(function({projectId:e,onOpenThread:t}){let{t:n}=E(),r=G(e=>e.library),i=G(e=>e.libraryLoading),o=G(e=>e.libraryError),s=G(e=>e.openLibrary);(0,Y.useEffect)(()=>{s(e)},[e,s]);let c=(0,Y.useMemo)(()=>{if(!r)return[];let e=new Map;for(let t of r.items){let n=e.get(t.producerThreadId);n?n.push(t):e.set(t.producerThreadId,[t])}return[...e.entries()].map(([e,t])=>({threadId:e,thread:r.threads.find(t=>t.threadId===e),logicalGroups:M(t).sort((e,t)=>Le(t)-Le(e))}))},[r]),l=r?r.threads.length-c.length:0;return(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,"data-testid":`project-library`,children:[(0,X.jsxs)(`header`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-3 py-2`,children:[(0,X.jsx)(a,{size:13,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`text-meta font-medium text-dark-text`,children:n(`projects.library`)}),r&&(0,X.jsx)(`span`,{className:`ms-auto shrink-0 font-mono text-badge text-dark-muted`,"data-testid":`project-library-counts`,children:n(`projects.libraryCounts`,{items:r.items.length,threads:c.length})})]}),(0,X.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 py-2`,children:[o&&(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 rounded-lg border border-accent-red/30 bg-accent-red/10 px-2 py-1.5 text-meta text-accent-red`,"data-testid":`project-library-error`,children:[(0,X.jsx)(_,{size:12,className:`mt-[1px] shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1`,children:n(`projects.libraryFailed`,{message:o})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>void s(e),className:`shrink-0 underline-offset-2 hover:underline`,children:n(`projects.libraryRetry`)})]}),!o&&i&&!r&&(0,X.jsx)(`p`,{className:`text-meta text-dark-muted`,"data-testid":`project-library-loading`,children:n(`projects.libraryLoading`)}),!o&&r&&r.items.length===0&&(0,X.jsxs)(`div`,{"data-testid":`project-library-empty`,children:[(0,X.jsx)(`p`,{className:`text-meta font-medium text-dark-text`,children:n(`projects.libraryEmptyTitle`)}),(0,X.jsx)(`p`,{className:`mt-1 text-meta leading-relaxed text-dark-muted`,children:n(`projects.libraryEmptyBody`)})]}),(0,X.jsx)(`ul`,{className:`space-y-2`,children:c.map(({threadId:e,thread:r,logicalGroups:i})=>(0,X.jsxs)(`li`,{className:`rounded-lg border border-dark-border`,"data-testid":`project-library-group`,children:[(0,X.jsxs)(`button`,{type:`button`,onClick:()=>t(e),className:`flex w-full items-center gap-2 px-2 py-1.5 text-start transition-colors hover:bg-dark-hover`,title:n(`projects.libraryOpenThread`),children:[(0,X.jsx)(`span`,{className:`shrink-0 font-mono text-meta text-accent-blue`,children:r?.alias??e}),r?.title&&(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-meta text-dark-muted`,children:r.title}),r?.delivery&&(0,X.jsx)(`span`,{className:`ms-auto shrink-0 font-mono text-badge text-dark-muted/80`,children:ae(r.delivery).join(` · `)})]}),(0,X.jsx)(`ul`,{className:`space-y-1 border-t border-dark-border px-2 py-1.5`,children:i.map(e=>(0,X.jsx)(Ie,{versions:e},e[0].logicalId))})]},e))}),l>0&&(0,X.jsx)(`p`,{className:`mt-2 text-meta text-dark-muted/70`,"data-testid":`project-library-empty-threads`,children:n(`projects.libraryEmptyThreads`,{count:l})})]})]})});function Ie({versions:e}){let{t}=E(),n=e[0],r=A(n.createdAt);return(0,X.jsxs)(`li`,{className:`text-meta`,"data-testid":`project-library-item`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-dark-text`,title:n.logicalId,children:n.logicalId}),(0,X.jsxs)(`span`,{className:`shrink-0 font-mono text-dark-muted`,children:[`v`,n.version]}),r&&(0,X.jsx)(`span`,{className:`shrink-0 font-mono text-badge text-dark-muted/70`,children:r})]}),(0,X.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-2 text-badge text-dark-muted`,children:[(0,X.jsx)(`span`,{children:n.type}),(0,X.jsx)(`span`,{children:n.status}),n.reviewRequired&&(0,X.jsxs)(`span`,{children:[`review: `,n.reviewState]}),e.length>1&&(0,X.jsx)(`span`,{children:t(`threads.artifactVersions`,{count:e.length})})]}),n.path&&(0,X.jsx)(`div`,{className:`mt-0.5 truncate font-mono text-badge text-dark-muted/80`,title:n.path,children:n.path})]})}function Le(e){let t=0;for(let n of e){let e=Date.parse(n.createdAt??``);Number.isFinite(e)&&e>t&&(t=e)}return t}var Re=(0,Y.memo)(function({projectId:e,isOpen:t,onClose:n,selectedThreadId:i,onSelectThread:o,onOpenThreadSession:s}){let{t:c}=E(),[l,u]=(0,Y.useState)(`threads`);(0,Y.useEffect)(()=>{i&&u(`threads`)},[i]);let[d,f]=(0,Y.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 767px)`).matches);(0,Y.useEffect)(()=>{if(typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(max-width: 767px)`),t=()=>f(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),B({isOpen:t&&!d,onClose:n,lockScroll:!1});let p=(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{role:`tablist`,"aria-label":c(`projects.railTabs`),className:`flex shrink-0 items-center gap-1 border-b border-dark-border px-2 py-1.5`,"data-testid":`project-rail-tabs`,children:[(0,X.jsx)(ze,{active:l===`threads`,onClick:()=>u(`threads`),icon:(0,X.jsx)(r,{size:12,"aria-hidden":`true`}),label:c(`threads.title`),testId:`project-rail-tab-threads`}),(0,X.jsx)(ze,{active:l===`library`,onClick:()=>u(`library`),icon:(0,X.jsx)(a,{size:12,"aria-hidden":`true`}),label:c(`projects.library`),testId:`project-rail-tab-library`})]}),(0,X.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:l===`library`?(0,X.jsx)(Fe,{projectId:e,onOpenThread:e=>o(e)}):i?(0,X.jsx)(W,{threadId:i,onBack:()=>o(null),onOpenSession:s}):(0,X.jsx)(ie,{workspaceId:e,onOpenThread:o})})]});return d?(0,X.jsx)(H,{isOpen:t,onClose:n,title:c(`projects.railTabs`),size:`lg`,children:p}):t?(0,X.jsx)(`aside`,{className:`canvas-plane flex min-h-0 w-[360px] shrink-0 flex-col border-s border-dark-border bg-dark-bg lg:w-[440px]`,"data-testid":`project-rail`,"aria-label":c(`projects.railTabs`),children:p}):null});function ze({active:e,onClick:t,icon:n,label:r,testId:i}){return(0,X.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e,onClick:t,className:k(`flex items-center gap-1.5 rounded px-2 py-1 text-meta transition-colors`,e?`bg-accent-blue/10 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),"data-testid":i,children:[n,(0,X.jsx)(`span`,{children:r})]})}var Be=(0,Y.memo)(function({projectId:e,onBack:t,onOpenFolder:n,onCopyRoot:r,onNewSessionHere:a,onOpenThreadSession:o,onOpenSession:s,onLoadSession:c,pmSlashOptions:l,onStopSession:d,onPauseSession:f,onResumeSession:p,onHide:m}){let{t:g}=E(),[v,b]=(0,Y.useState)(!1),[S,C]=(0,Y.useState)(!1),[w,T]=(0,Y.useState)(null),[D,O]=(0,Y.useState)(!1),{state:k,openAt:A,close:j}=U(),M=G(e=>e.detail),N=G(e=>e.openPmSessionId),P=G(e=>e.enterPmSession),ee=G(e=>e.backToPmSessions),F=J(e=>e.managers);(0,Y.useEffect)(()=>{G.getState().openProject(e)},[e]),(0,Y.useEffect)(()=>{T(null),b(!1),C(!1)},[e]);let I=M?.project??null,L=I?!I.rootExists:!1,R=!I||L,z=(0,Y.useMemo)(()=>{if(!N)return g(`projects.pmSessionList`);let t=F.find(t=>t.projectKey===e)?.managerSessionIds??[];return ue(t,N,g)},[N,F,e,g]),B=(0,Y.useMemo)(()=>{if(!I)return[];let e=[{kind:`item`,id:`copy-root`,label:g(`projects.copyRoot`),icon:u,onSelect:()=>r(I.root)}];return m&&e.push({kind:`item`,id:`hide-view`,label:g(L?`projects.removeView`:`projects.hide`),icon:i,onSelect:()=>m(I.projectId)}),e},[I,L,r,m,g]);return(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,"data-testid":`project-detail`,children:[(0,X.jsx)(je,{projectName:I?.name??e,projectRoot:I?.root,missing:R,levelLabel:z,onBack:t,onBackToSessions:N?ee:void 0,onOpenFolder:()=>I&&n(I.root),onNewSessionHere:()=>I&&a(I.root),threadsOpen:D,onToggleThreads:()=>O(e=>!e),settingsOpen:v,onToggleSettings:()=>b(e=>!e),onOpenMore:(e,t,n)=>A(e,t,null,{height:n}),moreItemsCount:B.length}),L&&I&&(0,X.jsxs)(`div`,{className:`flex shrink-0 items-start gap-1.5 border-b border-accent-yellow/30 bg-accent-yellow/10 px-3 py-2 text-meta leading-relaxed text-accent-yellow`,"data-testid":`project-detail-missing`,children:[(0,X.jsx)(_,{size:12,className:`mt-[1px] shrink-0`,"aria-hidden":`true`}),(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`b`,{className:`font-semibold`,children:g(`projects.rootMissingTitle`)}),I&&(0,X.jsx)(`span`,{className:`mx-1 font-mono`,children:I.root}),(0,X.jsx)(`br`,{}),g(`projects.rootMissingBody`)]})]}),v&&I&&(0,X.jsxs)(`div`,{className:`shrink-0 space-y-1 border-b border-dark-border bg-dark-hover/20 px-3 py-2`,"data-testid":`project-settings`,children:[(0,X.jsx)($,{icon:(0,X.jsx)(x,{size:12,"aria-hidden":`true`}),label:g(`projects.openFolder`),hint:I.root,disabled:L,disabledHint:L?g(`projects.openFolderDisabled`):void 0,onClick:()=>n(I.root),testId:`project-settings-open-folder`}),(0,X.jsx)($,{icon:(0,X.jsx)(u,{size:12,"aria-hidden":`true`}),label:g(`projects.copyRoot`),hint:I.root,onClick:()=>r(I.root),testId:`project-settings-copy-root`}),(0,X.jsx)($,{icon:(0,X.jsx)(h,{size:12,"aria-hidden":`true`}),label:g(`projects.rename`),hint:I.name,onClick:()=>C(!0),testId:`project-settings-rename`}),(0,X.jsx)($,{icon:(0,X.jsx)(y,{size:12,"aria-hidden":`true`}),label:g(`projects.newSessionHere`),disabled:L,disabledHint:L?g(`projects.newSessionDisabled`):void 0,onClick:()=>I&&a(I.root),testId:`project-settings-new-session`})]}),(0,X.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:[(0,X.jsx)(`div`,{className:`mx-auto flex min-h-0 min-w-0 w-full max-w-[1040px] flex-1 flex-col`,"data-testid":`project-session-column`,children:N?(0,X.jsx)(Ae,{projectId:e,root:I?.root??e,sessionId:N,onOpenThread:e=>{O(!0),T(e)},onOpenSession:s,onLoadSession:c,slashOptions:l,onStop:d,onPause:f,onResume:p}):(0,X.jsx)(Me,{projectId:e,onOpenSession:P})}),(0,X.jsx)(Re,{projectId:e,isOpen:D,onClose:()=>O(!1),selectedThreadId:w,onSelectThread:T,onOpenThreadSession:o})]}),(0,X.jsx)(te,{items:B,position:k?{x:k.x,y:k.y}:null,onClose:j,ariaLabel:g(`projects.moreActions`)}),I&&(0,X.jsx)(Pe,{isOpen:S,onClose:()=>C(!1),projectId:I.projectId,currentName:I.name})]})});function $({icon:e,label:t,hint:n,disabled:r,disabledHint:i,onClick:a,testId:o}){return(0,X.jsxs)(`button`,{type:`button`,onClick:a,disabled:r,className:k(`flex w-full items-center gap-2 rounded px-1.5 py-1 text-start text-meta transition-colors`,r?`cursor-not-allowed text-dark-muted/60`:`text-dark-text hover:bg-dark-hover`),"data-testid":o,"data-disabled":r?`true`:`false`,title:r?i:n,children:[(0,X.jsx)(`span`,{className:`shrink-0`,children:e}),(0,X.jsx)(`span`,{className:`shrink-0`,children:t}),(0,X.jsx)(`span`,{className:`ms-auto min-w-0 truncate font-mono text-badge text-dark-muted/70`,children:r?i:n})]})}var Ve=250,He=(0,Y.memo)(function({workspaceDir:e,onNewSessionHere:n,onOpenThreadSession:r,onOpenSession:a,onLoadSession:o,pmSlashOptions:s,onStopSession:l,onPauseSession:u,onResumeSession:p}){let{t:m}=E(),{projects:h,hiddenProjects:g,hiddenCount:y,query:b,sort:x,loading:S,lastError:C,disabled:w,setQuery:T,setSort:D,openProjectId:A,enterProject:j,backToProjectList:M,createProject:N,hideProject:P,unhideProjects:F,refresh:I}=he(),[L,R]=(0,Y.useState)(!1),[z,te]=(0,Y.useState)(!1),[B,V]=(0,Y.useState)(!1),[H,re]=(0,Y.useState)(b),U=(0,Y.useRef)(null);(0,Y.useEffect)(()=>{re(b)},[b]),(0,Y.useEffect)(()=>()=>{U.current&&clearTimeout(U.current)},[]);let W=e=>{re(e),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>T(e),Ve)},[ie,ae]=(0,Y.useState)(()=>Date.now());(0,Y.useEffect)(()=>{let e=setInterval(()=>ae(Date.now()),3e4);return()=>clearInterval(e)},[]);let G=(0,Y.useMemo)(()=>se,[]),K=e=>{ne.openFolder(e).then(e=>{e.ok||O.error(e.error||m(`projects.openFolderFailed`),5e3)})},q=e=>{let t=navigator.clipboard?.writeText(e);t&&t.then(()=>O.success(m(`projects.copied`),2e3),()=>O.error(m(`projects.copyFailed`),4e3))};return w?(0,X.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,"data-testid":`projects-disabled`,children:(0,X.jsxs)(`div`,{className:`max-w-md rounded-xl border border-dark-border bg-dark-surface p-4 text-center`,children:[(0,X.jsx)(f,{size:18,className:`mx-auto text-dark-muted`,"aria-hidden":`true`}),(0,X.jsx)(`p`,{className:`mt-2 text-xs leading-relaxed text-dark-muted`,children:m(`projects.disabled`)})]})}):(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,"data-testid":`projects-view`,children:[A?(0,X.jsx)(Be,{projectId:A,onBack:M,onOpenFolder:K,onCopyRoot:q,onNewSessionHere:n,onOpenThreadSession:r,onOpenSession:a,onLoadSession:o,pmSlashOptions:s,onStopSession:l,onPauseSession:u,onResumeSession:p,onHide:e=>{P(e),O.info(m(`projects.hiddenToast`),4e3),M()}}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-3 py-2.5`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium text-dark-text`,children:m(`projects.title`)}),(0,X.jsx)(`span`,{className:`rounded-full border border-dark-border bg-dark-hover/40 px-1.5 py-px text-badge leading-4 text-dark-muted`,"data-testid":`projects-count-pill`,children:m(`projects.projectCount`,{count:h.length})}),(0,X.jsx)(`div`,{className:`ms-1 flex items-center rounded-md bg-dark-hover/60 p-0.5`,role:`group`,children:G.map(e=>(0,X.jsx)(`button`,{type:`button`,onClick:()=>D(e),"aria-pressed":x===e,className:k(`shrink-0 rounded px-1.5 py-0.5 text-meta transition-colors`,x===e?`bg-dark-surface text-dark-text`:`text-dark-muted hover:text-dark-text`),"data-testid":`projects-sort-${e}`,children:m(`projects.sort.${e}`)},e))}),(0,X.jsxs)(`div`,{className:`ms-auto flex items-center gap-1`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:I,disabled:S,className:`ui-icon-button disabled:opacity-50`,title:m(`common.refresh`),"aria-label":m(`common.refresh`),"data-testid":`projects-refresh`,children:(0,X.jsx)(t,{size:14,className:k(S&&`animate-spin`),"aria-hidden":`true`})}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>R(!0),disabled:B,className:`btn btn-primary shrink-0 text-meta disabled:opacity-60`,title:m(`projects.newHint`),"data-testid":`projects-new`,children:[(0,X.jsx)(d,{size:13,"aria-hidden":`true`}),m(`projects.new`)]})]})]}),C&&(0,X.jsx)(`div`,{className:`shrink-0 px-3 pt-2`,"data-testid":`projects-status-banner`,children:(0,X.jsxs)(`div`,{className:`flex items-start gap-1.5 rounded-lg border border-accent-red/40 bg-accent-red/10 px-2 py-1.5 text-meta leading-relaxed text-accent-red`,children:[(0,X.jsx)(_,{size:12,className:`mt-[1px] shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1`,children:m(`projects.loadFailed`,{message:C})}),(0,X.jsx)(`button`,{type:`button`,onClick:I,className:`shrink-0 underline hover:no-underline`,"data-testid":`projects-retry`,children:m(`projects.retry`)})]})}),y>0&&(0,X.jsx)(`div`,{className:`shrink-0 px-3 pt-2`,"data-testid":`projects-hidden-banner`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg border border-dark-border bg-dark-hover/40 px-2 py-1.5 text-meta text-dark-muted`,children:[(0,X.jsx)(i,{size:11,className:`shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1`,children:m(`projects.hiddenCount`,{count:y})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>te(!0),className:`shrink-0 underline hover:no-underline`,"data-testid":`projects-unhide`,children:m(`projects.unhide`)})]})}),(0,X.jsx)(`div`,{className:`board-ground min-h-0 flex-1 overflow-y-auto px-3 py-3 custom-scrollbar`,children:(0,X.jsxs)(`div`,{className:`mx-auto flex max-w-[980px] flex-col`,children:[(0,X.jsx)(`h1`,{className:`text-lg font-semibold text-dark-text`,children:m(`projects.title`)}),(0,X.jsx)(`p`,{className:`mt-0.5 text-xs leading-relaxed text-dark-muted`,children:m(`projects.subtitle`)}),(0,X.jsxs)(`div`,{className:`mt-4 flex items-center gap-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5 transition-colors focus-within:border-accent-blue/50`,children:[(0,X.jsx)(c,{size:13,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,X.jsx)(`input`,{type:`text`,value:H,onChange:e=>W(e.target.value),placeholder:m(`projects.searchPlaceholder`),"aria-label":m(`projects.searchPlaceholder`),"data-testid":`projects-search`,className:`min-w-0 flex-1 bg-transparent text-xs text-dark-text placeholder:text-dark-muted focus:outline-none`}),H&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>W(``),className:`shrink-0 rounded p-0.5 text-dark-muted transition-colors hover:text-dark-text`,"aria-label":m(`projects.searchClear`),"data-testid":`projects-search-clear`,children:(0,X.jsx)(v,{size:12,"aria-hidden":`true`})}),(0,X.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted/70`,children:m(`projects.serverFilterHint`)})]}),h.length===0?b.trim()?(0,X.jsxs)(`div`,{className:`mt-6 rounded-xl border border-dashed border-dark-border/60 py-8 text-center`,"data-testid":`projects-search-empty`,children:[(0,X.jsx)(`p`,{className:`text-xs text-dark-text`,children:m(`projects.searchEmpty`)}),(0,X.jsx)(`p`,{className:`mt-1 text-meta leading-relaxed text-dark-muted`,children:m(`projects.searchEmptyHint`,{q:b.trim()})})]}):(0,X.jsxs)(`div`,{className:`mt-6 rounded-xl border border-dashed border-dark-border/60 py-8 text-center`,"data-testid":`projects-empty`,children:[(0,X.jsx)(`p`,{className:`text-xs text-dark-text`,children:m(`projects.empty`)}),(0,X.jsx)(`p`,{className:`mt-1 text-meta leading-relaxed text-dark-muted`,children:m(`projects.emptyHint`)})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`mb-2 mt-5 flex items-center gap-2 text-badge font-semibold uppercase tracking-wide text-dark-muted/60`,children:[(0,X.jsx)(`span`,{className:`shrink-0`,children:m(`projects.yourProjects`)}),(0,X.jsx)(`span`,{className:`h-px flex-1 bg-dark-border/60`,"aria-hidden":`true`})]}),(0,X.jsx)(`div`,{className:`flex flex-col gap-1.5`,"data-testid":`projects-list`,children:h.map(e=>(0,X.jsx)(be,{project:e,onOpen:j,onOpenFolder:K,onCopyRoot:q,onHide:e=>{P(e),O.info(m(`projects.hiddenToast`),4e3)},now:ie},e.projectId))})]})]})})]}),(0,me.createPortal)((0,X.jsx)(ge,{isOpen:z,projects:g,onClose:()=>te(!1),onRestore:e=>{F(e),O.success(m(`projects.hiddenRestored`,{count:e.length}),3e3)}}),document.body),(0,me.createPortal)((0,X.jsx)(ee,{isOpen:L,initial:e||``,onClose:()=>R(!1),onConfirm:e=>{R(!1),V(!0),N(e).then(async e=>{if(!e.ok){V(!1),O.error(e.error,6e3);return}e.projectId&&j(e.projectId);let t=e.projectId?await oe(e.projectId,!0):!1;V(!1),t?O.success(m(`projects.created`),3e3):O.error(m(`projects.createdNoPm`),6e3)})}}),document.body)]})});export{He as ProjectsView};
@@ -1,4 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{At as t,Bt as n,In as r,K as i,L as a,Ln as o,Q as s,Rn as c,Rr as l,Rt as u,U as d,Ur as f,W as p,Wt as m,Y as h,_r as g,br as _,er as v,f as y,gr as b,in as x,m as S,n as C,or as w,ot as T,pr as E,u as D,ur as O,vr as k,w as A,xr as j,y as M,yr as N,z as P}from"./icons-BvYhTENi.js";import{r as F}from"./react-vendor-BlngCquv.js";import{t as I}from"./useTranslation-BGmCDuQI.js";import{C as L,S as R,f as ee,i as z,l as B,m as V,p as H,r as U}from"./ttsSettings-DHo3OsOq.js";import{n as W,t as G}from"./state-_ZfNVAsd.js";import{t as K}from"./cn-rx4uumOJ.js";import"./src-49LUQhkG.js";import{f as q,i as te,t as ne}from"./workspaceSemantics-RaIRer76.js";import{S as re,a as J,c as ie,d as ae,f as oe,ft as se,h as ce,i as le,l as ue,m as de,o as fe,p as pe,pt as me,s as he,u as ge}from"./MessageBubble-CV16DZMG.js";import{r as _e,t as ve}from"./InputArea-DAgOOjOc.js";import{D as ye}from"./settingsStore-RLUAWgIk.js";import{t as be}from"./api-CCt9DRQm.js";import{I as xe}from"./markdown-DAQZeY5V.js";import{n as Y}from"./websocket-C9e3h7VU.js";import{A as X}from"./common-BHXgEvgk.js";import{E as Se,U as Ce,h as we,t as Te}from"./index-BX-d2OBW.js";import{t as Ee}from"./profileChange-xrd7jkii.js";var Z=e(f(),1);function De(e){return e.recordId===void 0?e.callId===void 0?e.sourceSeq===void 0?`${e.kind}\u0000index\u0000${e.index}`:`${e.kind}\u0000seq\u0000${e.sourceSeq}`:`${e.kind}\u0000call\u0000${e.callId}`:e.recordId}function Oe(e){return re(e===null?null:e*1e3)}var ke=2048,Ae=512;function je(e){return e.replace(/```[^\n]*\n([\s\S]*?)```/g,`$1`).replace(/`([^`]+)`/g,`$1`).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/^#{1,6}\s+/gm,``).replace(/^[ \t]*[-*+]\s+/gm,``).replace(/^[ \t]*>\s?/gm,``).replace(/(\*\*|__)(.*?)\1/g,`$2`).replace(/(\*|_)(.*?)\1/g,`$2`).replace(/~~(.*?)~~/g,`$1`)}function Me(e){let t=e.slice(0,ke),n=je(t).replace(/\s+/g,` `).trim(),r=n.slice(0,Ae).trimEnd();return t.length<e.length||r.length<n.length?`${r}…`:r}function Ne(e){if(Number.isFinite(e))return Oe(e)}function Pe(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function Fe(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}function Ie(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Le(e){if(e.status===`error`)return{result:e.result===void 0?`error`:Ie(e.result)};let t=Ie(e.result);return t===``?{result:`No output`}:{result:``,resultPreviewMarkdown:t}}function Re(e,t){let n=t?.get(e.id)??null,r=e.summary?.durationMs===void 0?null:(n??e.timestamp)+e.summary.durationMs,i=n!==null||r!==null;if(i)return{timingRecorded:i,stepStartTime:e.timestamp,firstTokenTime:n,completedTime:r,usageProvided:!1,outputTokens:null}}function ze(e,t,n){let r=e.thinkingBlocks?e.thinkingBlocks.map(e=>e.text).join(`
2
- `):e.thinking??``,i=Re(e,n),a=e.summary?.durationMs;return{index:t,kind:`message`,text:``,...e.content===``?{}:{previewMarkdown:e.content},sourceSeq:t,inputDetail:e.content,...r===``?{}:{thinkingDetail:r},...i===void 0?{}:{assistantMetrics:i},timeSeconds:a===void 0?null:a/1e3,startedAt:e.timestamp}}function Be(e,t){let n=Fe(e.args),r=Ie(e.result),i=Le(e);return{index:t,kind:`tool`,text:e.name,...n===``?{}:{previewMarkdown:n},sourceSeq:t,callId:e.id,...n===``?{}:{inputDetail:n},...r===``?{}:{outputDetail:r},...i,isError:e.status===`error`,timeSeconds:e.duration===void 0?null:e.duration/1e3,startedAt:e.timestamp}}function Ve(e,t){return{index:t,kind:`user`,text:``,...e.content===``?{}:{previewMarkdown:e.content},sourceSeq:t,inputDetail:e.content,opensTurn:!0,timeSeconds:0,startedAt:e.timestamp}}function He(e,t){let n=[e.originalCount===void 0?``:`original ${e.originalCount} msgs`,e.compressedCount===void 0?``:`compressed ${e.compressedCount} msgs`,e.tokensSaved===void 0?``:`freed ${e.tokensSaved} tokens`].filter(Boolean).join(`, `);return{index:t,kind:`compacted`,text:`Context compressed`,sourceSeq:e.seq,...n===``?{}:{outputDetail:n},timeSeconds:0,startedAt:e.timestamp}}function Ue(e){let t=[],n=[];for(let t of e)t.absTime!==null&&Number.isFinite(t.absTime)&&(n.push(t.absTime),t.cell.kind===`tool`&&t.cell.timeSeconds!==null&&Number.isFinite(t.cell.timeSeconds)&&n.push(t.absTime+t.cell.timeSeconds*1e3));if(n.length>=2){let e=Ne((Math.max(...n)-Math.min(...n))/1e3);e!==void 0&&t.push(e)}else if(n.length===1){let r=e.find(e=>e.absTime===n[0])?.cell.timeSeconds,i=r==null?void 0:Ne(r);i!==void 0&&t.push(i)}let r=new Map;for(let t of e)t.toolName!==void 0&&t.cell.kind===`tool`&&r.set(t.toolName,(r.get(t.toolName)??0)+1);for(let[e,n]of r)t.push(n>1?`${e}×${n}`:e);return t.length===0?void 0:t.join(` `)}function We(e,t){return{turn:e,groups:t.groups.map(({title:e,laid:t})=>{let n=Ue(t);return{title:e,...n===void 0?{}:{description:n},cells:t.map(e=>e.cell)}})}}function Ge(e){return Math.min(...e.groups.flatMap(e=>e.cells.map(e=>e.index)),1/0)}function Ke(e){let{messages:t,compacted:n=[],ttft:r}=e,i=new Map,a=[],o=0,s=0,c=null,l=e=>{let t=i.get(e);return t===void 0&&(t={groups:[]},i.set(e,t)),t},u=(e,t)=>{let n=l(e).groups,r=n[n.length-1];r?.title===`Message`?r.laid.push(t):n.push({title:`Message`,laid:[t]})},d=(e,t,n)=>{if(n.length===0)return;let r=l(e).groups,i=`Step ${t}`,a=r.find(e=>e.title===i);a===void 0?r.push({title:i,laid:[...n]}):a.laid.push(...n)},f=[...t.map(e=>({kind:`message`,message:e})),...n.map(e=>({kind:`compacted`,record:e}))].sort((e,t)=>(e.kind===`message`?e.message.timestamp:e.record.timestamp)-(t.kind===`message`?t.message.timestamp:t.record.timestamp));for(let e of f){if(e.kind===`compacted`){let t=He(e.record,++o);a.push({groups:[{title:`Compaction ${e.record.seq}`,laid:[{absTime:Pe(e.record.timestamp),cell:t}]}]});continue}let t=e.message;if(R(t)){s+=1;let e=Ve(t,++o);u(s,{absTime:Pe(t.timestamp),cell:e});continue}let n=s>0?s:c??1,i=L(t)?Ve(t,++o):ze(t,++o,r);u(n,{absTime:Pe(t.timestamp),cell:i}),c=n;for(let e of t.toolCalls??[]){let t=Be(e,++o);u(n,{absTime:Pe(e.timestamp),toolName:e.name,callId:e.id,cell:t})}for(let[e,r]of(t.steps??[]).entries()){let t=(r.toolCalls??[]).map(e=>{let t=Be(e,++o);return{absTime:Pe(e.timestamp),toolName:e.name,callId:e.id,cell:t}});d(n,e+1,t)}}return[...[...i.entries()].map(([e,t])=>We(e,t)),...a.map(e=>We(null,e))].sort((e,t)=>Ge(e)-Ge(t))}function qe(e){if(e.text!==``)return e.text;if(e.previewMarkdown!==void 0){let t=Me(e.previewMarkdown);if(t!==``)return t}if(e.result!==void 0&&e.result!==``)return e.result;if(e.resultPreviewMarkdown!==void 0){let t=Me(e.resultPreviewMarkdown);if(t!==``)return t}return e.kind}function Je(e){return re(e)}function Ye(e){return e===`tool`||e===`subtool`?2:+(e===`message`||e===`compacted`)}function Xe(e){return e!=null&&Number.isFinite(e)}function Ze(e){if(!Xe(e.startedAt))return null;let t=Xe(e.timeSeconds)?Math.max(0,e.timeSeconds*1e3):0;return{start:e.startedAt,end:e.startedAt+t}}function Qe(e,t=`sequence`){if(t!==`sequence`)return $e(e,t===`duration`);let n=[],r=[];for(let t of e){let e=t.groups.flatMap(e=>e.cells.filter(e=>e.requestOnly!==!0));e.length!==0&&(t.turn!==null&&r.push({turn:t.turn,time:n.length}),n.push(...e.map((e,t)=>({start:n.length+t,end:n.length+t+1,index:e.index,isError:e.isError===!0,kind:e.kind,label:e.text,lane:Ye(e.kind)}))))}return n.length===0?null:{start:0,end:n.length,spans:n,turnBoundaries:r}}function $e(e,t){let n=e.flatMap(e=>{let t=e.groups.flatMap(e=>e.cells.flatMap(e=>{if(e.requestOnly===!0)return[];let t=Ze(e);return t===null?[]:[{...t,index:e.index,isError:e.isError===!0,kind:e.kind,label:e.text,lane:Ye(e.kind)}]}));return t.length===0?[]:[{turn:e.turn,rawSpans:t}]}),r=n.flatMap(e=>e.rawSpans);if(r.length===0)return null;let i=new Map,a=0,o=null;for(let e of[...r].sort((e,t)=>e.start-t.start||e.end-t.end))t&&o!==null&&e.start>o&&(a+=e.start-o),i.set(e,a),o=o===null?e.end:Math.max(o,e.end);let s=[],c=[];for(let e of n){let t=e.rawSpans.map(e=>{let t=i.get(e)??0;return{...e,start:e.start-t,end:e.end-t}});s.push(...t),e.turn!==null&&c.push({turn:e.turn,time:Math.min(...t.map(e=>e.start))})}return{start:Math.min(...s.map(e=>e.start)),end:Math.max(...s.map(e=>e.end)),spans:s,turnBoundaries:c}}function et(e,t,n=`sequence`){let r=Qe(e,n);return new Set(r?.spans.filter(e=>e.start<=t.end&&e.end>=t.start).map(e=>e.index))}function tt(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function nt(e){if(e.previewMarkdown===void 0)return``;let t=Me(e.previewMarkdown);return e.text===``?t:t===``?e.text:`${e.text} · ${t}`}function rt(e){return e.resultPreviewMarkdown===void 0?e.result??``:Me(e.resultPreviewMarkdown)}function it(e,t,n){let r=[...n.sourceBlocks??[],...n.outputBlocks??[]];return[e===null?`between turns`:`turn ${e}`,t,n.kind,n.kind===`message`?`assistant`:``,n.text,n.previewMarkdown??``,n.inputDetail??``,n.outputDetail??``,n.thinkingDetail??``,n.schemaDetail??``,n.result??``,n.resultPreviewMarkdown??``,n.callId??``,...r.flatMap(e=>[e.type,e.content,e.callId??``,e.toolName??``,e.imageAlt??``])]}var at=class{entries=new Map;layouts;update(e){if(this.layouts===e)return!1;this.layouts=e;let t=new Set;for(let n of e)for(let e of n)for(let n of e.groups)for(let r of n.cells){if(r.requestOnly===!0)continue;let i=De(r),a=it(e.turn,n.title,r),o=this.entries.get(i),s=o!==void 0&&tt(o.sources,a)?o:{sources:a,text:[...a,nt(r),rt(r)].join(`
3
- `).toLocaleLowerCase()};this.entries.set(i,s),t.add(i)}for(let e of this.entries.keys())t.has(e)||this.entries.delete(e);return!0}search(e){let t=e.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)return null;let n=new Set;for(let[e,r]of this.entries)t.every(e=>r.text.includes(e))&&n.add(e);return n}},Q=xe(),ot=(0,Z.memo)(function({actualDuration:e,onActualDurationChange:t,allTurnsCollapsed:n,onToggleAllTurns:r,allAssistantsCollapsed:i,onToggleAllAssistants:a,searchQuery:o,onSearchQueryChange:s}){let{t:c}=I();return(0,Q.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-1 border-b border-dark-border/40 px-2`,role:`toolbar`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":e,title:c(e?`trajectory.toolbar.equalWidth`:`trajectory.toolbar.actualDuration`),onClick:()=>t(!e),children:[(0,Q.jsx)(M,{size:13}),c(`trajectory.toolbar.duration`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":n,title:c(n?`trajectory.toolbar.expandTurns`:`trajectory.toolbar.collapseTurns`),onClick:r,children:[n?(0,Q.jsx)(b,{size:13}):(0,Q.jsx)(E,{size:13}),c(`trajectory.toolbar.turns`)]}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-surface/60`,"aria-pressed":i,title:c(i?`trajectory.toolbar.expandCalls`:`trajectory.toolbar.collapseCalls`),onClick:a,children:[(0,Q.jsx)(m,{size:13}),c(`trajectory.toolbar.calls`)]}),(0,Q.jsx)(`div`,{className:`ms-auto flex min-w-0 flex-1 items-center justify-end`,children:(0,Q.jsxs)(`div`,{className:`relative flex w-56 items-center`,children:[(0,Q.jsx)(p,{size:12,className:`pointer-events-none absolute start-2 text-dark-muted/50`}),(0,Q.jsx)(`input`,{type:`search`,className:`h-7 w-full rounded border border-dark-border/40 bg-dark-surface/60 ps-7 pe-2 text-xs text-dark-text outline-none placeholder:text-dark-muted/40 focus:border-accent-blue/50`,"aria-label":c(`trajectory.toolbar.search`),placeholder:c(`trajectory.toolbar.searchPlaceholder`),value:o,onChange:e=>s(e.currentTarget.value)})]})})]})}),st=3,ct=500,lt=8,ut=8;function dt(e){let t=e?.stepStartTime,n=e?.firstTokenTime,r=e?.completedTime;return e?.timingRecorded!==!0||typeof t!=`number`||typeof n!=`number`||typeof r!=`number`||!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||n<t||r<n?{}:{ttftMs:n-t,decodingMs:r-n}}function ft(e){let t=e.timeSeconds===null||!Number.isFinite(e.timeSeconds)?void 0:Math.max(0,e.timeSeconds*1e3),n=e.startedAt===null||!Number.isFinite(e.startedAt)?void 0:e.startedAt;return{...t===void 0?{}:{durationMs:t},...n===void 0?{}:{startedAt:n},...dt(e.assistantMetrics)}}function pt(e){switch(e){case`system`:return`SYSTEM`;case`user`:return`USER`;case`context`:return`CONTEXT`;case`compacted`:return`COMPACTED`;case`message`:return`ASSISTANT`;case`tool`:return`TOOL`;case`subtool`:return`SUBTOOL`}}function mt(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${(e=>String(e).padStart(3,`0`))(t.getMilliseconds())}`}function ht(e,t){let n=pt(e);if(t===void 0)return n;let r=t.durationMs===void 0?null:`Total ${Je(t.durationMs)}`;return[n,t.startedAt===void 0?null:t.durationMs===void 0?`Started ${mt(t.startedAt)}`:`${mt(t.startedAt)} → ${mt(t.startedAt+t.durationMs)}`,[r,t.ttftMs===void 0||t.decodingMs===void 0?null:`TTFT ${Je(t.ttftMs)} · Decoding ${Je(t.decodingMs)}`].filter(e=>e!==null).join(` · `)].filter(e=>e!==null&&e!==``).join(`
4
- `)}function gt(e,t){return e<=t?{start:e,end:t}:{start:t,end:e}}function _t(e){return Math.min(1,Math.max(0,e))}var vt=(0,Z.memo)(function({turns:e,mode:t,range:n,selectedIndex:r=null,searchMatchIndexes:i=null,onRangeChange:a,onRecordSelect:o}){let s=(0,Z.useMemo)(()=>Qe(e,t),[t,e]),c=(0,Z.useMemo)(()=>new Map(e.flatMap(e=>e.groups.flatMap(e=>e.cells.map(e=>[e.index,ft(e)])))),[e]),l=(0,Z.useMemo)(()=>new Map(e.flatMap(e=>e.groups.flatMap(e=>e.cells.map(e=>[e.index,qe(e)])))),[e]),u=(0,Z.useRef)(null),d=(0,Z.useRef)(null),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(null),_=(0,Z.useRef)(null),[v,y]=(0,Z.useState)(1),b=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{s!==null&&n!==null&&(n.end<s.start||n.start>s.end)&&a(null)},[s,a,n]),(0,Z.useLayoutEffect)(()=>{let e=b.current,t=_.current;b.current=null,e!==null&&t!==null&&(t.scrollLeft=e.fraction*t.scrollWidth-e.contentOffsetPx)},[v]);let x=(0,Z.useRef)(()=>{});if((0,Z.useEffect)(()=>{let e=u.current;if(!e)return;let t=e=>{e.preventDefault(),x.current(e)};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[s]),s===null)return(0,Q.jsxs)(`div`,{className:`traj-root`,"data-empty":``,children:[(0,Q.jsxs)(`div`,{className:`traj-labels`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{children:`Input`}),(0,Q.jsx)(`span`,{children:`Model`}),(0,Q.jsx)(`span`,{children:`Tools`})]}),(0,Q.jsx)(`div`,{className:`traj-track`})]});let S=Math.max(1,s.end-s.start),C=Math.max(1,s.spans.length)*lt*v,w=e=>{let t=u.current;if(!t)return 0;let n=t.getBoundingClientRect();return _t((e-n.left)/Math.max(1,n.width))},T=e=>s.start+e*S,E=e=>{if(e.button===2){a(null);return}let t=e.target.closest(`[data-timeline-record-index]`),n=t===null?null:Number(t.dataset.timelineRecordIndex);n!==null&&Number.isFinite(n)?o?.(n):(d.current={pointerId:e.pointerId,anchorFraction:w(e.clientX),anchorClientX:e.clientX,recordIndex:null},e.currentTarget.setPointerCapture(e.pointerId))},D=e=>{let t=d.current;if(t!==null&&e.pointerId===t.pointerId){let n=w(e.clientX);if(Math.abs(e.clientX-t.anchorClientX)>=st){let e=T(t.anchorFraction),r=T(n);p(gt(e,r))}return}let n=w(e.clientX),r=e.target.closest(`[data-timeline-record-index]`),i=r===null?null:Number(r.dataset.timelineRecordIndex);g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{h({fraction:n,recordIndex:Number.isFinite(i)?i:null})},ct)},O=e=>{let t=d.current;t!==null&&e.pointerId===t.pointerId&&(d.current=null,f!==null&&(a(f),p(null)))},k=e=>{d.current?.pointerId===e.pointerId&&(d.current=null,p(null))};x.current=e=>{if(s===null)return;let t=_.current;if(t===null)return;if(e.ctrlKey||e.metaKey||e.altKey){let n=Math.min(ut,Math.max(1,v*(e.deltaY<0?1.25:.8)));if(n===v)return;let r=u.current;if(r!==null){let n=r.getBoundingClientRect();b.current={fraction:_t((e.clientX-n.left)/Math.max(1,n.width)),contentOffsetPx:e.clientX-t.getBoundingClientRect().left}}y(n);return}let n=e.deltaX===0?e.deltaY:e.deltaX;n!==0&&(t.scrollLeft+=n)};let A=f??n,j=m?.recordIndex;return(0,Q.jsxs)(`div`,{ref:_,className:`traj-root`,children:[(0,Q.jsxs)(`div`,{className:`traj-labels`,"aria-hidden":`true`,children:[(0,Q.jsx)(`span`,{children:`Input`}),(0,Q.jsx)(`span`,{children:`Model`}),(0,Q.jsx)(`span`,{children:`Tools`})]}),(0,Q.jsxs)(`div`,{ref:u,className:`traj-track`,style:{width:`max(100%, ${C}px)`},role:`slider`,"aria-label":`Trajectory timeline`,tabIndex:0,onKeyDown:e=>{e.key===`Escape`&&a(null)},onPointerDown:E,onPointerMove:D,onPointerUp:O,onPointerCancel:k,onPointerLeave:()=>{g.current&&clearTimeout(g.current),g.current=null,d.current===null&&h(null)},onDoubleClick:e=>{e.preventDefault(),a(null)},onContextMenu:e=>{e.preventDefault(),a(null)},children:[m!==null&&m.recordIndex===null&&f===null&&(0,Q.jsx)(`div`,{className:`traj-hoverLine`,"aria-hidden":`true`,style:{"--trajectory-hover-left":`${m.fraction*100}%`}}),A!==null&&(0,Q.jsx)(`div`,{className:`traj-selection`,"data-dragging":f===null?void 0:`true`,"aria-hidden":`true`,style:{"--trajectory-selection-left":`${(A.start-s.start)/S*100}%`,"--trajectory-selection-width":`${(A.end-A.start)/S*100}%`}}),(0,Q.jsx)(`div`,{className:`traj-turnBoundaries`,"aria-hidden":`true`,children:s.turnBoundaries.filter(e=>e.time>s.start).map(e=>(0,Q.jsx)(`span`,{className:`traj-turnBoundary`,"data-turn":e.turn,style:{"--trajectory-turn-left":`${(e.time-s.start)/S*100}%`}},e.turn))}),(0,Q.jsx)(`div`,{className:`traj-lanes`,"data-timeline-domain":``,children:s.spans.map(e=>{let t=(e.start-s.start)/S,n=(e.end-e.start)/S*100,a=c.get(e.index),o=a?.ttftMs,u=a?.decodingMs,d=o===void 0||u===void 0||o+u<=0?null:o/(o+u),f=l.get(e.index)??e.label;return(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`traj-span`,"data-timeline-span":e.kind,"data-timeline-record-index":e.index,"data-assistant-timing":d===null?void 0:`true`,"data-error":e.isError||void 0,"data-current":e.index===r||void 0,"data-hovered":j===e.index||void 0,"data-search-match":i===null?void 0:i.has(e.index)?`true`:`false`,"data-selected":A===null?void 0:e.start<=A.end&&e.end>=A.start?`true`:`false`,title:ht(e.kind,a),style:{"--trajectory-span-left":`${t*100}%`,"--trajectory-span-width":`${n}%`,"--trajectory-span-lane":e.lane,...d===null?{}:{"--trajectory-assistant-ttft":`${d*100}%`}},children:(0,Q.jsx)(`span`,{className:`traj-spanLabel`,children:f})},e.index)})})]})]})}),yt=F();function bt(e){return typeof e==`object`?e.key:e}function xt(e,t){let n=e.length;return new Proxy(e,{get(e,r,i){if(typeof r==`string`){let i=r.charCodeAt(0);if(i>=48&&i<=57){let i=+r;if(Number.isInteger(i)&&i>=0&&i<n){let n=e[i];if(typeof n!=`object`){let r=t[i*2];n=e[i]={index:i,key:n,start:r,size:t[i*2+1],end:r+t[i*2+1],lane:0}}return n}}if(r===`length`)return n}return Reflect.get(e,r,i)}})}function St(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return(o.length!==r.length||o.some((e,t)=>r[t]!==e))&&(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1),i}return o.updateDeps=e=>{r=e},o}function Ct(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var wt=(e,t)=>Math.abs(e-t)<1.01,Tt=(e,t,n)=>{let r;return Object.assign(function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)},{cancel:()=>{e.clearTimeout(r)}})};function Et({offset:e,isScrolling:t,elementMax:n,holdOffset:r,scrollOffset:i,pendingWrite:a,clampedMaxAtWrite:o}){return t&&a===null&&e===i?`spurious`:a!==null&&Math.abs(e-a.target)<1.5?`readBack`:a!==null&&!a.smooth&&n!==null&&a.target>n+r+.5&&Math.abs(e-(n+r))<1.5||a!==null&&!a.smooth&&a.lowMaxes?.some(t=>Math.abs(e-t)<1.5)?`clampedReadBack`:o!==null&&Math.abs(e-o)<1.5?`clampedEcho`:`external`}var Dt=e=>e===`smooth`||e===`smoothFinishing`;function Ot({kind:e,offset:t,command:n,target:r}){return e!==`spurious`&&e!==`readBack`&&e!==`clampedReadBack`&&n?.index!=null&&n.phase!==`queued`&&!Dt(n.phase)&&!wt(t,n.lastTargetOffset)&&!wt(t,r())&&e!==`clampedEcho`}var kt=40;function At(e){let t=e[e.length-1];if(t===void 0)return!1;let n=e.length-2;for(;n>=0&&t.t-e[n].t<kt;)n--;if(n<0)return!1;let r=e[n],i=n-1;for(;i>=0&&r.t-e[i].t<kt;)i--;if(i<0)return!1;let a=e[i],o=(t.offset-r.offset)/(t.t-r.t),s=(r.offset-a.offset)/(r.t-a.t);return o*s>=0&&Math.abs(o)>=2*Math.abs(s)&&Math.abs(o)-Math.abs(s)>=.8}function jt(e){let t=e[e.length-1];if(t===void 0)return!1;let n=e.length-2;for(;n>=0&&t.t-e[n].t<kt;)n--;if(n<0)return!1;let r=e[n];return Math.abs(t.offset-r.offset)/(t.t-r.t)>=.05}var Mt,Nt=()=>{if(Mt!==void 0)return Mt;if(typeof navigator>`u`)return Mt=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Mt=!0;let e=navigator.maxTouchPoints;return Mt=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Pt,Ft=()=>Pt===void 0?Pt=Nt()&&typeof CSS<`u`&&typeof CSS.supports==`function`&&CSS.supports(`overflow-anchor: auto`):Pt,It={capture:!0,passive:!0},Lt=class{constructor(e){this.host=e,this._touch=null,this.inMotion=()=>this._touch!==null&&this._touch.phase!==`lateFling`,this.dragging=()=>this._touch?.phase===`down`&&this._touch.moved,this.tail=()=>this._touch?.phase===`tail`?this._touch.moved?`fling`:`tap`:null,this.onScroll=({isScrolling:e,ownReadBack:t,moved:n,external:r})=>(e&&this._touch?.phase===`tail`?this._openTail(this._touch.moved||!t,!1):this._touch?.phase===`lateFling`&&(this.host.now()>this._touch.until?this._touch=null:r&&e&&n&&this._openTail(!0,!1)),!t&&e&&n&&this._touch?.phase===`down`?(this._touch.moved=!0,!0):!1),this.touchStart=()=>{this.end(),this._touch={phase:`down`,moved:!1}},this.touchEnd=()=>{let e=this._touch?.phase===`down`&&this._touch.moved;this.end(),this._openTail(e,e)},this.end=()=>{let e=this.host.getWindow();this._touch?.phase===`tail`&&e!=null&&e.clearTimeout(this._touch.timerId),this._touch=null},this.listen=e=>{let t=()=>this.touchStart(),n=()=>this.touchEnd();return e.addEventListener(`touchstart`,t,It),e.addEventListener(`touchend`,n,It),e.addEventListener(`touchcancel`,n,It),()=>{e.removeEventListener(`touchstart`,t,It),e.removeEventListener(`touchend`,n,It),e.removeEventListener(`touchcancel`,n,It),this.end()}},this._openTail=(e,t)=>{let n=this.host.getWindow();if(!Nt()||n==null)return;this.end();let r={phase:`tail`,moved:e,awaitingFling:t,timerId:n.setTimeout(()=>{this.host.tailStillMoving()?this._openTail(r.moved,r.awaitingFling):(this._touch=r.awaitingFling?{phase:`lateFling`,until:this.host.now()+1e3}:null,this.host.onTailClosed())},150)};this._touch=r}}get touch(){return this._touch}},Rt=e=>{let{clientWidth:t,clientHeight:n}=e;return{width:t,height:n}},zt=e=>{let t=new Set;return{schedule:n=>{let r=e.requestAnimationFrame(()=>{t.delete(r),n()});t.add(r)},cancel:()=>{t.forEach(t=>e.cancelAnimationFrame(t)),t.clear()}}},Bt=e=>e,Vt=e=>{let t=e.overscan*Math.max(e.lanes??1,1),n=Math.max(e.startIndex-t,0),r=Math.min(e.endIndex+t,e.count-1)-n+1,i=Array(r);for(let e=0;e<r;e++)i[e]=n+e;return i},Ht=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Rt(n)),!r.ResizeObserver)return()=>{};let a=zt(r),o=new r.ResizeObserver(()=>{let t=()=>{i(Rt(n))};e.options.useAnimationFrameWithResizeObserver?a.schedule(t):t()});return o.observe(n,{box:`content-box`}),()=>{o.unobserve(n),a.cancel()}},Ut={passive:!0},Wt=typeof window>`u`||`onscrollend`in window,Gt=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&Wt,o=0,s=a?null:Tt(i,()=>t(n(r),!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,Ut),a&&r.addEventListener(`scrollend`,u,Ut),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u),s?.cancel()}},Kt=(e,t)=>Gt(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),qt=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Jt=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},Yt=(e,t)=>e===`smooth`?t?`smoothLanded`:`smooth`:`instant`,Xt=e=>e?.phase===`smooth`||e?.phase===`smoothLanded`;function Zt(e,t,n,r){if(t===0)return!1;let i=r(0),a=new Set,o=0;for(;o<e;){let e=n(o);if(e===i)break;a.add(e),o++}let s=e-o;if(s===0||s>=t)return!1;for(let e=0;e<s;e++)if(r(e)!==n(o+e))return!1;for(let e=s;e<t;e++)if(a.has(r(e)))return!1;return!0}var Qt=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this._holdOffset=0,this._reportedOverscroll=!1,this._iosGesture=new Lt({getWindow:()=>this.targetWindow,now:()=>this.now(),tailStillMoving:()=>{let e=this.scrollState;if(e?.phase!==`queued`||this.pendingWrite!==null)return!1;let t=this._readElementOffset();return t===null||this._lastElementOffset===null||Math.abs(t-this._lastElementOffset)<1?!1:(this._lastElementOffset=t,e.samples=[...e.samples??[],{t:this.now(),offset:t}],!0)},onTailClosed:()=>{let e=this.scrollState;e?.phase===`queued`&&jt(e.samples??[])&&(this.scrollState=null),this._flushHoldIfReady(!0),this._writeAwaitingCommand()}}),this._lastElementOffset=null,this.pendingWrite=null,this._clampedAdjustment=null,this.elementsCache=new Map,this._resizeBatch=null,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=null,n=()=>{if(e)return e;let n=this.targetWindow;if(!n||!n.ResizeObserver)return null;let i=t=zt(n);return e=new n.ResizeObserver(e=>{let t=()=>{let t={sync:!1};this._resizeBatch=t;try{e.forEach(r)}finally{this._resizeBatch=null,t.notify&&(this.notify(t.sync),this._noteClampMax(),this._flushHoldIfReady(!0),this._retryClampedAdjustment())}};this.options.useAnimationFrameWithResizeObserver?i.schedule(t):t()})},r=e=>{let t=e.target,n=this.indexFromElement(t);if(t.isConnected)this.isIndexInRange(n)&&this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this));else{this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}}};return{disconnect:()=>{var r;(r=n())==null||r.disconnect(),t?.cancel(),e=null,t=null},observe:e=>n()?.observe(e,{box:`border-box`}),unobserve:e=>n()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Bt,rangeExtractor:Vt,onChange:()=>{},measureElement:qt,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=this._singleLaneMeasurements?.items??s,l=e=>bt(c[e]),u=e>0?l(0):null,d=e>0?l(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==u||t.getItemKey(o-1)!==d)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>0&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==d)&&(o>e||Zt(e,o,l,t.getItemKey))&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=null;if(r&&this.scrollOffset!==null&&!this._awaitingCommandReadBack()){let[e,t]=r,n=this.getMeasurements(),{count:a,getItemKey:s}=this.options,c=0;for(;c<a&&s(c)!==e;)c++;if(c<a){let e=n[c];if(e){let n=Math.max(0,e.start+t);!i&&n!==this.scrollOffset&&(o=n-this.scrollOffset,this.scrollOffset=n)}}}i?this.pendingScrollAnchor={kind:`follow`,behavior:i}:o!==null&&(this._canWriteScroll()?this.pendingScrollAnchor={kind:`anchor`,delta:o}:(this._holdOffset+=o,this._followOffsetTarget(o)))},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=St(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{var e;this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,(e=this._momentumStop)==null||e.restore(),this._momentumStop=null,this.isScrolling=!1,this.scrollDirection=null,this._holdOffset=0,this._reportedOverscroll=!1,this._clampedAdjustment=null,this.pendingWrite=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{let n=t?this._elementMaxScrollOffset():null,r=this._reportedOverscroll;this._reportedOverscroll=e<0||n!==null&&e>n+1;let i=e;this._lastElementOffset=i,e=this._toLayoutOffset(e);let a=this._classifyScrollEvent(e,t,n);if(a===`spurious`)return;a===`readBack`?e=this.pendingWrite.target:a===`clampedReadBack`&&this.scrollState?.index!=null&&e<this.getMaxScrollOffset()-1.5?this.scrollState.lastTargetOffset=e:Ot({kind:a,offset:e,command:this.scrollState,target:()=>this.getScrollStateTarget(this.scrollState)})&&(this.scrollState=null),this.pendingWrite=null,this._clampedAdjustment!==null&&Math.abs(e-this._clampedAdjustment.maxAtWrite)>=1.5&&(this._clampedAdjustment=null);let o=this.getScrollOffset(),s=this.scrollDirection;this.scrollDirection=t?o===e?this.scrollDirection:o<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t;let c=this.scrollState;if(c?.phase===`queued`&&a===`external`&&t){if(r||this._reportedOverscroll)c.samples=[];else{let e=this.now();c.samples=[...(c.samples??[]).filter(t=>e-t.t<=200),{t:e,offset:i}],(s!==null&&this.scrollDirection!==s||At(c.samples))&&(this.scrollState=null)}}this._iosGesture.onScroll({isScrolling:t,ownReadBack:a===`readBack`,moved:e!==o,external:a===`external`&&this.scrollState?.phase!==`smooth`&&this.scrollState?.phase!==`smoothFinishing`})&&this.scrollState?.phase===`queued`&&(this.scrollState=null),this._flushHoldIfReady(!0),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement&&this.unsubs.push(this._iosGesture.listen(this.scrollElement)),this._scrollToOffset(this.getScrollOffset())}this._noteClampMax();let t=this.pendingScrollAnchor;this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled&&(t.kind===`anchor`?this._canWriteScroll()?Xt(this.scrollState)&&!wt(this.getScrollOffset()-t.delta,this.scrollState.lastTargetOffset)||(this._followOffsetTarget(t.delta),this._scrollToOffset(this.getScrollOffset())):(this._holdOffset+=t.delta,this._followOffsetTarget(t.delta),this.notify(!1)):this.scrollToEnd({behavior:t.behavior})),this._flushHoldIfReady(!1),this._retryClampedAdjustment()},this._classifyScrollEvent=(e,t,n)=>Et({offset:e,isScrolling:t,elementMax:n,holdOffset:this._holdOffset,scrollOffset:this.scrollOffset,pendingWrite:this.pendingWrite,clampedMaxAtWrite:this._clampedAdjustment?.maxAtWrite??null}),this._retryClampedAdjustment=()=>{if(this._clampedAdjustment===null||!this.scrollElement||!this.options.enabled)return;let{target:e,maxAtWrite:t}=this._clampedAdjustment,n=this.getMaxScrollOffset();n>t+.5&&(this._clampedAdjustment=e>n+.5?{target:e,maxAtWrite:n}:null,this._scrollToOffset(e))},this._writeAwaitingCommand=()=>{let e=this.scrollState;if(e===null||e.phase!==`queued`)return;let{behavior:t}=e;this.getMeasurements();let n=this.getScrollStateTarget(e);e.lastTargetOffset=n,this._clampedAdjustment=null,e.phase=Yt(t,e.index!=null&&wt(n,this.getScrollOffset())),this._scrollToOffset(n,{behavior:t}),this.scheduleScrollReconcile()},this._readElementOffset=()=>{let e=this.scrollElement;if(e==null)return null;let{horizontal:t,isRtl:n}=this.options;return typeof e.scrollTop==`number`?t?e.scrollLeft*(n&&-1||1):e.scrollTop:typeof e.scrollY==`number`?t?e.scrollX:e.scrollY:null},this._canWriteScroll=()=>!(Nt()&&this._iosGesture.inMotion())&&!this._reportedOverscroll,this._flushHoldIfReady=e=>{if(this._holdOffset===0||!this.scrollElement||!this.options.enabled||!this._canWriteScroll()||this.scrollState?.phase===`smooth`)return;this._holdOffset=0,this.scrollOffset!==null&&this.scrollOffset<0&&(this.scrollOffset=0),this.notify(e);let t=this.getCommandWrittenOffset()??this.getScrollOffset();this._clampedAdjustment=this._clampedBy(t),this._scrollToOffset(t)},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=St(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.isIndexInRange=e=>e>=0&&e<this.options.count,this.getMeasurements=St(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this._singleLaneMeasurements=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._singleLaneMeasurements?.flat;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e}let o=u===0?Array(e):this._singleLaneMeasurements.items.slice(),c;if(u===0)c=t+n;else{let e=u-1;c=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t);o[t]=e;let n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=c,a[t*2+1]=i,c+=i+s}this._singleLaneMeasurements={flat:a,items:o};let d=xt(o,a);return this.measurementsCache=d,d}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=St(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=tn(e,t,n,r,r===1&&this._singleLaneMeasurements!==null?this._singleLaneMeasurements.flat:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=St(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t,this.options.lanes]},(e,t,n,r,i,a)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n,lanes:a}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!Xt(this.scrollState))return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e);if(!this.isIndexInRange(t))return;let n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),e.isConnected&&(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var n;if(!this.isIndexInRange(e))return;this._resizeBatch?.sync&&this.getMeasurements();let r,i,a,o=this._singleLaneMeasurements?.flat;if(this.options.lanes===1&&o!=null)a=this.options.getItemKey(e),i=o[e*2],r=o[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;a=t.key,i=t.start,r=t.size}let s=this.itemSizeCache.get(a)??r,c=t-s;if(c!==0){let o=this.options.anchorTo===`end`&&!Xt(this.scrollState)&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,l=o?this._getLayoutTotalSize():0,u=this.getScrollOffset(),d=this.itemSizeCache.has(a)?i+s<=u&&this.scrollDirection!==`backward`:i<u,f=!Xt(this.scrollState)&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?d:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:a,start:i,size:r,end:i+r,lane:0},c,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(a,t),this.itemSizeCacheVersion++;let p=!1;if(this._awaitingCommandReadBack()||(o?p=this.applyScrollAdjustment(this._getLayoutTotalSize()-l):f&&(p=this.applyScrollAdjustment(c))),this._resizeBatch){this._resizeBatch.notify=!0,(n=this._resizeBatch).sync||(n.sync=p);return}this.notify(p),this._noteClampMax(),this._flushHoldIfReady(!0),this._retryClampedAdjustment()}},this.getVirtualItems=St(()=>[this.getVirtualIndexes(),this.getMeasurements(),this._holdOffset],(e,t,n)=>{let r=[];for(let i=0,a=e.length;i<a;i++){let a=t[e[i]];r.push(n===0?a:{...a,start:a.start-n,end:a.end-n})}return r},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._singleLaneMeasurements?.flat,r=this.options.lanes===1&&n!=null;return Ct(t[$t(0,t.length-1,r?e=>n[e*2]:e=>Ct(t[e]).start,e)])},this._noteClampMax=()=>{if(!this._awaitingCommandReadBack())return;let e=this._elementMaxScrollOffset();if(e===null)return;let t=this.pendingWrite,n=Math.max(e,0)+this._holdOffset;if(n>=t.target)return;let r=t.lowMaxes??=[];r[r.length-1]!==n&&r.push(n)},this.getMaxScrollOffset=()=>(this._elementMaxScrollOffset()??0)+this._holdOffset,this._toLayoutOffset=e=>{let t=e+this._holdOffset;return this.pendingScrollAnchor?.kind===`anchor`&&(t+=this.pendingScrollAnchor.delta),t},this._elementMaxScrollOffset=()=>{let e=this.scrollElement;if(e===null)return null;if(`scrollHeight`in e)return this.options.horizontal?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight;if(`document`in e){let t=e.document.documentElement;return this.options.horizontal?t.scrollWidth-e.innerWidth:t.scrollHeight-e.innerHeight}return null},this._momentumStop=null,this._stopMomentum=e=>{let t=this.scrollElement,n=this.targetWindow;if(t===null||n===null)return;let r=`document`in t?t.document.scrollingElement:t;if(!r?.style)return;if(this._momentumStop){this._momentumStop.done=e;return}let{style:i}=r,a=this.options.horizontal?`overflow-x`:`overflow-y`,o=i.getPropertyValue(a),s=i.getPropertyPriority(a);i.setProperty(a,`hidden`,`important`);let c={restore:()=>i.getPropertyValue(a)!==`hidden`||i.getPropertyPriority(a)!==`important`?!1:(i.setProperty(a,o,s),!0),done:e};this._momentumStop=c,n.requestAnimationFrame(()=>n.requestAnimationFrame(()=>{this._momentumStop===c&&(this._momentumStop=null,c.restore()&&c.done())}))},this._clampedBy=e=>{let t=this._elementMaxScrollOffset();if(t===null)return null;let n=t+this._holdOffset;return e>n+.5?{target:e,maxAtWrite:n}:null},this.getVirtualDistanceFromEnd=()=>Math.max(this._getLayoutTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1){let e=this.getMaxScrollOffset(),n=e-this.options.paddingEnd+this.options.scrollPaddingEnd;return[Math.max(Math.min(n,e),0),t]}let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._startScroll({index:null,align:t},this.getOffsetForAlignment(e,t),n,`absolute`)},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r;this._startScroll({index:e,align:a},i,n,`absolute`)},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getOffsetForAlignment((this.getCommandWrittenOffset()??this.getScrollOffset())+e,`start`);this._startScroll({index:null,align:`start`},n,t,`relative`)},this.scrollToEnd=({behavior:e=`auto`}={})=>{this.options.count>0?this._startScroll({index:this.options.count-1,align:`end`,toEnd:!0},Math.max(this.getMaxScrollOffset(),0),e,`absolute`):this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.cancelScroll=()=>{this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null},this.getTotalSize=()=>Math.max(this._getLayoutTotalSize()-this._holdOffset,0),this._getLayoutTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._singleLaneMeasurements?.flat;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n}={})=>{let r={target:e+(t??0),smooth:n===`smooth`};return this.pendingWrite=r,this.options.scrollToFn(e-this._holdOffset,{behavior:n,adjustments:t},this),r},this.getCommandWrittenOffset=()=>this.scrollState!==null&&this.pendingWrite!==null&&!this.pendingWrite.smooth?this.pendingWrite.target:null,this._awaitingCommandReadBack=()=>{let e=this.getCommandWrittenOffset();return!(Nt()&&this._iosGesture.dragging())&&e!==null&&!wt(e,this.getScrollOffset())},this._followOffsetTarget=e=>{this.scrollState!==null&&this.scrollState.index==null&&(this.scrollState.lastTargetOffset+=e)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}get scrollAdjustments(){return 0}applyScrollAdjustment(e,t){if(e===0)return!1;if(this._followOffsetTarget(e),this._canWriteScroll()){let n=this.getScrollOffset();this._clampedAdjustment=this._clampedBy(n+e);let r=this._scrollToOffset(n,{adjustments:e,behavior:t});return this.scrollOffset!==null&&(this.pendingWrite===r&&(this.scrollOffset+=e),this.scrollOffset<0&&(this.scrollOffset=0)),!0}return this._holdOffset+=e,this.scrollOffset!==null&&(this.scrollOffset+=e),!0}scheduleScrollReconcile(){this.targetWindow?this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}):this.scrollState=null}getScrollStateTarget(e){let t=e.toEnd?[Math.max(this.getMaxScrollOffset(),0)]:e.index==null?void 0:this.getOffsetForIndex(e.index,e.align);return t?t[0]:e.lastTargetOffset}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}if(this.scrollState.phase===`queued`){this.scheduleScrollReconcile();return}this.getMeasurements();let e=this.getScrollStateTarget(this.scrollState),t=this.scrollState.index==null?1:this.options.useAnimationFrameWithResizeObserver?3:2,n=e!==this.scrollState.lastTargetOffset;if(!n&&wt(e,this.getScrollOffset())){if(this.scrollState.phase===`smooth`?this.scrollState.phase=`smoothLanded`:this.scrollState.phase===`smoothFinishing`&&(this.scrollState.phase=`instant`),this.scrollState.stableFrames++,this.scrollState.stableFrames>=t){this.getScrollOffset()!==e&&this._scrollToOffset(e,{behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let t=this.getSize()||600,n=Math.abs(e-this.getScrollOffset()),r=Xt(this.scrollState)&&n>t;this.scrollState.lastTargetOffset=e,r?this.scrollState.phase=`smooth`:this.scrollState.phase===`smooth`?this.scrollState.phase=`smoothFinishing`:this.scrollState.phase===`smoothLanded`&&(this.scrollState.phase=`instant`),this._scrollToOffset(e,{behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}_startScroll(e,t,n,r){let i=this._iosGesture.tail();if(r===`absolute`&&i!==null){if(i===`fling`&&Ft()){this._stopMomentum(()=>{this.scrollState?.phase!==`queued`||this._iosGesture.tail()!==`fling`||this._reportedOverscroll||(this._iosGesture.end(),this._flushHoldIfReady(!0),this._writeAwaitingCommand())}),this.scrollState={...e,startedAt:this.now(),lastTargetOffset:t,stableFrames:0,phase:`queued`,behavior:n,samples:[]},this.scheduleScrollReconcile();return}this._iosGesture.end()}this.scrollState={...e,startedAt:this.now(),lastTargetOffset:t,stableFrames:0,behavior:n,phase:Yt(n,e.index!=null&&wt(t,this.getScrollOffset()))},this._scrollToOffset(t,{behavior:n}),this.scheduleScrollReconcile()}},$t=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function en(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function tn(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=en(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=$t(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var nn=typeof document<`u`?Z.useLayoutEffect:Z.useEffect;function rn({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=Z.useReducer(e=>e+1,0)[1],a=Z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=Z.useRef(!1),s=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},c=(e,t,n)=>{let r=a.current,i=!!e.options.horizontal,o=t.start-e.options.scrollMargin;r.lastPositions.get(n)!==o&&(r.lastPositions.set(n,o),r.mode===`transform`?n.style.transform=i?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:n.style[i?`left`:`top`]=`${o}px`)},l=e=>{let t=a.current;if(t.enabled&&t.container){s(e);for(let t of e.getVirtualItems()){let n=e.elementsCache.get(t.key);n&&c(e,t,n)}}},u={...r,onChange:(t,n)=>{var s;let c=a.current,u=!0;if(c.enabled){l(t);let e=t.range,n=c.prevRange;u=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,u&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}u&&(e&&n&&!o.current?(0,yt.flushSync)(i):i()),(s=r.onChange)==null||s.call(r,t,n)}},[d]=Z.useState(()=>{let e=new Qt(u),t=e.measureElement;return e.measureElement=n=>{o.current=!0;try{t(n)}finally{o.current=!1}let r=a.current;if(n!==null&&r.enabled&&r.container){let t=e.measurementsCache[e.indexFromElement(n)];t&&c(e,t,n)}},Object.assign(e,{containerRef:t=>{let n=a.current;n.container=t,n.lastSize=null,t!==null&&l(e)}})});return d.setOptions(u),nn(()=>d._didMount(),[]),nn(()=>(s(d),d._willUpdate())),nn(()=>{l(d)}),d}function an(e){return rn({observeElementRect:Ht,observeElementOffset:Kt,scrollToFn:Jt,...e})}var on=30,sn=20,cn=9;function ln(e){let t=encodeURIComponent(De(e.cell));return e.collapsedSummaryKind===void 0?t:`${t}\u0000summary\u0000${e.collapsedSummaryKind}`}function un(e){let t=[],n=[];for(let[r,i]of e.entries()){let e={logicalIndex:r,record:i};if(i.cell.requestOnly===!0){n.push(e);continue}let a=[...n,e];n=[],t.push({entries:a,height:i.collapsedSummaryKind===void 0?on:sn,key:ln(i)})}return n.length>0&&t.push({entries:n,height:cn,key:n.map(e=>ln(e.record)).join(`|`)}),t}var dn=[`Input`,`Output`,`Think`,`Time`],fn=(0,Z.memo)(function({turn:e}){return(0,Q.jsxs)(`div`,{className:`sticky top-0 z-10 flex h-[26px] items-center border-b border-dark-border/40 bg-dark-surface/95 px-2 backdrop-blur`,children:[(0,Q.jsxs)(`span`,{className:`text-meta font-semibold text-dark-text`,children:[`Turn `,e]}),(0,Q.jsx)(`div`,{className:`ms-auto flex items-center gap-3 pe-1 text-badge text-dark-muted/50`,"aria-hidden":`true`,children:dn.map(e=>(0,Q.jsx)(`span`,{className:`w-12 text-end`,children:e},e))})]})}),pn=(0,Z.memo)(function({title:e,description:t}){return(0,Q.jsxs)(`div`,{className:`flex h-[22px] items-center gap-2 px-2 text-meta`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-dark-muted`,children:e}),t!==void 0&&t!==``&&(0,Q.jsx)(`span`,{className:`truncate text-dark-muted/50`,children:t})]})}),mn={system:`System`,user:`User`,context:`Context`,compacted:`Compacted`,message:`Message`,tool:`Tool`,subtool:`Sub`},hn={system:`bg-dark-surface text-dark-muted border-dark-border/40`,user:`bg-accent-blue/10 text-accent-blue border-accent-blue/30`,context:`bg-dark-surface text-dark-muted border-dark-border/40`,compacted:`bg-accent-yellow/15 text-accent-yellow border-accent-yellow`,message:`bg-accent-green/10 text-accent-green border-accent-green/30`,tool:`bg-accent-purple/10 text-accent-purple border-accent-purple/30`,subtool:`bg-dark-surface text-dark-muted border-dark-border/40`},gn=(0,Z.memo)(function({cell:e,selected:t=!1,onClick:n}){let{index:r,kind:i,timeSeconds:a,input:o,output:s,think:c}=e,l=qe(e),u=i===`message`;return(0,Q.jsxs)(`div`,{className:[`flex h-[30px] items-center gap-2 border-b border-dark-border/20 px-2 text-xs cursor-pointer select-none`,t?`bg-accent-blue/10`:`hover:bg-dark-surface/40`].join(` `),"data-kind":i,"data-selected":t||void 0,onClick:()=>n?.(r),children:[(0,Q.jsxs)(`span`,{className:`w-10 shrink-0 text-end tabular-nums text-dark-muted/50`,children:[`#`,r]}),(0,Q.jsx)(`span`,{className:`w-[74px] shrink-0`,children:(0,Q.jsx)(`span`,{className:[`inline-block rounded border px-1 py-px text-badge leading-none`,hn[i]].join(` `),children:mn[i]})}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-text`,title:l,children:l}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-2 tabular-nums text-dark-muted/60`,children:[u&&(0,Q.jsxs)(Q.Fragment,{children:[o!==void 0&&(0,Q.jsx)(`span`,{title:`Input tokens`,children:o}),s!==void 0&&(0,Q.jsx)(`span`,{title:`Output tokens`,children:s}),c!==void 0&&(0,Q.jsx)(`span`,{title:`Reasoning tokens`,children:c})]}),(0,Q.jsx)(`span`,{className:`w-16 text-end`,children:Oe(a)})]})]})}),_n=100,vn=12,yn=600,bn=2;function xn(e){let t=(0,Z.useRef)({rows:[],structure:[]});if(t.current.rows===e)return t.current.structure;let n=t.current.structure.length===e.length&&e.every((e,n)=>{let r=t.current.structure[n];return r?.key===e.key&&r.height===e.height})?t.current.structure:e.map(e=>({key:e.key,height:e.height}));return t.current={rows:e,structure:n},n}function Sn(e){let t=[];for(let n of e){let e=[];for(let t of n.groups)t.cells.forEach((r,i)=>{e.push({turn:n.turn,group:t.title,groupDescription:t.description,groupStart:i===0,turnStart:e.length===0,cell:r,turnEnd:!1})});if(e.length>0){let t=e[e.length-1];t&&(t.turnEnd=!0)}t.push(...e)}return t}function Cn(e,t){let n=[],r=[],i=null,a=()=>{if(r.length!==0){if(i!==null&&t.has(i)){let e=r.filter(e=>e.cell.requestOnly!==!0&&e.cell.kind!==`system`),t=r[0];n.push({...t,groupStart:!0,turnStart:!0,turnEnd:!0,collapsedSummary:`Turn ${i} · ${e.length} records`,collapsedSummaryKind:`turn`,cell:{...t.cell,index:t.cell.index}})}else n.push(...r);r=[],i=null}};for(let t of e)t.turnStart&&a(),i=t.turn,r.push(t);return a(),n}function wn(e,t){let n=[],r=0;for(;r<e.length;){let i=e[r],a=e[r+1];if(i.cell.kind===`message`&&a!==void 0&&(a.cell.kind===`tool`||a.cell.kind===`subtool`)&&t.has(De(i.cell))){let t=r+1;for(;t<e.length&&(e[t].cell.kind===`tool`||e[t].cell.kind===`subtool`);)t+=1;let a=t-r-1;n.push({...i,groupStart:!0,turnEnd:e[t-1]?.turnEnd??i.turnEnd,collapsedSummary:`${qe(i.cell)||`Message`} · ${a} tool call${a>1?`s`:``}`,collapsedSummaryKind:`assistant`}),r=t}else n.push(i),r+=1}return n}function Tn(e,t){let n=[],r=null,i=null;for(let a of e)a.turnStart&&(r=a),a.groupStart&&(i=a),t.has(a.cell.index)&&(r!==null&&n.length===0&&(n.push({...r,groupStart:!0,turnStart:!0}),r=null),i!==null&&n.length>0&&n[n.length-1].group!==a.group&&(n.push({...i,groupStart:!0,turnStart:!1}),i=null),n.push(a));return n}function En(e){if(e===null||!Number.isFinite(e))return`Not available`;let t=new Date(e),n=e=>String(e).padStart(2,`0`),r=`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${(e=>String(e).padStart(3,`0`))(t.getMilliseconds())}`;return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${r}`}function Dn(e){let t=[{id:`overview`,label:`Summary`}];return e.inputDetail!==void 0&&e.inputDetail!==``&&t.push({id:`input`,label:`Input`}),e.outputDetail!==void 0&&e.outputDetail!==``&&t.push({id:`output`,label:`Output`}),e.thinkingDetail!==void 0&&e.thinkingDetail!==``&&t.push({id:`thinking`,label:`Thinking`}),e.assistantMetrics!==void 0&&t.push({id:`timing`,label:`Timing`}),(e.input!==void 0||e.output!==void 0||e.think!==void 0)&&t.push({id:`usage`,label:`Usage`}),t}function On({cell:e,onClose:t}){let n=Dn(e),[r,i]=(0,Z.useState)(n[0]?.id??`overview`),a=qe(e);return(0,Q.jsxs)(`div`,{className:`flex h-full w-[360px] shrink-0 flex-col border-s border-dark-border/40 bg-dark-surface/40`,children:[(0,Q.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center justify-between border-b border-dark-border/40 px-3`,children:[(0,Q.jsxs)(`span`,{className:`text-xs font-medium text-dark-text`,children:[`Record #`,e.index]}),(0,Q.jsx)(`button`,{type:`button`,className:`rounded p-1 text-dark-muted hover:bg-dark-surface/60`,onClick:t,"aria-label":`Close details`,children:(0,Q.jsx)(C,{size:14})})]}),(0,Q.jsx)(`div`,{className:`flex shrink-0 flex-wrap gap-1 border-b border-dark-border/40 px-2 py-1.5`,children:n.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`traj-detailTab`,"data-active":r===e.id||void 0,onClick:()=>i(e.id),children:e.label},e.id))}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(()=>{switch(r){case`overview`:return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Kind`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.kind})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Index`}),(0,Q.jsxs)(`dd`,{className:`traj-detailValue`,children:[`#`,e.index]})]}),e.callId!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Call ID`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue break-all`,children:e.callId})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Duration`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:Oe(e.timeSeconds)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Started`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:En(e.startedAt??null)})]}),e.isError===!0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-20 shrink-0`,children:`Status`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue text-accent-red`,children:`error`})]}),a!==``&&(0,Q.jsxs)(`div`,{className:`pt-1`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey mb-1`,children:`Summary`}),(0,Q.jsx)(`dd`,{className:`traj-detailBody`,children:a})]})]});case`input`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.inputDetail});case`output`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.outputDetail});case`thinking`:return(0,Q.jsx)(`div`,{className:`traj-detailBody`,children:e.thinkingDetail});case`timing`:{let t=e.assistantMetrics;if(!t)return null;let n=t.firstTokenTime!==null&&t.stepStartTime!==null?t.firstTokenTime-t.stepStartTime:null,r=t.completedTime!==null&&t.firstTokenTime!==null?t.completedTime-t.firstTokenTime:null;return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Step start`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:En(t.stepStartTime)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`First token`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:En(t.firstTokenTime)})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`TTFT`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:n===null?`—`:`${n} ms`})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Decoding`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:r===null?`—`:`${r} ms`})]})]})}case`usage`:return(0,Q.jsxs)(`dl`,{className:`space-y-1.5`,children:[e.input!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Input`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.input})]}),e.output!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Output`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.output})]}),e.think!==void 0&&(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`dt`,{className:`traj-detailKey w-24 shrink-0`,children:`Reasoning`}),(0,Q.jsx)(`dd`,{className:`traj-detailValue`,children:e.think})]}),e.input===void 0&&e.output===void 0&&e.think===void 0&&(0,Q.jsx)(`div`,{className:`traj-detailValue`,children:`Token usage not reported by provider yet.`})]});default:return null}})()})]})}function kn({turns:e,searchMatchIndexes:t=null,selectedIndex:n,onSelectIndex:r,onDeselect:i,onClearSelection:a,collapsedTurns:o,onToggleTurn:s,collapsedAssistants:c,onToggleAssistant:l}){let u=(0,Z.useRef)(null),d=(0,Z.useMemo)(()=>Sn(e),[e]),f=(0,Z.useMemo)(()=>n===null?void 0:d.find(e=>e.cell.index===n),[d,n]),p=(0,Z.useMemo)(()=>{if(t!==null)return Tn(d,t);let e=o.size===0?d:Cn(d,o);return c.size===0?e:wn(e,c)},[d,c,o,t]),m=(0,Z.useMemo)(()=>un(p),[p]),h=xn(m),g=p.length>_n,_=(0,Z.useCallback)(e=>h[e]?.height??30,[h]),v=(0,Z.useCallback)(e=>h[e]?.key??e,[h]),y=(0,Z.useCallback)(()=>u.current,[]),b=an({count:g?h.length:0,enabled:g,estimateSize:_,getItemKey:v,getScrollElement:y,initialRect:{width:0,height:yn},anchorTo:`end`,overscan:vn,scrollEndThreshold:bn}),x=g?b.getVirtualItems():[],S=x[0]?.start??0,C=g?b.getTotalSize():0,w=e=>{r(e)},T=e=>e.collapsedSummary===void 0?(0,Q.jsxs)(Q.Fragment,{children:[e.turnStart&&e.turn!==null&&(0,Q.jsx)(fn,{turn:e.turn}),e.groupStart&&(0,Q.jsx)(pn,{title:e.group,description:e.groupDescription}),(0,Q.jsx)(gn,{cell:e.cell,selected:n===e.cell.index,onClick:w})]}):(0,Q.jsxs)(`div`,{className:`flex h-[20px] cursor-pointer items-center gap-2 px-2 text-xs text-dark-muted hover:bg-dark-surface/40`,onClick:()=>{e.collapsedSummaryKind===`turn`&&e.turn!==null?s(e.turn):e.collapsedSummaryKind===`assistant`&&l(De(e.cell))},children:[(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:`▸`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.collapsedSummary})]});return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Q.jsx)(`div`,{ref:u,className:`min-w-0 flex-1 overflow-auto`,onClick:e=>{e.target===e.currentTarget&&a?.()},children:g?(0,Q.jsx)(`div`,{style:{height:C,position:`relative`},children:x.map(e=>{let t=m[e.index];return t?(0,Q.jsx)(`div`,{"data-virtual-row-key":t.key,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start-S}px)`,height:t.height},children:t.entries.map(e=>(0,Q.jsx)(`div`,{children:T(e.record)},ln(e.record)))},t.key):null})}):p.map(e=>(0,Q.jsx)(`div`,{children:T(e)},ln(e)))}),f!==void 0&&(0,Q.jsx)(On,{cell:f.cell,onClose:i},f.cell.index)]})}function An(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}var jn=(0,Z.memo)(function({errors:e,onOpenLogs:t}){let{t:n}=I(),[r,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(null),c=(0,Z.useMemo)(()=>e.filter(e=>e.level===`error`),[e]);if((0,Z.useEffect)(()=>{s(e=>e!==null&&c.length>e?null:e)},[c.length]),c.length===0||o!==null)return null;let l=c[c.length-1];if(l===void 0)return null;let u=c.slice(-20).reverse();return(0,Q.jsxs)(`div`,{"data-trajectory-error-banner":``,className:`mx-2 mt-1 shrink-0 rounded-md border border-accent-red/50 bg-accent-red/10 text-xs`,role:`alert`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5 text-accent-red`,children:[(0,Q.jsx)(S,{size:14,className:`shrink-0`,"aria-hidden":`true`}),(0,Q.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-start`,onClick:()=>a(e=>!e),title:n(r?`trajectory.errorBanner.collapse`:`trajectory.errorBanner.expand`),children:[(0,Q.jsxs)(`span`,{className:`shrink-0 font-semibold`,children:[n(`trajectory.errorBanner.title`),c.length>1&&(0,Q.jsxs)(`span`,{className:`ms-1.5 rounded bg-accent-red px-1.5 py-0.5 text-badge font-semibold text-accent-fg`,children:[`×`,c.length]})]}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-dark-text`,children:[An(l.timestamp),` · `,l.message]}),r?(0,Q.jsx)(g,{size:14,className:`shrink-0`,"aria-hidden":`true`}):(0,Q.jsx)(_,{size:14,className:`shrink-0`,"aria-hidden":`true`})]}),t&&(0,Q.jsxs)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 text-accent-red hover:bg-accent-red/15`,onClick:t,title:n(`trajectory.errorBanner.viewLogs`),children:[(0,Q.jsx)(i,{size:12,"aria-hidden":`true`}),n(`trajectory.errorBanner.viewLogs`)]}),(0,Q.jsx)(`button`,{type:`button`,className:`shrink-0 rounded p-0.5 text-dark-muted hover:bg-accent-red/15 hover:text-accent-red`,onClick:()=>{s(c.length),a(!1)},title:n(`trajectory.errorBanner.dismiss`),children:(0,Q.jsx)(C,{size:14,"aria-hidden":`true`})})]}),r&&(0,Q.jsx)(`div`,{className:`max-h-40 overflow-y-auto border-t border-accent-red/30 px-2 py-1.5 font-mono text-meta custom-scrollbar`,children:u.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 py-0.5`,children:[(0,Q.jsx)(`span`,{className:`shrink-0 text-dark-muted`,children:An(e.timestamp)}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-accent-red px-1 py-0.5 text-avatar font-semibold uppercase leading-none text-accent-fg`,children:e.source}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-all text-dark-text`,children:e.message})]},e.id))})]})}),Mn=new Set,Nn=new Set,Pn=[],Fn=3e3;function In({sessionId:e,messages:t,errorLogs:n,onOpenLogs:r}){let[i,a]=(0,Z.useState)(Mn),[o,s]=(0,Z.useState)(Nn),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(``),[m]=(0,Z.useState)(()=>new at),[h,g]=(0,Z.useState)(0),_=(0,Z.useRef)(null),v=(0,Z.useRef)(!1),[y,b]=(0,Z.useState)(null),x=we(t=>t.compactedBySession[e]??Ln),S=we(t=>t.ttftBySession[e]),C=(0,Z.useMemo)(()=>{if(S!==void 0)return new Map(Object.entries(S))},[S]),w=(0,Z.useMemo)(()=>Ke({messages:t,compacted:x,ttft:C}),[t,x,C]),T=u?`duration`:`sequence`;(0,Z.useEffect)(()=>(_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{m.update([w]),g(e=>e+1),v.current=!0},v.current?Fn:0),()=>{_.current&&clearTimeout(_.current)}),[w,m]);let E=(0,Z.useMemo)(()=>f.trim()===``?null:m.search(f),[f,h]),D=(0,Z.useMemo)(()=>{if(E===null)return null;let e=new Set;for(let t of w)for(let n of t.groups)for(let t of n.cells)E.has(De(t))&&e.add(t.index);return e},[w,E]),O=(0,Z.useMemo)(()=>c===null?null:et(w,c,T),[w,T,c]),k=(0,Z.useMemo)(()=>(n??Pn).filter(t=>t.sessionId===e),[n,e]),A=(0,Z.useMemo)(()=>r?()=>r(e):void 0,[r,e]),j=(0,Z.useMemo)(()=>w.filter(e=>e.turn!==null&&e.groups.reduce((e,t)=>e+t.cells.filter(e=>e.requestOnly!==!0&&e.kind!==`system`).length,0)>1).flatMap(e=>e.turn===null?[]:[e.turn]),[w]),M=j.length>0&&j.every(e=>i.has(e)),N=(0,Z.useMemo)(()=>{let e=[];for(let t of w){let n=t.groups.flatMap(e=>e.cells);for(let t=0;t<n.length;t++){let r=n[t];if(r?.kind!==`message`)continue;let i=n[t+1];(i?.kind===`tool`||i?.kind===`subtool`)&&e.push(De(r))}}return e},[w]),P=N.length>0&&N.every(e=>o.has(e)),F=(0,Z.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),I=(0,Z.useCallback)(()=>{a(e=>{let t=new Set(e);if(M)for(let e of j)t.delete(e);else for(let e of j)t.add(e);return t})},[M,j]),L=(0,Z.useCallback)(e=>{s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),R=(0,Z.useCallback)(()=>{s(e=>{let t=new Set(e);if(P)for(let e of N)t.delete(e);else for(let e of N)t.add(e);return t})},[P,N]),ee=(0,Z.useCallback)(e=>{l(e)},[]),z=(0,Z.useCallback)(e=>{O!==null&&!O.has(e)&&l(null),b(t=>t===e?null:e)},[O]),B=(0,Z.useCallback)(()=>{b(null)},[]),V=(0,Z.useCallback)(()=>{l(null),b(null)},[]);return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,"data-conversation-composer-overlay":``,children:[(0,Q.jsx)(ot,{actualDuration:u,onActualDurationChange:e=>{d(e),l(null)},allTurnsCollapsed:M,onToggleAllTurns:I,allAssistantsCollapsed:P,onToggleAllAssistants:R,searchQuery:f,onSearchQueryChange:p}),(0,Q.jsx)(jn,{errors:k,onOpenLogs:A}),(0,Q.jsx)(vt,{turns:w,mode:T,range:c,selectedIndex:y,searchMatchIndexes:D,onRangeChange:ee,onRecordSelect:z}),(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,Q.jsx)(kn,{turns:w,searchMatchIndexes:D,selectedIndex:y,onSelectIndex:z,onDeselect:B,onClearSelection:V,collapsedTurns:i,onToggleTurn:F,collapsedAssistants:o,onToggleAssistant:L})})]})}var Ln=[],Rn=(0,Z.memo)(function({activeSessionId:e}){let{t}=I(),n=Ce(e=>e.observed).filter(t=>t.id!==e);return n.length===0?null:(0,Q.jsxs)(`div`,{className:`mb-2 flex flex-col gap-1.5`,children:[n.map(e=>(0,Q.jsx)(zn,{id:e.id,title:e.title},e.id)),(0,Q.jsx)(`span`,{className:`sr-only`,children:t(`chat.observedTitle`)})]})});function zn({id:e,title:t}){let{t:r}=I(),i=B(t=>t.generatingSessions?.includes(e)??!1),a=B(t=>{let n=t.messagesBySession[e];return!!(n&&n.length>0?n[n.length-1]:void 0)?.errorCard}),o=B(t=>{let n=t.messagesBySession[e];if(!n||n.length===0)return``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.type===`user`)continue;let r=t.content||``;if(r.trim())return r.trim().slice(-160)}return``}),s=r(i?`chat.observedRunning`:a?`chat.observedFailed`:`chat.observedDone`);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5 text-xs`,children:[(0,Q.jsx)(D,{size:13,className:`shrink-0 text-accent-blue`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`max-w-[180px] truncate font-medium text-dark-text`,title:t,children:t}),(0,Q.jsx)(`span`,{className:`shrink-0 text-badge text-dark-muted`,children:e.slice(0,8)}),i?(0,Q.jsx)(n,{size:12,className:`shrink-0 animate-spin text-accent-yellow`,"aria-hidden":`true`}):a?(0,Q.jsx)(w,{size:12,className:`shrink-0 text-accent-red`,"aria-hidden":`true`}):(0,Q.jsx)(O,{size:12,className:`shrink-0 text-accent-green`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`shrink-0 text-badge ${a?`text-accent-red`:i?`text-accent-yellow`:`text-accent-green`}`,children:s}),o&&(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted/80`,title:o,children:o})]})}function Bn(e,t){if(!e||!t||t.length===0)return;let n=e.find(e=>e.switchMode&&t.includes(e.label));n?.switchMode&&se.getState().setBaseMode(n.switchMode)}var Vn=15e3,Hn=300,Un=4,Wn=8388608;function Gn(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(typeof r.result==`string`?r.result:``),r.onerror=()=>n(r.error instanceof Error?r.error:Error(`image read failed`)),r.readAsDataURL(e)})}function Kn(e){let t=[];for(let n of Array.from(e.items??[])){if(n.kind!==`file`||!n.type.startsWith(`image/`))continue;let e=n.getAsFile();e&&t.push(e)}if(t.length===0)for(let n of Array.from(e.files??[]))n.type.startsWith(`image/`)&&t.push(n);return t}function qn(e){let{t}=I();return(0,Z.useMemo)(()=>{if(e.secret)return{allItems:[],otherIdx:-1,proceedIdx:-1,displayItems:[]};let n=t(`chat.askOtherLabel`),r=t(`chat.askProceedLabel`),i=e.options||[],a=i.some(e=>e.label===n),o=i.some(e=>e.label===r),s=[...i];return o||s.push({label:r,description:t(`chat.askProceedDesc`)}),a||s.push({label:n,description:t(`chat.askCustomDesc`)}),{allItems:s,otherIdx:a?s.findIndex(e=>e.label===n):s.length-1,proceedIdx:o?s.findIndex(e=>e.label===r):s.length-(a?1:2),displayItems:s}},[e,t])}function Jn(e){let t=(0,Z.useRef)(null),[n,r]=(0,Z.useState)({top:!1,bottom:!1}),i=(0,Z.useCallback)(()=>{let e=t.current;if(!e)return;let n=e.scrollHeight-e.clientHeight,i=n>2&&e.scrollTop>2,a=n>2&&e.scrollTop<n-2;r(e=>e.top===i&&e.bottom===a?e:{top:i,bottom:a})},[]);return(0,Z.useEffect)(()=>{i();let e=t.current;if(!e)return;e.addEventListener(`scroll`,i,{passive:!0});let n=typeof ResizeObserver<`u`?new ResizeObserver(i):null;return n?.observe(e),()=>{e.removeEventListener(`scroll`,i),n?.disconnect()}},[i,e]),{ref:t,style:{"--ui-fade-top":n.top?`14px`:`0px`,"--ui-fade-bottom":n.bottom?`14px`:`0px`}}}function Yn({ms:e}){let{t}=I();return(0,Q.jsx)(`span`,{className:`inline-flex items-center self-start text-xs leading-relaxed tabular-nums text-accent-yellow`,children:t(`chat.askAutoContinue`,{seconds:Math.max(1,Math.round(e/1e3))})})}function Xn({children:e,tone:t}){return(0,Q.jsx)(`span`,{className:K(`shrink-0 rounded-full px-1.5 py-0.5 text-meta leading-none`,t===`green`?`bg-accent-green/10 text-accent-green`:`bg-dark-hover text-dark-muted`),children:e})}function Zn({label:e,description:t,index:n,multi:r,active:i,checked:a,tag:o,onSelect:s}){let c=r?a:i;return(0,Q.jsxs)(`button`,{type:`button`,role:r?`checkbox`:`radio`,"aria-checked":c,onClick:s,className:K(`w-full min-h-11 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-start`,`transition duration-snap ease-expo`,c?`border-accent-blue/40 bg-accent-blue/10`:`border-dark-border/60 bg-transparent hover:border-dark-border hover:bg-dark-hover`),children:[(0,Q.jsx)(`span`,{className:K(`shrink-0 w-5 h-5 inline-flex items-center justify-center text-meta font-medium tabular-nums`,`transition duration-snap ease-expo`,r?`rounded-md`:`rounded-full`,c?`border border-accent-blue bg-accent-blue text-accent-fg`:r?`border border-dark-border text-transparent`:`border border-dark-border text-dark-muted`),children:r?(0,Q.jsx)(j,{size:12}):n}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-1.5 gap-y-1`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium text-dark-text`,children:e}),o]}),t&&(0,Q.jsx)(`span`,{className:`block mt-0.5 text-xs leading-snug text-dark-muted`,children:t})]}),!r&&(0,Q.jsx)(j,{size:15,"aria-hidden":`true`,className:K(`shrink-0 mt-0.5 transition-opacity duration-snap ease-expo`,c?`text-accent-blue opacity-100`:`opacity-0`)})]})}function Qn({value:e,onChange:t,onSubmit:n}){let{t:i}=I(),[a,s]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute start-3 top-1/2 -translate-y-1/2 text-dark-muted`,children:(0,Q.jsx)(u,{size:14})}),(0,Q.jsx)(`input`,{type:a?`text`:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,className:`input ps-9 pe-11 font-mono`,value:e,onChange:e=>t(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),n())},placeholder:i(`chat.askSecretPlaceholder`),autoFocus:!0}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-label":i(a?`chat.askSecretHide`:`chat.askSecretReveal`),"aria-pressed":a,className:K(`absolute end-1 top-1/2 -translate-y-1/2 inline-flex h-8 w-8 items-center justify-center`,`rounded-md text-dark-muted transition-colors duration-snap ease-expo`,`hover:bg-dark-hover hover:text-dark-text`),children:a?(0,Q.jsx)(o,{size:14,"aria-hidden":`true`}):(0,Q.jsx)(r,{size:14,"aria-hidden":`true`})})]}),(0,Q.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-muted`,children:i(`chat.askSecretHint`)}),(0,Q.jsx)(X,{variant:`primary`,shape:`pill`,leftIcon:(0,Q.jsx)(d,{size:15}),onClick:n,disabled:!e,className:`w-full min-h-11 sm:w-auto sm:self-start`,children:i(`chat.askSubmit`)})]})}function $n({item:e,answered:t,selectedIdx:n,multiSelected:r,customInput:i,showCustomInput:a,onSelect:o,onToggleMulti:s,onProceed:c,onEnterCustom:l,onCancelCustom:u,onSubmitCustom:f,onCustomChange:p,inputRef:m}){let{t:h}=I(),{otherIdx:g,proceedIdx:_,displayItems:v}=qn(e),y=!!e.multiSelect,{ref:b,style:x}=Jn(v.length);if(e.secret)return(0,Q.jsx)(Qn,{value:i,onChange:p,onSubmit:f});let S=e=>{e===_?c():e===g?l():y?s(e):o(e)};return(0,Q.jsxs)(`div`,{ref:b,style:x,role:y?`group`:`radiogroup`,"aria-label":e.question,className:`fade-mask-y flex flex-col gap-2 pe-1 overflow-y-auto custom-scrollbar sm:max-h-72`,children:[v.map((e,t)=>{let o=n===t,s=t===g;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(Zn,{label:e.label,description:e.description,index:t+1,multi:y,active:o,checked:r.has(t),tag:t===_?(0,Q.jsx)(Xn,{tone:`green`,children:h(`chat.askDirectTag`)}):s?(0,Q.jsx)(Xn,{tone:`muted`,children:h(`chat.askCustomTag`)}):null,onSelect:()=>S(t)}),s&&o&&a&&(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 ps-8`,children:[(0,Q.jsx)(`textarea`,{ref:m,className:`input resize-none`,rows:3,value:i,onChange:e=>p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),f()),e.key===`Escape`&&u()},placeholder:h(`chat.askAnswerPlaceholder`),autoFocus:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(X,{variant:`primary`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(d,{size:13}),onClick:f,children:h(`chat.askSubmit`)}),(0,Q.jsx)(X,{variant:`ghost`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(C,{size:13}),onClick:u,children:h(`common.cancel`)})]})]})]},`opt-${t}`)}),t&&(0,Q.jsx)(`div`,{className:`text-xs font-medium text-accent-green`,children:h(`chat.askAnswered`)})]})}var er=(e,t)=>e?.secret===!0||t?.secret===!0;function tr({images:e,notice:t,onRemove:n}){let{t:r}=I();return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[e.length>0&&(0,Q.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:e.map((e,t)=>(0,Q.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-dark-border bg-dark-surface`,children:[(0,Q.jsx)(`img`,{src:e,alt:r(`chat.askImageAlt`,{index:t+1}),className:`h-14 w-14 object-cover`}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":r(`chat.askImageRemove`),onClick:()=>n(t),className:`absolute end-0.5 top-0.5 inline-flex h-5 w-5 items-center justify-center rounded-full bg-dark-bg/80 text-dark-muted transition-colors hover:bg-accent-red/80 hover:text-dark-bg`,children:(0,Q.jsx)(C,{size:11})})]},`ask-img-${t}`))}),t?(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 text-meta text-accent-yellow`,children:[(0,Q.jsx)(S,{size:11,className:`shrink-0`}),(0,Q.jsx)(`span`,{children:t})]}):(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 text-meta text-dark-muted`,children:[(0,Q.jsx)(x,{size:11,className:`shrink-0`}),(0,Q.jsx)(`span`,{children:r(`chat.askImagePasteHint`)})]})]})}function nr({isOpen:e,onClose:t}){let{t:n}=I(),[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(-1),[s,c]=(0,Z.useState)(new Set),[l,u]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),[b,C]=(0,Z.useState)(0),[w,T]=(0,Z.useState)([]),[E,D]=(0,Z.useState)(!1),[O,A]=(0,Z.useState)([]),[M,P]=(0,Z.useState)(null),F=(0,Z.useRef)(null),L=(0,Z.useRef)(null),R=(0,Z.useMemo)(()=>r?r.questions&&r.questions.length>0?r.questions:[{question:r.question,header:r.header,options:r.options,multiSelect:r.multiSelect,secret:r.secret}]:[],[r]),z=R.length>1,B=(0,Z.useCallback)(e=>{i(e),o(e.multiSelect?-1:0),c(new Set),u(``);let t=e.questions&&e.questions.length>0?e.questions:[e];p(er(t[0],e)),h(!1),_(!1),y(!1),C(0),D(!1),T(t.map(()=>null)),A([]),P(null)},[]);(0,Z.useEffect)(()=>{L.current=r}),(0,Z.useEffect)(()=>{if(e){let e=window.__pendingQuestion;e&&B(e)}},[e,B]),(0,Z.useEffect)(()=>{let e=e=>{let n=e.detail,r=L.current?.questionId??null;if(n&&r&&n!==r)return;let a=r;h(!0),setTimeout(()=>{let e=L.current?.questionId??null;a&&e&&e!==a||(t(),i(null),h(!1))},Hn)};return window.addEventListener(`ask-question-dismiss`,e),()=>window.removeEventListener(`ask-question-dismiss`,e)},[t]),(0,Z.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>{h(!1),_(!0)},Vn);return()=>clearTimeout(e)},[m]),(0,Z.useEffect)(()=>{let e=()=>{_(!1),y(!1)};return window.addEventListener(`ask-question-dismiss`,e),()=>window.removeEventListener(`ask-question-dismiss`,e)},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail,n=L.current?.questionId??null;t&&n&&t!==n||(h(!1),_(!0),y(!0))};return window.addEventListener(`ask-question-ack-failed`,e),()=>window.removeEventListener(`ask-question-ack-failed`,e)},[]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail,n=ee.getState().activeSessionId;if(t&&n&&t!==n)return;let r=window.__pendingQuestion;r&&B(r)};return window.addEventListener(`ask-question-required`,e),()=>window.removeEventListener(`ask-question-required`,e)},[B]),(0,Z.useEffect)(()=>{o(0),c(new Set),u(``),p(er(R[b],r))},[b,E,r,R]);let V=R[b]||null,{allItems:H,otherIdx:U}=qn(V||{question:``}),W=er(V,r),G=O[b]??[],q=(0,Z.useCallback)((e,t)=>{!m&&r&&(_(!1),h(!0),Bn(r.options,t),Y.send({type:`question_answer`,sessionId:r.sessionId||Y.getSessionId()||void 0,data:JSON.stringify({questionId:r.questionId,answer:e,selectedOptions:t,...G.length>0?{images:G}:{}})}))},[m,r,G]),te=(0,Z.useCallback)(()=>{!m&&r&&(_(!1),h(!0),Y.send({type:`question_answer`,sessionId:r.sessionId||Y.getSessionId()||void 0,data:JSON.stringify({questionId:r.questionId,answers:R.map((e,t)=>{let r=w[t]||{answer:n(`chat.askUnansweredValue`)},i=O[t]??[];return i.length>0?{...r,images:i}:r})})}))},[m,r,R,w,O,n]),ne=(0,Z.useCallback)(e=>{A(t=>{let n=t.slice();return n[b]=(n[b]??[]).filter((t,n)=>n!==e),n}),P(null)},[b]),re=(0,Z.useCallback)(e=>{if(m||W||E)return;let t=e.clipboardData;if(!t)return;let r=Kn(t);if(r.length===0)return;e.preventDefault();let i=b,a=O[i]?.length??0;(async()=>{let e=[],t=0,o=0;for(let n of r)if(n.size>Wn)t++;else if(a+e.length>=Un)o++;else try{let t=await Gn(n);t.startsWith(`data:image/`)&&e.push(t)}catch{}e.length>0&&A(t=>{let n=t.slice();return n[i]=[...n[i]??[],...e].slice(0,Un),n}),t>0?P(n(`chat.askImageTooLarge`)):o>0?P(n(`chat.askImageTooMany`,{count:Un})):e.length>0&&P(null)})()},[m,W,E,b,O,n]),J=(0,Z.useCallback)((e,t,n)=>{Bn(R[e]?.options,n),T(r=>{let i=r.slice();return i[e]={answer:t,selectedOptions:n},i}),e<R.length-1?C(e+1):D(!0)},[R]),ie=(0,Z.useCallback)(e=>{if(m||!r)return;let t=H[e];t&&(o(e),q(t.label,[t.label]))},[m,r,H,q]),ae=(0,Z.useCallback)(()=>{if(m||!r||a<0)return;let e=H[a];e&&q(e.label,[e.label])},[m,r,a,H,q]),oe=(0,Z.useCallback)(()=>{if(m||a<0)return;let e=H[a];e&&J(b,e.label,[e.label])},[m,a,H,J,b]),se=(0,Z.useCallback)(e=>{if(m)return;let t=H[e];t&&J(b,t.label,[t.label])},[m,H,J,b]),ce=(0,Z.useCallback)(e=>{m||c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[m]),le=(0,Z.useCallback)(()=>{if(m)return;let e=[...s].map(e=>H[e]?.label||``);z?J(b,e.join(`, `),e):q(e.join(`, `),e)},[m,s,H,z,J,b,q]),ue=(0,Z.useCallback)(()=>{if(m)return;let e=n(`chat.askProceedLabel`);z?J(b,e,[e]):q(e,[e])},[m,z,J,b,q,n]),de=(0,Z.useCallback)(()=>{m||(o(U),p(!0),setTimeout(()=>F.current?.focus(),100))},[m,U]),fe=(0,Z.useCallback)(()=>{p(!1),u(``)},[]),pe=(0,Z.useCallback)(()=>{if(m)return;let e=l||n(`chat.askEmptyInputValue`);z?J(b,e):q(e)},[m,l,z,J,b,q,n]),me=(0,Z.useCallback)(()=>{!m&&r&&(_(!1),h(!0),Y.send({type:`question_answer`,sessionId:r.sessionId||Y.getSessionId()||void 0,data:JSON.stringify({questionId:r.questionId,answers:R.map(()=>({answer:`(cancelled)`}))})}))},[m,r,R]),he=(0,Z.useCallback)(()=>{if(!m){if(v)t();else if(z){if(f&&!W){p(!1),u(``);return}if(E){D(!1),C(R.length-1);return}me()}else f&&!W?(p(!1),u(``)):q(`(cancelled)`)}},[m,z,f,E,R.length,me,q,v,t,W]);if(!e||!r)return null;let ge=w.filter(e=>!e).length,_e=w.filter(Boolean).length,ve=m||g||f,ye=m?(0,Q.jsx)(`span`,{children:n(`chat.askSubmitting`)}):g?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 text-accent-yellow`,children:[(0,Q.jsx)(S,{size:12}),n(`chat.askSubmitRetry`)]}):f?W?null:(0,Q.jsx)(`span`,{children:n(`chat.askEnterHint`)}):r.multiSelect?(0,Q.jsx)(`span`,{children:n(`chat.askMultiHintSingle`)}):(0,Q.jsx)(`span`,{children:n(`chat.askSingleHintSingle`)});return(0,Q.jsx)(Te,{isOpen:e,onClose:he,title:r.header||n(z?`chat.askBatchTitle`:`chat.askSingleTitle`),badge:z?(0,Q.jsxs)(`span`,{className:`shrink-0 inline-flex items-center rounded-full bg-dark-hover px-2 py-0.5 text-meta font-medium tabular-nums text-dark-muted`,children:[_e,`/`,R.length]}):void 0,collapsedSummary:(0,Q.jsx)(`span`,{className:`truncate`,children:V?.question||r.question}),maxHeight:`min(85dvh, 40rem)`,alignToComposer:!0,children:z?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,onPaste:re,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[R.map((e,t)=>{let n=!!w[t],r=!E&&b===t;return(0,Q.jsxs)(`button`,{type:`button`,"aria-current":r?`step`:void 0,onClick:()=>{C(t),D(!1)},className:K(`inline-flex items-center gap-1 rounded-full px-3 min-h-9 text-xs font-medium tabular-nums`,`transition duration-snap ease-expo`,r?`bg-dark-text text-dark-bg`:n?`border border-accent-green/40 bg-accent-green/10 text-accent-green`:`border border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`),children:[`Q`,t+1,n&&(0,Q.jsx)(j,{size:11})]},`nav-${t}`)}),(0,Q.jsx)(`button`,{type:`button`,"aria-current":E?`step`:void 0,onClick:()=>D(!0),className:K(`inline-flex items-center rounded-full px-3 min-h-9 text-xs font-medium`,`transition duration-snap ease-expo`,E?`bg-dark-text text-dark-bg`:`border border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`),children:n(`chat.askSubmit`)})]}),r.autoResolutionMs&&r.autoResolutionMs>0&&(0,Q.jsx)(Yn,{ms:r.autoResolutionMs}),E?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(`div`,{className:`text-sm font-medium text-dark-text`,children:n(`chat.askReviewTitle`)}),(0,Q.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-dark-border`,children:R.map((e,t)=>{let r=w[t];return(0,Q.jsxs)(`div`,{className:K(`flex items-start gap-3 px-3 py-2.5`,t>0&&`border-t border-dark-border`),children:[(0,Q.jsx)(`span`,{className:`shrink-0 w-5 h-5 rounded-full border border-dark-border text-meta font-medium tabular-nums text-dark-muted inline-flex items-center justify-center`,children:t+1}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`text-sm leading-snug text-dark-text`,children:e.question}),(0,Q.jsxs)(`div`,{className:K(`mt-1 text-xs break-words`,r?`text-accent-green`:`text-accent-yellow`),children:[r?r.answer:n(`chat.askNotAnswered`),(O[t]??[]).length>0&&(0,Q.jsxs)(`span`,{className:`ms-2 inline-flex items-center gap-0.5 text-meta text-dark-muted`,children:[(0,Q.jsx)(x,{size:11}),`${(O[t]??[]).length}`]})]})]})]},`rev-${t}`)})}),ge>0&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-yellow/30 bg-accent-yellow/10 px-3 py-2 text-xs leading-relaxed text-accent-yellow`,children:[(0,Q.jsx)(S,{size:14,className:`shrink-0 mt-0.5`}),(0,Q.jsx)(`span`,{children:n(`chat.askUnansweredWarning`,{count:ge})})]}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,Q.jsx)(X,{variant:`primary`,shape:`pill`,leftIcon:(0,Q.jsx)(d,{size:15}),onClick:te,disabled:m,className:`w-full min-h-11 sm:w-auto`,children:n(`chat.askSubmitAll`)}),(0,Q.jsx)(X,{variant:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(N,{size:14}),onClick:()=>{D(!1),C(R.length-1)},disabled:m,className:`w-full min-h-11 sm:w-auto`,children:n(`chat.askBackToEdit`)})]})]}):V?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-3`,children:[(0,Q.jsx)(`p`,{className:`min-w-0 text-base leading-relaxed text-dark-text text-pretty`,children:V.question}),(0,Q.jsxs)(`div`,{className:`hidden sm:flex items-center gap-1.5 shrink-0`,children:[(0,Q.jsx)(X,{variant:`secondary`,size:`sm`,shape:`pill`,leftIcon:(0,Q.jsx)(N,{size:13}),onClick:()=>{C(e=>Math.max(0,e-1)),D(!1)},disabled:b===0,children:n(`chat.askPrevQuestion`)}),b<R.length-1?(0,Q.jsx)(X,{variant:`secondary`,size:`sm`,shape:`pill`,rightIcon:(0,Q.jsx)(k,{size:13}),onClick:()=>{C(e=>Math.min(R.length-1,e+1)),D(!1)},children:n(`chat.askNextQuestion`)}):(0,Q.jsx)(X,{variant:`secondary`,size:`sm`,shape:`pill`,rightIcon:(0,Q.jsx)(k,{size:13}),onClick:()=>D(!0),children:n(`chat.askViewSubmit`)})]})]}),(0,Q.jsx)($n,{item:V,answered:!!w[b],selectedIdx:a,multiSelected:s,customInput:l,showCustomInput:f,onSelect:se,onToggleMulti:ce,onProceed:ue,onEnterCustom:de,onCancelCustom:fe,onSubmitCustom:pe,onCustomChange:u,inputRef:F}),!W&&(G.length>0||f)&&(0,Q.jsx)(tr,{images:G,notice:M,onRemove:ne}),(0,Q.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,Q.jsx)(`p`,{className:K(`text-xs leading-relaxed text-dark-muted`,!ve&&`hidden sm:block`),children:f?(0,Q.jsx)(`span`,{children:n(`chat.askEnterHint`)}):V.multiSelect?(0,Q.jsx)(`span`,{children:n(`chat.askMultiHintBatch`)}):(0,Q.jsx)(`span`,{children:n(`chat.askSingleHintBatch`)})}),!f&&(0,Q.jsx)(X,{variant:V.multiSelect?`primary`:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(j,{size:15}),onClick:V.multiSelect?le:oe,disabled:m||(V.multiSelect?s.size===0:a<0),className:`w-full min-h-11 sm:w-auto sm:shrink-0`,children:V.multiSelect?n(`chat.askFinishQuestion`,{count:s.size}):n(`chat.askConfirmQuestion`)})]})]}):null]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,onPaste:re,children:[(0,Q.jsx)(`p`,{className:`text-base leading-relaxed text-dark-text text-pretty`,children:r.question}),r.autoResolutionMs&&r.autoResolutionMs>0&&(0,Q.jsx)(Yn,{ms:r.autoResolutionMs}),(0,Q.jsx)($n,{item:R[0],answered:!1,selectedIdx:a,multiSelected:s,customInput:l,showCustomInput:f,onSelect:ie,onToggleMulti:ce,onProceed:ue,onEnterCustom:de,onCancelCustom:fe,onSubmitCustom:pe,onCustomChange:u,inputRef:F}),!W&&(G.length>0||f)&&(0,Q.jsx)(tr,{images:G,notice:M,onRemove:ne}),(0,Q.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[ye?(0,Q.jsx)(`p`,{className:K(`text-xs leading-relaxed text-dark-muted`,!ve&&`hidden sm:block`),children:ye}):(0,Q.jsx)(`span`,{className:`hidden sm:block`}),!f&&(0,Q.jsx)(X,{variant:r.multiSelect?`primary`:`secondary`,shape:`pill`,leftIcon:(0,Q.jsx)(j,{size:15}),onClick:r.multiSelect?le:ae,disabled:m||(r.multiSelect?s.size===0:a<0),className:`w-full min-h-11 sm:w-auto sm:shrink-0`,children:r.multiSelect?n(`chat.askSubmitSelected`,{count:s.size}):n(`chat.askSubmit`)})]})]})})}var rr=15;function ir({isOpen:e,onCloseModal:t}){let{t:n}=I(`hook`),r=me(),i=r.pendingApprovals,o=r.autoMode,s=r.setAutoMode,[l,u]=(0,Z.useState)(0),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(rr),[h,g]=(0,Z.useState)(!0),_=(0,Z.useRef)(null),y=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{i.length!==0&&(o?(i.forEach(e=>{Y.send({type:`hook_allow`,data:JSON.stringify({approvalId:e.approvalId})})}),r.clearApprovals()):u(e=>Math.min(e,i.length-1)))},[i.length,o]);let b=i[l]??null,x=i.length>0&&b!==null,C=i.length,w=x?C-l-1:0;(0,Z.useEffect)(()=>{if(x&&!d&&e&&b)return m(rr),_.current=setInterval(()=>{m(e=>e<=1?(_.current&&clearInterval(_.current),0):e-1)},1e3),()=>{_.current&&clearInterval(_.current)}},[x,d,e,b?.approvalId]);let T=b?ae(b.toolName,b.askPayload):{level:`MEDIUM`,reasonKey:`risk_default`},E=ge[T.level],D=te[T.level===`CRITICAL`?`critical`:T.level===`HIGH`?`high`:T.level===`LOW`?`low`:`medium`],O=b?fe(b.toolName,b.askPayload):null,k=b?pe(b.toolName,b.askPayload):null,A=b?{verb:ue(b.toolName),target:ie(b.toolName,b.askPayload)}:null,j=b?oe(b.askPayload)!==null:!1,M=b?he(b.toolName,b.askPayload):null,N=p/rr*100,P=p<=5,F=re((rr-p)*1e3),L=(0,Z.useCallback)((e,t)=>{let n=ee.getState().activeSessionId;n&&B.getState().updateHookApprovalStatus(n,e,t)},[]),R=(0,Z.useCallback)(e=>{b&&(e&&L(b.approvalId,e),f(!0),setTimeout(()=>{r.removeApproval(b.approvalId),u(0),f(!1),y.current=!1,m(rr)},200))},[b?.approvalId,r,L]),z=(0,Z.useCallback)(()=>{!b||d||y.current||(y.current=!0,_.current&&clearInterval(_.current),Y.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})}),R(`approved`))},[b,R,d]),V=(0,Z.useCallback)(()=>{!b||d||y.current||(y.current=!0,_.current&&clearInterval(_.current),Y.send({type:`hook_deny`,data:JSON.stringify({approvalId:b.approvalId})}),R(`denied`))},[b,R,d]),H=(0,Z.useCallback)(()=>{if(!b||d||y.current)return;y.current=!0,_.current&&clearInterval(_.current);let e=oe(b.askPayload);e?(r.addToSessionAllowList(b.toolName,e),Y.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId,sessionAllow:!0})})):(r.addToSessionAllowList(b.toolName),Y.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})})),R(`approved`)},[b,R,r,d]),U=(0,Z.useCallback)(()=>{!b||d||y.current||(y.current=!0,_.current&&clearInterval(_.current),s(!0),se.getState().setAuto(!0),Y.send({type:`hook_allow`,data:JSON.stringify({approvalId:b.approvalId})}),R(`approved`))},[b,R,d,s]),W=(b?.timeoutMs??15e3)>0,G=b?.timeoutAction===`deny`?V:z;if((0,Z.useEffect)(()=>{p===0&&e&&!d&&b&&W&&G()},[p,e,d,b,G,W]),(0,Z.useEffect)(()=>{if(!e||!h)return;let t=e=>{let t=e.target;t&&typeof t.closest==`function`&&t.closest(`input, textarea, select, [contenteditable="true"]`)||(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),V()):e.key===`Enter`?(e.preventDefault(),z()):e.key===`1`?z():e.key===`2`?V():e.key===`3`?H():e.key===`4`&&U())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,h,z,V,H,U]),!x||!b)return null;let K=n(`optionAllowHint`),q=n(`optionDenyHint`),ce=j?n(`optionAllowPathHint`):n(`optionAllowAlwaysHint`,{tool:b.toolName}),de=n(`optionAutoModeHint`),_e=O?.text??k??null,ve=_e?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,Q.jsx)(`code`,{className:`font-mono text-meta bg-dark-surface text-accent-blue px-1 py-0.5 rounded shrink-0`,children:b.toolName}),(0,Q.jsx)(`span`,{className:`truncate`,children:_e})]}):null;return(0,Q.jsx)(Te,{isOpen:e,onClose:()=>t?.(),title:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(a,{className:`w-4 h-4 text-accent-yellow`}),(0,Q.jsx)(`span`,{children:n(`hookApproval`)}),(0,Q.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`(`,l+1,`/`,C,`)`]})]}),badge:(0,Q.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-badge font-bold border shrink-0 ${E.badge}`,children:[E.icon,` `,T.level]}),collapsedSummary:ve,onExpandedChange:g,maxHeight:`50vh`,alignToComposer:!0,children:(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg ${E.bg} border ${E.border}`,children:[(0,Q.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-xs font-bold border ${E.badge}`,children:[E.icon,` `,T.level]}),(0,Q.jsx)(`span`,{className:`text-xs text-dark-muted truncate`,children:n(T.reasonKey)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 ms-auto shrink-0`,children:[(0,Q.jsx)(v,{size:12,className:P?`text-accent-red`:`text-dark-muted`}),(0,Q.jsx)(`span`,{className:`text-xs font-mono ${P?`text-accent-red animate-pulse`:`text-dark-muted`}`,children:W?`${p}s`:`∞`}),(0,Q.jsx)(`div`,{className:`w-12 h-1.5 bg-dark-border rounded-full overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`h-full rounded-full transition-all duration-700 ${P?`bg-accent-red`:p<=8?`bg-accent-yellow`:`bg-accent-green`}`,style:{width:`${N}%`}})})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,Q.jsx)(`span`,{className:`flex-none w-7 h-7 rounded-lg bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center`,children:(0,Q.jsx)(a,{size:15})}),A&&(0,Q.jsx)(J,{pre:n(A.verb),obj:A.target})]}),M&&(M.external&&M.path?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 text-meta px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow border border-accent-yellow shrink-0`,title:M.path,children:[(0,Q.jsx)(c,{size:10}),n(`scopeExternal`),`: `,M.path.length>48?`${M.path.slice(0,47)}…`:M.path]}):(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 shrink-0`,children:n(`scopeLocal`)}))]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Q.jsx)(`span`,{className:`text-dark-muted shrink-0`,children:n(`tool`)}),(0,Q.jsx)(`code`,{className:`text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded truncate`,children:b.toolName}),(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:F}),(0,Q.jsx)(`span`,{className:`text-dark-muted/50`,children:D.label}),b.timeoutAction&&(0,Q.jsxs)(`span`,{className:`text-xs ${b.timeoutAction===`deny`?`text-accent-red`:`text-accent-green`}`,children:[`timeout: `,W?`${b.timeoutAction===`allow`?`auto-allow`:`auto-deny`}${b.timeoutMs?` (${(b.timeoutMs/1e3).toFixed(0)}s)`:``}`:n(`timeoutWaitUser`)]})]}),O?(0,Q.jsx)(le,{text:O.text,mono:O.mono}):k?(0,Q.jsx)(le,{text:k}):null,(T.level===`CRITICAL`||T.level===`HIGH`)&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs px-2 py-1.5 rounded ${E.bg} ${E.text}`,children:[(0,Q.jsx)(S,{size:13}),(0,Q.jsx)(`span`,{children:T.level===`CRITICAL`?n(`highRiskWarning`):n(`mediumRiskConfirm`)})]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsxs)(X,{variant:`accent`,onClick:z,disabled:d,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono bg-accent-fg/20 rounded px-1`,children:`1`}),(0,Q.jsx)(`span`,{children:ne.allow.label}),(0,Q.jsx)(`span`,{className:`text-meta text-accent-fg/70 hidden sm:inline`,children:K})]}),(0,Q.jsxs)(`button`,{onClick:H,disabled:d,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted bg-dark-surface rounded px-1`,children:`3`}),(0,Q.jsx)(`span`,{children:ne.allow_session.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:ce})]}),(0,Q.jsxs)(`button`,{onClick:U,disabled:d,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted bg-dark-surface rounded px-1`,children:`4`}),(0,Q.jsx)(`span`,{children:ne.auto.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:de})]}),(0,Q.jsx)(`span`,{className:`flex-1`}),(0,Q.jsxs)(`button`,{onClick:V,disabled:d,className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-dark-muted hover:bg-accent-red/15 hover:text-accent-red text-sm transition-colors disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`text-badge font-mono text-dark-muted/60 rounded px-1`,children:`2`}),(0,Q.jsx)(`span`,{children:ne.deny.label}),(0,Q.jsx)(`span`,{className:`text-meta text-dark-muted/60 hidden sm:inline`,children:q})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-dark-muted/60`,children:[(0,Q.jsx)(`span`,{children:n(`shortcutHint`)}),(0,Q.jsx)(`span`,{children:w>0?n(`morePending`,{n:w}):n(`lastItem`)})]})]})})}var ar=`dsc-auto-access-banner-dismissed`,or=(0,Z.memo)(function(){let{t:e}=I(),t=se(e=>e.mode),[n,r]=(0,Z.useState)(()=>localStorage.getItem(ar)===`1`);(0,Z.useEffect)(()=>{q(t===`normal`?`act`:t)||localStorage.getItem(ar)===`1`&&r(!1)},[t]);let i=(0,Z.useCallback)(e=>{e&&localStorage.setItem(ar,`1`),r(!0)},[]);return!(t!==`normal`&&q(t))||n?null:(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 px-4 py-1 text-meta leading-snug text-accent-yellow/75 bg-accent-yellow/[0.05] border-b border-accent-yellow/10 select-none`,role:`note`,title:e(`autoAccess.desc`),children:[(0,Q.jsx)(P,{size:11,className:`shrink-0 text-accent-yellow/70`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 truncate`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:e(`autoAccess.title`)}),(0,Q.jsxs)(`span`,{className:`text-accent-yellow/60`,children:[` · `,e(`autoAccess.desc`)]})]}),(0,Q.jsx)(`button`,{onClick:()=>i(!1),className:`shrink-0 rounded p-0.5 text-accent-yellow/50 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors`,title:e(`autoAccess.dismiss`),"aria-label":e(`autoAccess.dismiss`),children:(0,Q.jsx)(C,{size:11})}),(0,Q.jsx)(`button`,{onClick:()=>i(!0),className:`shrink-0 rounded px-1 py-px text-badge text-accent-yellow/50 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors whitespace-nowrap`,children:e(`autoAccess.neverShow`)})]})});function sr(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function cr(e){return sr(e,12)}function lr(){return`custom-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function ur(e,t){return e.some(e=>e.kind===`scenario`&&e.id===t)}function dr(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id!=`string`||t.id===``||typeof t.label!=`string`||t.label===``||typeof t.hint!=`string`?!1:t.kind===`template`?typeof t.templateId==`string`&&t.templateId!==``:t.kind!==void 0&&t.kind!==`prompt`?!1:typeof t.prompt==`string`&&t.prompt!==``}function fr(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&t.id!==``&&typeof t.label==`string`&&t.label!==``&&Array.isArray(t.scenarios)&&t.scenarios.length>0&&t.scenarios.every(dr)}function pr(e){let t=e(`chat.start.categories`,{returnObjects:!0,defaultValue:[]});return Array.isArray(t)?t.filter(fr):[]}var mr=`tpl:`,hr=`tpl-`;function gr(e){return e.trim().toLowerCase()}function _r(e){let t=new Map;for(let n of e){let e=(n.category??``).trim();if(!e)continue;let r=(n.name??``).trim();if(!r)continue;let i={id:`${hr}${n.id}`,label:r,hint:n.description??``,prompt:``,kind:`template`,templateId:n.id},a=t.get(e);a?a.push(i):t.set(e,[i])}return[...t].map(([e,t])=>({id:`${mr}${e}`,label:e,scenarios:t}))}function vr(e,t){if(t.length===0)return e;let n=e.map(e=>({...e})),r=new Set(n.map(e=>e.id)),i=new Map(n.map((e,t)=>[gr(e.label),t]));for(let e of t){let t=gr(e.label),a=i.get(t);if(a!==void 0){let t=n[a];n[a]={...t,scenarios:[...t.scenarios,...e.scenarios]}}else r.has(e.id)||(r.add(e.id),i.set(t,n.length),n.push(e))}return n}function yr(e,t,n){let r=new Map;for(let t of e)for(let e of t.scenarios)r.set(e.id,e);let i=new Set,a=[];for(let e of t){if(i.has(e.id))continue;if(i.add(e.id),e.kind===`custom`){a.push({id:e.id,label:e.label,hint:sr(e.prompt,56),prompt:e.prompt});continue}let t=r.get(e.id);t&&a.push(t)}return Sr(a,n).slice(0,6)}function br(e){return e<5?`chat.start.greetingDawn`:e<11?`chat.start.greetingMorning`:e<13?`chat.start.greetingNoon`:e<18?`chat.start.greetingAfternoon`:`chat.start.greetingEvening`}function xr(e,t,n){let r=e(br(t)),i=(n??``).trim();return i?e(`chat.start.withName`,{greeting:r,name:i}):r}function Sr(e,t){return e.map((e,n)=>({scenario:e,index:n,count:t[e.id]??0})).sort((e,t)=>t.count-e.count||e.index-t.index).map(e=>e.scenario)}function Cr(e,t){return e.length===0||!t?null:e.find(e=>e.id===t)??null}var $=W()(G((e,t)=>({categoryId:null,clickCounts:{},favorites:[],suggestionsHidden:!0,prefillNonce:0,setCategoryId:t=>e({categoryId:t,suggestionsHidden:!1}),recordUse:t=>e(e=>({clickCounts:{...e.clickCounts,[t]:(e.clickCounts[t]??0)+1},favorites:e.favorites.some(e=>e.id===t)?e.favorites:[{kind:`scenario`,id:t},...e.favorites]})),toggleFavorite:t=>e(e=>({favorites:e.favorites.some(e=>e.kind===`scenario`&&e.id===t)?e.favorites.filter(e=>e.kind!==`scenario`||e.id!==t):[{kind:`scenario`,id:t},...e.favorites]})),removeFavorite:t=>e(e=>({favorites:e.favorites.filter(e=>e.id!==t)})),addCustomFavorite:(n,r)=>{let i=r.trim();if(!i)return null;let a=lr(),o=new Set(t().favorites.map(e=>e.id));for(;o.has(a);)a=lr();let s={kind:`custom`,id:a,label:n.trim()||cr(i),prompt:i};return e(e=>({favorites:[s,...e.favorites]})),s},toggleSuggestions:()=>e(e=>({suggestionsHidden:!e.suggestionsHidden})),requestFocus:()=>e(e=>({prefillNonce:e.prefillNonce+1})),reset:()=>e({categoryId:null,clickCounts:{},favorites:[],suggestionsHidden:!0,prefillNonce:0})}),{name:`deepseekcode-start-page-storage`,partialize:e=>({categoryId:e.categoryId,clickCounts:e.clickCounts,favorites:e.favorites,suggestionsHidden:e.suggestionsHidden}),version:2,migrate:(e,t)=>{let n=t??0;if(n>=2||!e||typeof e!=`object`)return e;let r=e,i=n<1||r.suggestionsHidden,a=n<1?Object.entries(r.clickCounts??{}).sort((e,t)=>t[1]-e[1]).slice(0,6).map(([e])=>e):r.favoriteIds??[];return{categoryId:r.categoryId??null,clickCounts:r.clickCounts??{},suggestionsHidden:i,favorites:a.map(e=>({kind:`scenario`,id:e}))}}}));function wr(e){return typeof e!=`string`||!e?null:e.split(/[\\/]+/).pop()||null}var Tr={enabled:!0,exists:!1,name:null,file:null};function Er(){let[e,t]=(0,Z.useState)(Tr);return(0,Z.useEffect)(()=>{let e=!1,n=()=>{be.profile.get().then(n=>{if(e||!n.success||!n.data)return;let r=n.data,i=r.enabled!==!1,a=r.exists===!0,o={enabled:i,exists:a,name:i&&r.name?r.name:null,file:i&&a?wr(r.path):null};t(e=>e.enabled===o.enabled&&e.exists===o.exists&&e.name===o.name&&e.file===o.file?e:o)}).catch(()=>{})};return n(),window.addEventListener(Ee,n),()=>{e=!0,window.removeEventListener(Ee,n)}},[]),e}var Dr=(0,Z.memo)(function(){return(0,Q.jsxs)(`div`,{className:`relative isolate flex min-h-[8.5rem] w-full flex-col justify-end pb-1`,children:[(0,Q.jsx)(Or,{}),(0,Q.jsx)(jr,{})]})}),Or=(0,Z.memo)(function(){let{t:e}=I(),{enabled:t,exists:n,name:r,file:i}=Er(),a=(0,Z.useMemo)(()=>xr(e,new Date().getHours(),r),[e,r]);return(0,Q.jsxs)(`div`,{className:`chat-col px-4 pt-2 sm:px-6`,children:[(0,Q.jsxs)(`h1`,{className:`text-2xl font-semibold leading-snug tracking-tight text-dark-text`,children:[(0,Q.jsx)(`span`,{className:`block`,children:a}),(0,Q.jsx)(`span`,{className:`block`,children:e(`chat.start.question`)})]}),(0,Q.jsx)(kr,{enabled:t,exists:n,name:r,file:i})]})});function kr({enabled:e,exists:t,name:n,file:r}){let{t:i}=I(),a=e?n?i(`chat.start.profileOn`,{name:n}):t?r?i(`chat.start.profileFile`,{file:r}):i(`chat.start.profileSet`):i(`chat.start.profileAnonymous`):i(`chat.start.profileDisabled`),o=(0,Z.useCallback)(()=>{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:{tab:`settings`,section:`profile`}}))},[]);return(0,Q.jsx)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:o,title:i(`chat.start.profileHint`),className:`inline-flex min-w-0 items-center gap-1.5 rounded-full border border-dark-border/70 bg-dark-surface/50 px-2.5 py-1 text-meta text-dark-muted transition-colors hover:border-accent-blue/40 hover:text-dark-text`,children:[(0,Q.jsx)(y,{size:11,"aria-hidden":`true`,className:`shrink-0`}),(0,Q.jsx)(`span`,{className:`truncate`,children:a}),(0,Q.jsxs)(`span`,{className:`shrink-0 text-dark-muted/70`,children:[`· `,i(`chat.start.profileEdit`)]})]})})}var Ar=[{glyph:`/`,labelKey:`shortcuts.slashCommand`},{glyph:`@`,labelKey:`shortcuts.fileRef`},{glyph:`!`,labelKey:`shortcuts.shellCommand`},{glyph:`$`,labelKey:`shortcuts.skillRef`}],jr=(0,Z.memo)(function(){let{t:e}=I();return(0,Q.jsx)(`ul`,{"data-testid":`start-tips`,"aria-label":e(`shortcuts.title`),className:`chat-col mt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 px-4 sm:px-6`,children:Ar.map(t=>(0,Q.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-badge text-dark-muted/60`,children:[(0,Q.jsx)(`kbd`,{className:`rounded border border-dark-border bg-dark-bg px-1.5 py-0.5 font-mono text-badge leading-none text-dark-muted`,children:t.glyph}),(0,Q.jsx)(`span`,{children:e(t.labelKey)})]},t.glyph))})}),Mr=(0,Z.memo)(function({sessionId:e,onStartTemplate:t}){let{t:n}=I(),[i,a]=(0,Z.useState)([]);(0,Z.useEffect)(()=>{if(!t)return;let e=!1;return be.templates.list().then(t=>{!e&&t.success&&t.data&&a(t.data)}).catch(()=>{}),()=>{e=!0}},[t]);let s=(0,Z.useMemo)(()=>vr(pr(n),_r(i)),[n,i]),c=$(e=>e.categoryId),u=$(e=>e.setCategoryId),d=$(e=>e.clickCounts),f=$(e=>e.favorites),p=$(e=>e.recordUse),m=$(e=>e.toggleFavorite),h=$(e=>e.removeFavorite),g=$(e=>e.addCustomFavorite),_=$(e=>e.suggestionsHidden),v=$(e=>e.toggleSuggestions),y=$(e=>e.requestFocus),b=(0,Z.useMemo)(()=>Cr(s,c),[s,c]),x=(0,Z.useCallback)(()=>u(null),[u]),S=(0,Z.useMemo)(()=>b?Sr(b.scenarios,d):yr(s,f,d),[b,s,f,d]),[w,E]=(0,Z.useState)(!1),[D,O]=(0,Z.useState)(``),[j,M]=(0,Z.useState)(``),N=(0,Z.useCallback)(()=>{E(!1),O(``),M(``)},[]),P=(0,Z.useCallback)(()=>{E(!0),_&&v()},[_,v]),F=(0,Z.useCallback)(e=>{e.preventDefault(),g(D,j)&&N()},[g,N,D,j]),L=(0,Z.useCallback)(t=>{e&&(B.getState().setSessionInput(e,t.prompt),p(t.id),y())},[e,p,y]),[R,ee]=(0,Z.useState)(null),[z,V]=(0,Z.useState)(``),H=(0,Z.useCallback)(async e=>{V(``);let t=await be.templates.get(e);!t.success||!t.data?V(n(`templates.loadFailed`)):(ee(t.data),_&&v())},[n,_,v]),U=(0,Z.useCallback)(e=>{e.kind===`template`&&e.templateId?t&&H(e.templateId):L(e)},[t,H,L]),W=(0,Z.useRef)([]),[G,K]=(0,Z.useState)(0),q=(0,Z.useCallback)((e,t,n)=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let n=e.key===`ArrowDown`?Math.min(t+1,S.length-1):Math.max(t-1,0);K(n),W.current[n]?.focus()}else e.key===`Tab`&&(e.preventDefault(),U(n))},[U,S.length]);return s.length===0?null:(0,Q.jsxs)(`div`,{className:`start-col max-md:order-3 px-4 pb-4 sm:px-6`,children:[(0,Q.jsxs)(`div`,{role:`tablist`,"aria-label":n(`chat.start.categoriesLabel`),onKeyDown:e=>{e.key===`Escape`&&c&&(e.preventDefault(),x())},className:`snap-row mt-5 flex items-center gap-2 overflow-x-auto pb-1`,children:[s.map(e=>{let t=e.id===c;return(0,Q.jsxs)(`span`,{"data-testid":`start-chip`,"data-category-id":e.id,"data-selected":t?`true`:void 0,className:`inline-flex shrink-0 items-center overflow-hidden rounded-full border transition-colors focus-within:ring-1 focus-within:ring-accent-blue/60 ${t?`border-transparent bg-gradient-to-r rtl:bg-gradient-to-l from-accent-blue to-accent-purple text-accent-fg shadow-sm`:`border-dark-border/70 text-dark-muted hover:border-accent-blue/40 hover:text-dark-text`}`,children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t,"data-testid":`start-chip-label`,onClick:()=>u(t?null:e.id),className:`py-1 text-meta transition-colors focus-visible:outline-none ${t?`ps-3 pe-1.5`:`px-3`}`,children:e.label}),t&&(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-chip-clear`,"aria-label":n(`chat.start.clearCategory`,{label:e.label}),title:n(`chat.start.clearCategory`,{label:e.label}),onClick:x,className:`py-1 pl-0 pe-2 text-accent-fg/75 transition-colors hover:text-accent-fg focus-visible:outline-none`,children:(0,Q.jsx)(C,{size:12,"aria-hidden":`true`})})]},e.id)}),(0,Q.jsx)(k,{size:13,"aria-hidden":`true`,className:`shrink-0 text-dark-muted/50`})]}),(0,Q.jsxs)(`div`,{className:`mt-2.5`,children:[(0,Q.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-3`,children:[(0,Q.jsxs)(`span`,{className:`min-w-0 truncate text-meta text-dark-muted/60`,children:[b?n(`chat.start.categoryTitle`,{label:b.label}):n(`chat.start.frequentTitle`),(0,Q.jsx)(`span`,{className:`ms-2 text-dark-muted/40`,children:n(b?`chat.start.selectedHint`:`chat.start.frequentHint`)})]}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[!b&&!w&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`start-custom-add`,onClick:P,className:`inline-flex items-center gap-1 text-meta text-dark-muted/60 transition-colors hover:text-dark-text`,children:[(0,Q.jsx)(T,{size:11,"aria-hidden":`true`}),n(`chat.start.customAdd`)]}),(0,Q.jsx)(`button`,{type:`button`,onClick:v,className:`inline-flex items-center gap-1 text-meta text-dark-muted/60 transition-colors hover:text-dark-text`,children:_?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(r,{size:11,"aria-hidden":`true`}),n(`chat.start.show`)]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(o,{size:11,"aria-hidden":`true`}),n(`chat.start.hide`)]})})]})]}),z&&(0,Q.jsx)(`div`,{"data-testid":`start-template-error`,className:`mb-2 text-meta text-accent-red`,children:z}),R&&(0,Q.jsxs)(`div`,{"data-testid":`start-template-form`,className:`mb-2 rounded-xl border border-dark-border/60 bg-dark-surface/40 p-3`,children:[(0,Q.jsx)(`div`,{className:`mb-2 text-xs font-medium text-dark-text`,children:R.name}),(0,Q.jsx)(Se,{template:R,onCancel:()=>ee(null),onSubmit:e=>{let n=R;ee(null),t?.(n,e)},submitLabel:n(`templates.launch`)})]}),w&&!b&&(0,Q.jsxs)(`form`,{"data-testid":`start-custom-form`,onSubmit:F,className:`mb-2 flex flex-col gap-2 rounded-xl border border-dark-border/60 bg-dark-surface/40 p-3`,children:[(0,Q.jsx)(`input`,{"data-testid":`start-custom-label`,value:D,onChange:e=>O(e.target.value),placeholder:n(`chat.start.customLabelPlaceholder`),maxLength:40,className:`w-full rounded-md border border-dark-border/60 bg-dark-bg/60 px-2.5 py-1.5 text-xs text-dark-text placeholder:text-dark-muted/50 focus:border-accent-blue/50 focus-visible:outline-none`}),(0,Q.jsx)(`textarea`,{"data-testid":`start-custom-prompt`,value:j,onChange:e=>M(e.target.value),placeholder:n(`chat.start.customPromptPlaceholder`),rows:2,autoFocus:!0,className:`w-full resize-none rounded-md border border-dark-border/60 bg-dark-bg/60 px-2.5 py-1.5 text-xs leading-snug text-dark-text placeholder:text-dark-muted/50 focus:border-accent-blue/50 focus-visible:outline-none`}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-custom-cancel`,onClick:N,className:`rounded-md px-2.5 py-1 text-meta text-dark-muted transition-colors hover:text-dark-text`,children:n(`chat.start.customCancel`)}),(0,Q.jsx)(`button`,{type:`submit`,"data-testid":`start-custom-save`,disabled:!j.trim(),className:`rounded-md border border-accent-blue/40 bg-accent-blue/10 px-2.5 py-1 text-meta font-medium text-accent-blue transition-colors hover:bg-accent-blue/20 disabled:cursor-not-allowed disabled:border-dark-border/60 disabled:bg-transparent disabled:text-dark-muted/40`,children:n(`chat.start.customSave`)})]})]}),!_&&!R&&(S.length===0?w?null:(0,Q.jsx)(`p`,{"data-testid":`start-frequent-empty`,className:`rounded-xl border border-dashed border-dark-border/60 px-4 py-3 text-xs leading-relaxed text-dark-muted/70`,children:n(`chat.start.frequentEmpty`)}):(0,Q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border/60 bg-dark-surface/40`,children:S.map((e,t)=>{let r=ur(f,e.id);return(0,Q.jsxs)(`div`,{"data-testid":`start-row-shell`,className:`group flex items-center transition-colors hover:bg-dark-hover/40 focus-within:bg-dark-hover/40 ${t>0?`border-t border-dark-border/40`:``}`,children:[(0,Q.jsxs)(`button`,{ref:e=>{W.current[t]=e},type:`button`,"data-testid":`start-row`,"data-scenario-id":e.id,tabIndex:t===G?0:-1,onClick:()=>U(e),onKeyDown:n=>q(n,t,e),className:`flex min-w-0 flex-1 items-baseline gap-3 py-2.5 ps-4 pe-2 text-start transition-colors focus-visible:outline-none`,children:[(0,Q.jsx)(`span`,{className:`w-[84px] shrink-0 text-compact font-medium leading-snug text-dark-text`,children:e.label}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 border-s border-dark-border/50 ps-3 text-compact leading-snug text-dark-muted`,children:e.hint}),(0,Q.jsx)(l,{size:12,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-dark-muted/40`})]}),b?(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-row-favorite`,"aria-pressed":r,"aria-label":n(r?`chat.start.removeFavorite`:`chat.start.addFavorite`,{label:e.label}),title:n(r?`chat.start.removeFavorite`:`chat.start.addFavorite`,{label:e.label}),onClick:()=>m(e.id),className:`me-2 shrink-0 rounded-md p-1.5 transition-colors focus-visible:outline-none ${r?`text-accent-yellow`:`text-dark-muted/40 hover:text-dark-text`}`,children:(0,Q.jsx)(A,{size:13,"aria-hidden":`true`,className:r?`fill-current`:``})}):(0,Q.jsx)(`button`,{type:`button`,"data-testid":`start-row-remove`,"aria-label":n(`chat.start.removeFavorite`,{label:e.label}),title:n(`chat.start.removeFavorite`,{label:e.label}),onClick:()=>h(e.id),className:`me-2 shrink-0 rounded-md p-1.5 text-dark-muted/40 transition-colors hover:text-dark-text focus-visible:outline-none`,children:(0,Q.jsx)(C,{size:13,"aria-hidden":`true`})})]},e.id)})}))]})]})}),Nr=(0,Z.memo)(function({currentSessionId:e}){let{t}=I(),[n]=(0,Z.useState)(H),r=(0,Z.useCallback)(()=>{if(!n)return;let e=ee.getState();e.sessionTabs.some(e=>e.id===n.id)?e.setActiveSession(n.id):e.historySessions.some(e=>e.id===n.id)?e.restoreHistorySession(n.id):e.addSessionTab(n.title||void 0,n.dir||void 0,n.id),Y.setSessionId(n.id)},[n]);if(!n||n.id===e)return null;let i=n.title.trim();return i?(0,Q.jsx)(`div`,{className:`mb-1 flex shrink-0 justify-center px-4 max-md:justify-start`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:r,title:t(`chat.resumeLastTitle`),"data-testid":`resume-last-session`,className:`group flex max-w-full items-center gap-1.5 rounded-full border border-dark-border/70 bg-dark-surface/50 px-2.5 py-1 text-meta leading-none text-dark-muted transition-colors hover:border-accent-blue/40 hover:bg-accent-blue/10 hover:text-dark-text focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60`,children:[(0,Q.jsx)(s,{size:11,className:`shrink-0 text-dark-muted/70 group-hover:text-accent-blue`}),(0,Q.jsx)(`span`,{className:`truncate`,children:t(`chat.resumeLast`,{title:i})})]})}):null});function Pr(e){let{sessionId:t,isGenerating:n,messages:r}=e,{i18n:i}=I(),a=(0,Z.useRef)(n),o=(0,Z.useRef)(t);(0,Z.useEffect)(()=>{let e=a.current,s=o.current!==t;if(a.current=n,o.current=t,s||!e||n)return;let c=z();if(c.enabled&&c.autoPlay)for(let e=r.length-1;e>=0;e--){let t=r[e];if(!t||t.type!==`assistant`)continue;let n=(t.content||``).trim();if(n){if(!U(n))return;de(n,ye(i.language));return}}},[n,t,r,i.language]),(0,Z.useEffect)(()=>()=>ce(),[t])}var Fr=[{mode:`chat`,Icon:t,labelKey:`trajectory.viewChat`},{mode:`trajectory`,Icon:h,labelKey:`trajectory.viewTrajectory`}],Ir=[],Lr=(0,Z.memo)(function({tabs:e,activeSessionId:t,onSend:n,onStop:r,onPause:i,onResume:a,activeTab:o,setActiveTab:s,createNewSession:c,clearMessages:l,setTheme:u,setThemePreset:d,setLogs:f,setUnreadLogs:p,onRegenerate:m,onRetryTurn:h,onDeleteMessage:g,onOpenSidebarView:_,hookDrawerOpen:v,onCloseHookDrawer:y,questionDrawerOpen:b,onCloseQuestionDrawer:x,workspaceDir:S,onWorkspaceSelect:C,onNewSessionInDir:w,errorLogs:T,onOpenLogs:E,onStartTemplate:D}){let O=(0,Z.useMemo)(()=>({setActiveTab:s,createNewSession:c,clearMessages:l,setTheme:u,setThemePreset:d,setLogs:f,setUnreadLogs:p}),[s,c,l,u,d,f,p]),[k,A]=(0,Z.useState)(`chat`),{t:j}=I(),M=B(e=>t?e.messagesBySession[t]??Ir:Ir),N=B(e=>t?e.generatingSessions.includes(t):!1),P=B(e=>t?e.pausedSessions.includes(t):!1);Pr({sessionId:t,isGenerating:N,messages:M});let F=e.find(e=>e.id===t)||null,L=(0,Z.useMemo)(()=>M.filter(e=>!e.deleted).length===0,[M]);(0,Z.useEffect)(()=>{F&&!L&&V({id:F.id,title:F.title,dir:S})},[F,L,S]);let R=$(e=>e.prefillNonce),ee=(0,Z.useCallback)((e,r,i,a,o,s)=>{t&&n(t,e,r,i,a||s?{...a?{mentions:a,mentionDeliveryMode:o}:{},...s?{display:s}:{}}:void 0)},[n,t]),z=(0,Z.useCallback)(async e=>{let n=t;if(!n)return;let r=`shell_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,i=Date.now();B.getState().addMessage(n,{id:r,type:`user`,content:`!${e}`,timestamp:i,noTruncate:!0,shellRun:{command:e,stdout:``,stderr:``,exitCode:null,durationMs:0,running:!0}});let a=await be.shell.exec(e,S),o=a.success&&a.data?{...a.data,running:!1}:{command:e,stdout:``,stderr:``,exitCode:null,durationMs:Date.now()-i,running:!1,error:a.error||j(`chat.shellRequestFailedGeneric`)};B.getState().updateMessage(n,r,{shellRun:o})},[t,S,j]),H=(0,Z.useCallback)(e=>{t&&m&&m(t,e)},[m,t]),U=(0,Z.useCallback)(e=>{t&&g&&g(t,e)},[g,t]);return(0,Q.jsx)(`div`,{className:`flex-1 flex min-h-0`,children:(0,Q.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 min-h-0`,children:[(0,Q.jsx)(or,{}),F&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`flex h-7 shrink-0 items-center justify-end px-3`,children:(0,Q.jsxs)(`div`,{role:`radiogroup`,"aria-label":j(`trajectory.viewToggleTitle`),className:`relative inline-grid grid-cols-2 items-center rounded-full border border-dark-border bg-dark-surface/60 p-0.5 text-meta leading-none`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-0.5 left-0.5 w-[calc(50%-2px)] rounded-full ring-1 transition-transform duration-200 ease-out motion-reduce:transition-none ${k===`trajectory`?`translate-x-full bg-accent-blue/20 ring-accent-blue/40`:`translate-x-0 bg-dark-hover ring-dark-border`}`}),Fr.map(({mode:e,Icon:t,labelKey:n})=>{let r=k===e;return(0,Q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,title:j(`trajectory.viewToggleTitle`),onClick:()=>A(e),className:`relative z-10 flex items-center justify-center gap-1 whitespace-nowrap rounded-full px-2.5 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60 ${r?`text-dark-text`:`text-dark-muted hover:text-dark-text`}`,children:[(0,Q.jsx)(t,{size:11}),j(n)]},e)})]})}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col ${L&&k===`chat`?`justify-center overflow-y-auto custom-scrollbar py-2 max-md:justify-start`:``}`,children:[k===`chat`?(0,Q.jsx)(Q.Fragment,{children:L?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Nr,{currentSessionId:F.id}),(0,Q.jsx)(Dr,{})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(_e,{messages:M,isGenerating:N,isPaused:P,sessionId:F.id,onRegenerate:m?H:void 0,onRetryTurn:h,onDeleteMessage:g?U:void 0,onOpenSidebarView:_}),(0,Q.jsx)(ir,{isOpen:!!v,onCloseModal:y}),(0,Q.jsx)(nr,{isOpen:!!b,onClose:x??(()=>{})})]})}):(0,Q.jsx)(In,{sessionId:F.id,messages:M,errorLogs:T,onOpenLogs:E}),(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(Rn,{activeSessionId:F.id})}),(0,Q.jsx)(ve,{sessionId:F.id,onSend:ee,onRunShell:z,onStop:()=>r(F.id),onPause:()=>i(F.id),onResume:()=>a(F.id),slashOptions:O,workspaceDir:S,onWorkspaceSelect:C?e=>C(e,F.id):void 0,onNewSessionInDir:w,focusRequest:R}),k===`chat`&&L&&(0,Q.jsx)(Mr,{sessionId:F.id,onStartTemplate:D})]})]})]})})});export{Lr as SessionGrid};