@bryanhu/codexly 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{chunk-HUKDTKO6.js → chunk-5VUCBET3.js} +0 -4
  3. package/dist/cli.js +2 -2
  4. package/dist/server/index.js +1 -1
  5. package/dist/web/.vite/manifest.json +61 -61
  6. package/dist/web/.vite/manifest.json.br +0 -0
  7. package/dist/web/.vite/manifest.json.gz +0 -0
  8. package/dist/web/assets/{button-group-DxD1cvNd.js → button-group-DxqOhlVt.js} +1 -1
  9. package/dist/web/assets/button-group-DxqOhlVt.js.br +0 -0
  10. package/dist/web/assets/button-group-DxqOhlVt.js.gz +0 -0
  11. package/dist/web/assets/{context-menu-BxBZqph_.js → context-menu-D6mhhPGo.js} +1 -1
  12. package/dist/web/assets/context-menu-D6mhhPGo.js.br +0 -0
  13. package/dist/web/assets/context-menu-D6mhhPGo.js.gz +0 -0
  14. package/dist/web/assets/{file-review-dialog-4yb5qYp1.js → file-review-dialog-CX8yGcaF.js} +1 -1
  15. package/dist/web/assets/file-review-dialog-CX8yGcaF.js.br +0 -0
  16. package/dist/web/assets/file-review-dialog-CX8yGcaF.js.gz +0 -0
  17. package/dist/web/assets/{git-history-panel-CLWc1FLl.js → git-history-panel-ChKO0MmG.js} +1 -1
  18. package/dist/web/assets/git-history-panel-ChKO0MmG.js.br +0 -0
  19. package/dist/web/assets/git-history-panel-ChKO0MmG.js.gz +0 -0
  20. package/dist/web/assets/{global-settings-dialog-CzBgDgzH.js → global-settings-dialog-Dmjldruk.js} +1 -1
  21. package/dist/web/assets/global-settings-dialog-Dmjldruk.js.br +0 -0
  22. package/dist/web/assets/global-settings-dialog-Dmjldruk.js.gz +0 -0
  23. package/dist/web/assets/index-C1q8rvrB.css +2 -0
  24. package/dist/web/assets/index-C1q8rvrB.css.br +0 -0
  25. package/dist/web/assets/index-C1q8rvrB.css.gz +0 -0
  26. package/dist/web/assets/{index-DuOx_QDa.js → index-Dc0FOD_M.js} +3 -3
  27. package/dist/web/assets/index-Dc0FOD_M.js.br +0 -0
  28. package/dist/web/assets/index-Dc0FOD_M.js.gz +0 -0
  29. package/dist/web/assets/{installed-skills-pane-yQ22YClZ.js → installed-skills-pane-BfNddwjn.js} +1 -1
  30. package/dist/web/assets/installed-skills-pane-BfNddwjn.js.br +0 -0
  31. package/dist/web/assets/installed-skills-pane-BfNddwjn.js.gz +0 -0
  32. package/dist/web/assets/{lazy-message-response-DxkPeKeK.js → lazy-message-response-BpXGmE9E.js} +2 -2
  33. package/dist/web/assets/lazy-message-response-BpXGmE9E.js.br +0 -0
  34. package/dist/web/assets/lazy-message-response-BpXGmE9E.js.gz +0 -0
  35. package/dist/web/assets/{mcp-management-pane-fBs42kaN.js → mcp-management-pane-Ch_kUuam.js} +1 -1
  36. package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.br +0 -0
  37. package/dist/web/assets/mcp-management-pane-Ch_kUuam.js.gz +0 -0
  38. package/dist/web/assets/{message-response-BSFnyRiN.js → message-response-KFxzclWt.js} +1 -1
  39. package/dist/web/assets/message-response-KFxzclWt.js.br +0 -0
  40. package/dist/web/assets/message-response-KFxzclWt.js.gz +0 -0
  41. package/dist/web/assets/{official-plugins-pane-DL3I574g.js → official-plugins-pane-CFbYqeRf.js} +1 -1
  42. package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.br +0 -0
  43. package/dist/web/assets/official-plugins-pane-CFbYqeRf.js.gz +0 -0
  44. package/dist/web/assets/{project-file-popup-page-D7w0o_EU.js → project-file-popup-page-9jdg_OXD.js} +1 -1
  45. package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.br +0 -0
  46. package/dist/web/assets/project-file-popup-page-9jdg_OXD.js.gz +0 -0
  47. package/dist/web/assets/{project-source-panel-m_xiBT3O.js → project-source-panel-B-xuo6G6.js} +1 -1
  48. package/dist/web/assets/project-source-panel-B-xuo6G6.js.br +0 -0
  49. package/dist/web/assets/project-source-panel-B-xuo6G6.js.gz +0 -0
  50. package/dist/web/assets/{prompt-input-BHBgVKPB.js → prompt-input-CS22f1Yj.js} +1 -1
  51. package/dist/web/assets/prompt-input-CS22f1Yj.js.br +0 -0
  52. package/dist/web/assets/prompt-input-CS22f1Yj.js.gz +0 -0
  53. package/dist/web/assets/{prompt-input-controls-BZ7R1d1q.js → prompt-input-controls-CuE9VrWA.js} +1 -1
  54. package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.br +0 -0
  55. package/dist/web/assets/prompt-input-controls-CuE9VrWA.js.gz +0 -0
  56. package/dist/web/assets/{scheduled-task-date-time-picker-CLz7pymx.js → scheduled-task-date-time-picker-DbgzJnvY.js} +1 -1
  57. package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.br +0 -0
  58. package/dist/web/assets/scheduled-task-date-time-picker-DbgzJnvY.js.gz +0 -0
  59. package/dist/web/assets/{scheduled-tasks-container-DGrcqBWt.js → scheduled-tasks-container-Cikmo6YE.js} +2 -2
  60. package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.br +0 -0
  61. package/dist/web/assets/scheduled-tasks-container-Cikmo6YE.js.gz +0 -0
  62. package/dist/web/assets/{sheet-BD5Iohov.js → sheet-DTJIZQHt.js} +1 -1
  63. package/dist/web/assets/sheet-DTJIZQHt.js.br +0 -0
  64. package/dist/web/assets/sheet-DTJIZQHt.js.gz +0 -0
  65. package/dist/web/assets/{skills-market-container-E47PiSfc.js → skills-market-container-8VwHWKJN.js} +2 -2
  66. package/dist/web/assets/skills-market-container-8VwHWKJN.js.br +0 -0
  67. package/dist/web/assets/skills-market-container-8VwHWKJN.js.gz +0 -0
  68. package/dist/web/assets/{third-party-marketplace-pane-BYKLDRVH.js → third-party-marketplace-pane-BtZYBzru.js} +1 -1
  69. package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.br +0 -0
  70. package/dist/web/assets/third-party-marketplace-pane-BtZYBzru.js.gz +0 -0
  71. package/dist/web/assets/workbench-composer-Dfa3le3p.js +10 -0
  72. package/dist/web/assets/workbench-composer-Dfa3le3p.js.br +0 -0
  73. package/dist/web/assets/workbench-composer-Dfa3le3p.js.gz +0 -0
  74. package/dist/web/assets/{workbench-inspector-changes-DS6N-4Ob.js → workbench-inspector-changes-Be75nN9Z.js} +1 -1
  75. package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.br +0 -0
  76. package/dist/web/assets/workbench-inspector-changes-Be75nN9Z.js.gz +0 -0
  77. package/dist/web/assets/{workbench-pet-canvas-DdVnx74p.js → workbench-pet-canvas-gckmllUf.js} +1 -1
  78. package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.br +0 -0
  79. package/dist/web/assets/workbench-pet-canvas-gckmllUf.js.gz +0 -0
  80. package/dist/web/assets/{workbench-shell-DXDRW3gW.js → workbench-shell-0X1Ehypo.js} +3 -3
  81. package/dist/web/assets/workbench-shell-0X1Ehypo.js.br +0 -0
  82. package/dist/web/assets/workbench-shell-0X1Ehypo.js.gz +0 -0
  83. package/dist/web/index.html +2 -2
  84. package/dist/web/index.html.br +0 -0
  85. package/dist/web/index.html.gz +0 -0
  86. package/package.json +1 -1
  87. package/dist/web/assets/button-group-DxD1cvNd.js.br +0 -0
  88. package/dist/web/assets/button-group-DxD1cvNd.js.gz +0 -0
  89. package/dist/web/assets/context-menu-BxBZqph_.js.br +0 -0
  90. package/dist/web/assets/context-menu-BxBZqph_.js.gz +0 -0
  91. package/dist/web/assets/file-review-dialog-4yb5qYp1.js.br +0 -0
  92. package/dist/web/assets/file-review-dialog-4yb5qYp1.js.gz +0 -0
  93. package/dist/web/assets/git-history-panel-CLWc1FLl.js.br +0 -0
  94. package/dist/web/assets/git-history-panel-CLWc1FLl.js.gz +0 -0
  95. package/dist/web/assets/global-settings-dialog-CzBgDgzH.js.br +0 -0
  96. package/dist/web/assets/global-settings-dialog-CzBgDgzH.js.gz +0 -0
  97. package/dist/web/assets/index-CROvcy96.css +0 -2
  98. package/dist/web/assets/index-CROvcy96.css.br +0 -0
  99. package/dist/web/assets/index-CROvcy96.css.gz +0 -0
  100. package/dist/web/assets/index-DuOx_QDa.js.br +0 -0
  101. package/dist/web/assets/index-DuOx_QDa.js.gz +0 -0
  102. package/dist/web/assets/installed-skills-pane-yQ22YClZ.js.br +0 -0
  103. package/dist/web/assets/installed-skills-pane-yQ22YClZ.js.gz +0 -0
  104. package/dist/web/assets/lazy-message-response-DxkPeKeK.js.br +0 -0
  105. package/dist/web/assets/lazy-message-response-DxkPeKeK.js.gz +0 -0
  106. package/dist/web/assets/mcp-management-pane-fBs42kaN.js.br +0 -0
  107. package/dist/web/assets/mcp-management-pane-fBs42kaN.js.gz +0 -0
  108. package/dist/web/assets/message-response-BSFnyRiN.js.br +0 -0
  109. package/dist/web/assets/message-response-BSFnyRiN.js.gz +0 -0
  110. package/dist/web/assets/official-plugins-pane-DL3I574g.js.br +0 -0
  111. package/dist/web/assets/official-plugins-pane-DL3I574g.js.gz +0 -0
  112. package/dist/web/assets/project-file-popup-page-D7w0o_EU.js.br +0 -0
  113. package/dist/web/assets/project-file-popup-page-D7w0o_EU.js.gz +0 -0
  114. package/dist/web/assets/project-source-panel-m_xiBT3O.js.br +0 -0
  115. package/dist/web/assets/project-source-panel-m_xiBT3O.js.gz +0 -0
  116. package/dist/web/assets/prompt-input-BHBgVKPB.js.br +0 -0
  117. package/dist/web/assets/prompt-input-BHBgVKPB.js.gz +0 -0
  118. package/dist/web/assets/prompt-input-controls-BZ7R1d1q.js.br +0 -0
  119. package/dist/web/assets/prompt-input-controls-BZ7R1d1q.js.gz +0 -0
  120. package/dist/web/assets/scheduled-task-date-time-picker-CLz7pymx.js.br +0 -0
  121. package/dist/web/assets/scheduled-task-date-time-picker-CLz7pymx.js.gz +0 -0
  122. package/dist/web/assets/scheduled-tasks-container-DGrcqBWt.js.br +0 -0
  123. package/dist/web/assets/scheduled-tasks-container-DGrcqBWt.js.gz +0 -0
  124. package/dist/web/assets/sheet-BD5Iohov.js.br +0 -0
  125. package/dist/web/assets/sheet-BD5Iohov.js.gz +0 -0
  126. package/dist/web/assets/skills-market-container-E47PiSfc.js.br +0 -0
  127. package/dist/web/assets/skills-market-container-E47PiSfc.js.gz +0 -0
  128. package/dist/web/assets/third-party-marketplace-pane-BYKLDRVH.js.br +0 -0
  129. package/dist/web/assets/third-party-marketplace-pane-BYKLDRVH.js.gz +0 -0
  130. package/dist/web/assets/workbench-composer-DWYJJS3y.js +0 -10
  131. package/dist/web/assets/workbench-composer-DWYJJS3y.js.br +0 -0
  132. package/dist/web/assets/workbench-composer-DWYJJS3y.js.gz +0 -0
  133. package/dist/web/assets/workbench-inspector-changes-DS6N-4Ob.js.br +0 -0
  134. package/dist/web/assets/workbench-inspector-changes-DS6N-4Ob.js.gz +0 -0
  135. package/dist/web/assets/workbench-pet-canvas-DdVnx74p.js.br +0 -0
  136. package/dist/web/assets/workbench-pet-canvas-DdVnx74p.js.gz +0 -0
  137. package/dist/web/assets/workbench-shell-DXDRW3gW.js.br +0 -0
  138. package/dist/web/assets/workbench-shell-DXDRW3gW.js.gz +0 -0
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/global-settings-dialog-CzBgDgzH.js","assets/rolldown-runtime-CNC7AqOf.js","assets/react-runtime-DaCTDC27.js","assets/initial-deps-CTprc_pY.js","assets/initial-deps-CNK9MBOP.js","assets/initial-deps-Cq4pSOi-.js","assets/initial-deps-BsEyuMB0.js","assets/initial-deps-Dr1AWuHB.js","assets/initial-deps-DqJTHr9A.js","assets/workbench-pet-canvas-DdVnx74p.js","assets/download-iHkzQYEd.js","assets/prompt-input-controls-BZ7R1d1q.js","assets/git-commit-horizontal-CV-KjCHw.js","assets/prompt-input-BHBgVKPB.js","assets/lazy-message-response-DxkPeKeK.js","assets/initial-deps-Bx4af_YG.js","assets/info-whxTXvIJ.js","assets/sparkles-BLY9rqMO.js","assets/upload-D_8Uk8f-.js","assets/workbench-shell-DXDRW3gW.js","assets/workbench-composer-DWYJJS3y.js","assets/file-pen-line-B05lVjWh.js","assets/initial-deps-CQxWMuPh.js","assets/scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~olri0nvu-DAfditVv.js","assets/prompt-reference-token-Cxx6C-IR.js","assets/project-source-panel-m_xiBT3O.js","assets/file-code-corner-CYF-BidF.js","assets/code-languages-DVcuYjhn.js","assets/external-link-xbPJFZkP.js","assets/file-review-dialog-4yb5qYp1.js","assets/file-navigation-view-preference-BRWa_l_a.js","assets/file-change-D7aZLgtG.js","assets/context-menu-BxBZqph_.js","assets/button-group-DxD1cvNd.js","assets/project-file-popup-page-D7w0o_EU.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./initial-deps-Bx4af_YG.js";import{i as n,n as r,t as i}from"./react-runtime-DaCTDC27.js";import{_ as a,a as o,b as s,c,d as l,g as u,h as d,i as f,l as p,m,n as h,o as g,p as _,r as v,s as y,t as b,u as x,v as S,y as C}from"./initial-deps-CTprc_pY.js";import{c as w,l as T,s as E}from"./initial-deps-BsEyuMB0.js";import{m as D,s as O,t as k}from"./initial-deps-Dr1AWuHB.js";import{$ as A,A as j,B as ee,C as te,D as M,E as N,F as P,G as ne,H as re,I as ie,J as ae,K as oe,L as F,M as se,N as ce,O as le,P as ue,R as de,S as fe,T as pe,U as me,V as he,W as ge,X as _e,Y as ve,Z as I,_ as ye,a as be,at as L,b as xe,c as Se,d as Ce,et as we,f as Te,g as Ee,h as De,it as Oe,j as ke,k as Ae,l as je,m as Me,nt as R,o as Ne,p as Pe,q as Fe,r as Ie,rt as Le,s as Re,tt as ze,u as Be,v as Ve,w as He,x as Ue,y as We,z as Ge}from"./initial-deps-DqJTHr9A.js";import{$ as Ke,A as qe,C as Je,D as Ye,E as Xe,J as Ze,M as Qe,O as $e,Q as et,S as tt,T as nt,X as rt,_ as it,a as at,b as ot,c as st,d as ct,et as lt,f as ut,g as dt,h as ft,i as pt,j as mt,k as ht,l as gt,m as _t,mt as vt,n as yt,nt as bt,o as xt,p as St,q as Ct,r as wt,rt as Tt,s as Et,t as Dt,tt as Ot,u as kt,v as At,w as jt,x as Mt,y as Nt}from"./initial-deps-CQxWMuPh.js";var z=e(n(),1),Pt=r(),Ft=`pinned`,It=`search-source`,Lt=[`task-board`,`completed`],Rt=3e4;function zt(e,t){return[`projects`,e,`tasks`,t,`queue`]}var B=new k;function Bt(e=B){return o({queryFn:({signal:t})=>e.getAppInfo({signal:t}),queryKey:[`app-info`],staleTime:5*6e4})}function Vt(e=B,t=!1){return o({enabled:t,queryFn:({signal:t})=>e.getAppUpdateProgress({signal:t}),queryKey:[`app-update`,`progress`],refetchInterval:t?250:!1})}function Ht(e=B){return h({mutationFn:t=>e.installAppUpdate(t),mutationKey:[`app-update`,`install`],scope:{id:`app-update`}})}var Ut=`codexly.language-preference`,Wt=1,Gt=`zh-CN`;function Kt(e){return e===`zh-CN`||e===`en`}function qt(e){for(let t of e){let e=t.toLowerCase();if(e===`en`||e.startsWith(`en-`))return`en`;if(e===`zh`||e.startsWith(`zh-`))return`zh-CN`}return Gt}function Jt(e){try{let t=JSON.parse(e.getItem(Ut)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===Wt&&`language`in t&&Kt(t.language))return t.language}catch{}return null}function Yt(e,t){try{t.setItem(Ut,JSON.stringify({language:e,version:Wt}))}catch{}}function Xt(e,t){t.lang=e}function Zt(e,t){return(e===null?null:Jt(e))??qt(t)}var Qt={access:{checking:`Checking access`,codeLabel:`Access password`,loadError:`Unable to check access`,pair:`Pair`,pairing:`Pairing`,pairingDescription:`Enter the access password configured or shown when Codexly started.`,pairingError:`Unable to pair. Check the access password and try again`,pairingTitle:`Connect to a trusted LAN session`},actions:{backToWorkbench:`Back to workbench`,retry:`Retry`},app:{actionFailed:`Action failed`,actionSucceeded:`Action completed`,loadingProjects:`Loading projects`,noProjects:`No projects added`,notificationRegion:`Notifications`},errors:{notFoundDescription:`This address does not match a registered application route.`,notFoundTitle:`Page not found`,routeErrorLabel:`Route error`,routeErrorTitle:`Failed to load page`,runtimeUnavailableDescription:`First run <command>codex login</command> in the official Codex CLI, then retry after signing in.`,runtimeUnavailableTitle:`Codex Runtime unavailable`},language:{english:`English`,simplifiedChinese:`Simplified Chinese`}},$t={asyncQuestions:{pending:`Pending questions`,pendingCount:`Pending · {{count}} groups`,previous:`Previous questions`,next:`Next questions`,collapse:`Collapse questions`,expand:`Expand questions`,close:`Close questions`,other:`Other answer`,answer:`Answer: {{question}}`,send:`Send answers`,sent:`Sent`,failed:`Answers were not sent. Please retry.`},agentComponents:{addFile:`Add file`,addImage:`Add image`,addImageOrFile:`Add image or file`,currentDevice:`Current device`,deploymentHost:`Deployment host`,approval:`Approval`,approvalAccepted:`Request allowed`,approvalRejected:`Request denied`,approvalRequest:`{{title}} request`,codeComments:`{{count}} code comments`,contextPercent:`{{percentage}}% of context used`,contextSummary:`{{percentage}}% of context used`,contextUnknown:`Context usage unavailable`,contextWaiting:`Waiting for context usage from the model`,copied:`Copied`,copyCode:`Copy code`,copyOutput:`Copy command output`,copiedCode:`Code copied`,copiedOutput:`Command output copied`,fileTooLarge:`{{name}} exceeds the size limit`,folderCollapse:`Collapse folder {{name}}`,folderExpand:`Expand folder {{name}}`,invalidFileType:`{{name}} has an unsupported file type`,nextBranch:`Next response branch`,previousBranch:`Previous response branch`,removeAttachment:`Remove {{name}}`,scrollToBottom:`Scroll to bottom`,status:{completed:`Completed`,error:`Failed`,inProgress:`In progress`,pending:`Pending`,denied:`Denied`,responded:`Responded`,running:`Running`,waitingApproval:`Awaiting approval`},streamingOutput:`Receiving command output`,tooManyImages:`You can add up to {{count}} images`,totalAttachmentSizeExceeded:`Attachments exceed the total size limit`,totalImageSizeExceeded:`Images exceed the total size limit`,toolError:`Error`,toolInput:`Parameters`,toolResult:`Result`},errors:{addProject:`Failed to add project`,deleteProject:`Failed to delete project`,renameProject:`Failed to rename project`,reorderProject:`Failed to save project order`,reorderProjectChanged:`The project list changed. Try reordering again.`,stopTerminal:`Failed to stop terminal`},inspector:{attachmentDetail:`Attachment`,changeIndicator:`{{path}}, {{additions}} additions, {{removals}} deletions`,changes:`Changes`,closeFile:`Close file`,commit:`Commit`,context:`Context`,contextSources:`Context sources`,emptyFolder:`Empty folder`,fileTree:`Project files`,file:`File`,gitChanges:`Uncommitted changes`,gitChangesCount:`{{count}} changes`,gitChangesRetrying:`Git change refresh failed. Retrying automatically`,gitLoading:`Loading Git changes...`,goal:`Goal`,goalClear:`Clear goal`,goalDuration:`{{minutes}}m {{seconds}}s`,goalMutationFailed:`Unable to update the goal. Try again.`,goalPause:`Pause goal`,goalResume:`Resume goal`,goalSeconds:`{{count}}s`,goalStatus:{active:`Active`,blocked:`Blocked`,budget_limited:`Budget exhausted`,complete:`Complete`,paused:`Paused`,usage_limited:`Usage limited`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`{{used}} tokens used`,history:`History`,loading:`Loading...`,mcpEnabled:`MCP servers for this task`,mcpReload:`Reload MCP servers`,mcpReloading:`Reloading MCP servers`,mcpStatus:{authenticationRequired:`Authentication required`,cancelled:`Cancelled`,connected:`Connected`,disabled:`Disabled`,failed:`Startup failed`,notStarted:`Not started`,starting:`Starting`,unknown:`Unknown`},project:`Project`,mcpToolCount:`{{count}} tools`,openChanges:`View {{count}} uncommitted changes`,openFailed:`The selected application could not open the target`,plan:`Plan`,planStatus:{completed:`Completed`,in_progress:`In progress`,pending:`Pending`},projectFilesEmpty:`This project has no files to display`,projectFilesError:`Failed to load project files`,projectFilesLoading:`Loading project files...`,readFolder:`Loading folder {{name}}`,readFolderError:`Failed to load folder {{name}}`,reading:`Loading`,refreshFolder:`Reload folder {{name}}`,refreshGit:`Refresh Git changes`,refreshProject:`Refresh project {{name}}`,refreshProjectFiles:`Reload project files`,commitChanges:`Commit {{count}} uncommitted changes`,source:`Sources`,showMore:`Show more`,sourceRole:{admin:`Admin`,repo:`Project`,system:`System`,user:`User`},subagents:`Subagents`,subagentCount:`{{count}} subagents`,subagentOutput:`View output from subagent {{nickname}}`,terminalError:`Failed to load running terminals`,terminalLoading:`Loading terminals...`,terminalRunning:`Terminal running`,terminalStop:`Stop terminal {{command}}`,terminalStopping:`Stopping {{command}}`,terminalStopRetry:`Failed to stop terminal. Try again.`,terminals:`Running terminals`,title:`Runtime environment`},gitHistory:{branch:`Current branch: {{branch}}`,branchLoading:`Current branch: Loading...`,commits:`Commit history`,copyAuthor:`Copy author`,copyHash:`Copy full commit hash`,copyMenuLabel:`Copy commit details`,copyMessage:`Copy commit message`,empty:`This repository has no commits`,diffLoadError:`Failed to load this file's commit Diff`,diffLoading:`Loading file Diff...`,diffTruncated:`This Diff is too long; showing the first 512 KiB`,filesEmpty:`This commit has no files to review`,filesLoadError:`Failed to load commit files`,filesLoading:`Loading commit files...`,end:`All commits loaded`,loadError:`Failed to load Git history`,loadMore:`Load more`,loadMoreFiles:`Load more files`,loading:`Loading Git history...`,loadingMore:`Loading...`,loadingMoreFiles:`Loading files...`,repositories:`Repositories`,retry:`Retry`},notification:{completed:`Task completed`,failed:`Task failed`,failedWithMessage:`Task failed: {{message}}`,interrupted:`Task was interrupted and cannot continue`,waitingApproval:`Task is waiting for approval`,waitingInput:`Task is waiting for input`},taskTitle:{replying:`Replying`},reorder:{cancelled:`Project reordering cancelled`,moved:`{{name}} moved to position {{position}}`,projectFallback:`Project`,started:`Project reordering started. Drag and release to save the position.`,title:`Drag to reorder, or press Alt + Arrow Up/Down`},subagent:{count:`{{count}} subagents`,defaultName:`Subagent {{index}}`,operationCompleted:`Subagent operation completed`,operationFailed:`{{count}} subagents failed`,operationRunning:`{{count}} subagents running`,operationSucceeded:`{{count}} subagents completed`,operationTitles:{close:`Close subagent`,resume:`Resume subagent`,sendInput:`Send message to subagent`,spawn:`Start subagent`,wait:`Wait for subagent`},orchestrating:`Coordinating subagents`},timeline:{approvalReview:{action:{command:`Command`,file_change:`File change`,mcp_tool_call:`MCP tool`,network_access:`Network access`,permissions:`Permission request`},actionDetail:`{{action}}: {{detail}}`,authorization:`User authorization: {{level}}`,authorizationLevel:{high:`High`,low:`Low`,medium:`Medium`,unknown:`Unknown`},rationale:`Review rationale: {{rationale}}`,reviewing:`Running automatic approval review`,risk:`Risk: {{level}}`,riskLevel:{critical:`Critical`,high:`High`,low:`Low`,medium:`Medium`},status:{aborted:`Aborted`,approved:`Approved`,denied:`Denied`,in_progress:`Reviewing`,timed_out:`Timed out`},title:`Automatic approval: {{status}}`},aiRunning:`AI response is running`,aiRunningOperation:`AI response is running: {{operation}}`,attachments:`Message attachments`,changedFiles:`This response changed {{count}} files`,collapseFiles:`Collapse file list`,collapseProcess:`Collapse process`,closeImagePreview:`Close image preview`,commandPending:`Running command`,conversation:`Conversation`,copied:`Copied`,copyMessage:`Copy message`,downloadAttachment:`Download attachment {{name}}`,openAttachment:`Open attachment {{name}}`,emptyAfter:`?`,emptyBefore:`What should we do in`,expandProcess:`Expand process`,fileChange:`{{operation}} {{name}}, {{additions}} additions, {{removals}} deletions, open Diff`,fileOperation:{create:`Created`,delete:`Deleted`,update:`Edited`},fork:`Fork task`,forkFailed:`Failed to fork task. Try again.`,forking:`Forking task`,loading:`Loading task history`,loadError:`Failed to load task history`,loadingOlder:`Loading earlier messages...`,loadOlder:`Load earlier messages`,loadOlderError:`Could not load earlier messages. Try again.`,jumpToMessage:`Jump to user message {{index}}`,moreFiles:`Show {{count}} more files`,noHistory:`This task has no history`,output:`Output`,outputOmitted:`Command output omitted {{bytes}} UTF-8 bytes and {{lines}} lines. Showing the beginning and end.`,outputRetained:`Older command output was removed to stay within the memory budget`,operationGroup:{collapse:`Collapse operation details: {{summary}}`,commandsOnly:`Commands complete: {{count}}`,expand:`Expand operation details: {{summary}}`,failed:`; {{count}} failed`,summary:`Operations complete: {{toolCount}} tool calls, {{commandCount}} commands`,toolsOnly:`Tool calls complete: {{count}}`},buildPlan:`Build`,plan:`Plan`,planGenerating:`Generating plan`,planReady:`Plan ready to build`,processing:`Processed`,quickNavigation:`User message quick navigation`,reconnecting:`Restoring live connection`,review:`Review`,reviewMode:`Review mode`,reviewPrompt:{baseBranch:`Review my changes against {{branch}}`,commit:`Review commit {{sha}}`,commitWithTitle:`Review commit {{sha}}: {{title}}`,custom:`Review the code using these instructions: {{instructions}}`,uncommitted:`Review my uncommitted changes`},running:`Running`,runningOperation:`Running {{operation}}`,selectProject:`Select a project for the new chat`,showImage:`View image {{name}}`,skillsUsed:`Skills used`,editedFiles:`Edited {{count}} files`,editingFiles:`Editing {{count}} files`,liveDiff:`Live file changes`,liveFileChange:`Editing {{name}}, {{additions}} additions, {{removals}} deletions`,notice:{guardian_warning:`Safety warning`,hook_status:`Hook status`,model_verification:`Model verification`,modelVerification:`Verifying model availability`,runtime_warning:`Runtime warning`,strict_review_required:`Strict review required`,strictReviewRequired:`Safety review was escalated; this action will continue after review`},reasoning:`Reasoning summary`,reasoningStreaming:`Reasoning`,runtimeStatus:{duration:`Completed in {{duration}} ms`,fasterModel:`A faster model is available: {{model}}`,hook:`Running hook {{eventName}}`,modelRerouted:`Rerouted from {{fromModel}} to {{toModel}}`,safetyBuffering:`Using safety buffering model {{model}}`}}},en={about:{available:`Version {{version}} is available`,check:`Check for updates`,checking:`Checking`,codexlyVersion:`Codexly version`,codexVersion:`Codex version`,current:`Codexly is up to date`,github:`Project GitHub`,loading:`Checking for updates`,progress:{backingUp:`Backing up the current version`,checking:`Confirming the latest version`,completed:`Update installed`,downloading:`Downloading the update`,installing:`Installing the new version`,label:`Codexly update progress`,rollingBack:`Installation failed. Restoring the previous version`},restartRequired:`Update installed. Restart Codexly to apply it.`,retry:`Check again`,releaseNotes:`Release notes`,releaseNotesTitle:`{{version}} release notes`,releaseNotesUnavailable:`Release notes for this version are temporarily unavailable.`,update:`Software update`,updateTo:`Update to {{version}}`,updating:`Updating`},access:{currentSession:`Current browser`,loggingOut:`Logging out`,logout:`Log out of LAN access`,sessionDescription:`This browser is paired with the current Codexly LAN session.`},actions:{cancel:`Cancel`,close:`Close`,closeDialog:`Close global settings`,closeReleaseNotes:`Close release notes`,save:`Save`,saving:`Saving`},appearance:{automatic:`Automatic`,automaticMode:`Automatic mode`,colorMode:`Color mode`,dark:`Dark`,darkMode:`Dark mode`,language:`Language`,light:`Light`,lightMode:`Light mode`,notifications:`Notifications`},approval:{autoReview:`Automatic review`,never:`Never ask`,onRequest:`On request`},background:{bing:`Bing wallpaper`,bingAria:`Bing daily wallpaper`,blur:`Wallpaper background blur`,blurLabel:`Background blur`,custom:`Custom`,customAria:`Custom workbench background`,delete:`Delete image`,deleteImage:`Delete {{name}}`,galleryLabel:`Custom background images`,invalidImage:`Choose a PNG, JPEG, WebP, or GIF image up to 20 MiB.`,label:`Workbench background`,none:`None`,noneAria:`No workbench background`,overlayOpacity:`Wallpaper overlay opacity`,overlayOpacityLabel:`Overlay opacity`,previewAlt:`Custom workbench background preview`,selectImage:`Use {{name}} as the workbench background`,upload:`Upload image`,uploadInput:`Upload custom background image`,uploadRequired:`Image required`},effort:{high:`High`,low:`Low`,medium:`Medium`,minimal:`Minimal`,xhigh:`Extra high`},errors:{appInfo:`Unable to load version information`,load:`Unable to load global settings`,logout:`Unable to log out of LAN access`,save:`Unable to save global settings`,update:`Update failed. Try again.`,updateCheck:`Unable to check for updates`},fields:{approvalPolicy:`Approval policy`,commitMessagePrompt:`Commit message prompt`,commitModel:`Commit model`,defaultOpenWith:`Default open with`,fastMode:`Fast mode`,followUpMessages:`Follow-up messages`,model:`Model`,prompt:`Prompt`,reasoningEffort:`Reasoning effort`,sandbox:`Sandbox`},followUp:{queue:`Queue`,steer:`Steer`},integration:{automatic:`Select automatically`},languages:{en:`English`,zhCN:`简体中文`},loading:`Loading global settings`,navigationLabel:`Settings categories`,notifications:{disabled:`Off`,enabled:`On`},provider:{apiKey:`API key (optional)`,baseUrl:`API base URL`,cancelLogin:`Cancel login`,connect:`Connect`,connected:`Connected`,custom:`Custom API`,disconnected:`Not connected`,errors:{connect:`Unable to connect to the custom API`,load:`Unable to read model service status`,login:`Unable to start official login`},loading:`Reading model service status`,login:`Sign in with ChatGPT`,logout:`Log out`,addModel:`Add model`,modelId:`Model ID`,modelName:`Model name`,mode:`Model service mode`,models:`Custom models (optional)`,official:`Official login`,reconnect:`Reconnect`,removeModel:`Remove model`,retry:`Retry`,title:`Connect a Codex model service`,waiting:`Waiting for browser login`},pets:{availability:{downloadable:`Download required`,ready:`Ready`},enabled:`Enable workbench pet`,errors:{load:`Unable to load pet assets. Try again.`},loading:`Loading pet assets`,refresh:`Refresh list`,selectionLabel:`Choose a workbench pet`},sandbox:{dangerFullAccess:`Full access`,readOnly:`Read only`,workspaceWrite:`Workspace write`},sections:{about:`About`,access:`LAN access`,agent:`Agent defaults`,appearance:`General`,background:`Workbench background`,commit:`Commit messages`,integration:`App integrations`,pets:`Workbench pet`,provider:`Model service`},title:`Global settings`},tn={scheduledTasks:{chooseDate:`Choose date`,create:`New scheduled task`,custom:`Custom RRULE`,daily:`Daily`,dateUnavailable:`Unavailable date`,delete:`Delete`,deleteConfirm:`Confirm delete`,disabled:`Paused`,disableTask:`Disable {{name}}`,empty:`No scheduled tasks`,enableTask:`Enable {{name}}`,failed:`Failed`,lastRun:`Last run`,monthly:`Monthly`,monthDay:`Day of month`,name:`Task name`,namePlaceholder:`For example: Daily code review`,nextMonth:`Next month`,noRuns:`Not run yet`,once:`Once`,previousMonth:`Previous month`,project:`Project`,prompt:`Prompt`,repeat:`Repeat`,rrule:`RRULE`,rrulePlaceholder:`RRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0`,runNow:`Run now`,running:`Starting`,save:`Save task`,scheduleInvalid:`Check the date, time, or recurrence rule`,search:`Search scheduled tasks`,selectTask:`Select a task on the left to view its configuration`,skipped:`Skipped`,started:`Started`,time:`Trigger time`,timeOfDay:`Time`,title:`Scheduled tasks`,weekdays:`Weekdays`,weekday:`Day of week`,weekly:`Weekly`},skillsMarket:{codexCompatible:`Codex compatible`,compatible:`Verified`,current:`Up to date`,downloads:`{{count}} downloads`,emptyInstalled:`No installed skills found`,emptyMarket:`No compatible skills found`,emptyMcp:`No MCP servers configured`,emptyPlugins:`No official plugins available`,emptyInstalledPlugins:`No official plugins installed`,emptyAvailablePlugins:`No official plugins available to install`,authorize:`Authorize`,closeDetails:`Close plugin details`,closeSkillDetails:`Close skill details`,installComplete:`Skill installed`,installGlobal:`Install globally`,installProject:`Install in project`,installPlugin:`Install plugin`,installed:`Installed`,installedPlugins:`Installed`,availablePlugins:`Not installed`,installedCount:`{{count}} skills installed`,loadError:`Failed to load skill information`,loadMore:`Load more`,loading:`Loading skills`,loadingDetail:`Loading details`,loadingExtension:`Loading extension`,loadingMarket:`Loading market`,loadingMcp:`Loading MCP`,loadingPlugins:`Loading official plugins`,newSessionRequired:`Plugin installed. Start a new session to load its capabilities.`,marketError:`The market is temporarily unavailable`,mcpCount:`{{count}} MCP servers`,mcpEnabled:`Running`,mcpError:`Failed to load MCP configuration`,mcpStopped:`Stopped`,openMarketplace:`Open market page`,openSkill:`Show {{name}} in file manager`,official:`Official by OpenAI`,officialPublisher:`OpenAI official catalog`,projectTarget:`Install project`,refresh:`Refresh skills`,refreshMcp:`Refresh MCP`,refreshPlugins:`Refresh official plugins`,scan:`Scan: {{status}}`,scope:{admin:`Administrator`,repo:`Project`,system:`System`,user:`Global`},search:`Search market`,searchPlugins:`Search official plugins`,sectionsLabel:`Extension type`,sort:`Market sorting`,sortDownloads:`Most downloaded`,sortRecommended:`Recommended`,sortUpdated:`Recently updated`,stars:`{{count}} stars`,tabs:{marketplace:`Third-party market`,mcp:`MCP`,plugins:`Official plugins`,skills:`Skills`},title:`Extension Center`,toggle:`Enable or disable {{name}}`,toggleMcp:`Start or stop {{name}}`,update:`Update`,uninstallPlugin:`Uninstall plugin`,pluginError:`Official plugins are temporarily unavailable`,pluginFallbackDescription:`A Codex extension from the official catalog`,version:`Version {{version}}`},pet:{activeTasks:`Active tasks`,activitySummary:`{{count}} active tasks, {{waiting}} waiting for attention`,move:`Move workbench pet {{name}}`,openTask:`Open task {{name}}, {{status}}`,status:{completed:`Task completed`,running:`Task running`,waiting:`Task waiting for attention`}},actions:{cancel:`Cancel`,close:`Close`,retry:`Retry`,save:`Save`},commit:{allFiles:`All files`,commit:`Commit`,commitActions:`Choose commit action`,commitAndPush:`Commit and push`,commitAndPushComplete:`Commit and push completed`,commitAndPushSucceeded:`Committed and pushed successfully`,commitComplete:`Commit completed`,commitCompletePushFailed:`Commit completed, but push failed`,commitCompleteUpstreamMissing:`Commit completed; the current branch has no upstream`,commitMessage:`Commit message`,commitSucceeded:`Committed successfully`,changes:`Changes`,generateMessage:`Generate message content`,messagePlaceholder:`Enter a commit message`,repository:`Git project`,repositoryLoading:`Loading Git project`,repositoryUnavailable:`No committable Git project was found`,selectAllFiles:`Select all files`,selectFiles:`Select files`,selectRepository:`Select Git project`,selectionLabel:`Select files, {{selected}} of {{total}} selected`,staged:`Staged`,totalFiles_one:`{{count}} total`,totalFiles_other:`{{count}} total`,unstaged:`Unstaged`},diff:{changedFiles:`Changed files`,changedFilesNavigation:`Changed files navigation`,close:`Close file Diff`,closeReview:`Close file review`,collapseChangedFilesNavigation:`Collapse changed files navigation`,expandChangedFilesNavigation:`Expand changed files navigation`,fileStats:`{{path}}, {{additions}} lines added, {{removals}} lines removed`,loading:`Loading Diff`,nextFile:`Review next file`,previousFile:`Review previous file`,reviewContent:`File review content`,showFileList:`Switch to file list`,showFileTree:`Switch to file tree`},composer:{addedAttachments:`Added attachments`,applyTodo:`Apply todo`,applyTodoDescription:`Applying this todo will replace the current composer content. Continue?`,applyTodoTitle:`Replace current input?`,approvalMode:`Approval policy`,attachmentCount_one:`{{count}} attachment`,attachmentCount_other:`{{count}} attachments`,attachmentReadFailed:`Unable to read attachment`,attachmentUploadFailed:`Unable to upload attachment`,baseBranchReview:`Review against a base branch`,buildPlanPrompt:`Start implementing the plan above.`,cancelGoalMode:`Cancel Goal mode`,cancelPlanMode:`Cancel plan mode`,cancelQueued:`Cancel queued message: {{summary}}`,cancelQueuedTooltip:`Cancel queued message`,editQueued:`Edit queued message: {{summary}}`,editQueuedTooltip:`Edit queued message`,editingQueued:`Editing`,disableFastMode:`Disable fast mode`,enableFastMode:`Enable fast mode`,commandGroup:`Commands`,commandInput:`Command input`,commandNoMatch:`No matching Skill or command`,fileSearch:`Search project files`,fileSearchEmpty:`No matching project files`,fileSearchFailed:`Project file search failed`,fileSearchGroup:`Project files`,fileSearchLoading:`Searching project files`,deleteTodo:`Delete todo: {{summary}}`,compacting:`Compacting context`,gitBranchMissing:`No branch checked out`,branchSwitcherLabel:`Switch branch, current branch {{branch}}`,branchSwitcherMenu:`Switch branch`,detachedHead:`detached HEAD`,branchSwitchFailed:`Unable to create or switch branches. Try again.`,branchName:`Branch name`,createBranch:`New branch`,createBranchDescription:`Create from the current branch and switch immediately`,createAndSwitchBranch:`Create and switch`,createAndSwitchWorktree:`Create and switch`,createWorktree:`New worktree`,createWorktreeDescription:`Create a sibling worktree and switch to it`,worktreeSwitcherMenu:`Switch worktree`,goalMode:`Goal`,goalStatus:{active:`Goal active`,blocked:`Goal blocked`,budget_limited:`Goal budget exhausted`,complete:`Goal complete`,paused:`Goal paused`,usage_limited:`Goal usage limited`},goalStatusLabel:`{{status}}: {{objective}}`,goalObjectiveRequired:`Goal mode requires an objective`,goalObjectiveTooLong:`The goal objective cannot exceed 4,000 characters`,goalStructuredInputUnsupported:`Goal mode does not support attachments or Skills; use text and @file paths instead`,initializingAgentsPrompt:`Inspect the current project and create or improve AGENTS.md in the project root with Codex project guidance, common commands, and verification requirements.`,landmark:`Message composer`,modelListFailed:`Failed to load model list`,modelLoading:`Loading models`,model:`Model`,modelAndReasoningMenu:`Model and reasoning`,modelAndReasoningSelect:`Model and reasoning: {{model}}, {{effort}}`,modelSelect:`Select model`,moveQueuedDown:`Move queued message down: {{summary}}`,moveQueuedDownTooltip:`Move down`,moveQueuedUp:`Move queued message up: {{summary}}`,moveQueuedUpTooltip:`Move up`,noBaseBranch:`No base branch available`,noModels:`No models available`,openProjectFolder:`Open in system file manager`,operationFailed:`Operation failed. Please retry.`,placeholder:`Tell Codexly what you want to accomplish`,planMode:`Plan`,projectPath:`Project path`,queueMessage:`Queue message`,queuedMessages:`Queued messages`,reasonEffortSelect:`Select reasoning effort`,reasoningEffort:`Reasoning effort`,reviewBaseBranchGroup:`Select base branch`,reviewScopeGroup:`Select review scope`,reviewStarted:`Code review started`,reviewUncommitted:`Review uncommitted changes`,sandboxMode:`Sandbox mode`,saveAsTodo:`Save as todo`,saveTodoChanges:`Save todo changes`,saveTodoFailed:`Unable to save todo`,sendSteer:`Send steer`,steerNow:`Steer now: {{summary}}`,steerNowTooltip:`Send as a steer now`,stop:`Stop`,submit:`Submit`,taskInput:`Task input`,taskRunning:`Task is running`,uncommittedChangesMissing:`No uncommitted changes available`,waitingToSend:`Waiting to send`,todoCount:`Todos {{count}}`,todoHasChanges:`Unsaved changes`,todoList:`{{project}} todos`,followUpPlaceholder:`Enter follow-up instructions`},openMenu:{choose:`Choose how to open`,copyAbsolutePath:`Copy absolute path`,copyName:`Copy name`,copyRelativePath:`Copy relative path`,detect:`Detecting available apps`,delete:`Delete`,moreActions:`More actions`,none:`No apps available`,open:`Open`,openInNewWindow:`Open in new window`,openIn:`Open in {{app}}`,reference:`Reference`,rename:`Rename`,systemDefault:`System default app`,targetLabel:`Actions for {{path}}`},projectFile:{deleteDescription:{directory:`This will delete the directory and its contents from disk. This cannot be undone.`,file:`This will delete the file from disk. This cannot be undone.`},deleteTitle:`Delete {{name}}?`,name:`Name`,renameDescription:{directory:`This will change the directory name on disk.`,file:`This will change the file name on disk.`},renameTitle:`Rename`},promptCommand:{availability:{noTask:`Open a task first`,notReady:`Runtime capabilities are not ready`,unsupported:`The current Runtime does not support this command`},compact:{description:`Compact the context for this task`,label:`Compact`},fork:{description:`Copy the current task and its conversation history`,label:`Fork`},goal:{description:`Set a persistent goal and keep working until it is complete`,label:`Goal`},initialize:{description:`Create an AGENTS.md file with Codex guidance`,label:`Initialize`},plan:{description:`Analyze the task and propose an implementation plan first`,label:`Plan`},review:{description:`Review uncommitted changes or compare against a branch`,label:`Code review`}},pending:{allow:`Allow`,allowTurn:`Allow for this turn`,additionalPermissions:`Additional permissions`,allowSession:`Allow for this session`,answerFailed:`Unable to submit the answer. Please retry.`,commandApproval:`Command approval`,cancel:`Cancel`,deny:`Deny`,expired:`Request expired`,fileChangeApproval:`File change approval`,fileChangeFallback:`File change awaiting confirmation`,inputRequired:`Your input is required`,mcpForm:`{{server}} input request`,mcpRequest:`{{server}} confirmation`,networkApproval:`Network access approval`,networkPermission:`Network access`,other:`Other`,otherAnswer:`{{header}} other answer`,openUrl:`Open link`,previousPending:`Waiting for the previous item`,processed:`Request processed`,permissionAccess:{deny:`Deny`,read:`Read`,write:`Write`},permissionApproval:`Permission approval`,permissionGlobDepth:`Glob scan depth: {{depth}}`,permissionMinimal:`Minimal filesystem`,permissionProjectRoots:`Project roots`,permissionRoot:`Filesystem root`,permissionTmpdir:`System temporary directory`,permissionUnknownPath:`Unknown path`,fileSystemPermission:`Filesystem`,requestFailed:`Unable to process the request. Please retry.`,terminalInputApproval:`Terminal input approval`,submitAnswers:`Submit answers`,unsupportedForm:`This form cannot be displayed safely. Decline or cancel the request.`},projectDialog:{closeImagePreview:`Close image preview`,closeSource:`Close source file`,delete:`Remove`,loadImageError:`Unable to load image`,loadMoreSourceError:`Unable to load more content`,loadSourceError:`Unable to load source file`,loadingMoreSource:`Loading more content`,loadingSource:`Loading source file`,name:`Project name`,previewMarkdown:`Preview Markdown`,remove:`Remove project`,removeDescription:`Remove {{name}} from Codexly? Files on disk will not be deleted.`,rename:`Rename project`,renameDescription:`This changes only the sidebar display name, not the folder name on disk.`,showRawContent:`Show raw content`,sourcePartial:`Partial content`},projectPicker:{primaryRoot:`Primary`,primaryRootHint:`The first selected folder becomes the primary folder`,primaryRootSummary:`{{path}} (Primary)`,rootSeparator:`, `,selectedRoots:`{{count}} project folders selected`,selectRoot:`Select {{name}}`,add:`Add this folder`,addError:`Unable to add the selected folder`,adding:`Adding`,description:`Browse folders on the device running Codexly`,directPathReady:`Directory verified and ready to add`,empty:`This folder has no subfolders`,filesystemRoot:`Select drive`,goToPath:`Go to path`,hideHidden:`Hide hidden folders`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read folders`,loading:`Reading folders`,loadingBranch:`Reading`,noSelection:`No folder selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,title:`Select project folder`,showHidden:`Show hidden folders`,treeLabel:`Project folder tree`},hostAttachmentPicker:{add:`Add selected file`,description:`Browse files on the device running Codexly`,empty:`This folder has no supported files`,filesystemRoot:`Select drive`,fileTitle:`Select deployment host file`,goToPath:`Go to path`,hideHidden:`Hide hidden files`,imageTitle:`Select deployment host image`,importError:`Unable to add the selected file`,importing:`Adding`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read files`,loading:`Reading files`,loadingBranch:`Reading`,noSelection:`No file selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,showHidden:`Show hidden files`,treeLabel:`Deployment host file tree`},subagentOutput:{close:`Close subagent output`,error:`Unable to load subagent output`,loading:`Loading subagent output`,reconnecting:`Restoring the live subagent connection`,task:`Subagent {{taskId}}`,title:`Subagent output`},shell:{selectProjectRoot:`Select project folder`,closeInspector:`Close context panel`,closeSidebar:`Close project sidebar`,collapseInspector:`Collapse context panel`,collapseSidebar:`Collapse project sidebar`,expandInspector:`Expand context panel`,expandSidebar:`Expand project sidebar`,newChat:`New chat`,renameTask:`Rename task {{title}}`,resizeInspector:`Resize context panel`,resizeSidebar:`Resize project sidebar`,timeline:`Task timeline`,temporaryTask:`Temporary task`},skillEditor:{tokenLabel:`Skill {{name}}, serialized text {{text}}`},archivedTasks:{confirmDelete:`Delete permanently`,confirmDeleteAll:`Delete all permanently`,delete:`Delete permanently`,deleteAll:`Delete all`,deleteAllDescription:`All archived tasks in "{{project}}" and their associated history will be permanently deleted. This cannot be undone.`,deleteAllTitle:`Permanently delete all archived tasks`,deleteDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTask:`Permanently delete task {{task}}`,deleteTitle:`Permanently delete task`,empty:`No archived tasks`,loadError:`Unable to load archived tasks`,loading:`Loading archived tasks`,next:`Next page`,page:`Page {{page}}`,previous:`Previous page`,restore:`Restore`,restoreTask:`Restore task {{task}}`,search:`Search archived tasks`,title:`Archived tasks for {{project}}`,updatedAt:`Updated {{date}}`},sidebar:{addProject:`Add project`,agentNavigation:`Agent navigation`,archive:`Archive`,archived:`Archived`,close:`Close project sidebar`,closeSearch:`Close task search`,collapse:`Show less`,connection:{connecting:`Connecting`,offline:`Offline`,online:`Online`,reconnecting:`Reconnecting`},aboutStatus:`About, Codexly {{version}}{{update}}, terminal connection status: {{status}}`,createInProject:`Create a task in {{project}}`,deletePermanently:`Delete permanently`,deleteTaskDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTaskTitle:`Permanently delete task`,errorAddProject:`Unable to add project`,errorArchiveTask:`Unable to archive task`,errorLoadTasks:`Unable to load tasks`,errorPinTask:`Unable to update pin status`,errorProjectOrder:`Unable to save project order`,errorRenameTask:`Unable to rename task`,errorSearchTasks:`Unable to search tasks`,expand:`Show more`,expandLoading:`Loading more`,expandRetry:`Retry loading more`,newTask:`New task`,landmark:`Project sidebar`,noMatchingTasks:`No matching tasks`,noTasks:`No tasks yet`,noTemporaryTasks:`No temporary tasks yet`,openProjectActions:`Open actions for {{project}}`,openTaskActions:`Open actions for {{task}}`,pin:`Pin`,pinned:`Pinned`,projects:`Projects`,projectActions:`Actions for {{project}}`,remove:`Remove`,rename:`Rename`,search:`Search tasks`,searchAll:`Searching all tasks`,settings:`Settings`,updateAvailableLabel:`, update available`,taskActions:`Actions for {{task}}`,taskApproval:`Task awaiting approval`,taskComplete:`AI response completed`,taskIncomplete:`AI response incomplete`,taskLoading:`Loading tasks`,taskRunning:`Task running`,temporaryTasks:`Temporary tasks`,toggleProject:`Toggle project {{project}}`,unpin:`Unpin`},taskBoard:{allProjects:`All projects`,approval:`Awaiting approval`,completed:`Completed`,completedLoadError:`Failed to load completed tasks`,copyTaskId:`Copy task ID: {{id}}`,copyTaskIdHint:`Copy task ID`,emptyApproval:`No tasks awaiting approval`,emptyCompleted:`No completed tasks`,emptyRunning:`No running tasks`,emptyTodos:`No todos`,label:`Task board`,loading:`Loading task board`,loadingMore:`Loading more tasks`,newCompleted:`Newly completed`,openTask:`Open task: {{task}}`,openTodo:`Open todo: {{todo}}`,pinned:`Pinned`,projectFilter:`Project filter`,retryCompleted:`Reload completed tasks`,running:`Running`,runningFor:`Running for {{duration}}`,title:`Task board`,todo:`Todo`},taskDialog:{name:`Task name`,rename:`Rename task`}},nn={access:{checking:`正在验证访问权限`,codeLabel:`访问密码`,loadError:`无法验证访问权限`,pair:`配对`,pairing:`正在配对`,pairingDescription:`输入 Codexly 启动时设置或显示的访问密码。`,pairingError:`无法完成配对,请检查访问密码后重试`,pairingTitle:`连接可信局域网会话`},actions:{backToWorkbench:`返回工作台`,retry:`重试`},app:{actionFailed:`操作失败`,actionSucceeded:`操作成功`,loadingProjects:`正在加载项目`,noProjects:`尚未添加项目`,notificationRegion:`通知`},errors:{notFoundDescription:`当前地址不属于已注册的应用路由。`,notFoundTitle:`页面不存在`,routeErrorLabel:`路由错误`,routeErrorTitle:`页面加载失败`,runtimeUnavailableDescription:`请先在官方 Codex CLI 中运行 <command>codex login</command>,完成登录后重试。`,runtimeUnavailableTitle:`Codex Runtime 不可用`},language:{english:`English`,simplifiedChinese:`简体中文`}},rn={asyncQuestions:{pending:`待回答问题`,pendingCount:`待回答 · {{count}} 组`,previous:`上一组问题`,next:`下一组问题`,collapse:`收起问题`,expand:`展开问题`,close:`关闭问题`,other:`其他回答`,answer:`回答:{{question}}`,send:`发送回答`,sent:`已发送`,failed:`回答未发送,请重试`},agentComponents:{addFile:`添加文件`,addImage:`添加图片`,addImageOrFile:`添加图片或文件`,currentDevice:`当前设备`,deploymentHost:`部署主机`,approval:`审批`,approvalAccepted:`请求已允许`,approvalRejected:`请求已拒绝`,approvalRequest:`{{title}}请求`,codeComments:`{{count}} 个代码评论`,contextPercent:`上下文已使用 {{percentage}}%`,contextSummary:`{{percentage}}% 上下文已使用`,contextUnknown:`上下文用量未知`,contextWaiting:`等待模型返回上下文用量`,copied:`已复制`,copyCode:`复制代码`,copyOutput:`复制命令输出`,copiedCode:`代码已复制`,copiedOutput:`命令输出已复制`,fileTooLarge:`{{name}} 超过大小限制`,folderCollapse:`收起文件夹 {{name}}`,folderExpand:`展开文件夹 {{name}}`,invalidFileType:`{{name}} 的文件类型不受支持`,nextBranch:`下一个回复分支`,previousBranch:`上一个回复分支`,removeAttachment:`移除 {{name}}`,scrollToBottom:`回到底部`,status:{completed:`已完成`,error:`失败`,inProgress:`进行中`,pending:`等待中`,denied:`已拒绝`,responded:`已响应`,running:`运行中`,waitingApproval:`等待批准`},streamingOutput:`正在接收命令输出`,tooManyImages:`最多添加 {{count}} 张图片`,totalAttachmentSizeExceeded:`附件总大小超过限制`,totalImageSizeExceeded:`图片总大小超过限制`,toolError:`错误`,toolInput:`参数`,toolResult:`结果`},errors:{addProject:`添加项目失败`,deleteProject:`无法删除项目`,renameProject:`无法重命名项目`,reorderProject:`保存项目排序失败`,reorderProjectChanged:`项目列表已变化,请重试排序`,stopTerminal:`停止终端失败`},inspector:{attachmentDetail:`附件`,changeIndicator:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,changes:`变更`,closeFile:`关闭文件`,commit:`提交`,context:`上下文`,contextSources:`上下文来源`,emptyFolder:`空文件夹`,fileTree:`项目文件`,file:`文件`,gitChanges:`未提交变更`,gitChangesCount:`{{count}} 个变更`,gitChangesRetrying:`Git 变更刷新失败,正在自动重试`,gitLoading:`正在读取 Git 变更...`,goal:`目标`,goalClear:`清除目标`,goalDuration:`{{minutes}} 分 {{seconds}} 秒`,goalMutationFailed:`无法更新目标,请重试`,goalPause:`暂停目标`,goalResume:`恢复目标`,goalSeconds:`{{count}} 秒`,goalStatus:{active:`进行中`,blocked:`受阻`,budget_limited:`预算已用尽`,complete:`已完成`,paused:`已暂停`,usage_limited:`用量受限`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`已使用 {{used}} tokens`,history:`历史`,loading:`正在读取...`,mcpEnabled:`当前任务的 MCP 服务`,mcpReload:`重新加载 MCP`,mcpReloading:`正在重新加载 MCP`,mcpStatus:{authenticationRequired:`需要认证`,cancelled:`已取消`,connected:`已连接`,disabled:`已禁用`,failed:`启动失败`,notStarted:`未启动`,starting:`正在启动`,unknown:`状态未知`},project:`项目`,mcpToolCount:`{{count}} 个工具`,openChanges:`查看 {{count}} 个未提交变更`,openFailed:`无法使用所选应用打开目标`,plan:`计划`,planStatus:{completed:`已完成`,in_progress:`进行中`,pending:`待处理`},projectFilesEmpty:`当前项目没有可显示的文件`,projectFilesError:`无法读取项目文件`,projectFilesLoading:`正在读取项目文件...`,readFolder:`正在读取文件夹 {{name}}`,readFolderError:`无法读取文件夹 {{name}}`,reading:`正在读取`,refreshFolder:`重新读取文件夹 {{name}}`,refreshGit:`手动刷新 Git 变更`,refreshProject:`刷新项目 {{name}}`,refreshProjectFiles:`重新读取项目文件`,commitChanges:`提交 {{count}} 个未提交变更`,source:`来源`,showMore:`显示更多`,sourceRole:{admin:`管理员`,repo:`项目`,system:`系统`,user:`用户`},subagents:`子代理`,subagentCount:`{{count}} 个子代理`,subagentOutput:`查看子代理 {{nickname}} 的输出`,terminalError:`无法读取运行中的终端`,terminalLoading:`正在读取终端...`,terminalRunning:`终端运行中`,terminalStop:`停止终端 {{command}}`,terminalStopping:`正在停止 {{command}}`,terminalStopRetry:`停止终端失败,请重试`,terminals:`运行中的终端`,title:`运行环境`},gitHistory:{branch:`当前分支:{{branch}}`,branchLoading:`当前分支:读取中...`,commits:`提交记录`,copyAuthor:`复制提交人`,copyHash:`复制完整提交哈希值`,copyMenuLabel:`复制提交内容`,copyMessage:`复制提交信息`,empty:`当前仓库暂无提交记录`,diffLoadError:`无法读取此文件的提交 Diff`,diffLoading:`正在读取文件 Diff...`,diffTruncated:`Diff 过长,仅展示前 512 KiB`,filesEmpty:`此提交没有可审核的文件`,filesLoadError:`无法读取提交文件`,filesLoading:`正在读取提交文件...`,end:`已加载全部提交`,loadError:`无法读取 Git 历史`,loadMore:`加载更多`,loadMoreFiles:`加载更多文件`,loading:`正在读取 Git 历史...`,loadingMore:`正在加载...`,loadingMoreFiles:`正在加载文件...`,repositories:`子仓库`,retry:`重试`},notification:{completed:`Task 已完成`,failed:`Task 运行失败`,failedWithMessage:`Task 运行失败:{{message}}`,interrupted:`Task 已中断,无法继续`,waitingApproval:`Task 等待审批`,waitingInput:`Task 等待输入`},taskTitle:{replying:`正在回复`},reorder:{cancelled:`已取消项目排序`,moved:`{{name}} 已移动到第 {{position}} 位`,projectFallback:`项目`,started:`已进入项目排序,拖动后释放以保存位置`,title:`拖动排序;也可按 Alt + 上下方向键移动`},subagent:{count:`{{count}} 个子代理`,defaultName:`子代理 {{index}}`,operationCompleted:`子代理操作已完成`,operationFailed:`{{count}} 个子代理执行失败`,operationRunning:`{{count}} 个子代理正在执行`,operationSucceeded:`{{count}} 个子代理已完成`,operationTitles:{close:`关闭子代理`,resume:`恢复子代理`,sendInput:`向子代理发送消息`,spawn:`启动子代理`,wait:`等待子代理`},orchestrating:`正在协调子代理`},timeline:{approvalReview:{action:{command:`命令`,file_change:`文件变更`,mcp_tool_call:`MCP 工具`,network_access:`网络访问`,permissions:`权限请求`},actionDetail:`{{action}}:{{detail}}`,authorization:`用户授权:{{level}}`,authorizationLevel:{high:`高`,low:`低`,medium:`中`,unknown:`未知`},rationale:`审批理由:{{rationale}}`,reviewing:`正在自动审批`,risk:`风险:{{level}}`,riskLevel:{critical:`严重`,high:`高`,low:`低`,medium:`中`},status:{aborted:`已中止`,approved:`已批准`,denied:`已拒绝`,in_progress:`审批中`,timed_out:`已超时`},title:`自动审批:{{status}}`},aiRunning:`AI 回复正在运行`,aiRunningOperation:`AI 回复正在运行:{{operation}}`,attachments:`消息附件`,changedFiles:`本次修改了 {{count}} 个文件`,collapseFiles:`收起文件列表`,collapseProcess:`收起执行过程`,closeImagePreview:`关闭图片预览`,commandPending:`正在执行命令`,conversation:`会话内容`,copied:`已复制`,copyMessage:`复制消息`,downloadAttachment:`下载附件 {{name}}`,openAttachment:`打开附件 {{name}}`,emptyAfter:`中做些什么?`,emptyBefore:`我们应该在`,expandProcess:`展开执行过程`,fileChange:`{{operation}} {{name}},新增 {{additions}} 行,删除 {{removals}} 行,打开 Diff`,fileOperation:{create:`已创建`,delete:`已删除`,update:`已编辑`},fork:`复制任务`,forkFailed:`复制任务失败,请重试`,forking:`正在复制任务`,loading:`正在加载任务历史`,loadError:`无法加载任务历史`,loadingOlder:`正在加载更早记录...`,loadOlder:`加载更早记录`,loadOlderError:`无法加载更早记录,请重试`,jumpToMessage:`跳转到用户消息 {{index}}`,moreFiles:`再显示 {{count}} 个文件`,noHistory:`此任务暂无历史`,output:`输出`,outputOmitted:`命令输出已省略 {{bytes}} 个 UTF-8 字节和 {{lines}} 行,显示开头和结尾内容。`,outputRetained:`较早的命令输出已按内存预算清理`,operationGroup:{collapse:`收起执行详情:{{summary}}`,commandsOnly:`命令执行完成:{{count}} 条`,expand:`展开执行详情:{{summary}}`,failed:`;其中 {{count}} 项失败`,summary:`操作完成:调用 {{toolCount}} 个工具,执行 {{commandCount}} 条命令`,toolsOnly:`工具调用完成:{{count}} 个`},buildPlan:`构建`,plan:`计划`,planGenerating:`正在生成计划`,planReady:`计划已生成,可开始构建`,processing:`已处理`,quickNavigation:`用户消息快捷导航`,reconnecting:`实时连接恢复中`,review:`审核`,reviewMode:`审查模式`,reviewPrompt:{baseBranch:`请检查我相对于 {{branch}} 的更改`,commit:`请检查提交 {{sha}}`,commitWithTitle:`请检查提交 {{sha}}:{{title}}`,custom:`请按以下要求检查代码:{{instructions}}`,uncommitted:`请检查我未提交的更改`},running:`正在运行`,runningOperation:`正在运行 {{operation}}`,selectProject:`选择新聊天项目`,showImage:`查看图片 {{name}}`,skillsUsed:`使用的 Skills`,editedFiles:`已编辑 {{count}} 个文件`,editingFiles:`正在编辑 {{count}} 个文件`,liveDiff:`实时文件变更`,liveFileChange:`正在修改 {{name}},新增 {{additions}} 行,删除 {{removals}} 行`,notice:{guardian_warning:`安全警告`,hook_status:`Hook 状态`,model_verification:`模型验证`,modelVerification:`正在验证模型可用性`,runtime_warning:`运行时警告`,strict_review_required:`需要严格审核`,strictReviewRequired:`安全审核已升级,当前操作将在严格审核完成后继续`},reasoning:`推理摘要`,reasoningStreaming:`正在推理`,runtimeStatus:{duration:`耗时 {{duration}} 毫秒`,fasterModel:`可使用更快的模型:{{model}}`,hook:`正在运行 Hook {{eventName}}`,modelRerouted:`模型已从 {{fromModel}} 切换到 {{toModel}}`,safetyBuffering:`正在使用安全缓冲模型 {{model}}`}}},an={about:{available:`发现新版本 {{version}}`,check:`检查更新`,checking:`正在检查`,codexlyVersion:`Codexly 版本`,codexVersion:`Codex 版本`,current:`已是最新版本`,github:`项目 GitHub`,loading:`正在检查更新`,progress:{backingUp:`正在备份当前版本`,checking:`正在确认最新版本`,completed:`更新安装完成`,downloading:`正在下载更新包`,installing:`正在安装新版本`,label:`Codexly 更新进度`,rollingBack:`安装失败,正在恢复原版本`},restartRequired:`更新完成,重启 Codexly 后生效`,retry:`重新检查`,releaseNotes:`更新日志`,releaseNotesTitle:`{{version}} 更新日志`,releaseNotesUnavailable:`暂时无法获取此版本的更新日志。`,update:`软件更新`,updateTo:`更新到 {{version}}`,updating:`正在更新`},access:{currentSession:`当前浏览器`,loggingOut:`正在退出`,logout:`退出局域网访问`,sessionDescription:`此浏览器当前已配对到本次 Codexly 局域网会话。`},actions:{cancel:`取消`,close:`关闭`,closeDialog:`关闭全局设置`,closeReleaseNotes:`关闭更新日志`,save:`保存`,saving:`正在保存`},appearance:{automatic:`自动`,automaticMode:`自动模式`,colorMode:`颜色模式`,dark:`深色`,darkMode:`深色模式`,language:`语言`,light:`浅色`,lightMode:`浅色模式`,notifications:`通知`},approval:{autoReview:`自动审核`,never:`从不询问`,onRequest:`按需审批`},background:{bing:`Bing 壁纸`,bingAria:`Bing 每日壁纸`,blur:`壁纸背景模糊度`,blurLabel:`背景模糊度`,custom:`自定义`,customAria:`自定义工作台背景`,delete:`删除图片`,deleteImage:`删除 {{name}}`,galleryLabel:`自定义背景图片`,invalidImage:`请选择 20 MiB 以内的 PNG、JPEG、WebP 或 GIF 图片。`,label:`工作台背景`,none:`无`,noneAria:`无工作台背景`,overlayOpacity:`壁纸遮罩不透明度`,overlayOpacityLabel:`遮罩不透明度`,previewAlt:`自定义工作台背景预览`,selectImage:`使用 {{name}} 作为工作台背景`,upload:`上传图片`,uploadInput:`上传自定义背景图片`,uploadRequired:`需要上传图片`},effort:{high:`高`,low:`低`,medium:`中`,minimal:`最低`,xhigh:`极高`},errors:{appInfo:`无法加载版本信息`,load:`无法加载全局设置`,logout:`无法退出局域网访问`,save:`无法保存全局设置`,update:`更新失败,请重试`,updateCheck:`无法检查更新`},fields:{approvalPolicy:`审批`,commitMessagePrompt:`提交提示词`,commitModel:`提交模型`,defaultOpenWith:`默认打开方式`,fastMode:`快速模式`,followUpMessages:`跟进消息`,model:`模型`,prompt:`提示词`,reasoningEffort:`思考量`,sandbox:`工作区`},followUp:{queue:`排队`,steer:`引导`},integration:{automatic:`自动选择`},languages:{en:`English`,zhCN:`简体中文`},loading:`正在加载全局设置`,navigationLabel:`设置分类`,notifications:{disabled:`关闭`,enabled:`开启`},provider:{apiKey:`API Key(可选)`,baseUrl:`API Base URL`,cancelLogin:`取消登录`,connect:`连接`,connected:`已连接`,custom:`自定义 API`,disconnected:`未连接`,errors:{connect:`无法连接自定义 API`,load:`无法读取模型服务状态`,login:`无法启动官方登录`},loading:`正在读取模型服务状态`,login:`使用 ChatGPT 登录`,logout:`退出登录`,addModel:`添加模型`,modelId:`模型 ID`,modelName:`模型名称`,mode:`模型服务模式`,models:`自定义模型(可选)`,official:`官方登录`,reconnect:`重新连接`,removeModel:`删除模型`,retry:`重试`,title:`连接 Codex 模型服务`,waiting:`等待浏览器登录`},pets:{availability:{downloadable:`需要下载`,ready:`已就绪`},enabled:`启用工作台宠物`,errors:{load:`无法加载宠物资源,请重试`},loading:`正在加载宠物资源`,refresh:`刷新列表`,selectionLabel:`选择工作台宠物`},sandbox:{dangerFullAccess:`完全访问`,readOnly:`只读`,workspaceWrite:`工作区可写`},sections:{about:`关于`,access:`局域网访问`,agent:`Agent 默认值`,appearance:`基础设置`,background:`工作台背景`,commit:`提交消息`,integration:`应用集成`,pets:`工作台宠物`,provider:`模型服务`},title:`全局设置`},on={scheduledTasks:{chooseDate:`选择日期`,create:`新建定时任务`,custom:`自定义 RRULE`,daily:`每天`,dateUnavailable:`不可选日期`,delete:`删除`,deleteConfirm:`确认删除`,disabled:`已暂停`,disableTask:`停用{{name}}`,empty:`暂无定时任务`,enableTask:`启用{{name}}`,failed:`执行失败`,lastRun:`最近执行`,monthly:`每月`,monthDay:`每月几号`,name:`任务名称`,namePlaceholder:`例如:每日代码巡检`,nextMonth:`下个月`,noRuns:`尚未执行`,once:`仅一次`,previousMonth:`上个月`,project:`执行项目`,prompt:`执行提示词`,repeat:`重复规则`,rrule:`RRULE`,rrulePlaceholder:`RRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0`,runNow:`立即运行`,running:`正在启动`,save:`保存任务`,scheduleInvalid:`请检查日期、时间或重复规则`,search:`搜索定时任务`,selectTask:`选择左侧任务查看配置`,skipped:`已跳过`,started:`已启动`,time:`触发时间`,timeOfDay:`时间`,title:`定时任务`,weekdays:`工作日`,weekday:`周几`,weekly:`每周`},skillsMarket:{codexCompatible:`Codex 兼容`,compatible:`已验证`,current:`已是最新`,downloads:`{{count}} 次下载`,emptyInstalled:`尚未发现已安装的 Skill`,emptyMarket:`没有找到兼容的 Skill`,emptyMcp:`尚未配置 MCP 服务`,emptyPlugins:`没有可用的官方插件`,emptyInstalledPlugins:`尚未安装官方插件`,emptyAvailablePlugins:`没有待安装的官方插件`,authorize:`前往授权`,closeDetails:`关闭插件详情`,closeSkillDetails:`关闭 Skill 详情`,installComplete:`Skill 安装完成`,installGlobal:`安装到全局`,installProject:`安装到项目`,installPlugin:`安装插件`,installed:`已安装`,installedPlugins:`已安装`,availablePlugins:`未安装`,installedCount:`已安装 {{count}} 个 Skill`,loadError:`Skill 信息加载失败`,loadMore:`加载更多`,loading:`正在加载 Skills`,loadingDetail:`正在加载详情`,loadingExtension:`正在加载扩展`,loadingMarket:`正在加载市场`,loadingMcp:`正在加载 MCP`,loadingPlugins:`正在加载官方插件`,newSessionRequired:`插件已安装。请新建会话以加载插件能力。`,marketError:`市场暂时不可用`,mcpCount:`{{count}} 个 MCP 服务`,mcpEnabled:`运行中`,mcpError:`MCP 配置加载失败`,mcpStopped:`已停止`,openMarketplace:`打开市场页面`,openSkill:`在文件管理器中显示 {{name}}`,official:`OpenAI 官方`,officialPublisher:`OpenAI 官方目录`,projectTarget:`安装项目`,refresh:`刷新 Skills`,refreshMcp:`刷新 MCP`,refreshPlugins:`刷新官方插件`,scan:`扫描:{{status}}`,scope:{admin:`管理员`,repo:`项目`,system:`系统`,user:`全局`},search:`搜索市场`,searchPlugins:`搜索官方插件`,sectionsLabel:`扩展类型`,sort:`市场排序`,sortDownloads:`下载最多`,sortRecommended:`推荐`,sortUpdated:`最近更新`,stars:`{{count}} 个收藏`,tabs:{marketplace:`三方市场`,mcp:`MCP 管理`,plugins:`官方插件`,skills:`Skills 管理`},title:`扩展中心`,toggle:`启用或停用 {{name}}`,toggleMcp:`启用或停止 {{name}}`,update:`更新`,uninstallPlugin:`卸载插件`,pluginError:`官方插件暂时不可用`,pluginFallbackDescription:`由官方目录提供的 Codex 扩展`,version:`版本 {{version}}`},pet:{activeTasks:`活动任务`,activitySummary:`{{count}} 个活动任务,其中 {{waiting}} 个等待处理`,move:`移动工作台宠物 {{name}}`,openTask:`打开任务 {{name}},{{status}}`,status:{completed:`任务已完成`,running:`任务运行中`,waiting:`任务等待处理`}},actions:{cancel:`取消`,close:`关闭`,retry:`重试`,save:`保存`},commit:{allFiles:`全选`,commit:`提交`,commitActions:`选择提交方式`,commitAndPush:`提交并推送`,commitAndPushComplete:`提交并推送已完成`,commitAndPushSucceeded:`提交并推送成功`,commitComplete:`提交已完成`,commitCompletePushFailed:`提交已完成,但推送失败`,commitCompleteUpstreamMissing:`提交已完成,当前分支未配置上游`,commitMessage:`提交信息`,commitSucceeded:`提交成功`,changes:`变更`,generateMessage:`生成 message 信息`,messagePlaceholder:`输入提交信息`,repository:`Git 项目`,repositoryLoading:`正在加载 Git 项目`,repositoryUnavailable:`未找到可提交的 Git 项目`,selectAllFiles:`全选文件`,selectFiles:`选择文件`,selectRepository:`选择 Git 项目`,selectionLabel:`选择文件,已选择 {{selected}}/{{total}} 个文件`,staged:`已暂存`,totalFiles_one:`共 {{count}} 个`,totalFiles_other:`共 {{count}} 个`,unstaged:`未暂存`},diff:{changedFiles:`变更文件`,changedFilesNavigation:`变更文件导航`,close:`关闭文件 Diff`,closeReview:`关闭文件审核`,collapseChangedFilesNavigation:`收起变更文件导航`,expandChangedFilesNavigation:`展开变更文件导航`,fileStats:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,loading:`正在加载 Diff`,nextFile:`审核下一个文件`,previousFile:`审核上一个文件`,reviewContent:`审核文件内容`,showFileList:`切换为文件列表`,showFileTree:`切换为文件树`},composer:{addedAttachments:`已添加附件`,applyTodo:`应用待办`,applyTodoDescription:`应用待办将覆盖输入框中的当前内容。是否继续?`,applyTodoTitle:`覆盖当前输入?`,approvalMode:`批准模式`,attachmentCount_one:`{{count}} 个附件`,attachmentCount_other:`{{count}} 个附件`,attachmentReadFailed:`附件读取失败`,attachmentUploadFailed:`附件上传失败`,baseBranchReview:`基于基础分支进行审查`,buildPlanPrompt:`请开始按照上述计划进行开发。`,cancelGoalMode:`取消目标模式`,cancelPlanMode:`取消计划模式`,cancelQueued:`取消排队:{{summary}}`,cancelQueuedTooltip:`取消排队`,editQueued:`编辑排队消息:{{summary}}`,editQueuedTooltip:`编辑排队消息`,editingQueued:`编辑中`,disableFastMode:`关闭快速模式`,enableFastMode:`开启快速模式`,commandGroup:`命令`,commandInput:`输入命令`,commandNoMatch:`没有匹配的 Skill 或命令`,fileSearch:`搜索项目文件`,fileSearchEmpty:`没有匹配的项目文件`,fileSearchFailed:`无法搜索项目文件`,fileSearchGroup:`项目文件`,fileSearchLoading:`正在搜索项目文件`,deleteTodo:`删除待办:{{summary}}`,compacting:`正在压缩上下文`,gitBranchMissing:`未检出分支`,branchSwitcherLabel:`切换分支,当前分支 {{branch}}`,branchSwitcherMenu:`切换分支`,detachedHead:`detached HEAD`,branchSwitchFailed:`无法创建或切换分支,请重试`,branchName:`分支名称`,createBranch:`新建分支`,createBranchDescription:`基于当前分支创建并立即切换`,createAndSwitchBranch:`创建并切换`,createAndSwitchWorktree:`创建并切换`,createWorktree:`新建 worktree`,createWorktreeDescription:`在仓库同级目录创建 worktree 并切换`,worktreeSwitcherMenu:`切换 worktree`,goalMode:`目标`,goalStatus:{active:`目标进行中`,blocked:`目标受阻`,budget_limited:`目标预算已用尽`,complete:`目标已完成`,paused:`目标已暂停`,usage_limited:`目标用量受限`},goalStatusLabel:`{{status}}:{{objective}}`,goalObjectiveRequired:`目标模式需要输入目标文本`,goalObjectiveTooLong:`目标文本不能超过 4,000 个字符`,goalStructuredInputUnsupported:`目标模式暂不支持附件或 Skill,请改用文本和 @文件路径`,initializingAgentsPrompt:`请检查当前项目,并在项目根目录创建或完善 AGENTS.md,写入适用于 Codex 的项目说明、常用命令和验证要求。`,landmark:`消息编辑器`,modelListFailed:`模型列表加载失败`,modelLoading:`模型加载中`,model:`模型`,modelAndReasoningMenu:`模型和思考量`,modelAndReasoningSelect:`模型和思考量:{{model}},{{effort}}`,modelSelect:`选择模型`,moveQueuedDown:`下移排队消息:{{summary}}`,moveQueuedDownTooltip:`下移`,moveQueuedUp:`上移排队消息:{{summary}}`,moveQueuedUpTooltip:`上移`,noBaseBranch:`未发现可用分支`,noModels:`暂无可用模型`,openProjectFolder:`在系统文件夹中打开`,operationFailed:`操作失败,请重试`,placeholder:`告诉 Codexly 你想完成什么`,planMode:`计划`,projectPath:`项目路径`,queueMessage:`排队消息`,queuedMessages:`已排队消息`,reasonEffortSelect:`选择思考量`,reasoningEffort:`思考量`,reviewBaseBranchGroup:`选择基础分支`,reviewScopeGroup:`选择审查范围`,reviewStarted:`代码审查已开始`,reviewUncommitted:`审查未提交的更改`,sandboxMode:`沙盒模式`,saveAsTodo:`保存为待办`,saveTodoChanges:`保存待办修改`,saveTodoFailed:`无法保存待办`,sendSteer:`发送引导`,steerNow:`立即引导:{{summary}}`,steerNowTooltip:`立即作为引导发送`,stop:`停止`,submit:`提交`,taskInput:`任务输入`,taskRunning:`任务运行中`,uncommittedChangesMissing:`未发现可用的基础分支`,waitingToSend:`等待发送`,todoCount:`待办 {{count}}`,todoHasChanges:`有未保存修改`,todoList:`{{project}} 的待办`,followUpPlaceholder:`输入后续要求`},openMenu:{choose:`选择打开方式`,copyAbsolutePath:`复制绝对路径`,copyName:`复制名称`,copyRelativePath:`复制相对路径`,detect:`正在检测打开方式`,delete:`删除`,moreActions:`更多操作`,none:`没有可用的打开方式`,open:`打开`,openInNewWindow:`在独立窗口打开`,openIn:`在 {{app}} 中打开`,reference:`引用`,rename:`重命名`,systemDefault:`系统默认应用`,targetLabel:`{{path}} 的操作`},projectFile:{deleteDescription:{directory:`确认后将删除磁盘上的目录及其内容,此操作无法撤销。`,file:`确认后将删除磁盘上的文件,此操作无法撤销。`},deleteTitle:`删除 {{name}}?`,name:`名称`,renameDescription:{directory:`确认后将更改磁盘上的目录名称。`,file:`确认后将更改磁盘上的文件名称。`},renameTitle:`重命名`},promptCommand:{availability:{noTask:`需要先打开一个任务`,notReady:`运行时能力尚未就绪`,unsupported:`当前运行时不支持此命令`},compact:{description:`压缩此任务的上下文`,label:`压缩`},fork:{description:`复制当前任务及其对话历史`,label:`复制`},goal:{description:`设置持久目标并持续工作直到完成`,label:`目标`},initialize:{description:`创建包含 Codex 说明的 AGENTS.md 文件`,label:`初始化`},plan:{description:`先分析任务并制定实施计划`,label:`计划`},review:{description:`审查未暂存的更改,或与某个分支进行比较`,label:`代码审查`}},pending:{allow:`允许`,allowTurn:`本轮允许`,additionalPermissions:`额外权限`,allowSession:`本次会话允许`,answerFailed:`回答提交失败,请重试`,commandApproval:`命令审批`,cancel:`取消`,deny:`拒绝`,expired:`请求已过期`,fileChangeApproval:`文件变更审批`,fileChangeFallback:`待确认文件变更`,inputRequired:`需要你的输入`,mcpForm:`{{server}} 输入请求`,mcpRequest:`{{server}} 确认请求`,networkApproval:`网络访问审批`,networkPermission:`网络访问`,other:`其他`,otherAnswer:`{{header}}其他回答`,openUrl:`打开链接`,previousPending:`等待处理前一项`,processed:`请求已处理`,permissionAccess:{deny:`拒绝`,read:`读取`,write:`写入`},permissionApproval:`权限审批`,permissionGlobDepth:`Glob 扫描深度:{{depth}}`,permissionMinimal:`最小文件系统`,permissionProjectRoots:`项目根目录`,permissionRoot:`文件系统根目录`,permissionTmpdir:`系统临时目录`,permissionUnknownPath:`未知路径`,fileSystemPermission:`文件系统`,requestFailed:`请求处理失败,请重试`,terminalInputApproval:`终端输入审批`,submitAnswers:`提交回答`,unsupportedForm:`此表单无法安全显示,请拒绝或取消请求。`},projectDialog:{closeImagePreview:`关闭图片预览`,closeSource:`关闭源文件`,delete:`删除`,loadImageError:`无法加载图片`,loadMoreSourceError:`加载更多内容失败`,loadSourceError:`无法加载源文件`,loadingMoreSource:`正在加载更多内容`,loadingSource:`正在加载源文件`,name:`项目名称`,previewMarkdown:`预览 Markdown`,remove:`移除项目`,removeDescription:`将“{{name}}”从 Codexly 左栏移除,不会删除磁盘上的文件夹及文件。`,rename:`重命名项目`,renameDescription:`只修改左栏显示名称,不会修改磁盘上的文件夹名称。`,showRawContent:`显示原始内容`,sourcePartial:`部分内容`},projectPicker:{primaryRoot:`主目录`,primaryRootHint:`首个勾选的文件夹将作为主目录`,primaryRootSummary:`{{path}}(主目录)`,rootSeparator:`、`,selectedRoots:`已选择 {{count}} 个项目目录`,selectRoot:`选择 {{name}}`,add:`添加此文件夹`,addError:`无法添加所选文件夹`,adding:`正在添加`,description:`浏览 Codexly 运行设备上的文件夹`,directPathReady:`已验证目录,可直接添加`,empty:`此文件夹中没有子文件夹`,filesystemRoot:`选择磁盘`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件夹`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件夹`,loading:`正在读取文件夹`,loadingBranch:`正在读取`,noSelection:`尚未选择文件夹`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,title:`选择项目文件夹`,showHidden:`显示隐藏文件夹`,treeLabel:`项目文件夹目录树`},hostAttachmentPicker:{add:`添加所选文件`,description:`浏览 Codexly 运行设备上的文件`,empty:`此文件夹中没有支持的文件`,filesystemRoot:`选择磁盘`,fileTitle:`选择部署主机文件`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件`,imageTitle:`选择部署主机图片`,importError:`无法添加所选文件`,importing:`正在添加`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件`,loading:`正在读取文件`,loadingBranch:`正在读取`,noSelection:`尚未选择文件`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,showHidden:`显示隐藏文件`,treeLabel:`部署主机文件目录树`},subagentOutput:{close:`关闭子代理输出`,error:`无法加载子代理输出`,loading:`正在加载子代理输出`,reconnecting:`子代理实时连接恢复中`,task:`子代理 {{taskId}}`,title:`子代理输出`},shell:{selectProjectRoot:`选择项目目录`,closeInspector:`关闭上下文面板`,closeSidebar:`关闭项目侧栏`,collapseInspector:`收起上下文面板`,collapseSidebar:`收起项目侧栏`,expandInspector:`展开上下文面板`,expandSidebar:`展开项目侧栏`,newChat:`新聊天`,renameTask:`重命名任务 {{title}}`,resizeInspector:`调整上下文面板宽度`,resizeSidebar:`调整项目侧栏宽度`,timeline:`任务时间线`,temporaryTask:`临时任务`},skillEditor:{tokenLabel:`Skill {{name}},实际文本 {{text}}`},archivedTasks:{confirmDelete:`永久删除`,confirmDeleteAll:`全部永久删除`,delete:`永久删除`,deleteAll:`全部删除`,deleteAllDescription:`“{{project}}”中的全部已归档任务及其关联历史将被永久删除,此操作无法撤销。`,deleteAllTitle:`永久删除全部已归档任务`,deleteDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTask:`永久删除任务 {{task}}`,deleteTitle:`永久删除任务`,empty:`没有已归档任务`,loadError:`无法加载已归档任务`,loading:`正在加载已归档任务`,next:`下一页`,page:`第 {{page}} 页`,previous:`上一页`,restore:`恢复`,restoreTask:`恢复任务 {{task}}`,search:`搜索已归档任务`,title:`{{project}} 的已归档任务`,updatedAt:`更新于 {{date}}`},sidebar:{addProject:`添加项目`,agentNavigation:`Agent 导航`,archive:`归档`,archived:`已归档`,close:`关闭项目侧栏`,closeSearch:`关闭任务搜索`,collapse:`收起`,connection:{connecting:`正在连接`,offline:`离线`,online:`在线`,reconnecting:`正在重新连接`},aboutStatus:`关于,Codexly {{version}}{{update}},终端连接状态:{{status}}`,createInProject:`在 {{project}} 中新建任务`,deletePermanently:`永久删除`,deleteTaskDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTaskTitle:`永久删除任务`,errorAddProject:`无法添加项目`,errorArchiveTask:`无法归档任务`,errorLoadTasks:`无法加载任务`,errorPinTask:`无法更新固定状态`,errorProjectOrder:`无法保存项目排序`,errorRenameTask:`无法重命名任务`,errorSearchTasks:`无法搜索任务`,expand:`显示更多`,expandLoading:`正在加载更多`,expandRetry:`重试加载更多`,newTask:`新建任务`,landmark:`项目侧栏`,noMatchingTasks:`未找到匹配任务`,noTasks:`暂无任务`,noTemporaryTasks:`暂无临时任务`,openProjectActions:`打开 {{project}} 的项目操作菜单`,openTaskActions:`打开 {{task}} 的操作菜单`,pin:`固定`,pinned:`已固定`,projects:`项目`,projectActions:`{{project}} 的项目操作`,remove:`删除`,rename:`重命名`,search:`搜索任务`,searchAll:`正在搜索全部任务`,settings:`设置`,updateAvailableLabel:`,有可用更新`,taskActions:`{{task}} 的任务操作`,taskApproval:`任务等待审批`,taskComplete:`AI 回复已完成`,taskIncomplete:`AI 回复未完成`,taskLoading:`正在加载任务`,taskRunning:`任务运行中`,temporaryTasks:`临时任务`,toggleProject:`切换项目 {{project}}`,unpin:`取消固定`},taskBoard:{allProjects:`全部项目`,approval:`待审批`,completed:`已完成`,completedLoadError:`已完成任务加载失败`,copyTaskId:`复制任务 ID:{{id}}`,copyTaskIdHint:`复制任务 ID`,emptyApproval:`暂无待审批任务`,emptyCompleted:`暂无已完成任务`,emptyRunning:`暂无运行中任务`,emptyTodos:`暂无待办`,label:`任务看板`,loading:`正在加载任务看板`,loadingMore:`正在加载更多任务`,newCompleted:`新完成`,openTask:`打开任务:{{task}}`,openTodo:`打开待办:{{todo}}`,pinned:`已固定`,projectFilter:`项目过滤`,retryCompleted:`重新加载已完成任务`,running:`运行中`,runningFor:`已运行 {{duration}}`,title:`任务看板`,todo:`待办`},taskDialog:{name:`任务名称`,rename:`重命名任务`}},sn=`common`,cn=[`common`,`settings`,`workbench`,`conversation`],ln={en:{common:Qt,conversation:$t,settings:en,workbench:tn},"zh-CN":{common:nn,conversation:rn,settings:an,workbench:on}};function un(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}var dn=un(),fn=Zt(dn,typeof window>`u`||typeof navigator>`u`?[]:navigator.languages);L.use(Oe).init({defaultNS:sn,fallbackLng:`zh-CN`,initAsync:!1,interpolation:{escapeValue:!1},lng:fn,ns:cn,resources:ln,supportedLngs:[`zh-CN`,`en`]}),typeof document<`u`&&Xt(fn,document.documentElement);async function pn(e){Yt(e,dn??{setItem:()=>void 0}),typeof document<`u`&&Xt(e,document.documentElement),await L.changeLanguage(e)}function mn(){return Jt(dn??{getItem:()=>null})??(L.resolvedLanguage===`en`?`en`:`zh-CN`)}function hn(e,t,n){return e.invalidateQueries({exact:!0,queryKey:zt(t,n)})}function gn(e){let t=new Map;for(let n of e?.pages??[])for(let e of n.data)t.has(e.id)||t.set(e.id,e);return[...t.values()]}async function _n(e,t){let n=e.getQueriesData({queryKey:Lt}).flatMap(([e,n])=>{let r=e[2];return n!==void 0&&Array.isArray(r)&&r.includes(t.projectId)?[e]:[]});await Promise.all(n.map(t=>e.cancelQueries({exact:!0,queryKey:t})));for(let r of n)e.setQueryData(r,e=>{if(e===void 0||e.pages.length===0)return e;let n=e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t.id)})),r=n[0];return r===void 0?e:{...e,pages:[{...r,data:[t,...r.data]},...n.slice(1)]}})}function vn(e,t){if(e===void 0)return{data:[t],nextCursor:null};let n=e.data.findIndex(e=>e.id===t.id);return n<0?{...e,data:[...e.data,t]}:{...e,data:e.data.map((e,r)=>r===n?t:e)}}function yn(e,t){if(e===void 0||e.pages.length===0)return{pageParams:[void 0],pages:[{data:[t],nextCursor:null}]};let n=e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t.id)})),r=n[0];return{...e,pages:[{...r,data:[t,...r?.data??[]],nextCursor:r?.nextCursor??null},...n.slice(1)]}}function bn(e,t){return e===void 0?{pageParams:[void 0],pages:[{data:[t],nextCursor:null}]}:{...e,pages:e.pages.map(e=>({...e,data:e.data.map(e=>e.id===t.id?t:e)}))}}function xn(e,t){e.setQueryData([`projects`,t.projectId,`tasks`],e=>bn(e,t)),e.setQueryData([`projects`,t.projectId,`tasks`,Ft],e=>e===void 0?void 0:t.pinned?[t,...e.filter(e=>e.id!==t.id)]:e.filter(e=>e.id!==t.id)),e.setQueryData([`projects`,t.projectId,`tasks`,It],e=>e?.map(e=>e.id===t.id?t:e))}function Sn(e,t={}){if(t.assistantReplyStarted===!0||e.turns.some(e=>e.items.some(e=>e.type===`message`&&e.role===`assistant`))){if(e.title!==`新聊天`)return e.title;for(let t of e.turns)for(let e of t.items){if(e.type!==`message`||e.role!==`user`)continue;let t=e.text.trim().split(/\r?\n/u)[0]?.trim();if(t)return t;let n=e.skills?.[0]?.name;if(n!==void 0)return n;let r=e.attachments?.[0]?.name;if(r!==void 0)return r}return L.t(`taskTitle.replying`,{ns:`conversation`})}}function Cn(e,t,n={}){if(e===void 0)return;let r=e.pages.map(e=>{let r=wn(e.data,t,n);return r===e.data?e:{...e,data:r}});return r.some((t,n)=>t!==e.pages[n])?{...e,pages:r}:e}function wn(e,t,n={}){let r=Sn(t,n);if(r===void 0)return e;let i=e.findIndex(e=>e.id===t.id&&e.projectId===t.projectId&&e.title===`新聊天`);return i<0?e:e.map((e,n)=>n===i?{...e,title:r,updatedAt:t.updatedAt}:e)}function Tn(e,t,n){e.setQueryData([`projects`,t.projectId,`tasks`],e=>Cn(e,t,n));for(let r of[Ft,It])e.setQueryData([`projects`,t.projectId,`tasks`,r],e=>e===void 0?void 0:wn(e,t,n))}function En(e,t){if(e!==void 0)return{...e,pages:e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t)}))}}async function Dn(e,t,n,r){let i=new Map,a=new Set,o;for(;;){let s={...o===void 0?{}:{cursor:o},limit:100,...n},c=r===void 0?await t.listTasks(e,s):await t.listTasks(e,s,{signal:r});for(let e of c.data)i.has(e.id)||i.set(e.id,e);if(c.nextCursor===null||a.has(c.nextCursor))return[...i.values()];a.add(c.nextCursor),o=c.nextCursor}}function On(e,t,n){return Dn(e,t,{},n)}function kn(e,t,n){return Dn(e,t,{pinned:!0},n)}function An(e,t=B){return o({queryFn:({signal:n})=>kn(e,t,n),queryKey:[`projects`,e,`tasks`,Ft]})}function jn(e,t,n=B){return o({enabled:t,queryFn:({signal:t})=>On(e,n,t),queryKey:[`projects`,e,`tasks`,It]})}async function Mn(e,t,n){let r=[`projects`,t,`tasks`];e.setQueryData(r,e=>En(e,n)),e.setQueryData([...r,Ft],e=>e?.filter(e=>e.id!==n)),e.setQueryData([...r,It],e=>e?.filter(e=>e.id!==n)),await e.invalidateQueries({exact:!0,queryKey:r})}function Nn(e,t){if(e===void 0||e.data.length!==t.length||new Set(t).size!==t.length)return;let n=new Map(e.data.map(e=>[e.id,e])),r=t.flatMap(e=>{let t=n.get(e);return t===void 0?[]:[t]});if(r.length===e.data.length)return{...e,data:r}}function Pn(e=B){return h({mutationFn:({pinned:t,projectId:n,taskId:r})=>e.pinTask(n,r,t),mutationKey:[`tasks`,`pin`]})}function Fn(e=B){return h({mutationFn:({projectId:t,taskId:n,title:r})=>e.renameTask(t,n,r),mutationKey:[`tasks`,`rename`]})}function In(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.archiveTask(t,n),mutationKey:[`tasks`,`archive`]})}function Ln(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.unarchiveTask(t,n),mutationKey:[`tasks`,`unarchive`]})}function Rn(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.deleteTask(t,n),mutationKey:[`tasks`,`delete`]})}function zn(e=B){return h({mutationFn:({name:t,projectId:n})=>e.renameProject(n,t),mutationKey:[`projects`,`rename`],scope:{id:`projects:actions`}})}function Bn(e=B){return h({mutationFn:t=>e.removeProject(t),mutationKey:[`projects`,`remove`],scope:{id:`projects:actions`}})}function Vn(e=B){return o({queryFn:({signal:t})=>e.getCapabilities({signal:t}),queryKey:[`capabilities`]})}function Hn(e=B){return o({queryFn:({signal:t})=>e.listModels({signal:t}),queryKey:[`models`],staleTime:5*6e4})}function Un(e=B){return o({queryFn:({signal:t})=>e.getGlobalSettings({signal:t}),queryKey:[`settings`]})}function Wn(e=B){return h({mutationFn:t=>e.updateGlobalSettings(t),mutationKey:[`settings`,`update`],scope:{id:`global-settings`}})}function Gn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.getProjectOpenCapabilities(e,{signal:n}),queryKey:[`projects`,e,`open-capabilities`],staleTime:6e4})}function Kn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.listSkills(e,{signal:n}),queryKey:[`projects`,e,`skills`]})}function qn(e,t,n=B,r=!0){return o({enabled:r&&t!==void 0,queryFn:async({signal:r})=>t===void 0?{data:[]}:n.listMcpServers(e,t,{signal:r}),queryKey:[`projects`,e,`tasks`,t??null,`mcp-servers`]})}function Jn(e,t,n=B){return h({mutationFn:async()=>{if(t===void 0)throw Error(`Cannot reload MCP servers without a task`);return n.retryMcpServers(e,t)},mutationKey:[`projects`,e,`tasks`,t??null,`mcp-servers`,`reload`],scope:{id:`task-mcp:${e}:${t??`none`}`}})}function Yn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.getProjectDefaults(e,{signal:n}),queryKey:[`projects`,e,`defaults`]})}function Xn(e,t=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:n=>t.updateProjectDefaults(e,n),mutationKey:[`projects`,e,`defaults`,`update`],scope:{id:`project-defaults:${e}`}})}function Zn(e,t,n=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:r=>n.updateTaskSettings(e,t,r),mutationKey:[`projects`,e,`tasks`,t,`settings`,`update`],scope:{id:`task-settings:${e}:${t}`}})}function Qn(e=B){return o({queryFn:({signal:t})=>e.listProjects({signal:t}),queryKey:[`projects`]})}function $n(e=B){return h({mutationFn:t=>e.reorderProjects(t),mutationKey:[`projects`,`reorder`],scope:{id:`projects:reorder`}})}function er(e,t,n=B,r=!0){return o({enabled:r,queryFn:({signal:r})=>n.getProjectGitStatus(e,{rootPath:t},{signal:r}),queryKey:[`projects`,e,t,`git-status`],retry:1})}function tr(e,t,n,r,i,a=B){return o({enabled:i,queryFn:({signal:r})=>a.getProjectGitStatus(e,{includeDiff:!0,rootPath:t,...n===null?{}:{repository:n}},{signal:r}),queryKey:[`projects`,e,t,`git-status-detail`,n,r],retry:1})}function nr(e,t,n,r,i=B){return o({enabled:r&&n!==null,queryFn:({signal:r})=>n===null?Promise.reject(Error(`Git repository is not selected`)):i.getProjectGitStatus(e,{includeDiff:!0,repository:n,rootPath:t},{signal:r}),queryKey:[`projects`,e,t,`git-status`,n],retry:1})}function rr(e,t,n,r,i=B){return f({enabled:r,getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:r,signal:a})=>i.getProjectGitHistory(e,{...r===void 0?{}:{cursor:r},...n===void 0?{}:{repository:n},rootPath:t},{signal:a}),queryKey:[`projects`,e,t,`git-history`,n??null]})}function ir(e,t,n,r,i,a=B){return f({enabled:i,getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:i,signal:o})=>a.getProjectGitCommitFiles(e,{...i===void 0?{}:{cursor:i},...n===void 0?{}:{repository:n},rootPath:t,sha:r},{signal:o}),queryKey:[`projects`,e,t,`git-commit-files`,n??null,r]})}function ar(e,t,n,r,i,a,s=B){return o({enabled:a,gcTime:3e4,queryFn:({signal:a})=>s.getProjectGitCommitFileDiff(e,{path:i,...n===void 0?{}:{repository:n},rootPath:t,sha:r},{signal:a}),queryKey:[`projects`,e,t,`git-commit-diff`,n??null,r,i],staleTime:1/0})}function or(e,t,n=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:r=>n.generateCommitMessage(e,t,r),mutationKey:[`projects`,e,t,`git`,`commit-message`],scope:{id:`project-git-message:${e}:${t}`}})}function sr(e,t,n=B){return h({mutationFn:r=>n.commitProjectChanges(e,t,r),mutationKey:[`projects`,e,t,`git`,`commit`],scope:{id:`project-git-mutation:${e}:${t}`}})}function cr(e,t,n,r=B,i=!0){return o({enabled:i,queryFn:({signal:i})=>r.listProjectFiles(e,t,n,{signal:i}),queryKey:[`projects`,e,t,`file-tree`,n],staleTime:3e4})}function lr(e,t,n,r=B){return o({queryFn:({signal:i})=>r.listTasks(e,{archived:!0,...t===void 0?{}:{cursor:t},limit:20,...n.length===0?{}:{searchTerm:n}},{signal:i}),queryKey:[`projects`,e,`archived-tasks`,n,t??null],refetchOnMount:`always`})}function ur(e,t=B){return f({getNextPageParam:e=>Object.values(e.cursors).some(e=>e!==null)?e.cursors:void 0,initialPageParam:void 0,queryFn:async({pageParam:n,signal:r})=>{let i=e.filter(e=>n===void 0||n[e]!==null),a=Math.max(1,Math.ceil(10/Math.max(1,i.length))),o=await Promise.all(i.map(async e=>({page:await t.listTasks(e,{completed:!0,...typeof n?.[e]==`string`?{cursor:n[e]}:{},limit:a},{signal:r}),projectId:e}))),s={...n??{}};for(let{page:e,projectId:t}of o)s[t]=e.nextCursor;return{cursors:s,data:o.flatMap(({page:e})=>e.data).sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}},queryKey:[...Lt,e]})}function dr(e,t=B){return f({getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:n,signal:r})=>t.listTasks(e,{...n===void 0?{}:{cursor:n},limit:5},{signal:r}),queryKey:[`projects`,e,`tasks`]})}function fr(e,t,n=B){return o({gcTime:Rt,queryFn:({signal:r})=>n.readTask(e,t,{signal:r}),queryKey:[`projects`,e,`tasks`,t]})}var pr=[],mr={error:null,hasNextPage:!1,isFetchingNextPage:!1,isPending:!0};async function hr(e,t){await e.get(t)?.fetchNextPage()}var gr=(0,z.createContext)(void 0),_r=(0,z.createContext)(void 0),vr=(0,z.createContext)(void 0),yr=(0,z.createContext)(void 0);function br({client:e,onRemove:t,onUpdate:n,projectId:r}){let i=b(dr(r,e)),a=(0,z.useMemo)(()=>gn(i.data),[i.data]);return(0,z.useEffect)(()=>{n(r,{controller:{fetchNextPage:i.fetchNextPage},state:{error:i.error,hasNextPage:i.hasNextPage,isFetchingNextPage:i.isFetchingNextPage,isPending:i.isPending},tasks:a})},[n,r,i.error,i.fetchNextPage,i.hasNextPage,i.isFetchingNextPage,i.isPending,a]),(0,z.useEffect)(()=>()=>{t(r)},[t,r]),null}function xr(e,t){let n=e.flatMap(e=>t.get(e)?.tasks??pr);return{projectTaskStates:new Map(e.map(e=>[e,t.get(e)?.state??mr])),tasks:n}}function Sr(){let e=(0,z.useContext)(gr);if(e===void 0)throw Error(`useProjectData must be used inside ProjectProvider`);return e}function Cr(){let e=(0,z.useContext)(_r);if(e===void 0)throw Error(`useProjectActions must be used inside ProjectProvider`);return e}function wr(){let e=(0,z.useContext)(vr);if(e===void 0)throw Error(`useProjectActivity must be used inside ProjectProvider`);return e}function Tr(){let e=(0,z.useContext)(yr);if(e===void 0)throw Error(`useProjectRootSelection must be used inside ProjectProvider`);return e}function Er(e){let{client:t,projects:n}=Sr(),r=e.length>0,i=y({queries:[O,...n.map(e=>e.id)].map(e=>jn(e,r,t))}),a=r&&i.some(e=>e.isPending),o=i.find(e=>e.error!==null)?.error??null;return{error:o,isPending:a,tasks:a||o!==null?pr:i.flatMap(e=>e.data??pr).filter(t=>t.title.toLocaleLowerCase().includes(e))}}function Dr(e){let{client:t,projects:n}=Sr(),r=b(ur((0,z.useMemo)(()=>e===null?[O,...n.map(e=>e.id)]:[e],[e,n]),t)),i=(0,z.useMemo)(()=>{let e=new Map;for(let t of r.data?.pages??[])for(let n of t.data)e.set(`${n.projectId}\u0000${n.id}`,n);return[...e.values()].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))},[r.data]);return{error:r.error,fetchNextPage:r.fetchNextPage,hasNextPage:r.hasNextPage,isFetchingNextPage:r.isFetchingNextPage,isPending:r.isPending,refetch:r.refetch,tasks:i}}function Or(){let{client:e,projects:t}=Sr(),n=y({queries:[O,...t.map(e=>e.id)].map(t=>An(t,e))});return{error:n.find(e=>e.error!==null)?.error??null,isPending:n.some(e=>e.isPending),tasks:n.flatMap(e=>e.data??pr)}}function kr(){let e=!1;return{async run(t){if(!e){e=!0;try{return await t()}finally{e=!1}}}}}function Ar(e){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:`Unknown internal error`}function V(e,t,n={}){console.warn(`Codexly internal warning`,{diagnosticCode:e,errorMessage:Ar(t),...n})}var jr=256;function Mr(){if(globalThis.Notification===void 0)return;let e=globalThis.Notification;return{getPermission:()=>e.permission,requestPermission:()=>e.requestPermission(),show(t,n){let r=new e(t,n);return{addClickListener(e){r.addEventListener(`click`,e)},close(){r.close()}}}}}function Nr(e){return`${e.taskId}:${e.turnId}`}function Pr(e,t){switch(t.type){case`turn.completed`:{let n=t.payload.turn.status===`completed`?L.t(`notification.completed`,{ns:`conversation`}):t.payload.turn.status===`interrupted`?L.t(`notification.interrupted`,{ns:`conversation`}):t.payload.turn.status===`failed`?L.t(`notification.failed`,{ns:`conversation`}):void 0;return n===void 0?void 0:{body:n,tag:`${e}:${t.taskId}:${t.turnId}:terminal`}}case`provider.error`:return t.payload.willRetry?void 0:{body:L.t(`notification.failedWithMessage`,{message:t.payload.message,ns:`conversation`}),tag:`${e}:${t.taskId}:${t.turnId}:terminal`};case`pending_request.created`:return{body:t.payload.request.type===`user_input`?L.t(`notification.waitingInput`,{ns:`conversation`}):L.t(`notification.waitingApproval`,{ns:`conversation`}),tag:`${e}:${t.taskId}:${t.payload.request.requestId}:request`};default:return}}var Fr=class{#e;#t=new Set;#n;#r;#i;#a;#o;constructor(e){this.#e=e.api,this.#n=e.focusPage??(()=>{globalThis.window.focus()}),this.#r=e.isEnabled??(()=>!0),this.#i=e.isPageForeground??(()=>globalThis.document.visibilityState===`visible`&&globalThis.document.hasFocus()),this.#a=e.navigateToTask??(()=>void 0)}notify(e,t,n){if(!this.#r()||this.#e?.getPermission()!==`granted`||this.#i())return;if(t.type===`provider.error`&&!t.payload.willRetry){let e=Nr(t);if(this.#t.has(e))return;if(this.#t.size>=jr){let e=this.#t.values().next().value;e!==void 0&&this.#t.delete(e)}this.#t.add(e)}else if(t.type===`turn.completed`&&this.#t.delete(Nr(t)))return;let r=Pr(e,t);if(r!==void 0)try{let i=n.trim()||`Task`,a=this.#e.show(`Codexly · ${i}`,{body:r.body,data:{projectId:e,taskId:t.taskId},tag:r.tag});a.addClickListener(()=>{a.close(),this.#n(),this.#a(e,t.taskId)})}catch(n){V(`browser_notification_show_failed`,n,{projectId:e,taskId:t.taskId})}}requestPermission(){if(!this.#r()||this.#e===void 0)return Promise.resolve();if(this.#o!==void 0)return this.#o;let e;try{if(this.#e.getPermission()!=="default")return Promise.resolve();e=this.#e.requestPermission()}catch(e){return V(`notification_permission_failed`,e),Promise.resolve()}return this.#o=e.then(()=>void 0).catch(e=>{V(`notification_permission_failed`,e)}).finally(()=>{this.#o=void 0}),this.#o}};function Ir(e={}){return new Fr({...e,api:e.api??Mr()})}var Lr={attention:null,isAwaitingApproval:!1,isRunning:!1};function Rr(e,t){return`${e}\u0000${t}`}function zr(e){return e.type===`command_approval`||e.type===`file_change_approval`||e.type===`permissions_approval`||e.type===`mcp_elicitation`}function Br(e){return new Set(e.filter(e=>e.status===`pending`&&zr(e)).map(e=>e.requestId))}function Vr(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Hr(e,t,n,r){let i=Rr(t,n),a=e.get(i);if(a?.attention===r.attention&&a.isRunning===r.isRunning&&a.startedAt===r.startedAt&&a.taskName===r.taskName&&Vr(a.pendingApprovalRequestIds,r.pendingApprovalRequestIds))return e;let o=new Map(e);return o.set(i,r),o}function Ur(e,t,n){let r=e.get(Rr(t,n));return Hr(e,t,n,{attention:null,isRunning:!0,pendingApprovalRequestIds:r?.pendingApprovalRequestIds??new Set,projectId:t,...r?.startedAt===void 0?{startedAt:new Date().toISOString()}:{startedAt:r.startedAt},taskId:n,taskName:r?.taskName??n})}function Wr(e){let t=[];for(let n of e.values())!n.isRunning&&n.pendingApprovalRequestIds.size===0||t.push({id:n.taskId,projectId:n.projectId,...n.startedAt===void 0?{}:{startedAt:n.startedAt},status:n.pendingApprovalRequestIds.size>0?`approval`:`running`,title:n.taskName??n.taskId});return t}function Gr(e,t,n){let r=e.get(Rr(t,n));return r===void 0?Lr:{attention:r.attention,isAwaitingApproval:r.pendingApprovalRequestIds.size>0,isRunning:r.isRunning}}function Kr(e,t,n){let r=e.get(Rr(t,n));return r?.attention===void 0||r.attention===null?e:Hr(e,t,n,{...r,attention:null})}function qr(e,t){for(let n of e.values())if(n.projectId===t&&(n.isRunning||n.pendingApprovalRequestIds.size>0))return!0;return!1}function Jr(e,t){let n=[];for(let r of e.values())r.projectId===t&&(r.isRunning||r.pendingApprovalRequestIds.size>0)&&n.push(r.taskId);return n}function Yr(e,t,n){let r=Rr(t,n);if(!e.has(r))return e;let i=new Map(e);return i.delete(r),i}function Xr(e,t,n=!1){let r=e.get(Rr(t.projectId,t.id)),i=Br(t.pendingRequests),a=t.turns.findLast(e=>e.status===`running`),o=n?null:i.size>0?`approval`:t.status===`running`?null:r?.attention===`completed`||r?.attention===`failed`?r.attention:null;return Hr(e,t.projectId,t.id,{attention:o,isRunning:t.status===`running`,pendingApprovalRequestIds:i,projectId:t.projectId,...typeof a?.startedAt==`string`?{startedAt:a.startedAt}:r?.startedAt===void 0?{}:{startedAt:r.startedAt},taskId:t.id,taskName:t.title})}function Zr(e,t,n,r=!1){let i=Rr(t,n.taskId),a=e.get(i)??{attention:null,isRunning:!1,pendingApprovalRequestIds:new Set,projectId:t,taskId:n.taskId,taskName:n.taskId},o=a.attention,s=a.isRunning,c=a.pendingApprovalRequestIds;switch(n.type){case`turn.started`:o=null,s=!0;break;case`task.status_updated`:s=n.payload.status===`running`,s&&(o=null);break;case`turn.completed`:o=r?null:n.payload.turn.status===`failed`||n.payload.turn.status===`interrupted`?`failed`:`completed`,s=!1,c=new Set;break;case`provider.error`:n.payload.willRetry||(o=r?null:`failed`,s=!1,c=new Set);break;case`pending_request.created`:zr(n.payload.request)&&(o=r?null:`approval`,c=new Set(c).add(n.payload.request.requestId));break;case`pending_request.resolved`:case`pending_request.expired`:if(c.has(n.payload.request.requestId)){let e=new Set(c);e.delete(n.payload.request.requestId),c=e,e.size===0&&o===`approval`&&(o=null)}break;default:return e}return Hr(e,t,n.taskId,{attention:o,isRunning:s,pendingApprovalRequestIds:c,projectId:t,...n.type===`turn.started`?typeof n.payload.turn.startedAt==`string`?{startedAt:n.payload.turn.startedAt}:{}:a.startedAt===void 0?{}:{startedAt:a.startedAt},taskId:n.taskId,...a.taskName===void 0?{}:{taskName:a.taskName}})}var Qr=new TextEncoder,$r=32,ei=8,ti=48,ni=16,ri=16;function ii(e){return Qr.encode(e).byteLength}function H(e){let t=new WeakSet;function n(e){if(e==null)return 8;if(typeof e==`string`)return ri+ii(e);if(typeof e==`number`||typeof e==`bigint`)return 8;if(typeof e==`boolean`)return 4;if(typeof e==`symbol`||typeof e==`function`)return 16;if(t.has(e))return 0;if(t.add(e),Array.isArray(e)){let t=$r+e.length*ei;for(let r of e)t+=n(r);return t}let r=ti;for(let[t,i]of Object.entries(e))r+=ni+ii(t)+n(i);return r}return n(e)}var ai=class{#e=new Map;#t;#n;#r;#i;#a=0;constructor(e){if(!Number.isSafeInteger(e.maxBytes)||e.maxBytes<0)throw RangeError(`Byte LRU maxBytes must be a non-negative safe integer`);let t=e.maxEntries??2**53-1;if(!Number.isSafeInteger(t)||t<0)throw RangeError(`Byte LRU maxEntries must be a non-negative safe integer`);this.#t=e.getRetainedBytes,this.#n=e.maxBytes,this.#r=t,this.#i=e.onEvict}get retainedBytes(){return this.#a}get size(){return this.#e.size}delete(e){let t=this.#e.get(e);return t===void 0?!1:(this.#e.delete(e),this.#a-=t.retainedBytes,!0)}get(e){let t=this.#e.get(e);if(t!==void 0)return this.#e.delete(e),this.#e.set(e,t),t.value}peek(e){return this.#e.get(e)?.value}set(e,t){let n=this.#t(e,t);if(!Number.isSafeInteger(n)||n<0)throw RangeError(`Byte LRU entry size must be a non-negative safe integer`);let r=this.#e.get(e);return r!==void 0&&(this.#e.delete(e),this.#a-=r.retainedBytes,this.#i?.(e,r.value,`replaced`)),n>this.#n||this.#r===0?!1:(this.#e.set(e,{retainedBytes:n,value:t}),this.#a+=n,this.#o(),this.#e.has(e))}#o(){for(;this.#e.size>this.#r||this.#a>this.#n;){let e=this.#e.entries().next().value;if(e===void 0)return;let[t,n]=e;this.#e.delete(t),this.#a-=n.retainedBytes,this.#i?.(t,n.value,this.#e.size>=this.#r?`entries`:`bytes`)}}},oi=1e3,si=3e4,ci=class{#e=0;#t;#n=0;#r;#i;#a=0;#o=0;constructor(e){if(!Number.isSafeInteger(e.maxBytes)||e.maxBytes<0)throw RangeError(`Project Event history maxBytes must be non-negative`);if(!Number.isSafeInteger(e.maxEvents)||e.maxEvents<0)throw RangeError(`Project Event history maxEvents must be non-negative`);this.#r=e.maxBytes,this.#i=e.maxEvents,this.#t=Array(e.maxEvents)}get floorSequence(){return this.#n}append(e){let t=H(e);if(t>this.#r||this.#i===0){this.reset(e.sequence);return}this.#e===this.#i&&this.#s();let n=(this.#o+this.#e)%this.#i;for(this.#t[n]={event:e,retainedBytes:t},this.#e+=1,this.#a+=t;this.#a>this.#r;)this.#s()}forEachAfter(e,t){for(let n=0;n<this.#e;n+=1){let r=this.#t[(this.#o+n)%this.#i];r!==void 0&&r.event.sequence>e&&t(r.event)}}reset(e=this.#n){this.#t=Array(this.#i),this.#e=0,this.#n=e,this.#a=0,this.#o=0}#s(){let e=this.#t[this.#o];e!==void 0&&(this.#t[this.#o]=void 0,this.#o=(this.#o+1)%this.#i,--this.#e,this.#a-=e.retainedBytes,this.#n=e.event.sequence)}};function li(e){return e.type===`message.delta`||e.type===`plan.delta`||e.type===`reasoning.delta`||e.type===`command.output_delta`}function ui(e,t){return`${e}\u0000${t}`}function di(e,t,n){return`${ui(e,t)}\u0000${n}`}var fi=1048576,pi=1e3,mi=new TextEncoder;function hi(e){let t=e.items.map(e=>{if(e.type!==`message`||e.role!==`user`||(e.skills?.length??0)===0)return e;let t=D(e.text,e.skills??[]);return t===e.text?e:{...e,text:t}});return t.some((t,n)=>t!==e.items[n])?{...e,items:t}:e}function gi(e,t,n){let r=hi(t),i=r.items.find(e=>e.type===`message`&&e.role===`user`);if(n.text.length===0&&n.skills.length===0&&n.attachments.length===0&&i===void 0)return e;let a=e.turns.findIndex(e=>e.id===r.id),o=e.turns[a],s=hi(o??r),c=s.items.findIndex(e=>e.type===`message`&&e.role===`user`),l=s.items[c],u=c>=0;if(a>=0&&l?.type===`message`){if((l.attachments?.length??0)>0||(n.messageAttachments?.length??0)===0){if(s===o)return e;let t=[...e.turns];return t[a]=s,{...e,turns:t}}let t=[...e.turns],r=[...s.items];return r[c]={...l,attachments:[...n.messageAttachments??[]],...n.text.length===0?{text:``}:{}},t[a]={...s,items:r},{...e,turns:t}}let d=u?s:{...s,items:[i??{id:`submitted-user-${t.id}`,role:`user`,...n.skills.length===0?{}:{skills:n.skills.map(e=>({name:e.name}))},...(n.messageAttachments?.length??0)===0?{}:{attachments:[...n.messageAttachments??[]]},text:n.text,type:`message`},...s.items]};if(a<0)return{...e,status:`running`,turns:[...e.turns,d]};let f=[...e.turns];return f[a]=d,{...e,turns:f}}function _i(e){return e.type===`message.delta`||e.type===`plan.delta`||e.type===`reasoning.delta`||e.type===`command.output_delta`}function vi(e){let t=e.type===`reasoning.delta`?`${e.payload.field}:${String(e.payload.sectionIndex??-1)}`:`value`;return`${e.taskId}:${e.turnId}:${e.itemId}:${e.type}:${t}`}var yi=class{#e;#t;#n=[];#r=0;constructor(e={}){if(this.#e=e.maxBytes??fi,this.#t=e.maxEvents??pi,!Number.isInteger(this.#e)||this.#e<=0)throw RangeError(`Agent Event buffer maxBytes must be a positive integer`);if(!Number.isInteger(this.#t)||this.#t<=0)throw RangeError(`Agent Event buffer maxEvents must be a positive integer`)}push(e){if(!_i(e))throw TypeError(`Only Agent Event deltas can be buffered`);let t=vi(e),n=this.#n.at(-1),r=n?.event,i=r!==void 0&&vi(r)===t,a=mi.encode(e.payload.delta).byteLength;return this.#n.length+ +!i>this.#t||this.#r+a>this.#e?(this.#n.length=0,this.#r=0,!1):(this.#r+=a,i?(this.#n[this.#n.length-1]={event:{...e,payload:{...e.payload,delta:`${r.payload.delta}${e.payload.delta}`}},retainedBytes:(n?.retainedBytes??0)+a},!0):(this.#n.push({event:e,retainedBytes:a}),!0))}drain(){return this.flushThrough(1/0)}flushThrough(e){let t=this.#n.findIndex(({event:t})=>t.sequence>=e),n=t<0?this.#n.length:t,r=this.#n.splice(0,n);for(let e of r)this.#r-=e.retainedBytes;return r.map(({event:e})=>e)}},bi=4,xi=class{#e;#t=new Set;#n;#r=!1;#i=0;#a=!1;#o;constructor(e,t){this.#n=e,this.#e=t}dispose(){this.#r=!0,this.#t.clear(),this.#s()}forgetTask(e){this.#t.delete(e),this.#c()}markRecovered(e){this.#t.delete(e),this.#c()}requestRecovery(e){if(!this.#r){for(let t of e)t.length>0&&this.#t.add(t);this.#t.size>0&&!this.#a&&this.#o===void 0&&this.#u()}}#s(){this.#o!==void 0&&(clearTimeout(this.#o),this.#o=void 0)}#c(){this.#t.size>0||this.#a||(this.#s(),this.#i=0)}#l(){if(this.#r||this.#t.size===0){this.#c();return}let e=Math.min(oi*2**this.#i,si);this.#i+=1,this.#o=setTimeout(()=>{this.#o=void 0,this.#u()},e)}#u(){if(this.#r||this.#a||this.#t.size===0)return;this.#a=!0;let e=[...this.#t],t=0,n=async()=>{for(;!this.#r;){let n=e[t];if(t+=1,n===void 0)return;if(!this.#t.has(n))continue;let r;try{r=await this.#n(n)}catch(e){V(`snapshot_recovery_failed`,e);continue}if(!(r===void 0||!this.#t.delete(n)))try{this.#e(n,r)}catch(e){this.#t.add(n),V(`snapshot_recovery_failed`,e)}}},r=Math.min(bi,e.length);Promise.all(Array.from({length:r},n)).then(()=>{if(this.#a=!1,!this.#r){if(this.#t.size===0){this.#i=0;return}this.#l()}})}},Si=class{#e;#t;#n;#r=0;#i=0;#a=`ready`;#o;constructor(e,t,n=()=>void 0){this.#n=e,this.#e=t,this.#t=n}get isReady(){return this.#a===`ready`}dispose(){this.#a=`disposed`,this.#i+=1,this.#s()}requestRecovery(){this.#a===`ready`&&this.#l()}reset(){this.#a!==`disposed`&&(this.#s(),this.#r=0,this.#i+=1,this.#a=`ready`)}#s(){this.#o!==void 0&&(clearTimeout(this.#o),this.#o=void 0)}#c(){if(this.#a===`disposed`)return;this.#a=`waiting_to_retry`;let e=Math.min(oi*2**this.#r,si);this.#r+=1,this.#o=setTimeout(()=>{this.#o=void 0,this.#l()},e)}#l(){if(this.#a===`disposed`)return;this.#a=`recovering`,this.#t();let e=this.#i,t;try{t=Promise.resolve(this.#n())}catch(t){V(`snapshot_recovery_failed`,t),e===this.#i&&this.#c();return}t.then(t=>{if(!(this.#a!==`recovering`||e!==this.#i)){if(t===void 0){this.#c();return}this.#e(t)}}).catch(t=>{V(`snapshot_recovery_failed`,t),this.#a===`recovering`&&e===this.#i&&this.#c()})}},Ci=class{#e=new yi;#t;#n=new Set;#r;#i;#a;constructor(e,t,n){this.#i=e,this.#n.add(t),this.#t=n,this.#r=new Si(async()=>this.#n.values().next().value?.(),e=>{this.#t(e,this)},()=>{this.#i.getState().setConnectionState(`reconnecting`)})}get sessionId(){return this.#i.getState().checkpoint?.sessionId}get taskId(){return this.#i.getState().taskId}addConsumer(e){this.#n.add(e)}removeConsumer(e){return this.#n.delete(e),this.#n.size}resetForSnapshot(){this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain(),this.#r.reset()}apply(e){if(this.#r.isReady){if(li(e)){if(this.#a===void 0){this.#a=requestAnimationFrame(()=>{this.#a=void 0;let e=this.#e.drain();e.length>0&&this.#i.getState().applyEvents(e)}),this.#i.getState().applyEvents([e]);return}if(!this.#e.push(e)){this.requestRecovery();return}return}this.#o(e.sequence),this.#i.getState().applyEvents([e])}}dispose(){this.#r.dispose(),this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain()}requestRecovery(){this.#r.isReady&&(this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain(),this.#r.requestRecovery())}setConnectionState(e){let t=e===`connected`&&!this.#r.isReady?`reconnecting`:e;this.#i.getState().setConnectionState(t),t===`connected`&&this.#i.getState().setError(null)}#o(e){this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#i.getState().applyEvents(this.#e.flushThrough(e))}},wi=1e3,Ti=3e4,Ei=class{#e;#t=new Map;#n;#r;#i=!1;constructor(e,t,n){this.#e=t,this.#n=n,this.#r=e}cancel(e){let t=this.#t.get(e);t?.timer!==void 0&&clearTimeout(t.timer),this.#t.delete(e)}dispose(){this.#i=!0;for(let e of this.#t.keys())this.cancel(e)}request(e){if(this.#i||this.#t.has(e))return;let t={attempt:0,timer:void 0};this.#t.set(e,t),this.#a(e,t)}async#a(e,t){try{let n=await this.#e.unsubscribeTask(this.#r,e);if(this.#i||this.#t.get(e)!==t)return;if(n.status!==`busy`){this.#t.delete(e);return}let r=Math.min(wi*2**t.attempt,Ti);t.attempt+=1,t.timer=setTimeout(()=>{t.timer=void 0,this.#a(e,t)},r)}catch(n){this.#t.get(e)===t&&(this.#t.delete(e),this.#n(n,e))}}},Di=class{#e;#t;#n;#r;#i;#a;#o;#s=new Map;#c;#l=`closed`;#u=!1;#d;#f=Date.now();#p=0;#m;#h=!1;constructor(e,t,n,r){this.#i=e,this.#t=t,this.#e=n,this.#r=r.idleTimeoutMs,this.#n=new ci({maxBytes:r.maxEventHistoryBytes,maxEvents:r.maxEventHistoryEvents}),this.#a=new xi(async e=>this.#t.readTask(this.#i,e),(e,t)=>{this.#e.onSnapshot(t)}),this.#o=new Ei(e,t,(t,n)=>{V(`task_unsubscribe_failed`,t,{projectId:e,taskId:n})})}attachTaskStore(e,t,n){this.#_(e),this.#o.cancel(e.snapshot.id);let r=t.getState();if(r.projectId!==this.#i||r.taskId!==e.snapshot.id)throw Error(`Task store identity does not match the Project Runtime snapshot`);this.#D(),r.reconcile(e);let i=this.#s.get(t);i===void 0?(i=new Ci(t,n,(e,n)=>{this.#S(e,t,n)}),this.#s.set(t,i)):i.addConsumer(n),i.resetForSnapshot(),i.setConnectionState(this.#l===`closed`?`connecting`:this.#l),this.observeSnapshot(e),this.#w(e.checkpoint,i);let a=!0;return()=>{if(!a)return;a=!1;let e=this.#s.get(t);e!==i||e.removeConsumer(n)>0||(e.dispose(),this.#s.delete(t),this.#o.request(t.getState().taskId),this.#D(),this.#C())}}dispose(){if(!this.#u){this.#u=!0,this.#y(),this.#a.dispose(),this.#o.dispose(),this.#E();for(let e of this.#s.values())e.dispose();this.#s.clear(),this.#v()}}forgetTask(e){this.#o.cancel(e),this.#a.forgetTask(e),this.#C()}markAccess(){this.#D(),this.#C()}observeSnapshot(e){this.#_(e),this.#a.markRecovered(e.snapshot.id),this.#h=!1,this.#D(),this.#b(e.checkpoint);for(let t of this.#s.values())t.sessionId===e.checkpoint.sessionId?t.setConnectionState(this.#l):t.requestRecovery();this.#C()}reconcileTaskSnapshot(e){this.#_(e);let t=[];for(let[n,r]of this.#s)n.getState().taskId===e.snapshot.id&&(n.getState().reconcile(e),r.resetForSnapshot(),t.push(r));this.observeSnapshot(e);for(let n of t)n.setConnectionState(this.#l),this.#w(e.checkpoint,n)}#g(e){this.#n.append(e)}#_(e){if(e.snapshot.projectId!==this.#i)throw Error(`Snapshot Project does not match the Project Runtime`)}#v(){this.#n.reset()}#y(){this.#d!==void 0&&(clearTimeout(this.#d),this.#d=void 0)}#b(e){if(this.#u||this.#c!==void 0&&this.#m===e.sessionId)return;this.#E(),this.#m=e.sessionId,this.#p=e.sequence,this.#n.reset(e.sequence);let t=this.#t.subscribeEvents({afterSequence:e.sequence,onConnectionState:e=>{this.#l=e,e===`reconnecting`&&(this.#h=!0);let t=e===`closed`&&this.#h?`reconnecting`:e;for(let e of this.#s.values())e.setConnectionState(t);e===`reconnecting`&&this.#T()},onError:e=>{V(`event_connection_failed`,e,{projectId:this.#i})},onEvent:e=>{this.#p=e.sequence,this.#g(e),this.#e.onActivityEvent(this.#i,e);for(let[t,n]of this.#s)t.getState().taskId===e.taskId&&n.apply(e);e.type===`turn.completed`&&!this.#x(e.taskId)&&this.#o.request(e.taskId),this.#C()},onResyncRequired:()=>{this.#h=!0,this.#E(),this.#l=`reconnecting`;for(let e of this.#s.values())e.setConnectionState(`reconnecting`);this.#T()},projectId:this.#i,sessionId:e.sessionId});this.#c=t}#x(e){for(let t of this.#s.keys())if(t.getState().taskId===e)return!0;return!1}#S(e,t,n){if(this.#s.get(t)!==n)return;this.#_(e);let r=t.getState();if(r.projectId!==this.#i||r.taskId!==e.snapshot.id)throw Error(`Task store identity does not match the recovered snapshot`);r.reconcile(e),n.resetForSnapshot(),this.#e.onSnapshot(e),this.#w(e.checkpoint,n)}#C(){if(this.#y(),this.#u||this.#c===void 0||this.#s.size>0||qr(this.#e.getTaskActivity(),this.#i))return;let e=this.#r-(Date.now()-this.#f);if(e<=0){this.dispose(),this.#e.onIdle(this);return}this.#d=setTimeout(()=>{this.#d=void 0,this.#C()},e)}#w(e,t){if(e.sessionId!==this.#m){t.requestRecovery();return}if(e.sequence<this.#n.floorSequence&&e.sequence<this.#p){t.requestRecovery();return}this.#n.forEachAfter(e.sequence,e=>{e.taskId===t.taskId&&t.apply(e)})}#T(){let e=new Set;for(let t of this.#s.values())e.add(t.taskId),t.requestRecovery();let t=Jr(this.#e.getTaskActivity(),this.#i).filter(t=>!e.has(t));this.#a.requestRecovery(t)}#E(){let e=this.#c;this.#c=void 0;try{e?.()}catch(e){V(`event_connection_cleanup_failed`,e,{projectId:this.#i})}this.#l=`closed`}#D(){this.#f=Date.now(),this.#y()}},Oi=class{#e=new Set;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d=new Map;#f;#p=new Map;#m=new Map;#h=new Map;#g=new Set;#_;client;constructor(e,t={}){if(this.client=e,this.#t=t.idleTimeoutMs??12e4,this.#n=t.maxEventHistoryBytes??4194304,this.#r=t.maxEventHistoryEvents??2048,this.#i=t.onMcpServerStatusChanged??(()=>void 0),this.#a=t.onProjectGitActivity??(()=>void 0),this.#o=t.onProjectGitMetadataChanged??(()=>void 0),this.#s=t.onQueueChanged??(()=>void 0),this.#c=t.onSkillsChanged??(()=>void 0),this.#l=t.onTaskRemoved??(()=>void 0),this.#u=t.onTaskMetadataChanged??(()=>void 0),this.#f=t.taskNotifier??Ir(),!Number.isSafeInteger(this.#t)||this.#t<0)throw RangeError(`Project Runtime idleTimeoutMs must be non-negative`);if(!Number.isSafeInteger(this.#n)||this.#n<0)throw RangeError(`Project Runtime maxEventHistoryBytes must be non-negative`);if(!Number.isSafeInteger(this.#r)||this.#r<0)throw RangeError(`Project Runtime maxEventHistoryEvents must be non-negative`)}attachTaskStore(e,t,n){return this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).attachTaskStore(e,t,n)}dispose(){for(let e of this.#d.values())e.dispose();this.#d.clear(),this.#e.clear(),this.#m.clear(),this.#h.clear(),this.#g.clear()}forgetTask(e,t){this.#y(Yr(this.#p,e,t)),this.#m.delete(ui(e,t)),this.#h.delete(ui(e,t)),this.#d.get(e)?.forgetTask(t)}forgetProject(e){this.#d.get(e)?.dispose(),this.#d.delete(e);let t=this.#p;for(let n of this.#p.values())n.projectId===e&&(t=Yr(t,e,n.taskId));this.#y(t);let n=`${e}\u0000`;for(let e of this.#m.keys())e.startsWith(n)&&this.#m.delete(e);for(let e of this.#h.keys())e.startsWith(n)&&this.#h.delete(e);for(let e of this.#g)e.startsWith(n)&&this.#g.delete(e);this.#_?.projectId===e&&(this.#_=void 0)}getTaskActivity(){return this.#p}markTaskRunning(e,t){this.#y(Ur(this.#p,e,t)),this.#a(e,t,`turn_started`),this.#d.get(e)?.markAccess()}observeSnapshot(e){this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).observeSnapshot(e)}requestNotificationPermission(){return this.#f.requestPermission().catch(e=>{V(`notification_permission_failed`,e)})}reconcileTaskSnapshot(e){this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).reconcileTaskSnapshot(e)}async refreshTaskSnapshot(e,t){let n=await this.client.readTask(e,t);return this.reconcileTaskSnapshot(n),n}rememberTaskTitles(e){for(let t of e)this.#S(t)}viewTask(e,t){this.#_=t===void 0?void 0:{projectId:e,taskId:t},t!==void 0&&this.#y(Kr(this.#p,e,t)),this.#d.get(e)?.markAccess()}subscribeTaskActivity(e){return this.#e.add(e),()=>{this.#e.delete(e)}}#v(e){let t=this.#d.get(e);return t===void 0?(t=new Di(e,this.client,{getTaskActivity:()=>this.#p,onActivityEvent:(e,t)=>{if(t.type===`project.git_metadata_changed`){this.#o(e,t.payload.rootPath);return}if(t.type===`skills.changed`?this.#c(e):t.type===`queue.changed`?this.#s(e,t.taskId):t.type===`task.metadata_changed`?this.#u(e,t.taskId,`native_notification`):t.type===`task.removed`?(this.#l(e,t.taskId),this.forgetTask(e,t.taskId)):t.type===`mcp_server.status_updated`?this.#i(e,t.taskId):t.type===`turn.started`?this.#a(e,t.taskId,`turn_started`):t.type===`item.completed`&&t.payload.item.type===`file_change`&&t.payload.item.status===`completed`&&this.#a(e,t.taskId,`file_changed`),t.type===`message.delta`){let n=di(e,t.taskId,t.turnId);if(!this.#g.has(n)){if(this.#g.add(n),this.#g.size>2048){let e=this.#g.values().next().value;e!==void 0&&this.#g.delete(e)}this.#u(e,t.taskId,`assistant_reply_started`)}}if(t.type===`turn.completed`){let n=di(e,t.taskId,t.turnId);this.#g.delete(n),this.#a(e,t.taskId,`turn_completed`),this.#u(e,t.taskId,`turn_completed`)}try{this.#f.notify(e,t,this.#h.get(ui(e,t.taskId))??`Task`)}catch(n){V(`task_notification_failed`,n,{projectId:e,taskId:t.taskId})}t.type!==`task.removed`&&this.#m.set(ui(e,t.taskId),{sequence:t.sequence,sessionId:t.sessionId}),this.#y(Zr(this.#p,e,t,this.#b(e,t.taskId)))},onIdle:t=>{this.#d.get(e)===t&&this.#d.delete(e)},onSnapshot:e=>{this.observeSnapshot(e)}},{idleTimeoutMs:this.#t,maxEventHistoryBytes:this.#n,maxEventHistoryEvents:this.#r}),this.#d.set(e,t),t):t}#y(e){if(e!==this.#p){this.#p=e;for(let e of this.#e)e()}}#b(e,t){return this.#_?.projectId===e&&this.#_.taskId===t}#x(e){let{checkpoint:t,snapshot:n}=e,r=ui(n.projectId,n.id),i=this.#m.get(r);if(i?.sessionId===t.sessionId&&i.sequence>t.sequence)return;this.#m.set(r,t);let a=Gr(this.#p,n.projectId,n.id).isRunning,o=n.status===`running`;o!==a&&this.#a(n.projectId,n.id,o?`turn_started`:`turn_completed`),this.#y(Xr(this.#p,n,this.#b(n.projectId,n.id)))}#S(e){let t=ui(e.projectId,e.id);if(this.#h.delete(t),this.#h.set(t,e.title),this.#h.size>2048){let e=this.#h.keys().next().value;e!==void 0&&this.#h.delete(e)}}};function ki(e,t={}){return new Oi(e,t)}var Ai=`actionNotification`;function ji(e){let t=e.meta?.[Ai];if(t===!1)return!1;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=`error`in t&&typeof t.error==`boolean`?t.error:void 0,r=`successMessage`in t&&(typeof t.successMessage==`string`||t.successMessage===!1)?t.successMessage:void 0;return{...n===void 0?{}:{error:n},...r===void 0?{}:{successMessage:r}}}function Mi(e){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:L.t(`app.actionFailed`,{ns:`common`})}function U(e){we.error(Mi(e))}function Ni(e=L.t(`app.actionSucceeded`,{ns:`common`})){we.success(e)}function Pi(){return new l({onError(e,t,n,r){let i=ji(r);i!==!1&&i?.error!==!1&&U(e)},onSuccess(e,t,n,r){let i=ji(r);i===!1||i?.successMessage===!1||Ni(i?.successMessage)}})}function Fi(){return typeof document>`u`||document.visibilityState===`visible`}var Ii=class{#e;#t;#n;#r;#i=new Map;#a;#o;#s;#c;#l=!1;constructor(e,t,n={}){this.#a=e,this.#e=t,this.#t=n.fileChangeDebounceMs??300,this.#n=n.isPageVisible??Fi,this.#r=n.pollIntervalMs??3e5,this.#o=n.random??Math.random,this.#s=n.retryBaseMs??1e3,this.#c=n.retryMaxMs??3e4}dispose(){if(!this.#l){this.#l=!0;for(let e of this.#i.values())this.#p(e);this.#i.clear()}}forgetProject(e){for(let[t,n]of this.#i)n.projectId===e&&(this.#p(n),this.#i.delete(t))}handleActivity(e,t,n,r){if(this.#l)return;let i=this.#h(e,t);if(r===`turn_started`){let e=i.activeTaskIds.size===0,t=i.consecutiveFailures>0||i.retryTimer!==void 0;if(i.activeTaskIds.add(n),i.isGitProject===!1)return;e||t?(this.#f(i),this.#v(i)):this.#m(i);return}if(r===`file_changed`){if(i.activeTaskIds.add(n),this.#f(i),i.isGitProject===!1)return;this.#y(i);return}if(i.activeTaskIds.delete(n),this.#u(i),this.#f(i),i.activeTaskIds.size===0&&this.#d(i),i.isGitProject===!1){i.activeTaskIds.size===0&&this.#i.delete(this.#g(i.projectId,i.rootPath));return}this.#v(i)}handleGitMetadataChanged(e,t){if(this.#l)return;let n=this.#h(e,t);this.#f(n),this.#y(n)}async refreshProject(e,t){if(this.#l)return;let n=this.#h(e,t);this.#f(n),await this.#_(n,`manual`)}#u(e){e.fileChangeTimer!==void 0&&(clearTimeout(e.fileChangeTimer),e.fileChangeTimer=void 0)}#d(e){e.pollingTimer!==void 0&&(clearInterval(e.pollingTimer),e.pollingTimer=void 0)}#f(e){e.retryTimer!==void 0&&(clearTimeout(e.retryTimer),e.retryTimer=void 0)}#p(e){e.closed=!0,e.refreshPending=void 0,this.#u(e),this.#d(e),this.#f(e)}#m(e){e.closed||e.isGitProject!==!0||e.consecutiveFailures>0||e.activeTaskIds.size===0||e.pollingTimer!==void 0||e.retryTimer!==void 0||(e.pollingTimer=setInterval(()=>{this.#n()&&this.#v(e)},this.#r))}#h(e,t){let n=this.#g(e,t),r=this.#i.get(n);if(r!==void 0)return r;let i={activeTaskIds:new Set,closed:!1,consecutiveFailures:0,fileChangeTimer:void 0,inFlight:void 0,isGitProject:void 0,pollingTimer:void 0,projectId:e,rootPath:t,refreshPending:void 0,retryTimer:void 0};return this.#i.set(n,i),i}#g(e,t){return`${e}\u0000${t}`}#_(e,t){if(e.closed||this.#l)return Promise.resolve();if(e.inFlight!==void 0)return e.refreshPending=t===`manual`||e.refreshPending===`manual`?`manual`:`background`,e.inFlight;let n=er(e.projectId,e.rootPath,this.#e),r=this.#e.getProjectGitStatus(e.projectId,{rootPath:e.rootPath}).then(t=>{this.#a.setQueryData(n.queryKey,t),e.consecutiveFailures=0,e.isGitProject=t.repositoryMode!==`none`,e.isGitProject||(this.#u(e),this.#d(e),this.#f(e))}).catch(t=>{throw e.consecutiveFailures+=1,this.#d(e),t}).finally(()=>{if(e.closed||this.#l)return;e.inFlight=void 0;let t=e.refreshPending;if(e.refreshPending=void 0,t!==void 0&&(t===`manual`||e.isGitProject!==!1)){this.#v(e,t);return}if(e.activeTaskIds.size>0){e.consecutiveFailures>0?e.isGitProject!==!1&&this.#b(e):this.#m(e);return}e.activeTaskIds.size===0&&e.fileChangeTimer===void 0&&this.#i.delete(this.#g(e.projectId,e.rootPath))});return e.inFlight=r,r}#v(e,t=`background`){this.#_(e,t).catch(t=>{V(`git_status_poll_failed`,t,{projectId:e.projectId,rootPath:e.rootPath})})}#y(e){this.#u(e),e.fileChangeTimer=setTimeout(()=>{e.fileChangeTimer=void 0,this.#v(e)},this.#t)}#b(e){if(e.closed||e.isGitProject===!1||e.activeTaskIds.size===0||e.retryTimer!==void 0)return;let t=Math.min(this.#c,this.#s*2**Math.min(e.consecutiveFailures-1,30)),n=Math.min(this.#c,Math.round(t*(.8+this.#o()*.4)));e.retryTimer=setTimeout(()=>{e.retryTimer=void 0,this.#n()?this.#v(e):this.#b(e)},n)}};function Li(e,t){if(e!==void 0)return e.roots.find(n=>t?.projectId===e.id&&n.id===t.rootId)??e.roots[0]}function Ri(e,t){if(e===void 0)return;let n=t.get(e.id);return Li(e,n===void 0?void 0:{projectId:e.id,rootId:n})}function zi(e,t,n){return n?e.includes(t)?e:[...e,t]:e.filter(e=>e!==t)}function Bi(e){let t=t=>Ri(e.getProject(t),e.getSelectedRootIds());return{onProjectGitActivity(n,r,i){if(n===`temporary`)return;let a=t(n);a!==void 0&&e.coordinator.handleActivity(n,a.path,r,i)},onProjectGitMetadataChanged(n,r){t(n)?.path===r&&e.coordinator.handleGitMetadataChanged(n,r)}}}var W=i();function Vi({actions:e,activity:t,children:n,client:r,data:i,onRemoveTaskQuery:a,onUpdateTaskQuery:o,projects:s,rootSelection:c}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(br,{client:r,onRemove:a,onUpdate:o,projectId:O}),s.map(e=>(0,W.jsx)(br,{client:r,onRemove:a,onUpdate:o,projectId:e.id},e.id)),(0,W.jsx)(gr.Provider,{value:i,children:(0,W.jsx)(_r.Provider,{value:e,children:(0,W.jsx)(yr.Provider,{value:c,children:(0,W.jsx)(vr.Provider,{value:t,children:n})})})})]})}var Hi=[];function Ui({children:e,client:t=B,taskNotifier:n}){let r=p(),[i,a]=(0,z.useState)(()=>new Map),o=(0,z.useRef)(i);o.current=i;let s=(0,z.useCallback)((e,t)=>{a(n=>{if(n.get(e)===t)return n;let r=new Map(n);return r.set(e,t),r})},[]),c=(0,z.useMemo)(()=>new Ii(r,t),[t,r]),l=(0,z.useMemo)(()=>{let e=new Map;return ki(t,{...n===void 0?{}:{taskNotifier:n},...Bi({coordinator:c,getProject:e=>r.getQueryData([`projects`])?.data.find(t=>t.id===e),getSelectedRootIds:()=>o.current}),onMcpServerStatusChanged(e,t){r.invalidateQueries({exact:!0,queryKey:[`projects`,e,`tasks`,t,`mcp-servers`]})},onQueueChanged(e,t){hn(r,e,t)},onSkillsChanged(e){r.invalidateQueries({exact:!0,queryKey:[`projects`,e,`skills`]})},onTaskRemoved(e,t){Mn(r,e,t),r.invalidateQueries({queryKey:Lt}),r.removeQueries({exact:!0,queryKey:[`projects`,e,`tasks`,t]})},onTaskMetadataChanged(n,i,a){let o=async()=>{(a===`turn_completed`||a===`native_notification`)&&await Promise.all([r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`]}),r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`,It]}),r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`,Ft]}),r.invalidateQueries({queryKey:Lt})]),r.removeQueries({exact:!0,queryKey:[`projects`,n,`tasks`,i]});let e=await t.readTask(n,i);l.reconcileTaskSnapshot(e),a===`turn_completed`&&e.snapshot.status===`idle`&&await _n(r,e.snapshot),Tn(r,e.snapshot,{assistantReplyStarted:a===`assistant_reply_started`})},s=`${n}\u0000${i}`,c=(e.get(s)??Promise.resolve()).catch(()=>void 0).then(o);e.set(s,c);let u=()=>{e.get(s)===c&&e.delete(s)};c.then(u,u)}})},[t,c,r,n]),[u,d]=(0,z.useState)(!1),[f,m]=(0,z.useState)(()=>new Map),[h,_]=(0,z.useState)(),[y,b]=(0,z.useState)(()=>new Set),x=(0,z.useSyncExternalStore)((0,z.useCallback)(e=>l.subscribeTaskActivity(e),[l]),(0,z.useCallback)(()=>l.getTaskActivity(),[l]),(0,z.useCallback)(()=>l.getTaskActivity(),[l])),S=g(Vn(t)),C=g(Qn(t)),{isPending:w,mutateAsync:T}=v($n(t)),{isPending:E,mutateAsync:D}=v(zn(t)),{isPending:k,mutateAsync:A}=v(Bn(t)),j=(0,z.useRef)(kr()),ee=(0,z.useRef)(kr()),te=(0,z.useRef)(kr()),M=C.data?.data??Hi,N=(0,z.useMemo)(()=>{let e=new Set(y);return h!==void 0&&e.add(h),e},[h,y]),P=(0,z.useMemo)(()=>M.filter(e=>N.has(e.id)),[M,N]),ne=(0,z.useMemo)(()=>[O,...P.map(e=>e.id)],[P]),re=(0,z.useRef)(f);re.current=f;let ie=(0,z.useCallback)((e,t)=>{l.rememberTaskTitles(t.tasks),m(n=>{let r=n.get(e);if(r?.tasks===t.tasks&&r.state.error===t.state.error&&r.state.hasNextPage===t.state.hasNextPage&&r.state.isFetchingNextPage===t.state.isFetchingNextPage&&r.state.isPending===t.state.isPending)return n;let i=new Map(n);return i.set(e,t),i})},[l]),ae=(0,z.useCallback)(e=>{m(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),{projectTaskStates:oe,tasks:F}=(0,z.useMemo)(()=>xr(ne,f),[f,ne]),se=(0,z.useCallback)(async e=>{await hr(new Map([...re.current].map(([e,t])=>[e,t.controller])),e)},[]),ce=C.isPending,le=(0,z.useCallback)((e,t)=>{l.markTaskRunning(e,t)},[l]),ue=(0,z.useCallback)((e,t)=>{l.forgetTask(e,t)},[l]),de=(0,z.useCallback)((e,t)=>{_(t=>t===e?t:e),l.viewTask(e,t)},[l]),fe=(0,z.useCallback)(e=>{b(t=>t.size===e.size&&[...t].every(t=>e.has(t))?t:new Set(e))},[]),pe=(0,z.useCallback)(()=>{l.requestNotificationPermission()},[l]),me=(0,z.useCallback)(e=>j.current.run(async()=>{d(!0);try{let n=await t.addProject(e);return r.setQueryData([`projects`],e=>{if(e===void 0)return{data:[n.project],nextCursor:null};let t=e.data.findIndex(e=>e.id===n.project.id);return t<0?{...e,data:[...e.data,n.project]}:{...e,data:e.data.map((e,r)=>r===t?n.project:e)}}),Ni(),n.project}catch(e){U(e);return}finally{d(!1)}}),[t,r]),he=(0,z.useCallback)(async e=>await te.current.run(async()=>{let t=r.getQueryData([`projects`]),n=Nn(t,e);if(n===void 0)return U(Error(L.t(`errors.reorderProjectChanged`,{ns:`conversation`}))),!1;r.setQueryData([`projects`],n);try{let t=await T(e);return r.setQueryData([`projects`],t),!0}catch{return r.setQueryData([`projects`],t),!1}})??!1,[T,r]),ge=(0,z.useCallback)(async(e,t)=>await ee.current.run(async()=>{try{let n=await D({name:t,projectId:e});return r.setQueryData([`projects`],t=>t===void 0?void 0:{...t,data:t.data.map(t=>t.id===e?n.project:t)}),!0}catch{return!1}})??!1,[D,r]),_e=(0,z.useCallback)(e=>ee.current.run(async()=>{try{await A(e),await r.cancelQueries({queryKey:[`projects`,e]}),r.removeQueries({queryKey:[`projects`,e]}),c.forgetProject(e),l.forgetProject(e);let t=r.getQueryData([`projects`]),n=t?.data.filter(t=>t.id!==e)??Hi;return a(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n}),r.setQueryData([`projects`],t===void 0?void 0:{...t,data:n}),n}catch{return}}),[c,A,l,r]),ve=(0,z.useCallback)(async(e,t)=>{try{await c.refreshProject(e,t),Ni()}catch(e){U(e)}},[c]),I=(0,z.useCallback)(async()=>{await r.invalidateQueries()},[r]);(0,z.useEffect)(()=>()=>{l.dispose(),c.dispose()},[c,l]);let ye=(0,z.useMemo)(()=>({capabilities:S.data,client:t,error:S.error??C.error,isPending:ce,projectTaskStates:oe,projects:M,tasks:F}),[S.data,S.error,t,ce,oe,M,C.error,F]);return(0,W.jsx)(Vi,{actions:(0,z.useMemo)(()=>({addProject:me,fetchNextProjectTaskPage:se,forgetTask:ue,markTaskRunning:le,projectRuntime:l,refreshProjectGitStatus:ve,removeProject:_e,renameProject:ge,reorderProjects:he,requestNotificationPermission:pe,retry:I,setExpandedProjectTaskIds:fe,viewTask:de}),[me,se,ue,le,l,ve,_e,ge,he,pe,I,fe,de]),activity:(0,z.useMemo)(()=>({isProjectActionPending:E||k,isProjectOrderPending:w,isProjectAddPending:u,taskActivity:x}),[u,w,k,E,x]),client:t,data:ye,onRemoveTaskQuery:ae,onUpdateTaskQuery:ie,projects:P,rootSelection:(0,z.useMemo)(()=>({selectedRootIds:i,setSelectedProjectRoot:s}),[i,s]),children:e})}function Wi(){return t(()=>import(`./global-settings-dialog-CzBgDgzH.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))}var Gi={error:null,loading:!0,pairing:!1},Ki=class{#e;#t=new Set;#n;#r=0;#i=Gi;#a;constructor(e,t){this.#e=e,this.#n=t}getSnapshot=()=>this.#i;subscribe=e=>(this.#t.add(e),()=>this.#t.delete(e));start(){this.#a===void 0&&(this.#a=this.#e.subscribeUnauthorized(()=>{this.#r+=1,this.#o()}),this.load())}stop(){this.#r+=1,this.#a?.(),this.#a=void 0}async load(){let e=this.#r+=1;this.#s({...this.#i,error:null,loading:!0});try{let t=await this.#e.getAccessStatus();e===this.#r&&this.#s({error:null,loading:!1,pairing:!1,status:t})}catch{e===this.#r&&this.#s({...this.#i,error:`load`,loading:!1})}}async pair(e){this.#s({...this.#i,error:null,pairing:!0});try{let t=await this.#e.pairAccess(e);this.#s({error:null,loading:!1,pairing:!1,status:t}),Ni()}catch(e){this.#s({...this.#i,error:null,pairing:!1}),U(e)}}async logout(){try{let e=await this.#e.logoutAccess();this.#n.clear(),this.#s({error:null,loading:!1,pairing:!1,status:e}),Ni()}catch(e){throw U(e),e}}#o(){this.#n.clear(),this.#s({error:null,loading:!1,pairing:!1,status:{authenticated:!1,mode:`lan`,version:1}})}#s(e){this.#i=e;for(let e of this.#t)e()}},qi=(0,z.createContext)(void 0);function Ji({children:e,client:t,queryClient:n}){let[r]=(0,z.useState)(()=>new Ki(t,n)),i=(0,z.useSyncExternalStore)(r.subscribe,r.getSnapshot,r.getSnapshot);(0,z.useEffect)(()=>(r.start(),()=>{r.stop()}),[r]);let a=(0,z.useMemo)(()=>({...i,logout:()=>r.logout(),pair:e=>r.pair(e),retry:()=>{r.load()}}),[r,i]);return(0,W.jsx)(qi.Provider,{value:a,children:e})}function Yi(){let e=(0,z.useContext)(qi);if(e===void 0)throw Error(`useAccess must be used inside AccessProvider`);return e}var Xi=Ie({extend:{theme:{text:[`caption`,`meta`,`label`,`body-small`,`body`,`heading`,`title`,`display`]}}});function G(...e){return Xi(Ne(e))}var Zi=be(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control text-body-small outline-none transition-colors focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{defaultVariants:{contentAlign:`center`,size:`default`,variant:`default`},variants:{contentAlign:{center:`justify-center`,start:`justify-start text-left`},size:{compact:`h-8 px-3 text-label`,default:`h-8 px-3`,embedded:`h-auto p-0`,sm:`h-7 px-2 text-label max-workbench:h-11`,toolbar:`h-6 px-2 text-label max-workbench:h-11 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 px-4 text-body`,icon:`inline-grid size-9 place-items-center px-0 max-workbench:size-11`,"icon-compact":`inline-grid size-8 place-items-center px-0 max-workbench:size-11`,"icon-sm":`inline-grid size-7 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3.5`,"icon-toolbar":`inline-grid size-6 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3`,"icon-lg":`inline-grid size-10 place-items-center px-0 max-workbench:size-11`},variant:{default:`bg-brand font-medium text-white hover:bg-brand-strong`,destructive:`bg-danger font-medium text-white hover:opacity-90`,embedded:`rounded-none bg-transparent text-inherit hover:bg-transparent hover:text-inherit focus-visible:shadow-none`,ghost:`bg-transparent text-muted-foreground hover:bg-control-hover hover:text-foreground`,inverse:`rounded-pill bg-foreground text-raised hover:bg-brand-strong disabled:bg-control-active disabled:text-muted-foreground`,link:`h-auto px-0 text-brand underline-offset-4 hover:text-brand-strong hover:underline [&_svg:not([class*='size-'])]:size-3.5`,outline:`border border-separator-strong bg-panel text-foreground hover:bg-control-hover hover:text-foreground`,secondary:`bg-raised text-foreground shadow-sm hover:bg-control-hover`}}});function K({asChild:e=!1,className:t,contentAlign:n=`center`,size:r=`default`,variant:i=`default`,...a}){return(0,W.jsx)(e?vt:`button`,{className:G(Zi({className:t,contentAlign:n,size:r,variant:i})),"data-content-align":n,"data-size":r,"data-slot":`button`,"data-variant":i,...a})}function Qi({onRetry:e}){let{t}=R(`common`);return(0,W.jsx)(`section`,{className:`grid min-h-0 flex-1 place-items-center bg-content px-6 py-10 text-center`,"aria-labelledby":`runtime-unavailable-title`,children:(0,W.jsxs)(`div`,{className:`max-w-md`,children:[(0,W.jsx)(Ge,{className:`mx-auto size-8 text-danger`,"aria-hidden":`true`,strokeWidth:1.6}),(0,W.jsx)(`h1`,{id:`runtime-unavailable-title`,className:`mt-4 text-xl font-semibold`,children:t(`errors.runtimeUnavailableTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-muted-foreground`,children:(0,W.jsx)(Le,{components:{command:(0,W.jsx)(`code`,{className:`font-mono text-foreground`})},i18nKey:`errors.runtimeUnavailableDescription`,ns:`common`})}),(0,W.jsxs)(K,{className:`mx-auto mt-5`,onClick:e,size:`lg`,type:`button`,children:[(0,W.jsx)(ye,{className:`size-4`,"aria-hidden":`true`}),t(`actions.retry`)]})]})})}function $i(e){return e.filter(e=>e.pinned)}function ea(e,t){return t||e.length<=5?{hasMore:!1,tasks:e}:{hasMore:!0,tasks:e.slice(0,5)}}function ta(e){let t=Math.max(1,Math.floor((Date.now()-Date.parse(e))/6e4));if(t<60)return`${String(t)}m`;let n=Math.floor(t/60);return n<24?`${String(n)}h`:`${String(Math.floor(n/24))}d`}var na=1048576,ra=1e4,ia=16*1024,aa=256,oa=new TextDecoder,sa=new TextEncoder,ca=class{#e;#t;#n=()=>this.materialize();#r;#i;#a=0;#o=[];#s=!1;#c=0;#l=!1;#u=``;#d=-1;#f=1;#p={bytes:0,lines:0};#m=0;#h=[];#g=0;#_=0;#v=0;#y=[];#b=-1;constructor(e,t,n={}){let r=n.maxBytes??na,i=Math.max(1,n.maxLines??ra),a=Math.ceil(i/2),o=i-a;this.#e=Math.ceil(r/2),this.#r=r-this.#e,this.#t=a,this.#i=Math.max(0,o-1),this.replace(e,t)}append(e){this.#l=!0,this.#x(sa.encode(e)),this.#v+=1}getView(){return{chunks:this.#E(),hasOutput:this.#l,materialize:this.#n,outputBytes:this.#a+this.#m,outputLines:this.#c+this.#_,outputOmitted:this.#p,startIndex:0,version:this.#v}}materialize(){if(this.#d===this.#v)return this.#u;let e=this.#E().map(e=>e.text).join(``);return this.#u=e,this.#d=this.#v,e}replace(e,t){this.#a=0,this.#o=[],this.#s=!1,this.#c=0,this.#l=e!==void 0,this.#p=t,this.#m=0,this.#h=[],this.#g=0,this.#_=0,e!==void 0&&e.length>0&&this.#x(sa.encode(e)),this.#v+=1}#x(e){let t=0;if(!this.#s){let n=la(e,this.#e-this.#a,this.#t-this.#c);if(n>0){let t=this.#S(this.#o,e.subarray(0,n));this.#a+=t.bytes,this.#c+=t.newlines}t=n,this.#s=n<e.byteLength}if(t<e.byteLength){let n=this.#S(this.#h,e.subarray(t),this.#g);this.#m+=n.bytes,this.#_+=n.newlines,this.#T()}}#S(e,t,n=0){let r=0,i=0;for(;r<t.byteLength;){let a=r,o=0;for(;a<t.byteLength;){let e=t[a]??0,n=da(e);if(a>r&&a+n-r>ia||(a+=n,e===10&&(o+=1,o>=aa)))break}let s=t.subarray(r,a).slice();e.push(this.#C(s,o)),i+=o,this.#w(e,n),r=a}return{bytes:t.byteLength,newlines:i}}#C(e,t,n=0){let r={byteLength:e.byteLength,encodedValue:e,id:this.#f,mergeLevel:n,newlineCount:t,text:oa.decode(e)};return this.#f+=1,r}#w(e,t){for(;e.length-t>=2;){let t=e.at(-1),n=e.at(-2);if(t===void 0||n?.mergeLevel!==t.mergeLevel||n.byteLength+t.byteLength>ia||n.newlineCount+t.newlineCount>aa)return;let r=new Uint8Array(n.byteLength+t.byteLength);r.set(n.encodedValue),r.set(t.encodedValue,n.byteLength),e.splice(-2,2,this.#C(r,n.newlineCount+t.newlineCount,n.mergeLevel+1))}}#T(){for(;this.#m>this.#r||this.#_>this.#i;){let e=this.#h[this.#g];if(e===void 0)break;let t=ua(e.encodedValue,this.#m-this.#r,this.#_-this.#i);if(this.#m-=t.bytes,this.#_-=t.newlines,this.#p={bytes:this.#p.bytes+t.bytes,lines:this.#p.lines+t.newlines},t.bytes===e.byteLength)this.#g+=1;else{let n=e.encodedValue.subarray(t.bytes).slice();this.#h[this.#g]=this.#C(n,e.newlineCount-t.newlines)}}this.#g>=128&&this.#g*2>=this.#h.length&&(this.#h=this.#h.slice(this.#g),this.#g=0)}#E(){return this.#b!==this.#v&&(this.#y=[...this.#o,...this.#h.slice(this.#g)],this.#b=this.#v),this.#y}};function la(e,t,n){let r=0,i=0;for(;r<e.byteLength&&!(i>=n);){let a=e[r]??0,o=da(a);if(r+o>t||a===10&&i>=n)break;r+=o,a===10&&(i+=1)}return r}function ua(e,t,n){let r=0,i=0;for(;r<e.byteLength&&(r<t||i<n);){let t=e[r]??0;r+=da(t),t===10&&(i+=1)}return{bytes:r,newlines:i}}function da(e){return e&128?(e&224)==192?2:(e&240)==224?3:4:1}var fa=class{chunks=[];initialSummary;materializedSummary;constructor(e){this.initialSummary=e,this.materializedSummary=e}get hasChanges(){return this.chunks.length>0}append(e){this.chunks.push(e),this.materializedSummary=void 0}read(){if(this.initialSummary!==void 0)return this.materializedSummary??=[this.initialSummary,...this.chunks].join(``),this.materializedSummary}replace(e){this.chunks=[],this.initialSummary=e,this.materializedSummary=e}},pa=`__CODEXLY_PENDING_COMMAND__`,ma=`__CODEXLY_RETAINED_COMMAND_OUTPUT__`,ha=new TextEncoder().encode(ma).byteLength;function ga(e){if(e.type!==`command`||e.output===`__CODEXLY_RETAINED_COMMAND_OUTPUT__`)return e;let t={...e};return delete t.output,t}function _a(e){let t=ga(e),n=new Map,r=0,i=e.type===`command`?-1:0,a=t,o=new fa(e.type===`reasoning`?e.summary:void 0),s,c=e.type===`reasoning`?e.summary.length:0,l=e.type===`command`?new ca(e.output,e.outputOmitted):void 0,u=H(t)+(l?.getView().outputBytes??0),d=w()(()=>({revision:0}));function f(e,t){if(e===`summary`)o.append(t),c+=t.length;else{let r=n.get(e);r===void 0?n.set(e,[t]):r.push(t)}u+=ii(t),r+=1}return Object.assign(d,{appendDelta(e){if(e.type===`message.delta`)return t.type!==`message`||t.role!==`assistant`?!1:(f(`text`,e.payload.delta),!0);if(e.type===`reasoning.delta`)return t.type===`reasoning`?(e.payload.field===`summary`&&e.payload.sectionIndex!==void 0&&((s===void 0?e.payload.sectionIndex>0:e.payload.sectionIndex!==s)&&c>0&&f(`summary`,`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/global-settings-dialog-Dmjldruk.js","assets/rolldown-runtime-CNC7AqOf.js","assets/react-runtime-DaCTDC27.js","assets/initial-deps-CTprc_pY.js","assets/initial-deps-CNK9MBOP.js","assets/initial-deps-Cq4pSOi-.js","assets/initial-deps-BsEyuMB0.js","assets/initial-deps-Dr1AWuHB.js","assets/initial-deps-DqJTHr9A.js","assets/workbench-pet-canvas-gckmllUf.js","assets/download-iHkzQYEd.js","assets/prompt-input-controls-CuE9VrWA.js","assets/git-commit-horizontal-CV-KjCHw.js","assets/prompt-input-CS22f1Yj.js","assets/lazy-message-response-BpXGmE9E.js","assets/initial-deps-Bx4af_YG.js","assets/info-whxTXvIJ.js","assets/sparkles-BLY9rqMO.js","assets/upload-D_8Uk8f-.js","assets/workbench-shell-0X1Ehypo.js","assets/workbench-composer-Dfa3le3p.js","assets/file-pen-line-B05lVjWh.js","assets/initial-deps-CQxWMuPh.js","assets/scheduled-task-floating-ui~index~workbench-shell~workbench-inspector-changes~project-file-p~olri0nvu-DAfditVv.js","assets/prompt-reference-token-Cxx6C-IR.js","assets/project-source-panel-B-xuo6G6.js","assets/file-code-corner-CYF-BidF.js","assets/code-languages-DVcuYjhn.js","assets/external-link-xbPJFZkP.js","assets/file-review-dialog-CX8yGcaF.js","assets/file-navigation-view-preference-BRWa_l_a.js","assets/file-change-D7aZLgtG.js","assets/context-menu-D6mhhPGo.js","assets/button-group-DxqOhlVt.js","assets/project-file-popup-page-9jdg_OXD.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./initial-deps-Bx4af_YG.js";import{i as n,n as r,t as i}from"./react-runtime-DaCTDC27.js";import{_ as a,a as o,b as s,c,d as l,g as u,h as d,i as f,l as p,m,n as h,o as g,p as _,r as v,s as y,t as b,u as x,v as S,y as C}from"./initial-deps-CTprc_pY.js";import{c as w,l as T,s as E}from"./initial-deps-BsEyuMB0.js";import{m as D,s as O,t as k}from"./initial-deps-Dr1AWuHB.js";import{$ as A,A as j,B as ee,C as te,D as M,E as N,F as P,G as ne,H as re,I as ie,J as ae,K as oe,L as F,M as se,N as ce,O as le,P as ue,R as de,S as fe,T as pe,U as me,V as he,W as ge,X as _e,Y as ve,Z as I,_ as ye,a as be,at as L,b as xe,c as Se,d as Ce,et as we,f as Te,g as Ee,h as De,it as Oe,j as ke,k as Ae,l as je,m as Me,nt as R,o as Ne,p as Pe,q as Fe,r as Ie,rt as Le,s as Re,tt as ze,u as Be,v as Ve,w as He,x as Ue,y as We,z as Ge}from"./initial-deps-DqJTHr9A.js";import{$ as Ke,A as qe,C as Je,D as Ye,E as Xe,J as Ze,M as Qe,O as $e,Q as et,S as tt,T as nt,X as rt,_ as it,a as at,b as ot,c as st,d as ct,et as lt,f as ut,g as dt,h as ft,i as pt,j as mt,k as ht,l as gt,m as _t,mt as vt,n as yt,nt as bt,o as xt,p as St,q as Ct,r as wt,rt as Tt,s as Et,t as Dt,tt as Ot,u as kt,v as At,w as jt,x as Mt,y as Nt}from"./initial-deps-CQxWMuPh.js";var z=e(n(),1),Pt=r(),Ft=`pinned`,It=`search-source`,Lt=[`task-board`,`completed`],Rt=3e4;function zt(e,t){return[`projects`,e,`tasks`,t,`queue`]}var B=new k;function Bt(e=B){return o({queryFn:({signal:t})=>e.getAppInfo({signal:t}),queryKey:[`app-info`],staleTime:5*6e4})}function Vt(e=B,t=!1){return o({enabled:t,queryFn:({signal:t})=>e.getAppUpdateProgress({signal:t}),queryKey:[`app-update`,`progress`],refetchInterval:t?250:!1})}function Ht(e=B){return h({mutationFn:t=>e.installAppUpdate(t),mutationKey:[`app-update`,`install`],scope:{id:`app-update`}})}var Ut=`codexly.language-preference`,Wt=1,Gt=`zh-CN`;function Kt(e){return e===`zh-CN`||e===`en`}function qt(e){for(let t of e){let e=t.toLowerCase();if(e===`en`||e.startsWith(`en-`))return`en`;if(e===`zh`||e.startsWith(`zh-`))return`zh-CN`}return Gt}function Jt(e){try{let t=JSON.parse(e.getItem(Ut)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===Wt&&`language`in t&&Kt(t.language))return t.language}catch{}return null}function Yt(e,t){try{t.setItem(Ut,JSON.stringify({language:e,version:Wt}))}catch{}}function Xt(e,t){t.lang=e}function Zt(e,t){return(e===null?null:Jt(e))??qt(t)}var Qt={access:{checking:`Checking access`,codeLabel:`Access password`,loadError:`Unable to check access`,pair:`Pair`,pairing:`Pairing`,pairingDescription:`Enter the access password configured or shown when Codexly started.`,pairingError:`Unable to pair. Check the access password and try again`,pairingTitle:`Connect to a trusted LAN session`},actions:{backToWorkbench:`Back to workbench`,retry:`Retry`},app:{actionFailed:`Action failed`,actionSucceeded:`Action completed`,loadingProjects:`Loading projects`,noProjects:`No projects added`,notificationRegion:`Notifications`},errors:{notFoundDescription:`This address does not match a registered application route.`,notFoundTitle:`Page not found`,routeErrorLabel:`Route error`,routeErrorTitle:`Failed to load page`,runtimeUnavailableDescription:`First run <command>codex login</command> in the official Codex CLI, then retry after signing in.`,runtimeUnavailableTitle:`Codex Runtime unavailable`},language:{english:`English`,simplifiedChinese:`Simplified Chinese`}},$t={asyncQuestions:{pending:`Pending questions`,pendingCount:`Pending · {{count}} groups`,previous:`Previous questions`,next:`Next questions`,collapse:`Collapse questions`,expand:`Expand questions`,close:`Close questions`,other:`Other answer`,answer:`Answer: {{question}}`,send:`Send answers`,sent:`Sent`,failed:`Answers were not sent. Please retry.`},agentComponents:{addFile:`Add file`,addImage:`Add image`,addImageOrFile:`Add image or file`,currentDevice:`Current device`,deploymentHost:`Deployment host`,approval:`Approval`,approvalAccepted:`Request allowed`,approvalRejected:`Request denied`,approvalRequest:`{{title}} request`,codeComments:`{{count}} code comments`,contextPercent:`{{percentage}}% of context used`,contextSummary:`{{percentage}}% of context used`,contextUnknown:`Context usage unavailable`,contextWaiting:`Waiting for context usage from the model`,copied:`Copied`,copyCode:`Copy code`,copyOutput:`Copy command output`,copiedCode:`Code copied`,copiedOutput:`Command output copied`,fileTooLarge:`{{name}} exceeds the size limit`,folderCollapse:`Collapse folder {{name}}`,folderExpand:`Expand folder {{name}}`,invalidFileType:`{{name}} has an unsupported file type`,nextBranch:`Next response branch`,previousBranch:`Previous response branch`,removeAttachment:`Remove {{name}}`,scrollToBottom:`Scroll to bottom`,status:{completed:`Completed`,error:`Failed`,inProgress:`In progress`,pending:`Pending`,denied:`Denied`,responded:`Responded`,running:`Running`,waitingApproval:`Awaiting approval`},streamingOutput:`Receiving command output`,tooManyImages:`You can add up to {{count}} images`,totalAttachmentSizeExceeded:`Attachments exceed the total size limit`,totalImageSizeExceeded:`Images exceed the total size limit`,toolError:`Error`,toolInput:`Parameters`,toolResult:`Result`},errors:{addProject:`Failed to add project`,deleteProject:`Failed to delete project`,renameProject:`Failed to rename project`,reorderProject:`Failed to save project order`,reorderProjectChanged:`The project list changed. Try reordering again.`,stopTerminal:`Failed to stop terminal`},inspector:{attachmentDetail:`Attachment`,changeIndicator:`{{path}}, {{additions}} additions, {{removals}} deletions`,changes:`Changes`,closeFile:`Close file`,commit:`Commit`,context:`Context`,contextSources:`Context sources`,emptyFolder:`Empty folder`,fileTree:`Project files`,file:`File`,gitChanges:`Uncommitted changes`,gitChangesCount:`{{count}} changes`,gitChangesRetrying:`Git change refresh failed. Retrying automatically`,gitLoading:`Loading Git changes...`,goal:`Goal`,goalClear:`Clear goal`,goalDuration:`{{minutes}}m {{seconds}}s`,goalMutationFailed:`Unable to update the goal. Try again.`,goalPause:`Pause goal`,goalResume:`Resume goal`,goalSeconds:`{{count}}s`,goalStatus:{active:`Active`,blocked:`Blocked`,budget_limited:`Budget exhausted`,complete:`Complete`,paused:`Paused`,usage_limited:`Usage limited`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`{{used}} tokens used`,history:`History`,loading:`Loading...`,mcpEnabled:`MCP servers for this task`,mcpReload:`Reload MCP servers`,mcpReloading:`Reloading MCP servers`,mcpStatus:{authenticationRequired:`Authentication required`,cancelled:`Cancelled`,connected:`Connected`,disabled:`Disabled`,failed:`Startup failed`,notStarted:`Not started`,starting:`Starting`,unknown:`Unknown`},project:`Project`,mcpToolCount:`{{count}} tools`,openChanges:`View {{count}} uncommitted changes`,openFailed:`The selected application could not open the target`,plan:`Plan`,planStatus:{completed:`Completed`,in_progress:`In progress`,pending:`Pending`},projectFilesEmpty:`This project has no files to display`,projectFilesError:`Failed to load project files`,projectFilesLoading:`Loading project files...`,readFolder:`Loading folder {{name}}`,readFolderError:`Failed to load folder {{name}}`,reading:`Loading`,refreshFolder:`Reload folder {{name}}`,refreshGit:`Refresh Git changes`,refreshProject:`Refresh project {{name}}`,refreshProjectFiles:`Reload project files`,commitChanges:`Commit {{count}} uncommitted changes`,source:`Sources`,showMore:`Show more`,sourceRole:{admin:`Admin`,repo:`Project`,system:`System`,user:`User`},subagents:`Subagents`,subagentCount:`{{count}} subagents`,subagentOutput:`View output from subagent {{nickname}}`,terminalError:`Failed to load running terminals`,terminalLoading:`Loading terminals...`,terminalRunning:`Terminal running`,terminalStop:`Stop terminal {{command}}`,terminalStopping:`Stopping {{command}}`,terminalStopRetry:`Failed to stop terminal. Try again.`,terminals:`Running terminals`,title:`Runtime environment`},gitHistory:{branch:`Current branch: {{branch}}`,branchLoading:`Current branch: Loading...`,commits:`Commit history`,copyAuthor:`Copy author`,copyHash:`Copy full commit hash`,copyMenuLabel:`Copy commit details`,copyMessage:`Copy commit message`,empty:`This repository has no commits`,diffLoadError:`Failed to load this file's commit Diff`,diffLoading:`Loading file Diff...`,diffTruncated:`This Diff is too long; showing the first 512 KiB`,filesEmpty:`This commit has no files to review`,filesLoadError:`Failed to load commit files`,filesLoading:`Loading commit files...`,end:`All commits loaded`,loadError:`Failed to load Git history`,loadMore:`Load more`,loadMoreFiles:`Load more files`,loading:`Loading Git history...`,loadingMore:`Loading...`,loadingMoreFiles:`Loading files...`,repositories:`Repositories`,retry:`Retry`},notification:{completed:`Task completed`,failed:`Task failed`,failedWithMessage:`Task failed: {{message}}`,interrupted:`Task was interrupted and cannot continue`,waitingApproval:`Task is waiting for approval`,waitingInput:`Task is waiting for input`},taskTitle:{replying:`Replying`},reorder:{cancelled:`Project reordering cancelled`,moved:`{{name}} moved to position {{position}}`,projectFallback:`Project`,started:`Project reordering started. Drag and release to save the position.`,title:`Drag to reorder, or press Alt + Arrow Up/Down`},subagent:{count:`{{count}} subagents`,defaultName:`Subagent {{index}}`,operationCompleted:`Subagent operation completed`,operationFailed:`{{count}} subagents failed`,operationRunning:`{{count}} subagents running`,operationSucceeded:`{{count}} subagents completed`,operationTitles:{close:`Close subagent`,resume:`Resume subagent`,sendInput:`Send message to subagent`,spawn:`Start subagent`,wait:`Wait for subagent`},orchestrating:`Coordinating subagents`},timeline:{approvalReview:{action:{command:`Command`,file_change:`File change`,mcp_tool_call:`MCP tool`,network_access:`Network access`,permissions:`Permission request`},actionDetail:`{{action}}: {{detail}}`,authorization:`User authorization: {{level}}`,authorizationLevel:{high:`High`,low:`Low`,medium:`Medium`,unknown:`Unknown`},rationale:`Review rationale: {{rationale}}`,reviewing:`Running automatic approval review`,risk:`Risk: {{level}}`,riskLevel:{critical:`Critical`,high:`High`,low:`Low`,medium:`Medium`},status:{aborted:`Aborted`,approved:`Approved`,denied:`Denied`,in_progress:`Reviewing`,timed_out:`Timed out`},title:`Automatic approval: {{status}}`},aiRunning:`AI response is running`,aiRunningOperation:`AI response is running: {{operation}}`,attachments:`Message attachments`,changedFiles:`This response changed {{count}} files`,collapseFiles:`Collapse file list`,collapseProcess:`Collapse process`,closeImagePreview:`Close image preview`,commandPending:`Running command`,conversation:`Conversation`,copied:`Copied`,copyMessage:`Copy message`,downloadAttachment:`Download attachment {{name}}`,openAttachment:`Open attachment {{name}}`,emptyAfter:`?`,emptyBefore:`What should we do in`,expandProcess:`Expand process`,fileChange:`{{operation}} {{name}}, {{additions}} additions, {{removals}} deletions, open Diff`,fileOperation:{create:`Created`,delete:`Deleted`,update:`Edited`},fork:`Fork task`,forkFailed:`Failed to fork task. Try again.`,forking:`Forking task`,loading:`Loading task history`,loadError:`Failed to load task history`,loadingOlder:`Loading earlier messages...`,loadOlder:`Load earlier messages`,loadOlderError:`Could not load earlier messages. Try again.`,jumpToMessage:`Jump to user message {{index}}`,moreFiles:`Show {{count}} more files`,noHistory:`This task has no history`,output:`Output`,outputOmitted:`Command output omitted {{bytes}} UTF-8 bytes and {{lines}} lines. Showing the beginning and end.`,outputRetained:`Older command output was removed to stay within the memory budget`,operationGroup:{collapse:`Collapse operation details: {{summary}}`,commandsOnly:`Commands complete: {{count}}`,expand:`Expand operation details: {{summary}}`,failed:`; {{count}} failed`,summary:`Operations complete: {{toolCount}} tool calls, {{commandCount}} commands`,toolsOnly:`Tool calls complete: {{count}}`},buildPlan:`Build`,plan:`Plan`,planGenerating:`Generating plan`,planReady:`Plan ready to build`,processing:`Processed`,quickNavigation:`User message quick navigation`,reconnecting:`Restoring live connection`,review:`Review`,reviewMode:`Review mode`,reviewPrompt:{baseBranch:`Review my changes against {{branch}}`,commit:`Review commit {{sha}}`,commitWithTitle:`Review commit {{sha}}: {{title}}`,custom:`Review the code using these instructions: {{instructions}}`,uncommitted:`Review my uncommitted changes`},running:`Running`,runningOperation:`Running {{operation}}`,selectProject:`Select a project for the new chat`,showImage:`View image {{name}}`,skillsUsed:`Skills used`,editedFiles:`Edited {{count}} files`,editingFiles:`Editing {{count}} files`,liveDiff:`Live file changes`,liveFileChange:`Editing {{name}}, {{additions}} additions, {{removals}} deletions`,notice:{guardian_warning:`Safety warning`,hook_status:`Hook status`,model_verification:`Model verification`,modelVerification:`Verifying model availability`,runtime_warning:`Runtime warning`,strict_review_required:`Strict review required`,strictReviewRequired:`Safety review was escalated; this action will continue after review`},reasoning:`Reasoning summary`,reasoningStreaming:`Reasoning`,runtimeStatus:{duration:`Completed in {{duration}} ms`,fasterModel:`A faster model is available: {{model}}`,hook:`Running hook {{eventName}}`,modelRerouted:`Rerouted from {{fromModel}} to {{toModel}}`,safetyBuffering:`Using safety buffering model {{model}}`}}},en={about:{available:`Version {{version}} is available`,check:`Check for updates`,checking:`Checking`,codexlyVersion:`Codexly version`,codexVersion:`Codex version`,current:`Codexly is up to date`,github:`Project GitHub`,loading:`Checking for updates`,progress:{backingUp:`Backing up the current version`,checking:`Confirming the latest version`,completed:`Update installed`,downloading:`Downloading the update`,installing:`Installing the new version`,label:`Codexly update progress`,rollingBack:`Installation failed. Restoring the previous version`},restartRequired:`Update installed. Restart Codexly to apply it.`,retry:`Check again`,releaseNotes:`Release notes`,releaseNotesTitle:`{{version}} release notes`,releaseNotesUnavailable:`Release notes for this version are temporarily unavailable.`,update:`Software update`,updateTo:`Update to {{version}}`,updating:`Updating`},access:{currentSession:`Current browser`,loggingOut:`Logging out`,logout:`Log out of LAN access`,sessionDescription:`This browser is paired with the current Codexly LAN session.`},actions:{cancel:`Cancel`,close:`Close`,closeDialog:`Close global settings`,closeReleaseNotes:`Close release notes`,save:`Save`,saving:`Saving`},appearance:{automatic:`Automatic`,automaticMode:`Automatic mode`,colorMode:`Color mode`,dark:`Dark`,darkMode:`Dark mode`,language:`Language`,light:`Light`,lightMode:`Light mode`,notifications:`Notifications`},approval:{autoReview:`Automatic review`,never:`Never ask`,onRequest:`On request`},background:{bing:`Bing wallpaper`,bingAria:`Bing daily wallpaper`,blur:`Wallpaper background blur`,blurLabel:`Background blur`,custom:`Custom`,customAria:`Custom workbench background`,delete:`Delete image`,deleteImage:`Delete {{name}}`,galleryLabel:`Custom background images`,invalidImage:`Choose a PNG, JPEG, WebP, or GIF image up to 20 MiB.`,label:`Workbench background`,none:`None`,noneAria:`No workbench background`,overlayOpacity:`Wallpaper overlay opacity`,overlayOpacityLabel:`Overlay opacity`,previewAlt:`Custom workbench background preview`,selectImage:`Use {{name}} as the workbench background`,upload:`Upload image`,uploadInput:`Upload custom background image`,uploadRequired:`Image required`},effort:{high:`High`,low:`Low`,medium:`Medium`,minimal:`Minimal`,xhigh:`Extra high`},errors:{appInfo:`Unable to load version information`,load:`Unable to load global settings`,logout:`Unable to log out of LAN access`,save:`Unable to save global settings`,update:`Update failed. Try again.`,updateCheck:`Unable to check for updates`},fields:{approvalPolicy:`Approval policy`,commitMessagePrompt:`Commit message prompt`,commitModel:`Commit model`,defaultOpenWith:`Default open with`,fastMode:`Fast mode`,followUpMessages:`Follow-up messages`,model:`Model`,prompt:`Prompt`,reasoningEffort:`Reasoning effort`,sandbox:`Sandbox`},followUp:{queue:`Queue`,steer:`Steer`},integration:{automatic:`Select automatically`},languages:{en:`English`,zhCN:`简体中文`},loading:`Loading global settings`,navigationLabel:`Settings categories`,notifications:{disabled:`Off`,enabled:`On`},provider:{apiKey:`API key (optional)`,baseUrl:`API base URL`,cancelLogin:`Cancel login`,connect:`Connect`,connected:`Connected`,custom:`Custom API`,disconnected:`Not connected`,errors:{connect:`Unable to connect to the custom API`,load:`Unable to read model service status`,login:`Unable to start official login`},loading:`Reading model service status`,login:`Sign in with ChatGPT`,logout:`Log out`,addModel:`Add model`,modelId:`Model ID`,modelName:`Model name`,mode:`Model service mode`,models:`Custom models (optional)`,official:`Official login`,reconnect:`Reconnect`,removeModel:`Remove model`,retry:`Retry`,title:`Connect a Codex model service`,waiting:`Waiting for browser login`},pets:{availability:{downloadable:`Download required`,ready:`Ready`},enabled:`Enable workbench pet`,errors:{load:`Unable to load pet assets. Try again.`},loading:`Loading pet assets`,refresh:`Refresh list`,selectionLabel:`Choose a workbench pet`},sandbox:{dangerFullAccess:`Full access`,readOnly:`Read only`,workspaceWrite:`Workspace write`},sections:{about:`About`,access:`LAN access`,agent:`Agent defaults`,appearance:`General`,background:`Workbench background`,commit:`Commit messages`,integration:`App integrations`,pets:`Workbench pet`,provider:`Model service`},title:`Global settings`},tn={scheduledTasks:{chooseDate:`Choose date`,create:`New scheduled task`,custom:`Custom RRULE`,daily:`Daily`,dateUnavailable:`Unavailable date`,delete:`Delete`,deleteConfirm:`Confirm delete`,disabled:`Paused`,disableTask:`Disable {{name}}`,empty:`No scheduled tasks`,enableTask:`Enable {{name}}`,failed:`Failed`,lastRun:`Last run`,monthly:`Monthly`,monthDay:`Day of month`,name:`Task name`,namePlaceholder:`For example: Daily code review`,nextMonth:`Next month`,noRuns:`Not run yet`,once:`Once`,previousMonth:`Previous month`,project:`Project`,prompt:`Prompt`,repeat:`Repeat`,rrule:`RRULE`,rrulePlaceholder:`RRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0`,runNow:`Run now`,running:`Starting`,save:`Save task`,scheduleInvalid:`Check the date, time, or recurrence rule`,search:`Search scheduled tasks`,selectTask:`Select a task on the left to view its configuration`,skipped:`Skipped`,started:`Started`,time:`Trigger time`,timeOfDay:`Time`,title:`Scheduled tasks`,weekdays:`Weekdays`,weekday:`Day of week`,weekly:`Weekly`},skillsMarket:{codexCompatible:`Codex compatible`,compatible:`Verified`,current:`Up to date`,downloads:`{{count}} downloads`,emptyInstalled:`No installed skills found`,emptyMarket:`No compatible skills found`,emptyMcp:`No MCP servers configured`,emptyPlugins:`No official plugins available`,emptyInstalledPlugins:`No official plugins installed`,emptyAvailablePlugins:`No official plugins available to install`,authorize:`Authorize`,closeDetails:`Close plugin details`,closeSkillDetails:`Close skill details`,installComplete:`Skill installed`,installGlobal:`Install globally`,installProject:`Install in project`,installPlugin:`Install plugin`,installed:`Installed`,installedPlugins:`Installed`,availablePlugins:`Not installed`,installedCount:`{{count}} skills installed`,loadError:`Failed to load skill information`,loadMore:`Load more`,loading:`Loading skills`,loadingDetail:`Loading details`,loadingExtension:`Loading extension`,loadingMarket:`Loading market`,loadingMcp:`Loading MCP`,loadingPlugins:`Loading official plugins`,newSessionRequired:`Plugin installed. Start a new session to load its capabilities.`,marketError:`The market is temporarily unavailable`,mcpCount:`{{count}} MCP servers`,mcpEnabled:`Running`,mcpError:`Failed to load MCP configuration`,mcpStopped:`Stopped`,openMarketplace:`Open market page`,openSkill:`Show {{name}} in file manager`,official:`Official by OpenAI`,officialPublisher:`OpenAI official catalog`,projectTarget:`Install project`,refresh:`Refresh skills`,refreshMcp:`Refresh MCP`,refreshPlugins:`Refresh official plugins`,scan:`Scan: {{status}}`,scope:{admin:`Administrator`,repo:`Project`,system:`System`,user:`Global`},search:`Search market`,searchPlugins:`Search official plugins`,sectionsLabel:`Extension type`,sort:`Market sorting`,sortDownloads:`Most downloaded`,sortRecommended:`Recommended`,sortUpdated:`Recently updated`,stars:`{{count}} stars`,tabs:{marketplace:`Third-party market`,mcp:`MCP`,plugins:`Official plugins`,skills:`Skills`},title:`Extension Center`,toggle:`Enable or disable {{name}}`,toggleMcp:`Start or stop {{name}}`,update:`Update`,uninstallPlugin:`Uninstall plugin`,pluginError:`Official plugins are temporarily unavailable`,pluginFallbackDescription:`A Codex extension from the official catalog`,version:`Version {{version}}`},pet:{activeTasks:`Active tasks`,activitySummary:`{{count}} active tasks, {{waiting}} waiting for attention`,move:`Move workbench pet {{name}}`,openTask:`Open task {{name}}, {{status}}`,status:{completed:`Task completed`,running:`Task running`,waiting:`Task waiting for attention`}},actions:{cancel:`Cancel`,close:`Close`,retry:`Retry`,save:`Save`},commit:{allFiles:`All files`,commit:`Commit`,commitActions:`Choose commit action`,commitAndPush:`Commit and push`,commitAndPushComplete:`Commit and push completed`,commitAndPushSucceeded:`Committed and pushed successfully`,commitComplete:`Commit completed`,commitCompletePushFailed:`Commit completed, but push failed`,commitCompleteUpstreamMissing:`Commit completed; the current branch has no upstream`,commitMessage:`Commit message`,commitSucceeded:`Committed successfully`,changes:`Changes`,generateMessage:`Generate message content`,messagePlaceholder:`Enter a commit message`,repository:`Git project`,repositoryLoading:`Loading Git project`,repositoryUnavailable:`No committable Git project was found`,selectAllFiles:`Select all files`,selectFiles:`Select files`,selectRepository:`Select Git project`,selectionLabel:`Select files, {{selected}} of {{total}} selected`,staged:`Staged`,totalFiles_one:`{{count}} total`,totalFiles_other:`{{count}} total`,unstaged:`Unstaged`},diff:{changedFiles:`Changed files`,changedFilesNavigation:`Changed files navigation`,close:`Close file Diff`,closeReview:`Close file review`,collapseChangedFilesNavigation:`Collapse changed files navigation`,expandChangedFilesNavigation:`Expand changed files navigation`,fileStats:`{{path}}, {{additions}} lines added, {{removals}} lines removed`,loading:`Loading Diff`,nextFile:`Review next file`,previousFile:`Review previous file`,reviewContent:`File review content`,showFileList:`Switch to file list`,showFileTree:`Switch to file tree`},composer:{addedAttachments:`Added attachments`,applyTodo:`Apply todo`,applyTodoDescription:`Applying this todo will replace the current composer content. Continue?`,applyTodoTitle:`Replace current input?`,approvalMode:`Approval policy`,attachmentCount_one:`{{count}} attachment`,attachmentCount_other:`{{count}} attachments`,attachmentReadFailed:`Unable to read attachment`,attachmentUploadFailed:`Unable to upload attachment`,baseBranchReview:`Review against a base branch`,buildPlanPrompt:`Start implementing the plan above.`,cancelGoalMode:`Cancel Goal mode`,cancelPlanMode:`Cancel plan mode`,cancelQueued:`Cancel queued message: {{summary}}`,cancelQueuedTooltip:`Cancel queued message`,editQueued:`Edit queued message: {{summary}}`,editQueuedTooltip:`Edit queued message`,editingQueued:`Editing`,disableFastMode:`Disable fast mode`,enableFastMode:`Enable fast mode`,commandGroup:`Commands`,commandInput:`Command input`,commandNoMatch:`No matching Skill or command`,fileSearch:`Search project files`,fileSearchEmpty:`No matching project files`,fileSearchFailed:`Project file search failed`,fileSearchGroup:`Project files`,fileSearchLoading:`Searching project files`,deleteTodo:`Delete todo: {{summary}}`,compacting:`Compacting context`,gitBranchMissing:`No branch checked out`,branchSwitcherLabel:`Switch branch, current branch {{branch}}`,branchSwitcherMenu:`Switch branch`,detachedHead:`detached HEAD`,branchSwitchFailed:`Unable to create or switch branches. Try again.`,branchName:`Branch name`,createBranch:`New branch`,createBranchDescription:`Create from the current branch and switch immediately`,createAndSwitchBranch:`Create and switch`,createAndSwitchWorktree:`Create and switch`,createWorktree:`New worktree`,createWorktreeDescription:`Create a sibling worktree and switch to it`,worktreeSwitcherMenu:`Switch worktree`,goalMode:`Goal`,goalStatus:{active:`Goal active`,blocked:`Goal blocked`,budget_limited:`Goal budget exhausted`,complete:`Goal complete`,paused:`Goal paused`,usage_limited:`Goal usage limited`},goalStatusLabel:`{{status}}: {{objective}}`,goalObjectiveRequired:`Goal mode requires an objective`,goalObjectiveTooLong:`The goal objective cannot exceed 4,000 characters`,goalStructuredInputUnsupported:`Goal mode does not support attachments or Skills; use text and @file paths instead`,initializingAgentsPrompt:`Inspect the current project and create or improve AGENTS.md in the project root with Codex project guidance, common commands, and verification requirements.`,landmark:`Message composer`,modelListFailed:`Failed to load model list`,modelLoading:`Loading models`,model:`Model`,modelAndReasoningMenu:`Model and reasoning`,modelAndReasoningSelect:`Model and reasoning: {{model}}, {{effort}}`,modelSelect:`Select model`,moveQueuedDown:`Move queued message down: {{summary}}`,moveQueuedDownTooltip:`Move down`,moveQueuedUp:`Move queued message up: {{summary}}`,moveQueuedUpTooltip:`Move up`,noBaseBranch:`No base branch available`,noModels:`No models available`,openProjectFolder:`Open in system file manager`,operationFailed:`Operation failed. Please retry.`,placeholder:`Tell Codexly what you want to accomplish`,planMode:`Plan`,projectPath:`Project path`,queueMessage:`Queue message`,queuedMessages:`Queued messages`,reasonEffortSelect:`Select reasoning effort`,reasoningEffort:`Reasoning effort`,reviewBaseBranchGroup:`Select base branch`,reviewScopeGroup:`Select review scope`,reviewStarted:`Code review started`,reviewUncommitted:`Review uncommitted changes`,sandboxMode:`Sandbox mode`,saveAsTodo:`Save as todo`,saveTodoChanges:`Save todo changes`,saveTodoFailed:`Unable to save todo`,sendSteer:`Send steer`,steerNow:`Steer now: {{summary}}`,steerNowTooltip:`Send as a steer now`,stop:`Stop`,submit:`Submit`,taskInput:`Task input`,taskRunning:`Task is running`,uncommittedChangesMissing:`No uncommitted changes available`,waitingToSend:`Waiting to send`,todoCount:`Todos {{count}}`,todoHasChanges:`Unsaved changes`,todoList:`{{project}} todos`,followUpPlaceholder:`Enter follow-up instructions`},openMenu:{choose:`Choose how to open`,copyAbsolutePath:`Copy absolute path`,copyName:`Copy name`,copyRelativePath:`Copy relative path`,detect:`Detecting available apps`,delete:`Delete`,moreActions:`More actions`,none:`No apps available`,open:`Open`,openInNewWindow:`Open in new window`,openIn:`Open in {{app}}`,reference:`Reference`,rename:`Rename`,systemDefault:`System default app`,targetLabel:`Actions for {{path}}`},projectFile:{deleteDescription:{directory:`This will delete the directory and its contents from disk. This cannot be undone.`,file:`This will delete the file from disk. This cannot be undone.`},deleteTitle:`Delete {{name}}?`,name:`Name`,renameDescription:{directory:`This will change the directory name on disk.`,file:`This will change the file name on disk.`},renameTitle:`Rename`},promptCommand:{availability:{noTask:`Open a task first`,notReady:`Runtime capabilities are not ready`,unsupported:`The current Runtime does not support this command`},compact:{description:`Compact the context for this task`,label:`Compact`},fork:{description:`Copy the current task and its conversation history`,label:`Fork`},goal:{description:`Set a persistent goal and keep working until it is complete`,label:`Goal`},initialize:{description:`Create an AGENTS.md file with Codex guidance`,label:`Initialize`},plan:{description:`Analyze the task and propose an implementation plan first`,label:`Plan`},review:{description:`Review uncommitted changes or compare against a branch`,label:`Code review`}},pending:{allow:`Allow`,allowTurn:`Allow for this turn`,additionalPermissions:`Additional permissions`,allowSession:`Allow for this session`,answerFailed:`Unable to submit the answer. Please retry.`,commandApproval:`Command approval`,cancel:`Cancel`,deny:`Deny`,expired:`Request expired`,fileChangeApproval:`File change approval`,fileChangeFallback:`File change awaiting confirmation`,inputRequired:`Your input is required`,mcpForm:`{{server}} input request`,mcpRequest:`{{server}} confirmation`,networkApproval:`Network access approval`,networkPermission:`Network access`,other:`Other`,otherAnswer:`{{header}} other answer`,openUrl:`Open link`,previousPending:`Waiting for the previous item`,processed:`Request processed`,permissionAccess:{deny:`Deny`,read:`Read`,write:`Write`},permissionApproval:`Permission approval`,permissionGlobDepth:`Glob scan depth: {{depth}}`,permissionMinimal:`Minimal filesystem`,permissionProjectRoots:`Project roots`,permissionRoot:`Filesystem root`,permissionTmpdir:`System temporary directory`,permissionUnknownPath:`Unknown path`,fileSystemPermission:`Filesystem`,requestFailed:`Unable to process the request. Please retry.`,terminalInputApproval:`Terminal input approval`,submitAnswers:`Submit answers`,unsupportedForm:`This form cannot be displayed safely. Decline or cancel the request.`},projectDialog:{closeImagePreview:`Close image preview`,closeSource:`Close source file`,delete:`Remove`,loadImageError:`Unable to load image`,loadMoreSourceError:`Unable to load more content`,loadSourceError:`Unable to load source file`,loadingMoreSource:`Loading more content`,loadingSource:`Loading source file`,name:`Project name`,previewMarkdown:`Preview Markdown`,remove:`Remove project`,removeDescription:`Remove {{name}} from Codexly? Files on disk will not be deleted.`,rename:`Rename project`,renameDescription:`This changes only the sidebar display name, not the folder name on disk.`,showRawContent:`Show raw content`,sourcePartial:`Partial content`},projectPicker:{primaryRoot:`Primary`,primaryRootHint:`The first selected folder becomes the primary folder`,primaryRootSummary:`{{path}} (Primary)`,rootSeparator:`, `,selectedRoots:`{{count}} project folders selected`,selectRoot:`Select {{name}}`,add:`Add this folder`,addError:`Unable to add the selected folder`,adding:`Adding`,description:`Browse folders on the device running Codexly`,directPathReady:`Directory verified and ready to add`,empty:`This folder has no subfolders`,filesystemRoot:`Select drive`,goToPath:`Go to path`,hideHidden:`Hide hidden folders`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read folders`,loading:`Reading folders`,loadingBranch:`Reading`,noSelection:`No folder selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,title:`Select project folder`,showHidden:`Show hidden folders`,treeLabel:`Project folder tree`},hostAttachmentPicker:{add:`Add selected file`,description:`Browse files on the device running Codexly`,empty:`This folder has no supported files`,filesystemRoot:`Select drive`,fileTitle:`Select deployment host file`,goToPath:`Go to path`,hideHidden:`Hide hidden files`,imageTitle:`Select deployment host image`,importError:`Unable to add the selected file`,importing:`Adding`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read files`,loading:`Reading files`,loadingBranch:`Reading`,noSelection:`No file selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,showHidden:`Show hidden files`,treeLabel:`Deployment host file tree`},subagentOutput:{close:`Close subagent output`,error:`Unable to load subagent output`,loading:`Loading subagent output`,reconnecting:`Restoring the live subagent connection`,task:`Subagent {{taskId}}`,title:`Subagent output`},shell:{selectProjectRoot:`Select project folder`,closeInspector:`Close context panel`,closeSidebar:`Close project sidebar`,collapseInspector:`Collapse context panel`,collapseSidebar:`Collapse project sidebar`,expandInspector:`Expand context panel`,expandSidebar:`Expand project sidebar`,newChat:`New chat`,renameTask:`Rename task {{title}}`,resizeInspector:`Resize context panel`,resizeSidebar:`Resize project sidebar`,timeline:`Task timeline`,temporaryTask:`Temporary task`},skillEditor:{tokenLabel:`Skill {{name}}, serialized text {{text}}`},archivedTasks:{confirmDelete:`Delete permanently`,confirmDeleteAll:`Delete all permanently`,delete:`Delete permanently`,deleteAll:`Delete all`,deleteAllDescription:`All archived tasks in "{{project}}" and their associated history will be permanently deleted. This cannot be undone.`,deleteAllTitle:`Permanently delete all archived tasks`,deleteDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTask:`Permanently delete task {{task}}`,deleteTitle:`Permanently delete task`,empty:`No archived tasks`,loadError:`Unable to load archived tasks`,loading:`Loading archived tasks`,next:`Next page`,page:`Page {{page}}`,previous:`Previous page`,restore:`Restore`,restoreTask:`Restore task {{task}}`,search:`Search archived tasks`,title:`Archived tasks for {{project}}`,updatedAt:`Updated {{date}}`},sidebar:{addProject:`Add project`,agentNavigation:`Agent navigation`,archive:`Archive`,archived:`Archived`,close:`Close project sidebar`,closeSearch:`Close task search`,collapse:`Show less`,connection:{connecting:`Connecting`,offline:`Offline`,online:`Online`,reconnecting:`Reconnecting`},aboutStatus:`About, Codexly {{version}}{{update}}, terminal connection status: {{status}}`,createInProject:`Create a task in {{project}}`,deletePermanently:`Delete permanently`,deleteTaskDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTaskTitle:`Permanently delete task`,errorAddProject:`Unable to add project`,errorArchiveTask:`Unable to archive task`,errorLoadTasks:`Unable to load tasks`,errorPinTask:`Unable to update pin status`,errorProjectOrder:`Unable to save project order`,errorRenameTask:`Unable to rename task`,errorSearchTasks:`Unable to search tasks`,expand:`Show more`,expandLoading:`Loading more`,expandRetry:`Retry loading more`,newTask:`New task`,landmark:`Project sidebar`,noMatchingTasks:`No matching tasks`,noTasks:`No tasks yet`,noTemporaryTasks:`No temporary tasks yet`,openProjectActions:`Open actions for {{project}}`,openTaskActions:`Open actions for {{task}}`,pin:`Pin`,pinned:`Pinned`,projects:`Projects`,projectActions:`Actions for {{project}}`,remove:`Remove`,rename:`Rename`,search:`Search tasks`,searchAll:`Searching all tasks`,settings:`Settings`,updateAvailableLabel:`, update available`,taskActions:`Actions for {{task}}`,taskApproval:`Task awaiting approval`,taskComplete:`AI response completed`,taskIncomplete:`AI response incomplete`,taskLoading:`Loading tasks`,taskRunning:`Task running`,temporaryTasks:`Temporary tasks`,toggleProject:`Toggle project {{project}}`,unpin:`Unpin`},taskBoard:{allProjects:`All projects`,approval:`Awaiting approval`,completed:`Completed`,completedLoadError:`Failed to load completed tasks`,copyTaskId:`Copy task ID: {{id}}`,copyTaskIdHint:`Copy task ID`,emptyApproval:`No tasks awaiting approval`,emptyCompleted:`No completed tasks`,emptyRunning:`No running tasks`,emptyTodos:`No todos`,label:`Task board`,loading:`Loading task board`,loadingMore:`Loading more tasks`,newCompleted:`Newly completed`,openTask:`Open task: {{task}}`,openTodo:`Open todo: {{todo}}`,pinned:`Pinned`,projectFilter:`Project filter`,retryCompleted:`Reload completed tasks`,running:`Running`,runningFor:`Running for {{duration}}`,title:`Task board`,todo:`Todo`},taskDialog:{name:`Task name`,rename:`Rename task`}},nn={access:{checking:`正在验证访问权限`,codeLabel:`访问密码`,loadError:`无法验证访问权限`,pair:`配对`,pairing:`正在配对`,pairingDescription:`输入 Codexly 启动时设置或显示的访问密码。`,pairingError:`无法完成配对,请检查访问密码后重试`,pairingTitle:`连接可信局域网会话`},actions:{backToWorkbench:`返回工作台`,retry:`重试`},app:{actionFailed:`操作失败`,actionSucceeded:`操作成功`,loadingProjects:`正在加载项目`,noProjects:`尚未添加项目`,notificationRegion:`通知`},errors:{notFoundDescription:`当前地址不属于已注册的应用路由。`,notFoundTitle:`页面不存在`,routeErrorLabel:`路由错误`,routeErrorTitle:`页面加载失败`,runtimeUnavailableDescription:`请先在官方 Codex CLI 中运行 <command>codex login</command>,完成登录后重试。`,runtimeUnavailableTitle:`Codex Runtime 不可用`},language:{english:`English`,simplifiedChinese:`简体中文`}},rn={asyncQuestions:{pending:`待回答问题`,pendingCount:`待回答 · {{count}} 组`,previous:`上一组问题`,next:`下一组问题`,collapse:`收起问题`,expand:`展开问题`,close:`关闭问题`,other:`其他回答`,answer:`回答:{{question}}`,send:`发送回答`,sent:`已发送`,failed:`回答未发送,请重试`},agentComponents:{addFile:`添加文件`,addImage:`添加图片`,addImageOrFile:`添加图片或文件`,currentDevice:`当前设备`,deploymentHost:`部署主机`,approval:`审批`,approvalAccepted:`请求已允许`,approvalRejected:`请求已拒绝`,approvalRequest:`{{title}}请求`,codeComments:`{{count}} 个代码评论`,contextPercent:`上下文已使用 {{percentage}}%`,contextSummary:`{{percentage}}% 上下文已使用`,contextUnknown:`上下文用量未知`,contextWaiting:`等待模型返回上下文用量`,copied:`已复制`,copyCode:`复制代码`,copyOutput:`复制命令输出`,copiedCode:`代码已复制`,copiedOutput:`命令输出已复制`,fileTooLarge:`{{name}} 超过大小限制`,folderCollapse:`收起文件夹 {{name}}`,folderExpand:`展开文件夹 {{name}}`,invalidFileType:`{{name}} 的文件类型不受支持`,nextBranch:`下一个回复分支`,previousBranch:`上一个回复分支`,removeAttachment:`移除 {{name}}`,scrollToBottom:`回到底部`,status:{completed:`已完成`,error:`失败`,inProgress:`进行中`,pending:`等待中`,denied:`已拒绝`,responded:`已响应`,running:`运行中`,waitingApproval:`等待批准`},streamingOutput:`正在接收命令输出`,tooManyImages:`最多添加 {{count}} 张图片`,totalAttachmentSizeExceeded:`附件总大小超过限制`,totalImageSizeExceeded:`图片总大小超过限制`,toolError:`错误`,toolInput:`参数`,toolResult:`结果`},errors:{addProject:`添加项目失败`,deleteProject:`无法删除项目`,renameProject:`无法重命名项目`,reorderProject:`保存项目排序失败`,reorderProjectChanged:`项目列表已变化,请重试排序`,stopTerminal:`停止终端失败`},inspector:{attachmentDetail:`附件`,changeIndicator:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,changes:`变更`,closeFile:`关闭文件`,commit:`提交`,context:`上下文`,contextSources:`上下文来源`,emptyFolder:`空文件夹`,fileTree:`项目文件`,file:`文件`,gitChanges:`未提交变更`,gitChangesCount:`{{count}} 个变更`,gitChangesRetrying:`Git 变更刷新失败,正在自动重试`,gitLoading:`正在读取 Git 变更...`,goal:`目标`,goalClear:`清除目标`,goalDuration:`{{minutes}} 分 {{seconds}} 秒`,goalMutationFailed:`无法更新目标,请重试`,goalPause:`暂停目标`,goalResume:`恢复目标`,goalSeconds:`{{count}} 秒`,goalStatus:{active:`进行中`,blocked:`受阻`,budget_limited:`预算已用尽`,complete:`已完成`,paused:`已暂停`,usage_limited:`用量受限`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`已使用 {{used}} tokens`,history:`历史`,loading:`正在读取...`,mcpEnabled:`当前任务的 MCP 服务`,mcpReload:`重新加载 MCP`,mcpReloading:`正在重新加载 MCP`,mcpStatus:{authenticationRequired:`需要认证`,cancelled:`已取消`,connected:`已连接`,disabled:`已禁用`,failed:`启动失败`,notStarted:`未启动`,starting:`正在启动`,unknown:`状态未知`},project:`项目`,mcpToolCount:`{{count}} 个工具`,openChanges:`查看 {{count}} 个未提交变更`,openFailed:`无法使用所选应用打开目标`,plan:`计划`,planStatus:{completed:`已完成`,in_progress:`进行中`,pending:`待处理`},projectFilesEmpty:`当前项目没有可显示的文件`,projectFilesError:`无法读取项目文件`,projectFilesLoading:`正在读取项目文件...`,readFolder:`正在读取文件夹 {{name}}`,readFolderError:`无法读取文件夹 {{name}}`,reading:`正在读取`,refreshFolder:`重新读取文件夹 {{name}}`,refreshGit:`手动刷新 Git 变更`,refreshProject:`刷新项目 {{name}}`,refreshProjectFiles:`重新读取项目文件`,commitChanges:`提交 {{count}} 个未提交变更`,source:`来源`,showMore:`显示更多`,sourceRole:{admin:`管理员`,repo:`项目`,system:`系统`,user:`用户`},subagents:`子代理`,subagentCount:`{{count}} 个子代理`,subagentOutput:`查看子代理 {{nickname}} 的输出`,terminalError:`无法读取运行中的终端`,terminalLoading:`正在读取终端...`,terminalRunning:`终端运行中`,terminalStop:`停止终端 {{command}}`,terminalStopping:`正在停止 {{command}}`,terminalStopRetry:`停止终端失败,请重试`,terminals:`运行中的终端`,title:`运行环境`},gitHistory:{branch:`当前分支:{{branch}}`,branchLoading:`当前分支:读取中...`,commits:`提交记录`,copyAuthor:`复制提交人`,copyHash:`复制完整提交哈希值`,copyMenuLabel:`复制提交内容`,copyMessage:`复制提交信息`,empty:`当前仓库暂无提交记录`,diffLoadError:`无法读取此文件的提交 Diff`,diffLoading:`正在读取文件 Diff...`,diffTruncated:`Diff 过长,仅展示前 512 KiB`,filesEmpty:`此提交没有可审核的文件`,filesLoadError:`无法读取提交文件`,filesLoading:`正在读取提交文件...`,end:`已加载全部提交`,loadError:`无法读取 Git 历史`,loadMore:`加载更多`,loadMoreFiles:`加载更多文件`,loading:`正在读取 Git 历史...`,loadingMore:`正在加载...`,loadingMoreFiles:`正在加载文件...`,repositories:`子仓库`,retry:`重试`},notification:{completed:`Task 已完成`,failed:`Task 运行失败`,failedWithMessage:`Task 运行失败:{{message}}`,interrupted:`Task 已中断,无法继续`,waitingApproval:`Task 等待审批`,waitingInput:`Task 等待输入`},taskTitle:{replying:`正在回复`},reorder:{cancelled:`已取消项目排序`,moved:`{{name}} 已移动到第 {{position}} 位`,projectFallback:`项目`,started:`已进入项目排序,拖动后释放以保存位置`,title:`拖动排序;也可按 Alt + 上下方向键移动`},subagent:{count:`{{count}} 个子代理`,defaultName:`子代理 {{index}}`,operationCompleted:`子代理操作已完成`,operationFailed:`{{count}} 个子代理执行失败`,operationRunning:`{{count}} 个子代理正在执行`,operationSucceeded:`{{count}} 个子代理已完成`,operationTitles:{close:`关闭子代理`,resume:`恢复子代理`,sendInput:`向子代理发送消息`,spawn:`启动子代理`,wait:`等待子代理`},orchestrating:`正在协调子代理`},timeline:{approvalReview:{action:{command:`命令`,file_change:`文件变更`,mcp_tool_call:`MCP 工具`,network_access:`网络访问`,permissions:`权限请求`},actionDetail:`{{action}}:{{detail}}`,authorization:`用户授权:{{level}}`,authorizationLevel:{high:`高`,low:`低`,medium:`中`,unknown:`未知`},rationale:`审批理由:{{rationale}}`,reviewing:`正在自动审批`,risk:`风险:{{level}}`,riskLevel:{critical:`严重`,high:`高`,low:`低`,medium:`中`},status:{aborted:`已中止`,approved:`已批准`,denied:`已拒绝`,in_progress:`审批中`,timed_out:`已超时`},title:`自动审批:{{status}}`},aiRunning:`AI 回复正在运行`,aiRunningOperation:`AI 回复正在运行:{{operation}}`,attachments:`消息附件`,changedFiles:`本次修改了 {{count}} 个文件`,collapseFiles:`收起文件列表`,collapseProcess:`收起执行过程`,closeImagePreview:`关闭图片预览`,commandPending:`正在执行命令`,conversation:`会话内容`,copied:`已复制`,copyMessage:`复制消息`,downloadAttachment:`下载附件 {{name}}`,openAttachment:`打开附件 {{name}}`,emptyAfter:`中做些什么?`,emptyBefore:`我们应该在`,expandProcess:`展开执行过程`,fileChange:`{{operation}} {{name}},新增 {{additions}} 行,删除 {{removals}} 行,打开 Diff`,fileOperation:{create:`已创建`,delete:`已删除`,update:`已编辑`},fork:`复制任务`,forkFailed:`复制任务失败,请重试`,forking:`正在复制任务`,loading:`正在加载任务历史`,loadError:`无法加载任务历史`,loadingOlder:`正在加载更早记录...`,loadOlder:`加载更早记录`,loadOlderError:`无法加载更早记录,请重试`,jumpToMessage:`跳转到用户消息 {{index}}`,moreFiles:`再显示 {{count}} 个文件`,noHistory:`此任务暂无历史`,output:`输出`,outputOmitted:`命令输出已省略 {{bytes}} 个 UTF-8 字节和 {{lines}} 行,显示开头和结尾内容。`,outputRetained:`较早的命令输出已按内存预算清理`,operationGroup:{collapse:`收起执行详情:{{summary}}`,commandsOnly:`命令执行完成:{{count}} 条`,expand:`展开执行详情:{{summary}}`,failed:`;其中 {{count}} 项失败`,summary:`操作完成:调用 {{toolCount}} 个工具,执行 {{commandCount}} 条命令`,toolsOnly:`工具调用完成:{{count}} 个`},buildPlan:`构建`,plan:`计划`,planGenerating:`正在生成计划`,planReady:`计划已生成,可开始构建`,processing:`已处理`,quickNavigation:`用户消息快捷导航`,reconnecting:`实时连接恢复中`,review:`审核`,reviewMode:`审查模式`,reviewPrompt:{baseBranch:`请检查我相对于 {{branch}} 的更改`,commit:`请检查提交 {{sha}}`,commitWithTitle:`请检查提交 {{sha}}:{{title}}`,custom:`请按以下要求检查代码:{{instructions}}`,uncommitted:`请检查我未提交的更改`},running:`正在运行`,runningOperation:`正在运行 {{operation}}`,selectProject:`选择新聊天项目`,showImage:`查看图片 {{name}}`,skillsUsed:`使用的 Skills`,editedFiles:`已编辑 {{count}} 个文件`,editingFiles:`正在编辑 {{count}} 个文件`,liveDiff:`实时文件变更`,liveFileChange:`正在修改 {{name}},新增 {{additions}} 行,删除 {{removals}} 行`,notice:{guardian_warning:`安全警告`,hook_status:`Hook 状态`,model_verification:`模型验证`,modelVerification:`正在验证模型可用性`,runtime_warning:`运行时警告`,strict_review_required:`需要严格审核`,strictReviewRequired:`安全审核已升级,当前操作将在严格审核完成后继续`},reasoning:`推理摘要`,reasoningStreaming:`正在推理`,runtimeStatus:{duration:`耗时 {{duration}} 毫秒`,fasterModel:`可使用更快的模型:{{model}}`,hook:`正在运行 Hook {{eventName}}`,modelRerouted:`模型已从 {{fromModel}} 切换到 {{toModel}}`,safetyBuffering:`正在使用安全缓冲模型 {{model}}`}}},an={about:{available:`发现新版本 {{version}}`,check:`检查更新`,checking:`正在检查`,codexlyVersion:`Codexly 版本`,codexVersion:`Codex 版本`,current:`已是最新版本`,github:`项目 GitHub`,loading:`正在检查更新`,progress:{backingUp:`正在备份当前版本`,checking:`正在确认最新版本`,completed:`更新安装完成`,downloading:`正在下载更新包`,installing:`正在安装新版本`,label:`Codexly 更新进度`,rollingBack:`安装失败,正在恢复原版本`},restartRequired:`更新完成,重启 Codexly 后生效`,retry:`重新检查`,releaseNotes:`更新日志`,releaseNotesTitle:`{{version}} 更新日志`,releaseNotesUnavailable:`暂时无法获取此版本的更新日志。`,update:`软件更新`,updateTo:`更新到 {{version}}`,updating:`正在更新`},access:{currentSession:`当前浏览器`,loggingOut:`正在退出`,logout:`退出局域网访问`,sessionDescription:`此浏览器当前已配对到本次 Codexly 局域网会话。`},actions:{cancel:`取消`,close:`关闭`,closeDialog:`关闭全局设置`,closeReleaseNotes:`关闭更新日志`,save:`保存`,saving:`正在保存`},appearance:{automatic:`自动`,automaticMode:`自动模式`,colorMode:`颜色模式`,dark:`深色`,darkMode:`深色模式`,language:`语言`,light:`浅色`,lightMode:`浅色模式`,notifications:`通知`},approval:{autoReview:`自动审核`,never:`从不询问`,onRequest:`按需审批`},background:{bing:`Bing 壁纸`,bingAria:`Bing 每日壁纸`,blur:`壁纸背景模糊度`,blurLabel:`背景模糊度`,custom:`自定义`,customAria:`自定义工作台背景`,delete:`删除图片`,deleteImage:`删除 {{name}}`,galleryLabel:`自定义背景图片`,invalidImage:`请选择 20 MiB 以内的 PNG、JPEG、WebP 或 GIF 图片。`,label:`工作台背景`,none:`无`,noneAria:`无工作台背景`,overlayOpacity:`壁纸遮罩不透明度`,overlayOpacityLabel:`遮罩不透明度`,previewAlt:`自定义工作台背景预览`,selectImage:`使用 {{name}} 作为工作台背景`,upload:`上传图片`,uploadInput:`上传自定义背景图片`,uploadRequired:`需要上传图片`},effort:{high:`高`,low:`低`,medium:`中`,minimal:`最低`,xhigh:`极高`},errors:{appInfo:`无法加载版本信息`,load:`无法加载全局设置`,logout:`无法退出局域网访问`,save:`无法保存全局设置`,update:`更新失败,请重试`,updateCheck:`无法检查更新`},fields:{approvalPolicy:`审批`,commitMessagePrompt:`提交提示词`,commitModel:`提交模型`,defaultOpenWith:`默认打开方式`,fastMode:`快速模式`,followUpMessages:`跟进消息`,model:`模型`,prompt:`提示词`,reasoningEffort:`思考量`,sandbox:`工作区`},followUp:{queue:`排队`,steer:`引导`},integration:{automatic:`自动选择`},languages:{en:`English`,zhCN:`简体中文`},loading:`正在加载全局设置`,navigationLabel:`设置分类`,notifications:{disabled:`关闭`,enabled:`开启`},provider:{apiKey:`API Key(可选)`,baseUrl:`API Base URL`,cancelLogin:`取消登录`,connect:`连接`,connected:`已连接`,custom:`自定义 API`,disconnected:`未连接`,errors:{connect:`无法连接自定义 API`,load:`无法读取模型服务状态`,login:`无法启动官方登录`},loading:`正在读取模型服务状态`,login:`使用 ChatGPT 登录`,logout:`退出登录`,addModel:`添加模型`,modelId:`模型 ID`,modelName:`模型名称`,mode:`模型服务模式`,models:`自定义模型(可选)`,official:`官方登录`,reconnect:`重新连接`,removeModel:`删除模型`,retry:`重试`,title:`连接 Codex 模型服务`,waiting:`等待浏览器登录`},pets:{availability:{downloadable:`需要下载`,ready:`已就绪`},enabled:`启用工作台宠物`,errors:{load:`无法加载宠物资源,请重试`},loading:`正在加载宠物资源`,refresh:`刷新列表`,selectionLabel:`选择工作台宠物`},sandbox:{dangerFullAccess:`完全访问`,readOnly:`只读`,workspaceWrite:`工作区可写`},sections:{about:`关于`,access:`局域网访问`,agent:`Agent 默认值`,appearance:`基础设置`,background:`工作台背景`,commit:`提交消息`,integration:`应用集成`,pets:`工作台宠物`,provider:`模型服务`},title:`全局设置`},on={scheduledTasks:{chooseDate:`选择日期`,create:`新建定时任务`,custom:`自定义 RRULE`,daily:`每天`,dateUnavailable:`不可选日期`,delete:`删除`,deleteConfirm:`确认删除`,disabled:`已暂停`,disableTask:`停用{{name}}`,empty:`暂无定时任务`,enableTask:`启用{{name}}`,failed:`执行失败`,lastRun:`最近执行`,monthly:`每月`,monthDay:`每月几号`,name:`任务名称`,namePlaceholder:`例如:每日代码巡检`,nextMonth:`下个月`,noRuns:`尚未执行`,once:`仅一次`,previousMonth:`上个月`,project:`执行项目`,prompt:`执行提示词`,repeat:`重复规则`,rrule:`RRULE`,rrulePlaceholder:`RRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0`,runNow:`立即运行`,running:`正在启动`,save:`保存任务`,scheduleInvalid:`请检查日期、时间或重复规则`,search:`搜索定时任务`,selectTask:`选择左侧任务查看配置`,skipped:`已跳过`,started:`已启动`,time:`触发时间`,timeOfDay:`时间`,title:`定时任务`,weekdays:`工作日`,weekday:`周几`,weekly:`每周`},skillsMarket:{codexCompatible:`Codex 兼容`,compatible:`已验证`,current:`已是最新`,downloads:`{{count}} 次下载`,emptyInstalled:`尚未发现已安装的 Skill`,emptyMarket:`没有找到兼容的 Skill`,emptyMcp:`尚未配置 MCP 服务`,emptyPlugins:`没有可用的官方插件`,emptyInstalledPlugins:`尚未安装官方插件`,emptyAvailablePlugins:`没有待安装的官方插件`,authorize:`前往授权`,closeDetails:`关闭插件详情`,closeSkillDetails:`关闭 Skill 详情`,installComplete:`Skill 安装完成`,installGlobal:`安装到全局`,installProject:`安装到项目`,installPlugin:`安装插件`,installed:`已安装`,installedPlugins:`已安装`,availablePlugins:`未安装`,installedCount:`已安装 {{count}} 个 Skill`,loadError:`Skill 信息加载失败`,loadMore:`加载更多`,loading:`正在加载 Skills`,loadingDetail:`正在加载详情`,loadingExtension:`正在加载扩展`,loadingMarket:`正在加载市场`,loadingMcp:`正在加载 MCP`,loadingPlugins:`正在加载官方插件`,newSessionRequired:`插件已安装。请新建会话以加载插件能力。`,marketError:`市场暂时不可用`,mcpCount:`{{count}} 个 MCP 服务`,mcpEnabled:`运行中`,mcpError:`MCP 配置加载失败`,mcpStopped:`已停止`,openMarketplace:`打开市场页面`,openSkill:`在文件管理器中显示 {{name}}`,official:`OpenAI 官方`,officialPublisher:`OpenAI 官方目录`,projectTarget:`安装项目`,refresh:`刷新 Skills`,refreshMcp:`刷新 MCP`,refreshPlugins:`刷新官方插件`,scan:`扫描:{{status}}`,scope:{admin:`管理员`,repo:`项目`,system:`系统`,user:`全局`},search:`搜索市场`,searchPlugins:`搜索官方插件`,sectionsLabel:`扩展类型`,sort:`市场排序`,sortDownloads:`下载最多`,sortRecommended:`推荐`,sortUpdated:`最近更新`,stars:`{{count}} 个收藏`,tabs:{marketplace:`三方市场`,mcp:`MCP 管理`,plugins:`官方插件`,skills:`Skills 管理`},title:`扩展中心`,toggle:`启用或停用 {{name}}`,toggleMcp:`启用或停止 {{name}}`,update:`更新`,uninstallPlugin:`卸载插件`,pluginError:`官方插件暂时不可用`,pluginFallbackDescription:`由官方目录提供的 Codex 扩展`,version:`版本 {{version}}`},pet:{activeTasks:`活动任务`,activitySummary:`{{count}} 个活动任务,其中 {{waiting}} 个等待处理`,move:`移动工作台宠物 {{name}}`,openTask:`打开任务 {{name}},{{status}}`,status:{completed:`任务已完成`,running:`任务运行中`,waiting:`任务等待处理`}},actions:{cancel:`取消`,close:`关闭`,retry:`重试`,save:`保存`},commit:{allFiles:`全选`,commit:`提交`,commitActions:`选择提交方式`,commitAndPush:`提交并推送`,commitAndPushComplete:`提交并推送已完成`,commitAndPushSucceeded:`提交并推送成功`,commitComplete:`提交已完成`,commitCompletePushFailed:`提交已完成,但推送失败`,commitCompleteUpstreamMissing:`提交已完成,当前分支未配置上游`,commitMessage:`提交信息`,commitSucceeded:`提交成功`,changes:`变更`,generateMessage:`生成 message 信息`,messagePlaceholder:`输入提交信息`,repository:`Git 项目`,repositoryLoading:`正在加载 Git 项目`,repositoryUnavailable:`未找到可提交的 Git 项目`,selectAllFiles:`全选文件`,selectFiles:`选择文件`,selectRepository:`选择 Git 项目`,selectionLabel:`选择文件,已选择 {{selected}}/{{total}} 个文件`,staged:`已暂存`,totalFiles_one:`共 {{count}} 个`,totalFiles_other:`共 {{count}} 个`,unstaged:`未暂存`},diff:{changedFiles:`变更文件`,changedFilesNavigation:`变更文件导航`,close:`关闭文件 Diff`,closeReview:`关闭文件审核`,collapseChangedFilesNavigation:`收起变更文件导航`,expandChangedFilesNavigation:`展开变更文件导航`,fileStats:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,loading:`正在加载 Diff`,nextFile:`审核下一个文件`,previousFile:`审核上一个文件`,reviewContent:`审核文件内容`,showFileList:`切换为文件列表`,showFileTree:`切换为文件树`},composer:{addedAttachments:`已添加附件`,applyTodo:`应用待办`,applyTodoDescription:`应用待办将覆盖输入框中的当前内容。是否继续?`,applyTodoTitle:`覆盖当前输入?`,approvalMode:`批准模式`,attachmentCount_one:`{{count}} 个附件`,attachmentCount_other:`{{count}} 个附件`,attachmentReadFailed:`附件读取失败`,attachmentUploadFailed:`附件上传失败`,baseBranchReview:`基于基础分支进行审查`,buildPlanPrompt:`请开始按照上述计划进行开发。`,cancelGoalMode:`取消目标模式`,cancelPlanMode:`取消计划模式`,cancelQueued:`取消排队:{{summary}}`,cancelQueuedTooltip:`取消排队`,editQueued:`编辑排队消息:{{summary}}`,editQueuedTooltip:`编辑排队消息`,editingQueued:`编辑中`,disableFastMode:`关闭快速模式`,enableFastMode:`开启快速模式`,commandGroup:`命令`,commandInput:`输入命令`,commandNoMatch:`没有匹配的 Skill 或命令`,fileSearch:`搜索项目文件`,fileSearchEmpty:`没有匹配的项目文件`,fileSearchFailed:`无法搜索项目文件`,fileSearchGroup:`项目文件`,fileSearchLoading:`正在搜索项目文件`,deleteTodo:`删除待办:{{summary}}`,compacting:`正在压缩上下文`,gitBranchMissing:`未检出分支`,branchSwitcherLabel:`切换分支,当前分支 {{branch}}`,branchSwitcherMenu:`切换分支`,detachedHead:`detached HEAD`,branchSwitchFailed:`无法创建或切换分支,请重试`,branchName:`分支名称`,createBranch:`新建分支`,createBranchDescription:`基于当前分支创建并立即切换`,createAndSwitchBranch:`创建并切换`,createAndSwitchWorktree:`创建并切换`,createWorktree:`新建 worktree`,createWorktreeDescription:`在仓库同级目录创建 worktree 并切换`,worktreeSwitcherMenu:`切换 worktree`,goalMode:`目标`,goalStatus:{active:`目标进行中`,blocked:`目标受阻`,budget_limited:`目标预算已用尽`,complete:`目标已完成`,paused:`目标已暂停`,usage_limited:`目标用量受限`},goalStatusLabel:`{{status}}:{{objective}}`,goalObjectiveRequired:`目标模式需要输入目标文本`,goalObjectiveTooLong:`目标文本不能超过 4,000 个字符`,goalStructuredInputUnsupported:`目标模式暂不支持附件或 Skill,请改用文本和 @文件路径`,initializingAgentsPrompt:`请检查当前项目,并在项目根目录创建或完善 AGENTS.md,写入适用于 Codex 的项目说明、常用命令和验证要求。`,landmark:`消息编辑器`,modelListFailed:`模型列表加载失败`,modelLoading:`模型加载中`,model:`模型`,modelAndReasoningMenu:`模型和思考量`,modelAndReasoningSelect:`模型和思考量:{{model}},{{effort}}`,modelSelect:`选择模型`,moveQueuedDown:`下移排队消息:{{summary}}`,moveQueuedDownTooltip:`下移`,moveQueuedUp:`上移排队消息:{{summary}}`,moveQueuedUpTooltip:`上移`,noBaseBranch:`未发现可用分支`,noModels:`暂无可用模型`,openProjectFolder:`在系统文件夹中打开`,operationFailed:`操作失败,请重试`,placeholder:`告诉 Codexly 你想完成什么`,planMode:`计划`,projectPath:`项目路径`,queueMessage:`排队消息`,queuedMessages:`已排队消息`,reasonEffortSelect:`选择思考量`,reasoningEffort:`思考量`,reviewBaseBranchGroup:`选择基础分支`,reviewScopeGroup:`选择审查范围`,reviewStarted:`代码审查已开始`,reviewUncommitted:`审查未提交的更改`,sandboxMode:`沙盒模式`,saveAsTodo:`保存为待办`,saveTodoChanges:`保存待办修改`,saveTodoFailed:`无法保存待办`,sendSteer:`发送引导`,steerNow:`立即引导:{{summary}}`,steerNowTooltip:`立即作为引导发送`,stop:`停止`,submit:`提交`,taskInput:`任务输入`,taskRunning:`任务运行中`,uncommittedChangesMissing:`未发现可用的基础分支`,waitingToSend:`等待发送`,todoCount:`待办 {{count}}`,todoHasChanges:`有未保存修改`,todoList:`{{project}} 的待办`,followUpPlaceholder:`输入后续要求`},openMenu:{choose:`选择打开方式`,copyAbsolutePath:`复制绝对路径`,copyName:`复制名称`,copyRelativePath:`复制相对路径`,detect:`正在检测打开方式`,delete:`删除`,moreActions:`更多操作`,none:`没有可用的打开方式`,open:`打开`,openInNewWindow:`在独立窗口打开`,openIn:`在 {{app}} 中打开`,reference:`引用`,rename:`重命名`,systemDefault:`系统默认应用`,targetLabel:`{{path}} 的操作`},projectFile:{deleteDescription:{directory:`确认后将删除磁盘上的目录及其内容,此操作无法撤销。`,file:`确认后将删除磁盘上的文件,此操作无法撤销。`},deleteTitle:`删除 {{name}}?`,name:`名称`,renameDescription:{directory:`确认后将更改磁盘上的目录名称。`,file:`确认后将更改磁盘上的文件名称。`},renameTitle:`重命名`},promptCommand:{availability:{noTask:`需要先打开一个任务`,notReady:`运行时能力尚未就绪`,unsupported:`当前运行时不支持此命令`},compact:{description:`压缩此任务的上下文`,label:`压缩`},fork:{description:`复制当前任务及其对话历史`,label:`复制`},goal:{description:`设置持久目标并持续工作直到完成`,label:`目标`},initialize:{description:`创建包含 Codex 说明的 AGENTS.md 文件`,label:`初始化`},plan:{description:`先分析任务并制定实施计划`,label:`计划`},review:{description:`审查未暂存的更改,或与某个分支进行比较`,label:`代码审查`}},pending:{allow:`允许`,allowTurn:`本轮允许`,additionalPermissions:`额外权限`,allowSession:`本次会话允许`,answerFailed:`回答提交失败,请重试`,commandApproval:`命令审批`,cancel:`取消`,deny:`拒绝`,expired:`请求已过期`,fileChangeApproval:`文件变更审批`,fileChangeFallback:`待确认文件变更`,inputRequired:`需要你的输入`,mcpForm:`{{server}} 输入请求`,mcpRequest:`{{server}} 确认请求`,networkApproval:`网络访问审批`,networkPermission:`网络访问`,other:`其他`,otherAnswer:`{{header}}其他回答`,openUrl:`打开链接`,previousPending:`等待处理前一项`,processed:`请求已处理`,permissionAccess:{deny:`拒绝`,read:`读取`,write:`写入`},permissionApproval:`权限审批`,permissionGlobDepth:`Glob 扫描深度:{{depth}}`,permissionMinimal:`最小文件系统`,permissionProjectRoots:`项目根目录`,permissionRoot:`文件系统根目录`,permissionTmpdir:`系统临时目录`,permissionUnknownPath:`未知路径`,fileSystemPermission:`文件系统`,requestFailed:`请求处理失败,请重试`,terminalInputApproval:`终端输入审批`,submitAnswers:`提交回答`,unsupportedForm:`此表单无法安全显示,请拒绝或取消请求。`},projectDialog:{closeImagePreview:`关闭图片预览`,closeSource:`关闭源文件`,delete:`删除`,loadImageError:`无法加载图片`,loadMoreSourceError:`加载更多内容失败`,loadSourceError:`无法加载源文件`,loadingMoreSource:`正在加载更多内容`,loadingSource:`正在加载源文件`,name:`项目名称`,previewMarkdown:`预览 Markdown`,remove:`移除项目`,removeDescription:`将“{{name}}”从 Codexly 左栏移除,不会删除磁盘上的文件夹及文件。`,rename:`重命名项目`,renameDescription:`只修改左栏显示名称,不会修改磁盘上的文件夹名称。`,showRawContent:`显示原始内容`,sourcePartial:`部分内容`},projectPicker:{primaryRoot:`主目录`,primaryRootHint:`首个勾选的文件夹将作为主目录`,primaryRootSummary:`{{path}}(主目录)`,rootSeparator:`、`,selectedRoots:`已选择 {{count}} 个项目目录`,selectRoot:`选择 {{name}}`,add:`添加此文件夹`,addError:`无法添加所选文件夹`,adding:`正在添加`,description:`浏览 Codexly 运行设备上的文件夹`,directPathReady:`已验证目录,可直接添加`,empty:`此文件夹中没有子文件夹`,filesystemRoot:`选择磁盘`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件夹`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件夹`,loading:`正在读取文件夹`,loadingBranch:`正在读取`,noSelection:`尚未选择文件夹`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,title:`选择项目文件夹`,showHidden:`显示隐藏文件夹`,treeLabel:`项目文件夹目录树`},hostAttachmentPicker:{add:`添加所选文件`,description:`浏览 Codexly 运行设备上的文件`,empty:`此文件夹中没有支持的文件`,filesystemRoot:`选择磁盘`,fileTitle:`选择部署主机文件`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件`,imageTitle:`选择部署主机图片`,importError:`无法添加所选文件`,importing:`正在添加`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件`,loading:`正在读取文件`,loadingBranch:`正在读取`,noSelection:`尚未选择文件`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,showHidden:`显示隐藏文件`,treeLabel:`部署主机文件目录树`},subagentOutput:{close:`关闭子代理输出`,error:`无法加载子代理输出`,loading:`正在加载子代理输出`,reconnecting:`子代理实时连接恢复中`,task:`子代理 {{taskId}}`,title:`子代理输出`},shell:{selectProjectRoot:`选择项目目录`,closeInspector:`关闭上下文面板`,closeSidebar:`关闭项目侧栏`,collapseInspector:`收起上下文面板`,collapseSidebar:`收起项目侧栏`,expandInspector:`展开上下文面板`,expandSidebar:`展开项目侧栏`,newChat:`新聊天`,renameTask:`重命名任务 {{title}}`,resizeInspector:`调整上下文面板宽度`,resizeSidebar:`调整项目侧栏宽度`,timeline:`任务时间线`,temporaryTask:`临时任务`},skillEditor:{tokenLabel:`Skill {{name}},实际文本 {{text}}`},archivedTasks:{confirmDelete:`永久删除`,confirmDeleteAll:`全部永久删除`,delete:`永久删除`,deleteAll:`全部删除`,deleteAllDescription:`“{{project}}”中的全部已归档任务及其关联历史将被永久删除,此操作无法撤销。`,deleteAllTitle:`永久删除全部已归档任务`,deleteDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTask:`永久删除任务 {{task}}`,deleteTitle:`永久删除任务`,empty:`没有已归档任务`,loadError:`无法加载已归档任务`,loading:`正在加载已归档任务`,next:`下一页`,page:`第 {{page}} 页`,previous:`上一页`,restore:`恢复`,restoreTask:`恢复任务 {{task}}`,search:`搜索已归档任务`,title:`{{project}} 的已归档任务`,updatedAt:`更新于 {{date}}`},sidebar:{addProject:`添加项目`,agentNavigation:`Agent 导航`,archive:`归档`,archived:`已归档`,close:`关闭项目侧栏`,closeSearch:`关闭任务搜索`,collapse:`收起`,connection:{connecting:`正在连接`,offline:`离线`,online:`在线`,reconnecting:`正在重新连接`},aboutStatus:`关于,Codexly {{version}}{{update}},终端连接状态:{{status}}`,createInProject:`在 {{project}} 中新建任务`,deletePermanently:`永久删除`,deleteTaskDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTaskTitle:`永久删除任务`,errorAddProject:`无法添加项目`,errorArchiveTask:`无法归档任务`,errorLoadTasks:`无法加载任务`,errorPinTask:`无法更新固定状态`,errorProjectOrder:`无法保存项目排序`,errorRenameTask:`无法重命名任务`,errorSearchTasks:`无法搜索任务`,expand:`显示更多`,expandLoading:`正在加载更多`,expandRetry:`重试加载更多`,newTask:`新建任务`,landmark:`项目侧栏`,noMatchingTasks:`未找到匹配任务`,noTasks:`暂无任务`,noTemporaryTasks:`暂无临时任务`,openProjectActions:`打开 {{project}} 的项目操作菜单`,openTaskActions:`打开 {{task}} 的操作菜单`,pin:`固定`,pinned:`已固定`,projects:`项目`,projectActions:`{{project}} 的项目操作`,remove:`删除`,rename:`重命名`,search:`搜索任务`,searchAll:`正在搜索全部任务`,settings:`设置`,updateAvailableLabel:`,有可用更新`,taskActions:`{{task}} 的任务操作`,taskApproval:`任务等待审批`,taskComplete:`AI 回复已完成`,taskIncomplete:`AI 回复未完成`,taskLoading:`正在加载任务`,taskRunning:`任务运行中`,temporaryTasks:`临时任务`,toggleProject:`切换项目 {{project}}`,unpin:`取消固定`},taskBoard:{allProjects:`全部项目`,approval:`待审批`,completed:`已完成`,completedLoadError:`已完成任务加载失败`,copyTaskId:`复制任务 ID:{{id}}`,copyTaskIdHint:`复制任务 ID`,emptyApproval:`暂无待审批任务`,emptyCompleted:`暂无已完成任务`,emptyRunning:`暂无运行中任务`,emptyTodos:`暂无待办`,label:`任务看板`,loading:`正在加载任务看板`,loadingMore:`正在加载更多任务`,newCompleted:`新完成`,openTask:`打开任务:{{task}}`,openTodo:`打开待办:{{todo}}`,pinned:`已固定`,projectFilter:`项目过滤`,retryCompleted:`重新加载已完成任务`,running:`运行中`,runningFor:`已运行 {{duration}}`,title:`任务看板`,todo:`待办`},taskDialog:{name:`任务名称`,rename:`重命名任务`}},sn=`common`,cn=[`common`,`settings`,`workbench`,`conversation`],ln={en:{common:Qt,conversation:$t,settings:en,workbench:tn},"zh-CN":{common:nn,conversation:rn,settings:an,workbench:on}};function un(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}var dn=un(),fn=Zt(dn,typeof window>`u`||typeof navigator>`u`?[]:navigator.languages);L.use(Oe).init({defaultNS:sn,fallbackLng:`zh-CN`,initAsync:!1,interpolation:{escapeValue:!1},lng:fn,ns:cn,resources:ln,supportedLngs:[`zh-CN`,`en`]}),typeof document<`u`&&Xt(fn,document.documentElement);async function pn(e){Yt(e,dn??{setItem:()=>void 0}),typeof document<`u`&&Xt(e,document.documentElement),await L.changeLanguage(e)}function mn(){return Jt(dn??{getItem:()=>null})??(L.resolvedLanguage===`en`?`en`:`zh-CN`)}function hn(e,t,n){return e.invalidateQueries({exact:!0,queryKey:zt(t,n)})}function gn(e){let t=new Map;for(let n of e?.pages??[])for(let e of n.data)t.has(e.id)||t.set(e.id,e);return[...t.values()]}async function _n(e,t){let n=e.getQueriesData({queryKey:Lt}).flatMap(([e,n])=>{let r=e[2];return n!==void 0&&Array.isArray(r)&&r.includes(t.projectId)?[e]:[]});await Promise.all(n.map(t=>e.cancelQueries({exact:!0,queryKey:t})));for(let r of n)e.setQueryData(r,e=>{if(e===void 0||e.pages.length===0)return e;let n=e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t.id)})),r=n[0];return r===void 0?e:{...e,pages:[{...r,data:[t,...r.data]},...n.slice(1)]}})}function vn(e,t){if(e===void 0)return{data:[t],nextCursor:null};let n=e.data.findIndex(e=>e.id===t.id);return n<0?{...e,data:[...e.data,t]}:{...e,data:e.data.map((e,r)=>r===n?t:e)}}function yn(e,t){if(e===void 0||e.pages.length===0)return{pageParams:[void 0],pages:[{data:[t],nextCursor:null}]};let n=e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t.id)})),r=n[0];return{...e,pages:[{...r,data:[t,...r?.data??[]],nextCursor:r?.nextCursor??null},...n.slice(1)]}}function bn(e,t){return e===void 0?{pageParams:[void 0],pages:[{data:[t],nextCursor:null}]}:{...e,pages:e.pages.map(e=>({...e,data:e.data.map(e=>e.id===t.id?t:e)}))}}function xn(e,t){e.setQueryData([`projects`,t.projectId,`tasks`],e=>bn(e,t)),e.setQueryData([`projects`,t.projectId,`tasks`,Ft],e=>e===void 0?void 0:t.pinned?[t,...e.filter(e=>e.id!==t.id)]:e.filter(e=>e.id!==t.id)),e.setQueryData([`projects`,t.projectId,`tasks`,It],e=>e?.map(e=>e.id===t.id?t:e))}function Sn(e,t={}){if(t.assistantReplyStarted===!0||e.turns.some(e=>e.items.some(e=>e.type===`message`&&e.role===`assistant`))){if(e.title!==`新聊天`)return e.title;for(let t of e.turns)for(let e of t.items){if(e.type!==`message`||e.role!==`user`)continue;let t=e.text.trim().split(/\r?\n/u)[0]?.trim();if(t)return t;let n=e.skills?.[0]?.name;if(n!==void 0)return n;let r=e.attachments?.[0]?.name;if(r!==void 0)return r}return L.t(`taskTitle.replying`,{ns:`conversation`})}}function Cn(e,t,n={}){if(e===void 0)return;let r=e.pages.map(e=>{let r=wn(e.data,t,n);return r===e.data?e:{...e,data:r}});return r.some((t,n)=>t!==e.pages[n])?{...e,pages:r}:e}function wn(e,t,n={}){let r=Sn(t,n);if(r===void 0)return e;let i=e.findIndex(e=>e.id===t.id&&e.projectId===t.projectId&&e.title===`新聊天`);return i<0?e:e.map((e,n)=>n===i?{...e,title:r,updatedAt:t.updatedAt}:e)}function Tn(e,t,n){e.setQueryData([`projects`,t.projectId,`tasks`],e=>Cn(e,t,n));for(let r of[Ft,It])e.setQueryData([`projects`,t.projectId,`tasks`,r],e=>e===void 0?void 0:wn(e,t,n))}function En(e,t){if(e!==void 0)return{...e,pages:e.pages.map(e=>({...e,data:e.data.filter(e=>e.id!==t)}))}}async function Dn(e,t,n,r){let i=new Map,a=new Set,o;for(;;){let s={...o===void 0?{}:{cursor:o},limit:100,...n},c=r===void 0?await t.listTasks(e,s):await t.listTasks(e,s,{signal:r});for(let e of c.data)i.has(e.id)||i.set(e.id,e);if(c.nextCursor===null||a.has(c.nextCursor))return[...i.values()];a.add(c.nextCursor),o=c.nextCursor}}function On(e,t,n){return Dn(e,t,{},n)}function kn(e,t,n){return Dn(e,t,{pinned:!0},n)}function An(e,t=B){return o({queryFn:({signal:n})=>kn(e,t,n),queryKey:[`projects`,e,`tasks`,Ft]})}function jn(e,t,n=B){return o({enabled:t,queryFn:({signal:t})=>On(e,n,t),queryKey:[`projects`,e,`tasks`,It]})}async function Mn(e,t,n){let r=[`projects`,t,`tasks`];e.setQueryData(r,e=>En(e,n)),e.setQueryData([...r,Ft],e=>e?.filter(e=>e.id!==n)),e.setQueryData([...r,It],e=>e?.filter(e=>e.id!==n)),await e.invalidateQueries({exact:!0,queryKey:r})}function Nn(e,t){if(e===void 0||e.data.length!==t.length||new Set(t).size!==t.length)return;let n=new Map(e.data.map(e=>[e.id,e])),r=t.flatMap(e=>{let t=n.get(e);return t===void 0?[]:[t]});if(r.length===e.data.length)return{...e,data:r}}function Pn(e=B){return h({mutationFn:({pinned:t,projectId:n,taskId:r})=>e.pinTask(n,r,t),mutationKey:[`tasks`,`pin`]})}function Fn(e=B){return h({mutationFn:({projectId:t,taskId:n,title:r})=>e.renameTask(t,n,r),mutationKey:[`tasks`,`rename`]})}function In(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.archiveTask(t,n),mutationKey:[`tasks`,`archive`]})}function Ln(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.unarchiveTask(t,n),mutationKey:[`tasks`,`unarchive`]})}function Rn(e=B){return h({mutationFn:({projectId:t,taskId:n})=>e.deleteTask(t,n),mutationKey:[`tasks`,`delete`]})}function zn(e=B){return h({mutationFn:({name:t,projectId:n})=>e.renameProject(n,t),mutationKey:[`projects`,`rename`],scope:{id:`projects:actions`}})}function Bn(e=B){return h({mutationFn:t=>e.removeProject(t),mutationKey:[`projects`,`remove`],scope:{id:`projects:actions`}})}function Vn(e=B){return o({queryFn:({signal:t})=>e.getCapabilities({signal:t}),queryKey:[`capabilities`]})}function Hn(e=B){return o({queryFn:({signal:t})=>e.listModels({signal:t}),queryKey:[`models`],staleTime:5*6e4})}function Un(e=B){return o({queryFn:({signal:t})=>e.getGlobalSettings({signal:t}),queryKey:[`settings`]})}function Wn(e=B){return h({mutationFn:t=>e.updateGlobalSettings(t),mutationKey:[`settings`,`update`],scope:{id:`global-settings`}})}function Gn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.getProjectOpenCapabilities(e,{signal:n}),queryKey:[`projects`,e,`open-capabilities`],staleTime:6e4})}function Kn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.listSkills(e,{signal:n}),queryKey:[`projects`,e,`skills`]})}function qn(e,t,n=B,r=!0){return o({enabled:r&&t!==void 0,queryFn:async({signal:r})=>t===void 0?{data:[]}:n.listMcpServers(e,t,{signal:r}),queryKey:[`projects`,e,`tasks`,t??null,`mcp-servers`]})}function Jn(e,t,n=B){return h({mutationFn:async()=>{if(t===void 0)throw Error(`Cannot reload MCP servers without a task`);return n.retryMcpServers(e,t)},mutationKey:[`projects`,e,`tasks`,t??null,`mcp-servers`,`reload`],scope:{id:`task-mcp:${e}:${t??`none`}`}})}function Yn(e,t=B,n=!0){return o({enabled:n,queryFn:({signal:n})=>t.getProjectDefaults(e,{signal:n}),queryKey:[`projects`,e,`defaults`]})}function Xn(e,t=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:n=>t.updateProjectDefaults(e,n),mutationKey:[`projects`,e,`defaults`,`update`],scope:{id:`project-defaults:${e}`}})}function Zn(e,t,n=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:r=>n.updateTaskSettings(e,t,r),mutationKey:[`projects`,e,`tasks`,t,`settings`,`update`],scope:{id:`task-settings:${e}:${t}`}})}function Qn(e=B){return o({queryFn:({signal:t})=>e.listProjects({signal:t}),queryKey:[`projects`]})}function $n(e=B){return h({mutationFn:t=>e.reorderProjects(t),mutationKey:[`projects`,`reorder`],scope:{id:`projects:reorder`}})}function er(e,t,n=B,r=!0){return o({enabled:r,queryFn:({signal:r})=>n.getProjectGitStatus(e,{rootPath:t},{signal:r}),queryKey:[`projects`,e,t,`git-status`],retry:1})}function tr(e,t,n,r,i,a=B){return o({enabled:i,queryFn:({signal:r})=>a.getProjectGitStatus(e,{includeDiff:!0,rootPath:t,...n===null?{}:{repository:n}},{signal:r}),queryKey:[`projects`,e,t,`git-status-detail`,n,r],retry:1})}function nr(e,t,n,r,i=B){return o({enabled:r&&n!==null,queryFn:({signal:r})=>n===null?Promise.reject(Error(`Git repository is not selected`)):i.getProjectGitStatus(e,{includeDiff:!0,repository:n,rootPath:t},{signal:r}),queryKey:[`projects`,e,t,`git-status`,n],retry:1})}function rr(e,t,n,r,i=B){return f({enabled:r,getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:r,signal:a})=>i.getProjectGitHistory(e,{...r===void 0?{}:{cursor:r},...n===void 0?{}:{repository:n},rootPath:t},{signal:a}),queryKey:[`projects`,e,t,`git-history`,n??null]})}function ir(e,t,n,r,i,a=B){return f({enabled:i,getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:i,signal:o})=>a.getProjectGitCommitFiles(e,{...i===void 0?{}:{cursor:i},...n===void 0?{}:{repository:n},rootPath:t,sha:r},{signal:o}),queryKey:[`projects`,e,t,`git-commit-files`,n??null,r]})}function ar(e,t,n,r,i,a,s=B){return o({enabled:a,gcTime:3e4,queryFn:({signal:a})=>s.getProjectGitCommitFileDiff(e,{path:i,...n===void 0?{}:{repository:n},rootPath:t,sha:r},{signal:a}),queryKey:[`projects`,e,t,`git-commit-diff`,n??null,r,i],staleTime:1/0})}function or(e,t,n=B){return h({meta:{actionNotification:{successMessage:!1}},mutationFn:r=>n.generateCommitMessage(e,t,r),mutationKey:[`projects`,e,t,`git`,`commit-message`],scope:{id:`project-git-message:${e}:${t}`}})}function sr(e,t,n=B){return h({mutationFn:r=>n.commitProjectChanges(e,t,r),mutationKey:[`projects`,e,t,`git`,`commit`],scope:{id:`project-git-mutation:${e}:${t}`}})}function cr(e,t,n,r=B,i=!0){return o({enabled:i,queryFn:({signal:i})=>r.listProjectFiles(e,t,n,{signal:i}),queryKey:[`projects`,e,t,`file-tree`,n],staleTime:3e4})}function lr(e,t,n,r=B){return o({queryFn:({signal:i})=>r.listTasks(e,{archived:!0,...t===void 0?{}:{cursor:t},limit:20,...n.length===0?{}:{searchTerm:n}},{signal:i}),queryKey:[`projects`,e,`archived-tasks`,n,t??null],refetchOnMount:`always`})}function ur(e,t=B){return f({getNextPageParam:e=>Object.values(e.cursors).some(e=>e!==null)?e.cursors:void 0,initialPageParam:void 0,queryFn:async({pageParam:n,signal:r})=>{let i=e.filter(e=>n===void 0||n[e]!==null),a=Math.max(1,Math.ceil(10/Math.max(1,i.length))),o=await Promise.all(i.map(async e=>({page:await t.listTasks(e,{completed:!0,...typeof n?.[e]==`string`?{cursor:n[e]}:{},limit:a},{signal:r}),projectId:e}))),s={...n??{}};for(let{page:e,projectId:t}of o)s[t]=e.nextCursor;return{cursors:s,data:o.flatMap(({page:e})=>e.data).sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}},queryKey:[...Lt,e]})}function dr(e,t=B){return f({getNextPageParam:(e,t,n)=>e.nextCursor===null||e.nextCursor===n?void 0:e.nextCursor,initialPageParam:void 0,queryFn:({pageParam:n,signal:r})=>t.listTasks(e,{...n===void 0?{}:{cursor:n},limit:5},{signal:r}),queryKey:[`projects`,e,`tasks`]})}function fr(e,t,n=B){return o({gcTime:Rt,queryFn:({signal:r})=>n.readTask(e,t,{signal:r}),queryKey:[`projects`,e,`tasks`,t]})}var pr=[],mr={error:null,hasNextPage:!1,isFetchingNextPage:!1,isPending:!0};async function hr(e,t){await e.get(t)?.fetchNextPage()}var gr=(0,z.createContext)(void 0),_r=(0,z.createContext)(void 0),vr=(0,z.createContext)(void 0),yr=(0,z.createContext)(void 0);function br({client:e,onRemove:t,onUpdate:n,projectId:r}){let i=b(dr(r,e)),a=(0,z.useMemo)(()=>gn(i.data),[i.data]);return(0,z.useEffect)(()=>{n(r,{controller:{fetchNextPage:i.fetchNextPage},state:{error:i.error,hasNextPage:i.hasNextPage,isFetchingNextPage:i.isFetchingNextPage,isPending:i.isPending},tasks:a})},[n,r,i.error,i.fetchNextPage,i.hasNextPage,i.isFetchingNextPage,i.isPending,a]),(0,z.useEffect)(()=>()=>{t(r)},[t,r]),null}function xr(e,t){let n=e.flatMap(e=>t.get(e)?.tasks??pr);return{projectTaskStates:new Map(e.map(e=>[e,t.get(e)?.state??mr])),tasks:n}}function Sr(){let e=(0,z.useContext)(gr);if(e===void 0)throw Error(`useProjectData must be used inside ProjectProvider`);return e}function Cr(){let e=(0,z.useContext)(_r);if(e===void 0)throw Error(`useProjectActions must be used inside ProjectProvider`);return e}function wr(){let e=(0,z.useContext)(vr);if(e===void 0)throw Error(`useProjectActivity must be used inside ProjectProvider`);return e}function Tr(){let e=(0,z.useContext)(yr);if(e===void 0)throw Error(`useProjectRootSelection must be used inside ProjectProvider`);return e}function Er(e){let{client:t,projects:n}=Sr(),r=e.length>0,i=y({queries:[O,...n.map(e=>e.id)].map(e=>jn(e,r,t))}),a=r&&i.some(e=>e.isPending),o=i.find(e=>e.error!==null)?.error??null;return{error:o,isPending:a,tasks:a||o!==null?pr:i.flatMap(e=>e.data??pr).filter(t=>t.title.toLocaleLowerCase().includes(e))}}function Dr(e){let{client:t,projects:n}=Sr(),r=b(ur((0,z.useMemo)(()=>e===null?[O,...n.map(e=>e.id)]:[e],[e,n]),t)),i=(0,z.useMemo)(()=>{let e=new Map;for(let t of r.data?.pages??[])for(let n of t.data)e.set(`${n.projectId}\u0000${n.id}`,n);return[...e.values()].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))},[r.data]);return{error:r.error,fetchNextPage:r.fetchNextPage,hasNextPage:r.hasNextPage,isFetchingNextPage:r.isFetchingNextPage,isPending:r.isPending,refetch:r.refetch,tasks:i}}function Or(){let{client:e,projects:t}=Sr(),n=y({queries:[O,...t.map(e=>e.id)].map(t=>An(t,e))});return{error:n.find(e=>e.error!==null)?.error??null,isPending:n.some(e=>e.isPending),tasks:n.flatMap(e=>e.data??pr)}}function kr(){let e=!1;return{async run(t){if(!e){e=!0;try{return await t()}finally{e=!1}}}}}function Ar(e){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:`Unknown internal error`}function V(e,t,n={}){console.warn(`Codexly internal warning`,{diagnosticCode:e,errorMessage:Ar(t),...n})}var jr=256;function Mr(){if(globalThis.Notification===void 0)return;let e=globalThis.Notification;return{getPermission:()=>e.permission,requestPermission:()=>e.requestPermission(),show(t,n){let r=new e(t,n);return{addClickListener(e){r.addEventListener(`click`,e)},close(){r.close()}}}}}function Nr(e){return`${e.taskId}:${e.turnId}`}function Pr(e,t){switch(t.type){case`turn.completed`:{let n=t.payload.turn.status===`completed`?L.t(`notification.completed`,{ns:`conversation`}):t.payload.turn.status===`interrupted`?L.t(`notification.interrupted`,{ns:`conversation`}):t.payload.turn.status===`failed`?L.t(`notification.failed`,{ns:`conversation`}):void 0;return n===void 0?void 0:{body:n,tag:`${e}:${t.taskId}:${t.turnId}:terminal`}}case`provider.error`:return t.payload.willRetry?void 0:{body:L.t(`notification.failedWithMessage`,{message:t.payload.message,ns:`conversation`}),tag:`${e}:${t.taskId}:${t.turnId}:terminal`};case`pending_request.created`:return{body:t.payload.request.type===`user_input`?L.t(`notification.waitingInput`,{ns:`conversation`}):L.t(`notification.waitingApproval`,{ns:`conversation`}),tag:`${e}:${t.taskId}:${t.payload.request.requestId}:request`};default:return}}var Fr=class{#e;#t=new Set;#n;#r;#i;#a;#o;constructor(e){this.#e=e.api,this.#n=e.focusPage??(()=>{globalThis.window.focus()}),this.#r=e.isEnabled??(()=>!0),this.#i=e.isPageForeground??(()=>globalThis.document.visibilityState===`visible`&&globalThis.document.hasFocus()),this.#a=e.navigateToTask??(()=>void 0)}notify(e,t,n){if(!this.#r()||this.#e?.getPermission()!==`granted`||this.#i())return;if(t.type===`provider.error`&&!t.payload.willRetry){let e=Nr(t);if(this.#t.has(e))return;if(this.#t.size>=jr){let e=this.#t.values().next().value;e!==void 0&&this.#t.delete(e)}this.#t.add(e)}else if(t.type===`turn.completed`&&this.#t.delete(Nr(t)))return;let r=Pr(e,t);if(r!==void 0)try{let i=n.trim()||`Task`,a=this.#e.show(`Codexly · ${i}`,{body:r.body,data:{projectId:e,taskId:t.taskId},tag:r.tag});a.addClickListener(()=>{a.close(),this.#n(),this.#a(e,t.taskId)})}catch(n){V(`browser_notification_show_failed`,n,{projectId:e,taskId:t.taskId})}}requestPermission(){if(!this.#r()||this.#e===void 0)return Promise.resolve();if(this.#o!==void 0)return this.#o;let e;try{if(this.#e.getPermission()!=="default")return Promise.resolve();e=this.#e.requestPermission()}catch(e){return V(`notification_permission_failed`,e),Promise.resolve()}return this.#o=e.then(()=>void 0).catch(e=>{V(`notification_permission_failed`,e)}).finally(()=>{this.#o=void 0}),this.#o}};function Ir(e={}){return new Fr({...e,api:e.api??Mr()})}var Lr={attention:null,isAwaitingApproval:!1,isRunning:!1};function Rr(e,t){return`${e}\u0000${t}`}function zr(e){return e.type===`command_approval`||e.type===`file_change_approval`||e.type===`permissions_approval`||e.type===`mcp_elicitation`}function Br(e){return new Set(e.filter(e=>e.status===`pending`&&zr(e)).map(e=>e.requestId))}function Vr(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Hr(e,t,n,r){let i=Rr(t,n),a=e.get(i);if(a?.attention===r.attention&&a.isRunning===r.isRunning&&a.startedAt===r.startedAt&&a.taskName===r.taskName&&Vr(a.pendingApprovalRequestIds,r.pendingApprovalRequestIds))return e;let o=new Map(e);return o.set(i,r),o}function Ur(e,t,n){let r=e.get(Rr(t,n));return Hr(e,t,n,{attention:null,isRunning:!0,pendingApprovalRequestIds:r?.pendingApprovalRequestIds??new Set,projectId:t,...r?.startedAt===void 0?{startedAt:new Date().toISOString()}:{startedAt:r.startedAt},taskId:n,taskName:r?.taskName??n})}function Wr(e){let t=[];for(let n of e.values())!n.isRunning&&n.pendingApprovalRequestIds.size===0||t.push({id:n.taskId,projectId:n.projectId,...n.startedAt===void 0?{}:{startedAt:n.startedAt},status:n.pendingApprovalRequestIds.size>0?`approval`:`running`,title:n.taskName??n.taskId});return t}function Gr(e,t,n){let r=e.get(Rr(t,n));return r===void 0?Lr:{attention:r.attention,isAwaitingApproval:r.pendingApprovalRequestIds.size>0,isRunning:r.isRunning}}function Kr(e,t,n){let r=e.get(Rr(t,n));return r?.attention===void 0||r.attention===null?e:Hr(e,t,n,{...r,attention:null})}function qr(e,t){for(let n of e.values())if(n.projectId===t&&(n.isRunning||n.pendingApprovalRequestIds.size>0))return!0;return!1}function Jr(e,t){let n=[];for(let r of e.values())r.projectId===t&&(r.isRunning||r.pendingApprovalRequestIds.size>0)&&n.push(r.taskId);return n}function Yr(e,t,n){let r=Rr(t,n);if(!e.has(r))return e;let i=new Map(e);return i.delete(r),i}function Xr(e,t,n=!1){let r=e.get(Rr(t.projectId,t.id)),i=Br(t.pendingRequests),a=t.turns.findLast(e=>e.status===`running`),o=n?null:i.size>0?`approval`:t.status===`running`?null:r?.attention===`completed`||r?.attention===`failed`?r.attention:null;return Hr(e,t.projectId,t.id,{attention:o,isRunning:t.status===`running`,pendingApprovalRequestIds:i,projectId:t.projectId,...typeof a?.startedAt==`string`?{startedAt:a.startedAt}:r?.startedAt===void 0?{}:{startedAt:r.startedAt},taskId:t.id,taskName:t.title})}function Zr(e,t,n,r=!1){let i=Rr(t,n.taskId),a=e.get(i)??{attention:null,isRunning:!1,pendingApprovalRequestIds:new Set,projectId:t,taskId:n.taskId,taskName:n.taskId},o=a.attention,s=a.isRunning,c=a.pendingApprovalRequestIds;switch(n.type){case`turn.started`:o=null,s=!0;break;case`task.status_updated`:s=n.payload.status===`running`,s&&(o=null);break;case`turn.completed`:o=r?null:n.payload.turn.status===`failed`||n.payload.turn.status===`interrupted`?`failed`:`completed`,s=!1,c=new Set;break;case`provider.error`:n.payload.willRetry||(o=r?null:`failed`,s=!1,c=new Set);break;case`pending_request.created`:zr(n.payload.request)&&(o=r?null:`approval`,c=new Set(c).add(n.payload.request.requestId));break;case`pending_request.resolved`:case`pending_request.expired`:if(c.has(n.payload.request.requestId)){let e=new Set(c);e.delete(n.payload.request.requestId),c=e,e.size===0&&o===`approval`&&(o=null)}break;default:return e}return Hr(e,t,n.taskId,{attention:o,isRunning:s,pendingApprovalRequestIds:c,projectId:t,...n.type===`turn.started`?typeof n.payload.turn.startedAt==`string`?{startedAt:n.payload.turn.startedAt}:{}:a.startedAt===void 0?{}:{startedAt:a.startedAt},taskId:n.taskId,...a.taskName===void 0?{}:{taskName:a.taskName}})}var Qr=new TextEncoder,$r=32,ei=8,ti=48,ni=16,ri=16;function ii(e){return Qr.encode(e).byteLength}function H(e){let t=new WeakSet;function n(e){if(e==null)return 8;if(typeof e==`string`)return ri+ii(e);if(typeof e==`number`||typeof e==`bigint`)return 8;if(typeof e==`boolean`)return 4;if(typeof e==`symbol`||typeof e==`function`)return 16;if(t.has(e))return 0;if(t.add(e),Array.isArray(e)){let t=$r+e.length*ei;for(let r of e)t+=n(r);return t}let r=ti;for(let[t,i]of Object.entries(e))r+=ni+ii(t)+n(i);return r}return n(e)}var ai=class{#e=new Map;#t;#n;#r;#i;#a=0;constructor(e){if(!Number.isSafeInteger(e.maxBytes)||e.maxBytes<0)throw RangeError(`Byte LRU maxBytes must be a non-negative safe integer`);let t=e.maxEntries??2**53-1;if(!Number.isSafeInteger(t)||t<0)throw RangeError(`Byte LRU maxEntries must be a non-negative safe integer`);this.#t=e.getRetainedBytes,this.#n=e.maxBytes,this.#r=t,this.#i=e.onEvict}get retainedBytes(){return this.#a}get size(){return this.#e.size}delete(e){let t=this.#e.get(e);return t===void 0?!1:(this.#e.delete(e),this.#a-=t.retainedBytes,!0)}get(e){let t=this.#e.get(e);if(t!==void 0)return this.#e.delete(e),this.#e.set(e,t),t.value}peek(e){return this.#e.get(e)?.value}set(e,t){let n=this.#t(e,t);if(!Number.isSafeInteger(n)||n<0)throw RangeError(`Byte LRU entry size must be a non-negative safe integer`);let r=this.#e.get(e);return r!==void 0&&(this.#e.delete(e),this.#a-=r.retainedBytes,this.#i?.(e,r.value,`replaced`)),n>this.#n||this.#r===0?!1:(this.#e.set(e,{retainedBytes:n,value:t}),this.#a+=n,this.#o(),this.#e.has(e))}#o(){for(;this.#e.size>this.#r||this.#a>this.#n;){let e=this.#e.entries().next().value;if(e===void 0)return;let[t,n]=e;this.#e.delete(t),this.#a-=n.retainedBytes,this.#i?.(t,n.value,this.#e.size>=this.#r?`entries`:`bytes`)}}},oi=1e3,si=3e4,ci=class{#e=0;#t;#n=0;#r;#i;#a=0;#o=0;constructor(e){if(!Number.isSafeInteger(e.maxBytes)||e.maxBytes<0)throw RangeError(`Project Event history maxBytes must be non-negative`);if(!Number.isSafeInteger(e.maxEvents)||e.maxEvents<0)throw RangeError(`Project Event history maxEvents must be non-negative`);this.#r=e.maxBytes,this.#i=e.maxEvents,this.#t=Array(e.maxEvents)}get floorSequence(){return this.#n}append(e){let t=H(e);if(t>this.#r||this.#i===0){this.reset(e.sequence);return}this.#e===this.#i&&this.#s();let n=(this.#o+this.#e)%this.#i;for(this.#t[n]={event:e,retainedBytes:t},this.#e+=1,this.#a+=t;this.#a>this.#r;)this.#s()}forEachAfter(e,t){for(let n=0;n<this.#e;n+=1){let r=this.#t[(this.#o+n)%this.#i];r!==void 0&&r.event.sequence>e&&t(r.event)}}reset(e=this.#n){this.#t=Array(this.#i),this.#e=0,this.#n=e,this.#a=0,this.#o=0}#s(){let e=this.#t[this.#o];e!==void 0&&(this.#t[this.#o]=void 0,this.#o=(this.#o+1)%this.#i,--this.#e,this.#a-=e.retainedBytes,this.#n=e.event.sequence)}};function li(e){return e.type===`message.delta`||e.type===`plan.delta`||e.type===`reasoning.delta`||e.type===`command.output_delta`}function ui(e,t){return`${e}\u0000${t}`}function di(e,t,n){return`${ui(e,t)}\u0000${n}`}var fi=1048576,pi=1e3,mi=new TextEncoder;function hi(e){let t=e.items.map(e=>{if(e.type!==`message`||e.role!==`user`||(e.skills?.length??0)===0)return e;let t=D(e.text,e.skills??[]);return t===e.text?e:{...e,text:t}});return t.some((t,n)=>t!==e.items[n])?{...e,items:t}:e}function gi(e,t,n){let r=hi(t),i=r.items.find(e=>e.type===`message`&&e.role===`user`);if(n.text.length===0&&n.skills.length===0&&n.attachments.length===0&&i===void 0)return e;let a=e.turns.findIndex(e=>e.id===r.id),o=e.turns[a],s=hi(o??r),c=s.items.findIndex(e=>e.type===`message`&&e.role===`user`),l=s.items[c],u=c>=0;if(a>=0&&l?.type===`message`){if((l.attachments?.length??0)>0||(n.messageAttachments?.length??0)===0){if(s===o)return e;let t=[...e.turns];return t[a]=s,{...e,turns:t}}let t=[...e.turns],r=[...s.items];return r[c]={...l,attachments:[...n.messageAttachments??[]],...n.text.length===0?{text:``}:{}},t[a]={...s,items:r},{...e,turns:t}}let d=u?s:{...s,items:[i??{id:`submitted-user-${t.id}`,role:`user`,...n.skills.length===0?{}:{skills:n.skills.map(e=>({name:e.name}))},...(n.messageAttachments?.length??0)===0?{}:{attachments:[...n.messageAttachments??[]]},text:n.text,type:`message`},...s.items]};if(a<0)return{...e,status:`running`,turns:[...e.turns,d]};let f=[...e.turns];return f[a]=d,{...e,turns:f}}function _i(e){return e.type===`message.delta`||e.type===`plan.delta`||e.type===`reasoning.delta`||e.type===`command.output_delta`}function vi(e){let t=e.type===`reasoning.delta`?`${e.payload.field}:${String(e.payload.sectionIndex??-1)}`:`value`;return`${e.taskId}:${e.turnId}:${e.itemId}:${e.type}:${t}`}var yi=class{#e;#t;#n=[];#r=0;constructor(e={}){if(this.#e=e.maxBytes??fi,this.#t=e.maxEvents??pi,!Number.isInteger(this.#e)||this.#e<=0)throw RangeError(`Agent Event buffer maxBytes must be a positive integer`);if(!Number.isInteger(this.#t)||this.#t<=0)throw RangeError(`Agent Event buffer maxEvents must be a positive integer`)}push(e){if(!_i(e))throw TypeError(`Only Agent Event deltas can be buffered`);let t=vi(e),n=this.#n.at(-1),r=n?.event,i=r!==void 0&&vi(r)===t,a=mi.encode(e.payload.delta).byteLength;return this.#n.length+ +!i>this.#t||this.#r+a>this.#e?(this.#n.length=0,this.#r=0,!1):(this.#r+=a,i?(this.#n[this.#n.length-1]={event:{...e,payload:{...e.payload,delta:`${r.payload.delta}${e.payload.delta}`}},retainedBytes:(n?.retainedBytes??0)+a},!0):(this.#n.push({event:e,retainedBytes:a}),!0))}drain(){return this.flushThrough(1/0)}flushThrough(e){let t=this.#n.findIndex(({event:t})=>t.sequence>=e),n=t<0?this.#n.length:t,r=this.#n.splice(0,n);for(let e of r)this.#r-=e.retainedBytes;return r.map(({event:e})=>e)}},bi=4,xi=class{#e;#t=new Set;#n;#r=!1;#i=0;#a=!1;#o;constructor(e,t){this.#n=e,this.#e=t}dispose(){this.#r=!0,this.#t.clear(),this.#s()}forgetTask(e){this.#t.delete(e),this.#c()}markRecovered(e){this.#t.delete(e),this.#c()}requestRecovery(e){if(!this.#r){for(let t of e)t.length>0&&this.#t.add(t);this.#t.size>0&&!this.#a&&this.#o===void 0&&this.#u()}}#s(){this.#o!==void 0&&(clearTimeout(this.#o),this.#o=void 0)}#c(){this.#t.size>0||this.#a||(this.#s(),this.#i=0)}#l(){if(this.#r||this.#t.size===0){this.#c();return}let e=Math.min(oi*2**this.#i,si);this.#i+=1,this.#o=setTimeout(()=>{this.#o=void 0,this.#u()},e)}#u(){if(this.#r||this.#a||this.#t.size===0)return;this.#a=!0;let e=[...this.#t],t=0,n=async()=>{for(;!this.#r;){let n=e[t];if(t+=1,n===void 0)return;if(!this.#t.has(n))continue;let r;try{r=await this.#n(n)}catch(e){V(`snapshot_recovery_failed`,e);continue}if(!(r===void 0||!this.#t.delete(n)))try{this.#e(n,r)}catch(e){this.#t.add(n),V(`snapshot_recovery_failed`,e)}}},r=Math.min(bi,e.length);Promise.all(Array.from({length:r},n)).then(()=>{if(this.#a=!1,!this.#r){if(this.#t.size===0){this.#i=0;return}this.#l()}})}},Si=class{#e;#t;#n;#r=0;#i=0;#a=`ready`;#o;constructor(e,t,n=()=>void 0){this.#n=e,this.#e=t,this.#t=n}get isReady(){return this.#a===`ready`}dispose(){this.#a=`disposed`,this.#i+=1,this.#s()}requestRecovery(){this.#a===`ready`&&this.#l()}reset(){this.#a!==`disposed`&&(this.#s(),this.#r=0,this.#i+=1,this.#a=`ready`)}#s(){this.#o!==void 0&&(clearTimeout(this.#o),this.#o=void 0)}#c(){if(this.#a===`disposed`)return;this.#a=`waiting_to_retry`;let e=Math.min(oi*2**this.#r,si);this.#r+=1,this.#o=setTimeout(()=>{this.#o=void 0,this.#l()},e)}#l(){if(this.#a===`disposed`)return;this.#a=`recovering`,this.#t();let e=this.#i,t;try{t=Promise.resolve(this.#n())}catch(t){V(`snapshot_recovery_failed`,t),e===this.#i&&this.#c();return}t.then(t=>{if(!(this.#a!==`recovering`||e!==this.#i)){if(t===void 0){this.#c();return}this.#e(t)}}).catch(t=>{V(`snapshot_recovery_failed`,t),this.#a===`recovering`&&e===this.#i&&this.#c()})}},Ci=class{#e=new yi;#t;#n=new Set;#r;#i;#a;constructor(e,t,n){this.#i=e,this.#n.add(t),this.#t=n,this.#r=new Si(async()=>this.#n.values().next().value?.(),e=>{this.#t(e,this)},()=>{this.#i.getState().setConnectionState(`reconnecting`)})}get sessionId(){return this.#i.getState().checkpoint?.sessionId}get taskId(){return this.#i.getState().taskId}addConsumer(e){this.#n.add(e)}removeConsumer(e){return this.#n.delete(e),this.#n.size}resetForSnapshot(){this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain(),this.#r.reset()}apply(e){if(this.#r.isReady){if(li(e)){if(this.#a===void 0){this.#a=requestAnimationFrame(()=>{this.#a=void 0;let e=this.#e.drain();e.length>0&&this.#i.getState().applyEvents(e)}),this.#i.getState().applyEvents([e]);return}if(!this.#e.push(e)){this.requestRecovery();return}return}this.#o(e.sequence),this.#i.getState().applyEvents([e])}}dispose(){this.#r.dispose(),this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain()}requestRecovery(){this.#r.isReady&&(this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#e.drain(),this.#r.requestRecovery())}setConnectionState(e){let t=e===`connected`&&!this.#r.isReady?`reconnecting`:e;this.#i.getState().setConnectionState(t),t===`connected`&&this.#i.getState().setError(null)}#o(e){this.#a!==void 0&&(cancelAnimationFrame(this.#a),this.#a=void 0),this.#i.getState().applyEvents(this.#e.flushThrough(e))}},wi=1e3,Ti=3e4,Ei=class{#e;#t=new Map;#n;#r;#i=!1;constructor(e,t,n){this.#e=t,this.#n=n,this.#r=e}cancel(e){let t=this.#t.get(e);t?.timer!==void 0&&clearTimeout(t.timer),this.#t.delete(e)}dispose(){this.#i=!0;for(let e of this.#t.keys())this.cancel(e)}request(e){if(this.#i||this.#t.has(e))return;let t={attempt:0,timer:void 0};this.#t.set(e,t),this.#a(e,t)}async#a(e,t){try{let n=await this.#e.unsubscribeTask(this.#r,e);if(this.#i||this.#t.get(e)!==t)return;if(n.status!==`busy`){this.#t.delete(e);return}let r=Math.min(wi*2**t.attempt,Ti);t.attempt+=1,t.timer=setTimeout(()=>{t.timer=void 0,this.#a(e,t)},r)}catch(n){this.#t.get(e)===t&&(this.#t.delete(e),this.#n(n,e))}}},Di=class{#e;#t;#n;#r;#i;#a;#o;#s=new Map;#c;#l=`closed`;#u=!1;#d;#f=Date.now();#p=0;#m;#h=!1;constructor(e,t,n,r){this.#i=e,this.#t=t,this.#e=n,this.#r=r.idleTimeoutMs,this.#n=new ci({maxBytes:r.maxEventHistoryBytes,maxEvents:r.maxEventHistoryEvents}),this.#a=new xi(async e=>this.#t.readTask(this.#i,e),(e,t)=>{this.#e.onSnapshot(t)}),this.#o=new Ei(e,t,(t,n)=>{V(`task_unsubscribe_failed`,t,{projectId:e,taskId:n})})}attachTaskStore(e,t,n){this.#_(e),this.#o.cancel(e.snapshot.id);let r=t.getState();if(r.projectId!==this.#i||r.taskId!==e.snapshot.id)throw Error(`Task store identity does not match the Project Runtime snapshot`);this.#D(),r.reconcile(e);let i=this.#s.get(t);i===void 0?(i=new Ci(t,n,(e,n)=>{this.#S(e,t,n)}),this.#s.set(t,i)):i.addConsumer(n),i.resetForSnapshot(),i.setConnectionState(this.#l===`closed`?`connecting`:this.#l),this.observeSnapshot(e),this.#w(e.checkpoint,i);let a=!0;return()=>{if(!a)return;a=!1;let e=this.#s.get(t);e!==i||e.removeConsumer(n)>0||(e.dispose(),this.#s.delete(t),this.#o.request(t.getState().taskId),this.#D(),this.#C())}}dispose(){if(!this.#u){this.#u=!0,this.#y(),this.#a.dispose(),this.#o.dispose(),this.#E();for(let e of this.#s.values())e.dispose();this.#s.clear(),this.#v()}}forgetTask(e){this.#o.cancel(e),this.#a.forgetTask(e),this.#C()}markAccess(){this.#D(),this.#C()}observeSnapshot(e){this.#_(e),this.#a.markRecovered(e.snapshot.id),this.#h=!1,this.#D(),this.#b(e.checkpoint);for(let t of this.#s.values())t.sessionId===e.checkpoint.sessionId?t.setConnectionState(this.#l):t.requestRecovery();this.#C()}reconcileTaskSnapshot(e){this.#_(e);let t=[];for(let[n,r]of this.#s)n.getState().taskId===e.snapshot.id&&(n.getState().reconcile(e),r.resetForSnapshot(),t.push(r));this.observeSnapshot(e);for(let n of t)n.setConnectionState(this.#l),this.#w(e.checkpoint,n)}#g(e){this.#n.append(e)}#_(e){if(e.snapshot.projectId!==this.#i)throw Error(`Snapshot Project does not match the Project Runtime`)}#v(){this.#n.reset()}#y(){this.#d!==void 0&&(clearTimeout(this.#d),this.#d=void 0)}#b(e){if(this.#u||this.#c!==void 0&&this.#m===e.sessionId)return;this.#E(),this.#m=e.sessionId,this.#p=e.sequence,this.#n.reset(e.sequence);let t=this.#t.subscribeEvents({afterSequence:e.sequence,onConnectionState:e=>{this.#l=e,e===`reconnecting`&&(this.#h=!0);let t=e===`closed`&&this.#h?`reconnecting`:e;for(let e of this.#s.values())e.setConnectionState(t);e===`reconnecting`&&this.#T()},onError:e=>{V(`event_connection_failed`,e,{projectId:this.#i})},onEvent:e=>{this.#p=e.sequence,this.#g(e),this.#e.onActivityEvent(this.#i,e);for(let[t,n]of this.#s)t.getState().taskId===e.taskId&&n.apply(e);e.type===`turn.completed`&&!this.#x(e.taskId)&&this.#o.request(e.taskId),this.#C()},onResyncRequired:()=>{this.#h=!0,this.#E(),this.#l=`reconnecting`;for(let e of this.#s.values())e.setConnectionState(`reconnecting`);this.#T()},projectId:this.#i,sessionId:e.sessionId});this.#c=t}#x(e){for(let t of this.#s.keys())if(t.getState().taskId===e)return!0;return!1}#S(e,t,n){if(this.#s.get(t)!==n)return;this.#_(e);let r=t.getState();if(r.projectId!==this.#i||r.taskId!==e.snapshot.id)throw Error(`Task store identity does not match the recovered snapshot`);r.reconcile(e),n.resetForSnapshot(),this.#e.onSnapshot(e),this.#w(e.checkpoint,n)}#C(){if(this.#y(),this.#u||this.#c===void 0||this.#s.size>0||qr(this.#e.getTaskActivity(),this.#i))return;let e=this.#r-(Date.now()-this.#f);if(e<=0){this.dispose(),this.#e.onIdle(this);return}this.#d=setTimeout(()=>{this.#d=void 0,this.#C()},e)}#w(e,t){if(e.sessionId!==this.#m){t.requestRecovery();return}if(e.sequence<this.#n.floorSequence&&e.sequence<this.#p){t.requestRecovery();return}this.#n.forEachAfter(e.sequence,e=>{e.taskId===t.taskId&&t.apply(e)})}#T(){let e=new Set;for(let t of this.#s.values())e.add(t.taskId),t.requestRecovery();let t=Jr(this.#e.getTaskActivity(),this.#i).filter(t=>!e.has(t));this.#a.requestRecovery(t)}#E(){let e=this.#c;this.#c=void 0;try{e?.()}catch(e){V(`event_connection_cleanup_failed`,e,{projectId:this.#i})}this.#l=`closed`}#D(){this.#f=Date.now(),this.#y()}},Oi=class{#e=new Set;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d=new Map;#f;#p=new Map;#m=new Map;#h=new Map;#g=new Set;#_;client;constructor(e,t={}){if(this.client=e,this.#t=t.idleTimeoutMs??12e4,this.#n=t.maxEventHistoryBytes??4194304,this.#r=t.maxEventHistoryEvents??2048,this.#i=t.onMcpServerStatusChanged??(()=>void 0),this.#a=t.onProjectGitActivity??(()=>void 0),this.#o=t.onProjectGitMetadataChanged??(()=>void 0),this.#s=t.onQueueChanged??(()=>void 0),this.#c=t.onSkillsChanged??(()=>void 0),this.#l=t.onTaskRemoved??(()=>void 0),this.#u=t.onTaskMetadataChanged??(()=>void 0),this.#f=t.taskNotifier??Ir(),!Number.isSafeInteger(this.#t)||this.#t<0)throw RangeError(`Project Runtime idleTimeoutMs must be non-negative`);if(!Number.isSafeInteger(this.#n)||this.#n<0)throw RangeError(`Project Runtime maxEventHistoryBytes must be non-negative`);if(!Number.isSafeInteger(this.#r)||this.#r<0)throw RangeError(`Project Runtime maxEventHistoryEvents must be non-negative`)}attachTaskStore(e,t,n){return this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).attachTaskStore(e,t,n)}dispose(){for(let e of this.#d.values())e.dispose();this.#d.clear(),this.#e.clear(),this.#m.clear(),this.#h.clear(),this.#g.clear()}forgetTask(e,t){this.#y(Yr(this.#p,e,t)),this.#m.delete(ui(e,t)),this.#h.delete(ui(e,t)),this.#d.get(e)?.forgetTask(t)}forgetProject(e){this.#d.get(e)?.dispose(),this.#d.delete(e);let t=this.#p;for(let n of this.#p.values())n.projectId===e&&(t=Yr(t,e,n.taskId));this.#y(t);let n=`${e}\u0000`;for(let e of this.#m.keys())e.startsWith(n)&&this.#m.delete(e);for(let e of this.#h.keys())e.startsWith(n)&&this.#h.delete(e);for(let e of this.#g)e.startsWith(n)&&this.#g.delete(e);this.#_?.projectId===e&&(this.#_=void 0)}getTaskActivity(){return this.#p}markTaskRunning(e,t){this.#y(Ur(this.#p,e,t)),this.#a(e,t,`turn_started`),this.#d.get(e)?.markAccess()}observeSnapshot(e){this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).observeSnapshot(e)}requestNotificationPermission(){return this.#f.requestPermission().catch(e=>{V(`notification_permission_failed`,e)})}reconcileTaskSnapshot(e){this.#S(e.snapshot),this.#x(e),this.#v(e.snapshot.projectId).reconcileTaskSnapshot(e)}async refreshTaskSnapshot(e,t){let n=await this.client.readTask(e,t);return this.reconcileTaskSnapshot(n),n}rememberTaskTitles(e){for(let t of e)this.#S(t)}viewTask(e,t){this.#_=t===void 0?void 0:{projectId:e,taskId:t},t!==void 0&&this.#y(Kr(this.#p,e,t)),this.#d.get(e)?.markAccess()}subscribeTaskActivity(e){return this.#e.add(e),()=>{this.#e.delete(e)}}#v(e){let t=this.#d.get(e);return t===void 0?(t=new Di(e,this.client,{getTaskActivity:()=>this.#p,onActivityEvent:(e,t)=>{if(t.type===`project.git_metadata_changed`){this.#o(e,t.payload.rootPath);return}if(t.type===`skills.changed`?this.#c(e):t.type===`queue.changed`?this.#s(e,t.taskId):t.type===`task.metadata_changed`?this.#u(e,t.taskId,`native_notification`):t.type===`task.removed`?(this.#l(e,t.taskId),this.forgetTask(e,t.taskId)):t.type===`mcp_server.status_updated`?this.#i(e,t.taskId):t.type===`turn.started`?this.#a(e,t.taskId,`turn_started`):t.type===`item.completed`&&t.payload.item.type===`file_change`&&t.payload.item.status===`completed`&&this.#a(e,t.taskId,`file_changed`),t.type===`message.delta`){let n=di(e,t.taskId,t.turnId);if(!this.#g.has(n)){if(this.#g.add(n),this.#g.size>2048){let e=this.#g.values().next().value;e!==void 0&&this.#g.delete(e)}this.#u(e,t.taskId,`assistant_reply_started`)}}if(t.type===`turn.completed`){let n=di(e,t.taskId,t.turnId);this.#g.delete(n),this.#a(e,t.taskId,`turn_completed`),this.#u(e,t.taskId,`turn_completed`)}try{this.#f.notify(e,t,this.#h.get(ui(e,t.taskId))??`Task`)}catch(n){V(`task_notification_failed`,n,{projectId:e,taskId:t.taskId})}t.type!==`task.removed`&&this.#m.set(ui(e,t.taskId),{sequence:t.sequence,sessionId:t.sessionId}),this.#y(Zr(this.#p,e,t,this.#b(e,t.taskId)))},onIdle:t=>{this.#d.get(e)===t&&this.#d.delete(e)},onSnapshot:e=>{this.observeSnapshot(e)}},{idleTimeoutMs:this.#t,maxEventHistoryBytes:this.#n,maxEventHistoryEvents:this.#r}),this.#d.set(e,t),t):t}#y(e){if(e!==this.#p){this.#p=e;for(let e of this.#e)e()}}#b(e,t){return this.#_?.projectId===e&&this.#_.taskId===t}#x(e){let{checkpoint:t,snapshot:n}=e,r=ui(n.projectId,n.id),i=this.#m.get(r);if(i?.sessionId===t.sessionId&&i.sequence>t.sequence)return;this.#m.set(r,t);let a=Gr(this.#p,n.projectId,n.id).isRunning,o=n.status===`running`;o!==a&&this.#a(n.projectId,n.id,o?`turn_started`:`turn_completed`),this.#y(Xr(this.#p,n,this.#b(n.projectId,n.id)))}#S(e){let t=ui(e.projectId,e.id);if(this.#h.delete(t),this.#h.set(t,e.title),this.#h.size>2048){let e=this.#h.keys().next().value;e!==void 0&&this.#h.delete(e)}}};function ki(e,t={}){return new Oi(e,t)}var Ai=`actionNotification`;function ji(e){let t=e.meta?.[Ai];if(t===!1)return!1;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=`error`in t&&typeof t.error==`boolean`?t.error:void 0,r=`successMessage`in t&&(typeof t.successMessage==`string`||t.successMessage===!1)?t.successMessage:void 0;return{...n===void 0?{}:{error:n},...r===void 0?{}:{successMessage:r}}}function Mi(e){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:L.t(`app.actionFailed`,{ns:`common`})}function U(e){we.error(Mi(e))}function Ni(e=L.t(`app.actionSucceeded`,{ns:`common`})){we.success(e)}function Pi(){return new l({onError(e,t,n,r){let i=ji(r);i!==!1&&i?.error!==!1&&U(e)},onSuccess(e,t,n,r){let i=ji(r);i===!1||i?.successMessage===!1||Ni(i?.successMessage)}})}function Fi(){return typeof document>`u`||document.visibilityState===`visible`}var Ii=class{#e;#t;#n;#r;#i=new Map;#a;#o;#s;#c;#l=!1;constructor(e,t,n={}){this.#a=e,this.#e=t,this.#t=n.fileChangeDebounceMs??300,this.#n=n.isPageVisible??Fi,this.#r=n.pollIntervalMs??3e5,this.#o=n.random??Math.random,this.#s=n.retryBaseMs??1e3,this.#c=n.retryMaxMs??3e4}dispose(){if(!this.#l){this.#l=!0;for(let e of this.#i.values())this.#p(e);this.#i.clear()}}forgetProject(e){for(let[t,n]of this.#i)n.projectId===e&&(this.#p(n),this.#i.delete(t))}handleActivity(e,t,n,r){if(this.#l)return;let i=this.#h(e,t);if(r===`turn_started`){let e=i.activeTaskIds.size===0,t=i.consecutiveFailures>0||i.retryTimer!==void 0;if(i.activeTaskIds.add(n),i.isGitProject===!1)return;e||t?(this.#f(i),this.#v(i)):this.#m(i);return}if(r===`file_changed`){if(i.activeTaskIds.add(n),this.#f(i),i.isGitProject===!1)return;this.#y(i);return}if(i.activeTaskIds.delete(n),this.#u(i),this.#f(i),i.activeTaskIds.size===0&&this.#d(i),i.isGitProject===!1){i.activeTaskIds.size===0&&this.#i.delete(this.#g(i.projectId,i.rootPath));return}this.#v(i)}handleGitMetadataChanged(e,t){if(this.#l)return;let n=this.#h(e,t);this.#f(n),this.#y(n)}async refreshProject(e,t){if(this.#l)return;let n=this.#h(e,t);this.#f(n),await this.#_(n,`manual`)}#u(e){e.fileChangeTimer!==void 0&&(clearTimeout(e.fileChangeTimer),e.fileChangeTimer=void 0)}#d(e){e.pollingTimer!==void 0&&(clearInterval(e.pollingTimer),e.pollingTimer=void 0)}#f(e){e.retryTimer!==void 0&&(clearTimeout(e.retryTimer),e.retryTimer=void 0)}#p(e){e.closed=!0,e.refreshPending=void 0,this.#u(e),this.#d(e),this.#f(e)}#m(e){e.closed||e.isGitProject!==!0||e.consecutiveFailures>0||e.activeTaskIds.size===0||e.pollingTimer!==void 0||e.retryTimer!==void 0||(e.pollingTimer=setInterval(()=>{this.#n()&&this.#v(e)},this.#r))}#h(e,t){let n=this.#g(e,t),r=this.#i.get(n);if(r!==void 0)return r;let i={activeTaskIds:new Set,closed:!1,consecutiveFailures:0,fileChangeTimer:void 0,inFlight:void 0,isGitProject:void 0,pollingTimer:void 0,projectId:e,rootPath:t,refreshPending:void 0,retryTimer:void 0};return this.#i.set(n,i),i}#g(e,t){return`${e}\u0000${t}`}#_(e,t){if(e.closed||this.#l)return Promise.resolve();if(e.inFlight!==void 0)return e.refreshPending=t===`manual`||e.refreshPending===`manual`?`manual`:`background`,e.inFlight;let n=er(e.projectId,e.rootPath,this.#e),r=this.#e.getProjectGitStatus(e.projectId,{rootPath:e.rootPath}).then(t=>{this.#a.setQueryData(n.queryKey,t),e.consecutiveFailures=0,e.isGitProject=t.repositoryMode!==`none`,e.isGitProject||(this.#u(e),this.#d(e),this.#f(e))}).catch(t=>{throw e.consecutiveFailures+=1,this.#d(e),t}).finally(()=>{if(e.closed||this.#l)return;e.inFlight=void 0;let t=e.refreshPending;if(e.refreshPending=void 0,t!==void 0&&(t===`manual`||e.isGitProject!==!1)){this.#v(e,t);return}if(e.activeTaskIds.size>0){e.consecutiveFailures>0?e.isGitProject!==!1&&this.#b(e):this.#m(e);return}e.activeTaskIds.size===0&&e.fileChangeTimer===void 0&&this.#i.delete(this.#g(e.projectId,e.rootPath))});return e.inFlight=r,r}#v(e,t=`background`){this.#_(e,t).catch(t=>{V(`git_status_poll_failed`,t,{projectId:e.projectId,rootPath:e.rootPath})})}#y(e){this.#u(e),e.fileChangeTimer=setTimeout(()=>{e.fileChangeTimer=void 0,this.#v(e)},this.#t)}#b(e){if(e.closed||e.isGitProject===!1||e.activeTaskIds.size===0||e.retryTimer!==void 0)return;let t=Math.min(this.#c,this.#s*2**Math.min(e.consecutiveFailures-1,30)),n=Math.min(this.#c,Math.round(t*(.8+this.#o()*.4)));e.retryTimer=setTimeout(()=>{e.retryTimer=void 0,this.#n()?this.#v(e):this.#b(e)},n)}};function Li(e,t){if(e!==void 0)return e.roots.find(n=>t?.projectId===e.id&&n.id===t.rootId)??e.roots[0]}function Ri(e,t){if(e===void 0)return;let n=t.get(e.id);return Li(e,n===void 0?void 0:{projectId:e.id,rootId:n})}function zi(e,t,n){return n?e.includes(t)?e:[...e,t]:e.filter(e=>e!==t)}function Bi(e){let t=t=>Ri(e.getProject(t),e.getSelectedRootIds());return{onProjectGitActivity(n,r,i){if(n===`temporary`)return;let a=t(n);a!==void 0&&e.coordinator.handleActivity(n,a.path,r,i)},onProjectGitMetadataChanged(n,r){t(n)?.path===r&&e.coordinator.handleGitMetadataChanged(n,r)}}}var W=i();function Vi({actions:e,activity:t,children:n,client:r,data:i,onRemoveTaskQuery:a,onUpdateTaskQuery:o,projects:s,rootSelection:c}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(br,{client:r,onRemove:a,onUpdate:o,projectId:O}),s.map(e=>(0,W.jsx)(br,{client:r,onRemove:a,onUpdate:o,projectId:e.id},e.id)),(0,W.jsx)(gr.Provider,{value:i,children:(0,W.jsx)(_r.Provider,{value:e,children:(0,W.jsx)(yr.Provider,{value:c,children:(0,W.jsx)(vr.Provider,{value:t,children:n})})})})]})}var Hi=[];function Ui({children:e,client:t=B,taskNotifier:n}){let r=p(),[i,a]=(0,z.useState)(()=>new Map),o=(0,z.useRef)(i);o.current=i;let s=(0,z.useCallback)((e,t)=>{a(n=>{if(n.get(e)===t)return n;let r=new Map(n);return r.set(e,t),r})},[]),c=(0,z.useMemo)(()=>new Ii(r,t),[t,r]),l=(0,z.useMemo)(()=>{let e=new Map;return ki(t,{...n===void 0?{}:{taskNotifier:n},...Bi({coordinator:c,getProject:e=>r.getQueryData([`projects`])?.data.find(t=>t.id===e),getSelectedRootIds:()=>o.current}),onMcpServerStatusChanged(e,t){r.invalidateQueries({exact:!0,queryKey:[`projects`,e,`tasks`,t,`mcp-servers`]})},onQueueChanged(e,t){hn(r,e,t)},onSkillsChanged(e){r.invalidateQueries({exact:!0,queryKey:[`projects`,e,`skills`]})},onTaskRemoved(e,t){Mn(r,e,t),r.invalidateQueries({queryKey:Lt}),r.removeQueries({exact:!0,queryKey:[`projects`,e,`tasks`,t]})},onTaskMetadataChanged(n,i,a){let o=async()=>{(a===`turn_completed`||a===`native_notification`)&&await Promise.all([r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`]}),r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`,It]}),r.invalidateQueries({exact:!0,queryKey:[`projects`,n,`tasks`,Ft]}),r.invalidateQueries({queryKey:Lt})]),r.removeQueries({exact:!0,queryKey:[`projects`,n,`tasks`,i]});let e=await t.readTask(n,i);l.reconcileTaskSnapshot(e),a===`turn_completed`&&e.snapshot.status===`idle`&&await _n(r,e.snapshot),Tn(r,e.snapshot,{assistantReplyStarted:a===`assistant_reply_started`})},s=`${n}\u0000${i}`,c=(e.get(s)??Promise.resolve()).catch(()=>void 0).then(o);e.set(s,c);let u=()=>{e.get(s)===c&&e.delete(s)};c.then(u,u)}})},[t,c,r,n]),[u,d]=(0,z.useState)(!1),[f,m]=(0,z.useState)(()=>new Map),[h,_]=(0,z.useState)(),[y,b]=(0,z.useState)(()=>new Set),x=(0,z.useSyncExternalStore)((0,z.useCallback)(e=>l.subscribeTaskActivity(e),[l]),(0,z.useCallback)(()=>l.getTaskActivity(),[l]),(0,z.useCallback)(()=>l.getTaskActivity(),[l])),S=g(Vn(t)),C=g(Qn(t)),{isPending:w,mutateAsync:T}=v($n(t)),{isPending:E,mutateAsync:D}=v(zn(t)),{isPending:k,mutateAsync:A}=v(Bn(t)),j=(0,z.useRef)(kr()),ee=(0,z.useRef)(kr()),te=(0,z.useRef)(kr()),M=C.data?.data??Hi,N=(0,z.useMemo)(()=>{let e=new Set(y);return h!==void 0&&e.add(h),e},[h,y]),P=(0,z.useMemo)(()=>M.filter(e=>N.has(e.id)),[M,N]),ne=(0,z.useMemo)(()=>[O,...P.map(e=>e.id)],[P]),re=(0,z.useRef)(f);re.current=f;let ie=(0,z.useCallback)((e,t)=>{l.rememberTaskTitles(t.tasks),m(n=>{let r=n.get(e);if(r?.tasks===t.tasks&&r.state.error===t.state.error&&r.state.hasNextPage===t.state.hasNextPage&&r.state.isFetchingNextPage===t.state.isFetchingNextPage&&r.state.isPending===t.state.isPending)return n;let i=new Map(n);return i.set(e,t),i})},[l]),ae=(0,z.useCallback)(e=>{m(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),{projectTaskStates:oe,tasks:F}=(0,z.useMemo)(()=>xr(ne,f),[f,ne]),se=(0,z.useCallback)(async e=>{await hr(new Map([...re.current].map(([e,t])=>[e,t.controller])),e)},[]),ce=C.isPending,le=(0,z.useCallback)((e,t)=>{l.markTaskRunning(e,t)},[l]),ue=(0,z.useCallback)((e,t)=>{l.forgetTask(e,t)},[l]),de=(0,z.useCallback)((e,t)=>{_(t=>t===e?t:e),l.viewTask(e,t)},[l]),fe=(0,z.useCallback)(e=>{b(t=>t.size===e.size&&[...t].every(t=>e.has(t))?t:new Set(e))},[]),pe=(0,z.useCallback)(()=>{l.requestNotificationPermission()},[l]),me=(0,z.useCallback)(e=>j.current.run(async()=>{d(!0);try{let n=await t.addProject(e);return r.setQueryData([`projects`],e=>{if(e===void 0)return{data:[n.project],nextCursor:null};let t=e.data.findIndex(e=>e.id===n.project.id);return t<0?{...e,data:[...e.data,n.project]}:{...e,data:e.data.map((e,r)=>r===t?n.project:e)}}),Ni(),n.project}catch(e){U(e);return}finally{d(!1)}}),[t,r]),he=(0,z.useCallback)(async e=>await te.current.run(async()=>{let t=r.getQueryData([`projects`]),n=Nn(t,e);if(n===void 0)return U(Error(L.t(`errors.reorderProjectChanged`,{ns:`conversation`}))),!1;r.setQueryData([`projects`],n);try{let t=await T(e);return r.setQueryData([`projects`],t),!0}catch{return r.setQueryData([`projects`],t),!1}})??!1,[T,r]),ge=(0,z.useCallback)(async(e,t)=>await ee.current.run(async()=>{try{let n=await D({name:t,projectId:e});return r.setQueryData([`projects`],t=>t===void 0?void 0:{...t,data:t.data.map(t=>t.id===e?n.project:t)}),!0}catch{return!1}})??!1,[D,r]),_e=(0,z.useCallback)(e=>ee.current.run(async()=>{try{await A(e),await r.cancelQueries({queryKey:[`projects`,e]}),r.removeQueries({queryKey:[`projects`,e]}),c.forgetProject(e),l.forgetProject(e);let t=r.getQueryData([`projects`]),n=t?.data.filter(t=>t.id!==e)??Hi;return a(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n}),r.setQueryData([`projects`],t===void 0?void 0:{...t,data:n}),n}catch{return}}),[c,A,l,r]),ve=(0,z.useCallback)(async(e,t)=>{try{await c.refreshProject(e,t),Ni()}catch(e){U(e)}},[c]),I=(0,z.useCallback)(async()=>{await r.invalidateQueries()},[r]);(0,z.useEffect)(()=>()=>{l.dispose(),c.dispose()},[c,l]);let ye=(0,z.useMemo)(()=>({capabilities:S.data,client:t,error:S.error??C.error,isPending:ce,projectTaskStates:oe,projects:M,tasks:F}),[S.data,S.error,t,ce,oe,M,C.error,F]);return(0,W.jsx)(Vi,{actions:(0,z.useMemo)(()=>({addProject:me,fetchNextProjectTaskPage:se,forgetTask:ue,markTaskRunning:le,projectRuntime:l,refreshProjectGitStatus:ve,removeProject:_e,renameProject:ge,reorderProjects:he,requestNotificationPermission:pe,retry:I,setExpandedProjectTaskIds:fe,viewTask:de}),[me,se,ue,le,l,ve,_e,ge,he,pe,I,fe,de]),activity:(0,z.useMemo)(()=>({isProjectActionPending:E||k,isProjectOrderPending:w,isProjectAddPending:u,taskActivity:x}),[u,w,k,E,x]),client:t,data:ye,onRemoveTaskQuery:ae,onUpdateTaskQuery:ie,projects:P,rootSelection:(0,z.useMemo)(()=>({selectedRootIds:i,setSelectedProjectRoot:s}),[i,s]),children:e})}function Wi(){return t(()=>import(`./global-settings-dialog-Dmjldruk.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))}var Gi={error:null,loading:!0,pairing:!1},Ki=class{#e;#t=new Set;#n;#r=0;#i=Gi;#a;constructor(e,t){this.#e=e,this.#n=t}getSnapshot=()=>this.#i;subscribe=e=>(this.#t.add(e),()=>this.#t.delete(e));start(){this.#a===void 0&&(this.#a=this.#e.subscribeUnauthorized(()=>{this.#r+=1,this.#o()}),this.load())}stop(){this.#r+=1,this.#a?.(),this.#a=void 0}async load(){let e=this.#r+=1;this.#s({...this.#i,error:null,loading:!0});try{let t=await this.#e.getAccessStatus();e===this.#r&&this.#s({error:null,loading:!1,pairing:!1,status:t})}catch{e===this.#r&&this.#s({...this.#i,error:`load`,loading:!1})}}async pair(e){this.#s({...this.#i,error:null,pairing:!0});try{let t=await this.#e.pairAccess(e);this.#s({error:null,loading:!1,pairing:!1,status:t}),Ni()}catch(e){this.#s({...this.#i,error:null,pairing:!1}),U(e)}}async logout(){try{let e=await this.#e.logoutAccess();this.#n.clear(),this.#s({error:null,loading:!1,pairing:!1,status:e}),Ni()}catch(e){throw U(e),e}}#o(){this.#n.clear(),this.#s({error:null,loading:!1,pairing:!1,status:{authenticated:!1,mode:`lan`,version:1}})}#s(e){this.#i=e;for(let e of this.#t)e()}},qi=(0,z.createContext)(void 0);function Ji({children:e,client:t,queryClient:n}){let[r]=(0,z.useState)(()=>new Ki(t,n)),i=(0,z.useSyncExternalStore)(r.subscribe,r.getSnapshot,r.getSnapshot);(0,z.useEffect)(()=>(r.start(),()=>{r.stop()}),[r]);let a=(0,z.useMemo)(()=>({...i,logout:()=>r.logout(),pair:e=>r.pair(e),retry:()=>{r.load()}}),[r,i]);return(0,W.jsx)(qi.Provider,{value:a,children:e})}function Yi(){let e=(0,z.useContext)(qi);if(e===void 0)throw Error(`useAccess must be used inside AccessProvider`);return e}var Xi=Ie({extend:{theme:{text:[`caption`,`meta`,`label`,`body-small`,`body`,`heading`,`title`,`display`]}}});function G(...e){return Xi(Ne(e))}var Zi=be(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control text-body-small outline-none transition-colors focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{defaultVariants:{contentAlign:`center`,size:`default`,variant:`default`},variants:{contentAlign:{center:`justify-center`,start:`justify-start text-left`},size:{compact:`h-8 px-3 text-label`,default:`h-8 px-3`,embedded:`h-auto p-0`,sm:`h-7 px-2 text-label max-workbench:h-11`,toolbar:`h-6 px-2 text-label max-workbench:h-11 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 px-4 text-body`,icon:`inline-grid size-9 place-items-center px-0 max-workbench:size-11`,"icon-compact":`inline-grid size-8 place-items-center px-0 max-workbench:size-11`,"icon-sm":`inline-grid size-7 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3.5`,"icon-toolbar":`inline-grid size-6 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3`,"icon-lg":`inline-grid size-10 place-items-center px-0 max-workbench:size-11`},variant:{default:`bg-brand font-medium text-white hover:bg-brand-strong`,destructive:`bg-danger font-medium text-white hover:opacity-90`,embedded:`rounded-none bg-transparent text-inherit hover:bg-transparent hover:text-inherit focus-visible:shadow-none`,ghost:`bg-transparent text-muted-foreground hover:bg-control-hover hover:text-foreground`,inverse:`rounded-pill bg-foreground text-raised hover:bg-brand-strong disabled:bg-control-active disabled:text-muted-foreground`,link:`h-auto px-0 text-brand underline-offset-4 hover:text-brand-strong hover:underline [&_svg:not([class*='size-'])]:size-3.5`,outline:`border border-separator-strong bg-panel text-foreground hover:bg-control-hover hover:text-foreground`,secondary:`bg-raised text-foreground shadow-sm hover:bg-control-hover`}}});function K({asChild:e=!1,className:t,contentAlign:n=`center`,size:r=`default`,variant:i=`default`,...a}){return(0,W.jsx)(e?vt:`button`,{className:G(Zi({className:t,contentAlign:n,size:r,variant:i})),"data-content-align":n,"data-size":r,"data-slot":`button`,"data-variant":i,...a})}function Qi({onRetry:e}){let{t}=R(`common`);return(0,W.jsx)(`section`,{className:`grid min-h-0 flex-1 place-items-center bg-content px-6 py-10 text-center`,"aria-labelledby":`runtime-unavailable-title`,children:(0,W.jsxs)(`div`,{className:`max-w-md`,children:[(0,W.jsx)(Ge,{className:`mx-auto size-8 text-danger`,"aria-hidden":`true`,strokeWidth:1.6}),(0,W.jsx)(`h1`,{id:`runtime-unavailable-title`,className:`mt-4 text-xl font-semibold`,children:t(`errors.runtimeUnavailableTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-muted-foreground`,children:(0,W.jsx)(Le,{components:{command:(0,W.jsx)(`code`,{className:`font-mono text-foreground`})},i18nKey:`errors.runtimeUnavailableDescription`,ns:`common`})}),(0,W.jsxs)(K,{className:`mx-auto mt-5`,onClick:e,size:`lg`,type:`button`,children:[(0,W.jsx)(ye,{className:`size-4`,"aria-hidden":`true`}),t(`actions.retry`)]})]})})}function $i(e){return e.filter(e=>e.pinned)}function ea(e,t){return t||e.length<=5?{hasMore:!1,tasks:e}:{hasMore:!0,tasks:e.slice(0,5)}}function ta(e){let t=Math.max(1,Math.floor((Date.now()-Date.parse(e))/6e4));if(t<60)return`${String(t)}m`;let n=Math.floor(t/60);return n<24?`${String(n)}h`:`${String(Math.floor(n/24))}d`}var na=1048576,ra=1e4,ia=16*1024,aa=256,oa=new TextDecoder,sa=new TextEncoder,ca=class{#e;#t;#n=()=>this.materialize();#r;#i;#a=0;#o=[];#s=!1;#c=0;#l=!1;#u=``;#d=-1;#f=1;#p={bytes:0,lines:0};#m=0;#h=[];#g=0;#_=0;#v=0;#y=[];#b=-1;constructor(e,t,n={}){let r=n.maxBytes??na,i=Math.max(1,n.maxLines??ra),a=Math.ceil(i/2),o=i-a;this.#e=Math.ceil(r/2),this.#r=r-this.#e,this.#t=a,this.#i=Math.max(0,o-1),this.replace(e,t)}append(e){this.#l=!0,this.#x(sa.encode(e)),this.#v+=1}getView(){return{chunks:this.#E(),hasOutput:this.#l,materialize:this.#n,outputBytes:this.#a+this.#m,outputLines:this.#c+this.#_,outputOmitted:this.#p,startIndex:0,version:this.#v}}materialize(){if(this.#d===this.#v)return this.#u;let e=this.#E().map(e=>e.text).join(``);return this.#u=e,this.#d=this.#v,e}replace(e,t){this.#a=0,this.#o=[],this.#s=!1,this.#c=0,this.#l=e!==void 0,this.#p=t,this.#m=0,this.#h=[],this.#g=0,this.#_=0,e!==void 0&&e.length>0&&this.#x(sa.encode(e)),this.#v+=1}#x(e){let t=0;if(!this.#s){let n=la(e,this.#e-this.#a,this.#t-this.#c);if(n>0){let t=this.#S(this.#o,e.subarray(0,n));this.#a+=t.bytes,this.#c+=t.newlines}t=n,this.#s=n<e.byteLength}if(t<e.byteLength){let n=this.#S(this.#h,e.subarray(t),this.#g);this.#m+=n.bytes,this.#_+=n.newlines,this.#T()}}#S(e,t,n=0){let r=0,i=0;for(;r<t.byteLength;){let a=r,o=0;for(;a<t.byteLength;){let e=t[a]??0,n=da(e);if(a>r&&a+n-r>ia||(a+=n,e===10&&(o+=1,o>=aa)))break}let s=t.subarray(r,a).slice();e.push(this.#C(s,o)),i+=o,this.#w(e,n),r=a}return{bytes:t.byteLength,newlines:i}}#C(e,t,n=0){let r={byteLength:e.byteLength,encodedValue:e,id:this.#f,mergeLevel:n,newlineCount:t,text:oa.decode(e)};return this.#f+=1,r}#w(e,t){for(;e.length-t>=2;){let t=e.at(-1),n=e.at(-2);if(t===void 0||n?.mergeLevel!==t.mergeLevel||n.byteLength+t.byteLength>ia||n.newlineCount+t.newlineCount>aa)return;let r=new Uint8Array(n.byteLength+t.byteLength);r.set(n.encodedValue),r.set(t.encodedValue,n.byteLength),e.splice(-2,2,this.#C(r,n.newlineCount+t.newlineCount,n.mergeLevel+1))}}#T(){for(;this.#m>this.#r||this.#_>this.#i;){let e=this.#h[this.#g];if(e===void 0)break;let t=ua(e.encodedValue,this.#m-this.#r,this.#_-this.#i);if(this.#m-=t.bytes,this.#_-=t.newlines,this.#p={bytes:this.#p.bytes+t.bytes,lines:this.#p.lines+t.newlines},t.bytes===e.byteLength)this.#g+=1;else{let n=e.encodedValue.subarray(t.bytes).slice();this.#h[this.#g]=this.#C(n,e.newlineCount-t.newlines)}}this.#g>=128&&this.#g*2>=this.#h.length&&(this.#h=this.#h.slice(this.#g),this.#g=0)}#E(){return this.#b!==this.#v&&(this.#y=[...this.#o,...this.#h.slice(this.#g)],this.#b=this.#v),this.#y}};function la(e,t,n){let r=0,i=0;for(;r<e.byteLength&&!(i>=n);){let a=e[r]??0,o=da(a);if(r+o>t||a===10&&i>=n)break;r+=o,a===10&&(i+=1)}return r}function ua(e,t,n){let r=0,i=0;for(;r<e.byteLength&&(r<t||i<n);){let t=e[r]??0;r+=da(t),t===10&&(i+=1)}return{bytes:r,newlines:i}}function da(e){return e&128?(e&224)==192?2:(e&240)==224?3:4:1}var fa=class{chunks=[];initialSummary;materializedSummary;constructor(e){this.initialSummary=e,this.materializedSummary=e}get hasChanges(){return this.chunks.length>0}append(e){this.chunks.push(e),this.materializedSummary=void 0}read(){if(this.initialSummary!==void 0)return this.materializedSummary??=[this.initialSummary,...this.chunks].join(``),this.materializedSummary}replace(e){this.chunks=[],this.initialSummary=e,this.materializedSummary=e}},pa=`__CODEXLY_PENDING_COMMAND__`,ma=`__CODEXLY_RETAINED_COMMAND_OUTPUT__`,ha=new TextEncoder().encode(ma).byteLength;function ga(e){if(e.type!==`command`||e.output===`__CODEXLY_RETAINED_COMMAND_OUTPUT__`)return e;let t={...e};return delete t.output,t}function _a(e){let t=ga(e),n=new Map,r=0,i=e.type===`command`?-1:0,a=t,o=new fa(e.type===`reasoning`?e.summary:void 0),s,c=e.type===`reasoning`?e.summary.length:0,l=e.type===`command`?new ca(e.output,e.outputOmitted):void 0,u=H(t)+(l?.getView().outputBytes??0),d=w()(()=>({revision:0}));function f(e,t){if(e===`summary`)o.append(t),c+=t.length;else{let r=n.get(e);r===void 0?n.set(e,[t]):r.push(t)}u+=ii(t),r+=1}return Object.assign(d,{appendDelta(e){if(e.type===`message.delta`)return t.type!==`message`||t.role!==`assistant`?!1:(f(`text`,e.payload.delta),!0);if(e.type===`reasoning.delta`)return t.type===`reasoning`?(e.payload.field===`summary`&&e.payload.sectionIndex!==void 0&&((s===void 0?e.payload.sectionIndex>0:e.payload.sectionIndex!==s)&&c>0&&f(`summary`,`
3
3
 
4
- `),s=e.payload.sectionIndex),f(e.payload.field,e.payload.delta),!0):!1;if(e.type===`plan.delta`)return t.type===`plan`?(f(`plan`,e.payload.delta),!0):!1;if(t.type!==`command`)return!1;let n=l?.getView().outputBytes??0;return l?.append(e.payload.delta),u+=(l?.getView().outputBytes??0)-n,r+=1,!0},getRetainedBytes:()=>u,peek:()=>t,publish(){d.setState(e=>({revision:e.revision+1}))},read(){if(i===r)return a;let e=t;if(t.type===`message`){let r=n.get(`text`);r!==void 0&&(e={...t,text:[t.text,...r].join(``)})}else if(t.type===`reasoning`){let r=n.get(`content`);(r!==void 0||o.hasChanges)&&(e={...t,content:r===void 0?t.content:[t.content,...r].join(``),summary:o.read()??t.summary})}else if(t.type===`command`){let n=l?.getView();n!==void 0&&(e={...t,...n.hasOutput?{output:n.materialize()}:{},outputOmitted:n.outputOmitted})}else if(t.type===`plan`){let r=n.get(`plan`);r!==void 0&&(e={...t,text:[t.text,...r].join(``)})}return a=e,i=r,a},readCommandOutput(){return l?.getView()},readReasoningSummary:()=>o.read(),replace(e){t=ga(e),n.clear(),o.replace(e.type===`reasoning`?e.summary:void 0),s=void 0,c=e.type===`reasoning`?e.summary.length:0,l=e.type===`command`?new ca(e.output,e.outputOmitted):void 0,u=H(t)+(l?.getView().outputBytes??0),r+=1}})}function va(e,t){let n=e.pendingRequestsById[t.requestId]!==void 0,r=e.pendingRequestIds;t.status===`pending`?n||(r=[...e.pendingRequestIds,t.requestId]):r=[...e.pendingRequestIds.filter(e=>e!==t.requestId),t.requestId];let i={...e.pendingRequestsById,[t.requestId]:t},a=r.filter(e=>i[e]?.status!==`pending`),o=new Set(a.slice(0,-20));return o.size===0?{pendingRequestIds:r,pendingRequestsById:i}:{pendingRequestIds:r.filter(e=>!o.has(e)),pendingRequestsById:Object.fromEntries(Object.entries(i).filter(([e])=>!o.has(e)))}}function q(e,t){return JSON.stringify([e,t])}function ya(e,t){return e.itemStoresByKey.get(t)?.read()}function ba(e){let{pendingRequests:t,turns:n,turnsNextCursor:r,...i}=e.snapshot,a=[],o={},s={},c=new Map;for(let e of n){let{items:t,...n}=e;a.push(e.id),o[e.id]=n,s[e.id]=t.map(t=>q(e.id,t.id));for(let n of t){let t=q(e.id,n.id);c.set(t,_a(n))}}let l={pendingRequestIds:[],pendingRequestsById:{}};for(let e of t)l=va(l,e);let{budget:u}=xa({previousBudget:{commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytes:0,commandOutputBytesByItemKey:new Map},sourceItemStoresByKey:c,touchedItemKeys:[...c.keys()]}),d=H(e.checkpoint)+H(i)+H(r);for(let e of a){d+=H(o[e]);for(let t of s[e]??[])d+=c.get(t)?.getRetainedBytes()??0}for(let e of l.pendingRequestIds)d+=H(l.pendingRequestsById[e]);return{checkpoint:e.checkpoint,...u,itemKeysByTurnId:s,itemStoresByKey:c,itemStructureRevision:0,notices:[],...l,retainedBytes:d,snapshotMetadata:i,turnIds:a,turnsNextCursor:r,turnsById:o}}function xa(e){let t=e.previousBudget.commandOutputAccessByItemKey,n=e.previousBudget.commandOutputBytesByItemKey,r=e.previousBudget.commandOutputAccessSequence,i=e.previousBudget.commandOutputBytes,a=new Map;for(let a of new Set(e.touchedItemKeys)){let o=n.get(a)??0,s=e.sourceItemStoresByKey.get(a)?.readCommandOutput();if(!s?.hasOutput){t.delete(a),n.delete(a),i-=o;continue}r+=1,t.set(a,r),n.set(a,s.outputBytes),i+=s.outputBytes-o}if(i<=8388608)return{budget:{commandOutputAccessByItemKey:t,commandOutputAccessSequence:r,commandOutputBytes:i,commandOutputBytesByItemKey:n},retainedBytesDeltaByItemKey:a};let o=[...t.keys()].toSorted((e,n)=>(t.get(e)??0)-(t.get(n)??0));for(let t of o){if(i<=8388608)break;let r=e.sourceItemStoresByKey.get(t),o=r?.peek();if(r===void 0||o?.type!==`command`)continue;let s=n.get(t)??0,c=r.getRetainedBytes(),l=r.readCommandOutput();r.replace({...o,output:ma,outputOmitted:{bytes:(l?.outputOmitted.bytes??o.outputOmitted.bytes)+s,lines:(l?.outputOmitted.lines??o.outputOmitted.lines)+(l?.outputLines??0)}}),e.changedItemStores?.add(r),n.set(t,ha),i-=s-ha,a.set(t,r.getRetainedBytes()-c)}return{budget:{commandOutputAccessByItemKey:t,commandOutputAccessSequence:r,commandOutputBytes:i,commandOutputBytesByItemKey:n},retainedBytesDeltaByItemKey:a}}function Sa(e,t){if(e?.type!==`message`||e.role!==`user`||t.type!==`message`||t.role!==`user`||t.text.length>0||(t.skills?.length??0)===0)return;let n=new Set((e.skills??[]).map(e=>e.name)),r=[...e.skills??[]];for(let e of t.skills??[])n.has(e.name)||(n.add(e.name),r.push(e));return{...e,skills:r,text:D(e.text,r)}}function Ca(e,t,n){if(n.type===`command.output_delta`)return[q(n.turnId,n.itemId)];if(n.type===`item.started`||n.type===`item.completed`){let t=q(n.turnId,n.itemId);return n.payload.item.type===`command`||e.commandOutputBytesByItemKey.has(t)?[t]:void 0}if(n.type===`turn.started`||n.type===`turn.completed`)return[...e.itemKeysByTurnId[n.turnId]??[],...t.itemKeysByTurnId[n.turnId]??[]]}function wa(e){switch(e.type){case`message.delta`:return{id:e.itemId,role:`assistant`,text:``,type:`message`};case`reasoning.delta`:return{content:``,id:e.itemId,summary:``,type:`reasoning`};case`plan.delta`:return{id:e.itemId,text:``,type:`plan`};case`command.output_delta`:return{command:pa,cwd:``,id:e.itemId,output:``,outputOmitted:{bytes:0,lines:0},status:`running`,type:`command`};default:return}}function Ta(e,t,n,r){let i=e.itemKeysByTurnId[t]??[],a=new Set(n.map(e=>q(t,e.id)));for(let t of i)a.has(t)||e.itemStoresByKey.delete(t);for(let i of n){let n=q(t,i.id),a=e.itemStoresByKey.get(n);a===void 0?e.itemStoresByKey.set(n,_a(i)):(a.replace(i),r.add(a))}return{itemKeysByTurnId:{...e.itemKeysByTurnId,[t]:[...a]}}}function Ea(e,t,n){let r=`submitted-user-${t}`,i=n.find(e=>e.type===`message`&&e.role===`user`),a=[],o=new Set;for(let n of e.itemKeysByTurnId[t]??[]){let t=ya(e,n);if(t===void 0)continue;let s=t.id===r&&i!==void 0?i:t;o.has(s.id)||(o.add(s.id),a.push(s))}let s=new Set(a.map(e=>e.id)),c=new Map(n.map(e=>[e.id,e])),l=new Map,u=[];for(let e of n){if(!s.has(e.id)){u.push(e);continue}u.length>0&&(l.set(e.id,u),u=[])}return[...a.flatMap(e=>[...l.get(e.id)??[],c.get(e.id)??e]),...u]}function Da(e,t,n){let r=e.snapshotMetadata;if(r===null)return{};let i={sequence:t.sequence,sessionId:t.sessionId};switch(t.type){case`project.git_metadata_changed`:return{};case`turn.started`:{let{items:a,...o}=t.payload.turn;return{checkpoint:i,...Ta(e,t.turnId,a,n),snapshotMetadata:{...r,status:`running`,updatedAt:t.timestamp},itemStructureRevision:e.itemStructureRevision+1,turnIds:[...e.turnIds.filter(e=>e!==t.turnId),t.turnId],turnsById:{...e.turnsById,[t.turnId]:o}}}case`message.delta`:case`plan.delta`:case`reasoning.delta`:case`command.output_delta`:{let a=e.turnsById[t.turnId];if(a===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let o=a.status===`running`&&a.error!==null?{...e.turnsById,[t.turnId]:{...a,error:null}}:e.turnsById,s=q(t.turnId,t.itemId),c=e.itemStoresByKey.get(s);if(c!==void 0)return c.appendDelta(t)&&n.add(c),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp},turnsById:o};let l=wa(t);if(l===void 0)return{checkpoint:i};let u=_a(l);return u.appendDelta(t),e.itemStoresByKey.set(s,u),n.add(u),{checkpoint:i,itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:[...e.itemKeysByTurnId[t.turnId]??[],s]},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp},turnsById:o}}case`tool.progress`:{let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a);if(o===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let s=o.read();return s.type===`tool`?(o.replace({...s,progress:t.payload.message}),n.add(o),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}}):{checkpoint:i}}case`file_change.updated`:{let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a);if(o!==void 0){let e=o.read();return e.type===`file_change`?(o.replace({...e,changes:t.payload.changes,status:`running`}),n.add(o),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}}):{checkpoint:i}}if(e.turnsById[t.turnId]===void 0)return{checkpoint:i};let s=_a({changes:t.payload.changes,id:t.itemId,status:`running`,type:`file_change`});return e.itemStoresByKey.set(a,s),n.add(s),{checkpoint:i,itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:[...e.itemKeysByTurnId[t.turnId]??[],a]},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp}}}case`task.notice`:return{checkpoint:i,notices:t.payload.code===`guardian_warning`?e.notices:[...e.notices,t].slice(-20),snapshotMetadata:{...r,updatedAt:t.timestamp}};case`mcp_server.status_updated`:return{checkpoint:i};case`goal.updated`:return{checkpoint:i,snapshotMetadata:{...r,goal:t.payload.goal,updatedAt:t.timestamp}};case`goal.cleared`:return{checkpoint:i,snapshotMetadata:{...r,goal:null,updatedAt:t.timestamp}};case`queue.changed`:return{checkpoint:i};case`task.status_updated`:return{checkpoint:i,snapshotMetadata:{...r,status:t.payload.status,updatedAt:t.timestamp}};case`skills.changed`:case`task.metadata_changed`:case`task.removed`:return{checkpoint:i};case`item.started`:case`item.completed`:{if(e.turnsById[t.turnId]===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a),s=o!==void 0,c=e.itemKeysByTurnId[t.turnId]??[],l=c.at(-1),u=l===void 0?void 0:e.itemStoresByKey.get(l),d=Sa(u?.read(),t.payload.item);if(d!==void 0&&u!==void 0)return u.replace(d),n.add(u),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let f=`submitted-user-${t.turnId}`,p=q(t.turnId,f),m=t.payload.item.type===`message`&&t.payload.item.role===`user`&&c.includes(p),h=m?c.filter(e=>e!==p).concat(s?[]:a):s?c:[...c,a];return m&&e.itemStoresByKey.delete(p),o===void 0?e.itemStoresByKey.set(a,_a(t.payload.item)):(o.replace(t.payload.item),n.add(o)),{checkpoint:i,itemKeysByTurnId:h===c?e.itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:h},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp}}}case`turn.completed`:{let a=e.turnsById[t.turnId],o=a?.status===`failed`?a.error:null,s=t.payload.turn.error===null&&o!==null?{...t.payload.turn,error:o}:t.payload.turn,{items:c,...l}=s,u=Ea(e,t.turnId,c);return{checkpoint:i,...a===void 0?{}:Ta(e,t.turnId,u,n),notices:[],snapshotMetadata:{...r,status:s.status===`failed`?`failed`:`idle`,updatedAt:t.timestamp},itemStructureRevision:e.itemStructureRevision+1,turnsById:a===void 0?e.turnsById:{...e.turnsById,[t.turnId]:l}}}case`plan.updated`:return{checkpoint:i,snapshotMetadata:{...r,plan:t.payload.plan,updatedAt:t.timestamp}};case`usage.updated`:return{checkpoint:i,snapshotMetadata:{...r,contextUsage:t.payload.usage,updatedAt:t.timestamp}};case`provider.error`:{let n=e.turnsById[t.turnId],a=n===void 0?e.turnsById:{...e.turnsById,[t.turnId]:{...n,error:t.payload.message,status:t.payload.willRetry?n.status:`failed`}};return{checkpoint:i,snapshotMetadata:t.payload.willRetry?r:{...r,status:`failed`,updatedAt:t.timestamp},turnsById:a}}case`pending_request.created`:case`pending_request.resolved`:case`pending_request.expired`:{let n=t.payload.request;return{checkpoint:i,...va(e,n),snapshotMetadata:{...r,updatedAt:t.timestamp}}}}}function Oa(e){if(e.snapshotMetadata!==null)return{...e.snapshotMetadata,pendingRequests:e.pendingRequestIds.flatMap(t=>{let n=e.pendingRequestsById[t];return n?.status===`pending`?[n]:[]}),turnsNextCursor:e.turnsNextCursor,turns:e.turnIds.flatMap(t=>{let n=e.turnsById[t];if(n===void 0)return[];let r=(e.itemKeysByTurnId[t]??[]).flatMap(t=>{let n=ya(e,t);return n===void 0?[]:[n]});return[{...n,items:r}]})}}function ka(e,t){if(e.role!==`user`||t.role!==`user`||e.text.length>0||t.text.length>0)return!1;let n=e.attachments??[],r=t.attachments??[];return n.length===0||n.length!==r.length?!1:n.every((e,t)=>{let n=r[t];return e.kind===`image`&&n?.kind===`image`&&e.mediaType===n.mediaType&&e.size===n.size})}function Aa(e,t){let n=new Map(t.items.map(e=>[e.id,e])),r=new Map,i=e.items.filter(e=>e.type===`message`),a=t.items.filter(e=>e.type===`message`),o=new Map(i.map(e=>[e.id,e])),s=new Set,c=new Set,l=(e,t)=>{s.add(e.id),c.add(t.id),n.delete(t.id),r.set(e.id,{...t,id:e.id})};for(let e of a){let t=o.get(e.id);t!==void 0&&l(t,e)}let u=i.filter(e=>!s.has(e.id)),d=a.filter(e=>!c.has(e.id)),f=new Map,p=new Map;for(let e of d){let t=u.filter(t=>t.role===e.role&&(t.text.length>0&&e.text.length>0&&(t.text.startsWith(e.text)||e.text.startsWith(t.text))||ka(t,e)));f.set(e.id,t);for(let e of t)p.set(e.id,(p.get(e.id)??0)+1)}for(let e of d){let t=f.get(e.id)??[],n=t.length===1?t[0]:void 0;n!==void 0&&p.get(n.id)===1&&l(n,e)}return[...e.items.flatMap(e=>{let t=r.get(e.id);if(t!==void 0)return[t];let i=n.get(e.id);return i===void 0?[e]:(n.delete(e.id),[i])}),...n.values()]}function ja(e,t){let n=Oa(e);if(n===void 0)return t;let r=new Map(n.turns.map(e=>[e.id,e])),i=new Set(t.snapshot.turns.map(e=>e.id)),a=n.turns.flatMap((e,t)=>i.has(e.id)?[t]:[]),o=a.at(0),s=a.at(-1),c=t.snapshot.turnsNextCursor!==null&&o!==void 0&&s!==void 0,l=c?n.turns.slice(0,o).filter(e=>!i.has(e.id)):[],u=c?n.turns.slice(s+1).filter(e=>!i.has(e.id)):[];return{...t,snapshot:{...t.snapshot,turns:[...l,...t.snapshot.turns.map(e=>{let t=r.get(e.id);return t===void 0?e:{...e,items:Aa(t,e)}}),...u],turnsNextCursor:l.length>0?n.turnsNextCursor:t.snapshot.turnsNextCursor}}}function Ma(e,t){let n=t===void 0?{checkpoint:null,commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytesByItemKey:new Map,commandOutputBytes:0,itemKeysByTurnId:{},itemStoresByKey:new Map,itemStructureRevision:0,notices:[],pendingRequestIds:[],pendingRequestsById:{},retainedBytes:0,snapshotMetadata:null,turnIds:[],turnsNextCursor:null,turnsById:{}}:ba(t);if(t!==void 0&&(t.snapshot.projectId!==e.projectId||t.snapshot.id!==e.taskId))throw Error(`Task store identity does not match the initial snapshot`);return w()((t,r)=>({...n,applyEvents(e){if(e.length===0)return;let n=new Set;t(t=>{let r=t;for(let t of e){let e=r.checkpoint,i=e!==null&&t.sessionId===e.sessionId&&t.sequence>e.sequence;if(t.taskId!==r.taskId||!i)continue;let a=r,o=Pa(a,t),s=Ia(a,t);r={...r,...Da(r,t,n)};let c=Ca(a,r,t),l=new Map;if(c!==void 0){let e=xa({previousBudget:a,changedItemStores:n,sourceItemStoresByKey:r.itemStoresByKey,touchedItemKeys:c});({retainedBytesDeltaByItemKey:l}=e),r={...r,...e.budget}}let u=new Set([...s.keys(),...Fa(r,t)]),d=La(r,u)-Ra(s),f=[...l].reduce((e,[t,n])=>e+(u.has(t)?0:n),0);r={...r,retainedBytes:r.retainedBytes+Pa(r,t)-o+d+f}}return r});for(let e of n)e.publish()},connectionState:`connecting`,error:null,hydrate(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the snapshot`);t(e=>({...ba(n),itemStructureRevision:e.itemStructureRevision+1,connectionState:`connecting`,error:null}))},projectId:e.projectId,prependHistory(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the history page`);let r=new Set;t(e=>Na(e,n,r));for(let e of r)e.publish()},reconcile(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the snapshot`);t(e=>{let t=e.checkpoint;return t!==null&&t.sessionId===n.checkpoint.sessionId&&t.sequence>n.checkpoint.sequence?e:{...ba(ja(e,n)),itemStructureRevision:e.itemStructureRevision+1,connectionState:`connecting`,error:null}})},getItem:(e,t)=>r().itemStoresByKey.get(q(t,e))?.read(),getItemByKey:e=>r().itemStoresByKey.get(e)?.read(),reconstructSnapshot:()=>Oa(r()),setConnectionState(e){t({connectionState:e})},setError(e){t({error:e})},setTaskSettings(e){t(t=>t.snapshotMetadata===null?t:{snapshotMetadata:{...t.snapshotMetadata,settings:e}})},taskId:e.taskId}))}function Na(e,t,n){let r=ba(t),i=r.turnIds.filter(t=>e.turnsById[t]===void 0),a=new Set(i.flatMap(e=>r.itemKeysByTurnId[e]??[])),o=new Map(e.itemStoresByKey);for(let e of a){let t=r.itemStoresByKey.get(e);t!==void 0&&o.set(e,t)}let s={...e.itemKeysByTurnId},c={...e.turnsById};for(let e of i){s[e]=r.itemKeysByTurnId[e]??[];let t=r.turnsById[e];t!==void 0&&(c[e]=t)}let{budget:l,retainedBytesDeltaByItemKey:u}=xa({previousBudget:{commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytes:0,commandOutputBytesByItemKey:new Map},changedItemStores:n,sourceItemStoresByKey:o,touchedItemKeys:[...a,...e.itemStoresByKey.keys()]}),d=e.retainedBytes-H(e.turnsNextCursor)+H(t.snapshot.turnsNextCursor);for(let e of i){d+=H(c[e]);for(let t of s[e]??[])d+=o.get(t)?.getRetainedBytes()??0}for(let[e,t]of u)a.has(e)||(d+=t);return{...e,...l,checkpoint:e.checkpoint??t.checkpoint,itemKeysByTurnId:s,itemStoresByKey:o,itemStructureRevision:e.itemStructureRevision+1,retainedBytes:d,turnIds:[...i,...e.turnIds],turnsNextCursor:t.snapshot.turnsNextCursor,turnsById:c}}function Pa(e,t){let n=0;if((t.type===`turn.started`||t.type===`turn.completed`||t.type===`provider.error`)&&(n+=H(e.turnsById[t.turnId])),(t.type===`task.notice`||t.type===`turn.completed`)&&(n+=e.notices.reduce((e,t)=>e+H(t),0)),(t.type===`goal.updated`||t.type===`goal.cleared`||t.type===`plan.updated`||t.type===`provider.error`||t.type===`task.status_updated`||t.type===`turn.started`||t.type===`turn.completed`||t.type===`usage.updated`)&&(n+=H(e.snapshotMetadata)),t.type===`pending_request.created`||t.type===`pending_request.resolved`||t.type===`pending_request.expired`)for(let t of e.pendingRequestIds)n+=H(e.pendingRequestsById[t]);return n}function Fa(e,t){if(t.type===`turn.started`||t.type===`turn.completed`)return e.itemKeysByTurnId[t.turnId]??[];if(!(`itemId`in t)||!(`turnId`in t))return[];let n=[q(t.turnId,t.itemId)];if(t.type===`item.started`||t.type===`item.completed`){let r=(e.itemKeysByTurnId[t.turnId]??[]).at(-1);r!==void 0&&n.push(r),n.push(q(t.turnId,`submitted-user-${t.turnId}`))}return n}function Ia(e,t){return new Map(Fa(e,t).map(t=>[t,e.itemStoresByKey.get(t)?.getRetainedBytes()??0]))}function La(e,t){let n=0;for(let r of t)n+=e.itemStoresByKey.get(r)?.getRetainedBytes()??0;return n}function Ra(e){let t=0;for(let n of e.values())t+=n;return t}var za=class{#e;#t=new Map;#n=new Map;#r;#i;#a;#o=0;constructor(e={}){if(this.#r=e.maxRetainedBytes??67108864,!Number.isSafeInteger(this.#r)||this.#r<0)throw RangeError(`Task store registry maxRetainedBytes must be non-negative`);if(this.#i=e.maxRetainedStores??20,!Number.isInteger(this.#i)||this.#i<0)throw RangeError(`Task store registry maxRetainedStores must be a non-negative integer`);this.#e=e.createStore??(e=>Ma(e)),this.#a=e.onEvict}acquire(e,t){let n=Ba(e,t),r=this.#t.get(n);return r===void 0?(r={consumers:0,identity:{projectId:e,taskId:t},retainedBytes:0,store:this.#e({projectId:e,taskId:t})},this.#t.set(n,r)):r.consumers===0&&this.#c(n,r),r.consumers+=1,r.store}release(e,t){let n=this.#t.get(Ba(e,t));return n===void 0||n.consumers===0?!1:(--n.consumers,n.consumers===0&&(n.retainedBytes=n.store.getState().retainedBytes,this.#n.set(Ba(e,t),n),this.#o+=n.retainedBytes,this.#s()),n.consumers===0)}get retainedBytes(){return this.#o}get size(){return this.#t.size}peek(e,t){return this.#t.get(Ba(e,t))?.store}remove(e,t){let n=Ba(e,t),r=this.#t.get(n);return r===void 0||r.consumers>0?!1:(this.#c(n,r),this.#t.delete(n),this.#a?.(r.identity,r.store),!0)}#s(){for(;this.#n.size>this.#i||this.#o>this.#r;){let e=this.#n.entries().next().value;if(e===void 0)return;let[t,n]=e;this.#c(t,n),this.#t.delete(t),this.#a?.(n.identity,n.store)}}#c(e,t){this.#n.delete(e)&&(this.#o-=t.retainedBytes,t.retainedBytes=0)}};function Ba(e,t){return JSON.stringify([e,t])}function Va(e={}){return new za(e)}var Ha=Va({maxRetainedStores:20}),Ua=Ma({projectId:``,taskId:``});function Wa(e,t,n){let r=p(),i=n.client,a=`${e}\u0000${t??``}`,[o,s]=(0,z.useState)({error:null,isPending:t!==void 0,scope:a}),[c,l]=(0,z.useState)(),[u,d]=(0,z.useState)(!1),[f,m]=(0,z.useState)(null),h=(0,z.useRef)(null),g=c??Ua,_=E(g,e=>e.turnIds.findLast(t=>e.turnsById[t]?.status===`running`)),v=E(g,e=>e.connectionState),y=E(g,e=>e.error),b=E(g,e=>e.snapshotMetadata??void 0),x=E(g,e=>e.itemStructureRevision),S=E(g,e=>e.turnsNextCursor);(0,z.useEffect)(()=>{h.current=null,d(!1),m(null)},[e,t]),(0,z.useEffect)(()=>{if(t===void 0){l(void 0);return}let n=Ha.acquire(e,t);return l(n),()=>{Ha.release(e,t)}},[e,t]),(0,z.useEffect)(()=>{if(c===void 0||t===void 0)return;let o=c.getState();if(o.projectId!==e||o.taskId!==t)return;let l=new AbortController,u=fr(e,t,i).queryKey,d,f=!1;s({error:null,isPending:!0,scope:a});let p=Ga(r,u);return(p===void 0?i.readTask(e,t,{signal:l.signal}):Promise.resolve(p)).then(o=>{f||(d=n.attachTaskStore(o,c,()=>i.readTask(e,t)),r.removeQueries({exact:!0,queryKey:u}),s({error:null,isPending:!1,scope:a}))}).catch(e=>{!f&&!l.signal.aborted&&s({error:e instanceof Error?e:Error(String(e)),isPending:!1,scope:a})}),()=>{f=!0,l.abort(),d?.()}},[i,e,n,r,c,t,a]);let C=c===void 0?void 0:qa(c,e,t),w=(0,z.useCallback)(async()=>{if(C===void 0||t===void 0||S===null||h.current!==null)return;let n={};h.current=n,d(!0),m(null);try{let n=await i.readTask(e,t,{cursor:S});C.getState().prependHistory(n)}catch(e){h.current===n&&m(e instanceof Error?e:Error(String(e)))}finally{h.current===n&&(h.current=null,d(!1))}},[C,i,e,t,S]),T=C?.getState().snapshotMetadata!==null,D=o.scope===a?o.error:null,O=t!==void 0&&(o.scope!==a||o.isPending),k=C===void 0||!T?D:v===`closed`?y:null,A=(0,z.useCallback)(()=>C?.getState().reconstructSnapshot(),[C]),j=Ja({error:k,hasActiveRuntime:C!==void 0,hasHydratedSnapshot:T,snapshotPending:O});return(0,z.useMemo)(()=>({activeTurnId:_,connectionState:C===void 0?`connecting`:v,error:k,hasOlderHistory:S!==null,isLoadingOlderHistory:u,isPending:j,itemStructureRevision:x,loadOlderHistory:w,metadata:b,olderHistoryError:f,readSnapshot:A,store:C}),[C,_,v,k,u,j,x,w,b,f,A,S])}function Ga(e,t){let n=e.getQueryData(t);return n!==void 0&&e.removeQueries({exact:!0,queryKey:t}),n}function Ka(e,t){return Ha.remove(e,t)}function qa(e,t,n){let r=e?.getState();return n!==void 0&&r?.projectId===t&&r.taskId===n?e:void 0}function Ja(e){return e.error!==null||e.hasHydratedSnapshot?!1:e.snapshotPending||!e.hasActiveRuntime}var Ya=8;function Xa(e,t,n,r){if(t===n||!e.includes(t))return e;let i=e.filter(e=>e!==t),a=i.indexOf(n);if(a===-1)return e;let o=r===`after`?a+1:a;return i.toSpliced(o,0,t)}function Za(e,t,n){let r=e.indexOf(t),i=r+n;return r===-1||i<0||i>=e.length?e:e.toSpliced(r,1).toSpliced(i,0,t)}function Qa(e,t){if(t===null)return e;let n=new Map(e.map(e=>[e.id,e])),r=t.flatMap(e=>{let t=n.get(e);return t===void 0?[]:[t]}),i=new Set(r.map(e=>e.id));return[...r,...e.filter(e=>!i.has(e.id))]}function $a({disabled:e=!1,onReorder:t,projects:n}){let{t:r}=R(`conversation`),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)(null),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=Qa(n,c),p=(0,z.useRef)(f);p.current=f;let m=e=>{let t=u.current;t!==null&&(t.removeGlobalListeners(),e&&t.element.hasPointerCapture(t.pointerId)&&t.element.releasePointerCapture(t.pointerId),u.current=null)};(0,z.useEffect)(()=>()=>{m(!1)},[]);let h=async(e,i)=>{let a=await t(e);if(l(null),a){let t=n.find(e=>e.id===i),a=e.indexOf(i)+1;s(r(`reorder.moved`,{name:t?.name??r(`reorder.projectFallback`),position:a}))}},g=(t,n)=>{if(e||t.button!==0)return;m(!0),t.currentTarget.setPointerCapture(t.pointerId);let r=t.currentTarget,i=e=>{v(e.pointerId)},a=e=>{y(e.pointerId)},o={activated:!1,element:r,pointerId:t.pointerId,projectId:n,projectIds:p.current.map(e=>e.id),removeGlobalListeners:()=>{window.removeEventListener(`pointercancel`,a),window.removeEventListener(`pointerup`,i)},startClientX:t.clientX,startClientY:t.clientY};u.current=o,window.addEventListener(`pointercancel`,a),window.addEventListener(`pointerup`,i)},_=e=>{let t=u.current;if(t?.pointerId!==e.pointerId)return;let n=Math.hypot(e.clientX-t.startClientX,e.clientY-t.startClientY);if(!t.activated){if(n<=Ya)return;t.activated=!0,t.element.hasPointerCapture(t.pointerId)&&t.element.releasePointerCapture(t.pointerId),l(t.projectIds),a(t.projectId),s(r(`reorder.started`))}e.preventDefault();let i=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-project-reorder-id]`)??null;if(i===null)return;let o=i.dataset.projectReorderId;if(o===void 0)return;let c=i.getBoundingClientRect(),d=e.clientY<c.top+c.height/2?`before`:`after`;t.projectIds=Xa(t.projectIds,t.projectId,o,d),l(t.projectIds)},v=e=>{let t=u.current;if(t?.pointerId!==e)return;let n=t.activated;m(!0),n&&(d.current=t.projectId,a(null),h(t.projectIds,t.projectId))},y=e=>{u.current?.pointerId===e&&(m(!1),a(null),l(null),s(r(`reorder.cancelled`)))},b=e=>{v(e.pointerId)},x=e=>{y(e.pointerId)},S=(e,t)=>{d.current===t&&(d.current=null,e.preventDefault(),e.stopPropagation())},C=(t,n)=>{if(e||!t.altKey||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=p.current.map(e=>e.id),i=Za(r,n,t.key===`ArrowUp`?-1:1);i!==r&&(l(i),h(i,n))};return{activeProjectId:i,announcement:o,getProjectReorderProps:e=>({"aria-keyshortcuts":`Alt+ArrowUp Alt+ArrowDown`,"data-project-reorder-id":e,onClickCapture:t=>{S(t,e)},onKeyDown:t=>{C(t,e)},onPointerCancel:x,onPointerDown:t=>{g(t,e)},onPointerMove:_,onPointerUp:b,title:r(`reorder.title`)}),orderedProjects:f}}function eo({actionLock:e,activeProjectId:t,activeTaskId:n}){let{client:r}=Sr(),{forgetTask:i}=Cr(),a=s(),o=p(),[c,l]=(0,z.useState)(null),u=v(Rn(r));return{closeTaskDeletion:()=>{u.isPending||l(null)},confirmTaskDeletion:()=>{let s=c;return s===null?Promise.resolve(void 0):e.run(async()=>{try{await u.mutateAsync({projectId:s.projectId,taskId:s.id}),l(null),await Mn(o,s.projectId,s.id).catch(()=>void 0),o.removeQueries({exact:!0,queryKey:[`projects`,s.projectId,`tasks`,s.id]}),i(s.projectId,s.id),Ka(s.projectId,s.id),s.projectId===t&&s.id===n&&await(s.projectId===`temporary`?a({to:`/temporary`}):a({params:{projectId:s.projectId},to:`/p/$projectId`})),r.unsubscribeTask(s.projectId,s.id).catch(()=>void 0)}catch{}})},deletingTask:c,isDeletePending:u.isPending,requestTaskDeletion:l}}var to=`codexly:project-sidebar:expanded-projects:v1`,no=`codexly:project-sidebar:temporary-tasks-expanded:v1`;function ro(){try{return typeof window>`u`?void 0:window.localStorage}catch{return}}function io(e){if(e===void 0)return null;try{let t=e.getItem(to);if(t===null)return null;let n=JSON.parse(t);return uo(n)?new Set(n.expandedProjectIds):null}catch{return null}}function ao(e,t){if(e===void 0)return;let n={expandedProjectIds:[...t],version:1};try{e.setItem(to,JSON.stringify(n))}catch{}}function oo(e){if(e===void 0)return!0;try{let t=e.getItem(no);if(t===null)return!0;let n=JSON.parse(t);return!fo(n)||n.expanded}catch{return!0}}function so(e,t){if(e===void 0)return;let n={expanded:t,version:1};try{e.setItem(no,JSON.stringify(n))}catch{}}function co(e,t){if(t===null){let t=e[0];return t===void 0?new Set:new Set([t])}return new Set(e.filter(e=>t.has(e)))}function lo(e,t){let n=co(e,t);return e.find(e=>n.has(e))??e[0]}function uo(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.version===1&&Array.isArray(t.expandedProjectIds)&&t.expandedProjectIds.every(e=>typeof e==`string`)}function fo(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.version===1&&typeof t.expanded==`boolean`}var po=new Set,mo=(0,z.createContext)({expandedPaths:po,onSelect:void 0,selectedPath:void 0,togglePath:()=>void 0});function ho({children:e,className:t=``,defaultExpanded:n=po,expanded:r,onExpandedChange:i,onSelect:a,selectedPath:o,...s}){let[c,l]=(0,z.useState)(()=>new Set(n)),u=r??c,d=(0,z.useCallback)(e=>{let t=new Set(u);t.has(e)?t.delete(e):t.add(e),r===void 0&&l(t),i?.(t)},[r,u,i]),f=(0,z.useMemo)(()=>({expandedPaths:u,onSelect:a,selectedPath:o,togglePath:d}),[u,a,o,d]);return(0,W.jsx)(mo.Provider,{value:f,children:(0,W.jsx)(`div`,{className:`w-full font-mono text-label text-foreground ${t}`,"data-ai-file-tree":``,role:`tree`,...s,children:e})})}function go({className:e=``,...t}){return(0,W.jsx)(`span`,{className:`shrink-0 ${e}`,...t})}function _o({className:e=``,...t}){return(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate ${e}`,...t})}function vo({children:e,className:t=``,name:n,path:r,selectionControl:i,trailing:a,...o}){let{expandedPaths:s,onSelect:c,selectedPath:l,togglePath:u}=(0,z.useContext)(mo),{t:d}=R(`conversation`),f=s.has(r),p=l===r,m=()=>{u(r),c?.(r)};return(0,W.jsxs)(`div`,{"aria-expanded":f,"aria-selected":p,className:t,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`ArrowRight`&&!f||e.key===`ArrowLeft`&&f?(e.preventDefault(),u(r)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),m()))},role:`treeitem`,tabIndex:0,...o,children:[(0,W.jsxs)(`div`,{className:`group/file-tree-node flex min-h-7 w-full items-center gap-1 rounded-control px-1.5 text-left transition-colors hover:bg-control-hover ${p?`bg-control`:``}`,children:[(0,W.jsx)(K,{"aria-label":d(f?`agentComponents.folderCollapse`:`agentComponents.folderExpand`,{name:n}),className:`inline-grid size-5 shrink-0 place-items-center rounded-control text-muted-foreground hover:text-foreground focus-visible:shadow-focus focus-visible:outline-none`,onClick:()=>{u(r)},size:`embedded`,type:`button`,variant:`embedded`,children:(0,W.jsx)(he,{"aria-hidden":`true`,className:`size-3.5 transition-transform ${f?`rotate-90`:``}`})}),i,(0,W.jsxs)(K,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-left focus-visible:outline-none`,contentAlign:`start`,onClick:m,size:`embedded`,type:`button`,variant:`embedded`,children:[(0,W.jsx)(go,{children:f?(0,W.jsx)(j,{"aria-hidden":`true`,className:`size-3.5 text-brand`}):(0,W.jsx)(le,{"aria-hidden":`true`,className:`size-3.5 text-brand`})}),(0,W.jsx)(_o,{title:n,children:n})]}),a]}),f?(0,W.jsx)(`div`,{className:`ml-3 border-l border-separator pl-1`,role:`group`,children:e}):null]})}function yo({children:e,className:t=``,icon:n,name:r,path:i,trailing:a,...o}){let{onSelect:s,selectedPath:c}=(0,z.useContext)(mo),l=c===i,u=()=>{s?.(i)};return(0,W.jsxs)(`div`,{"aria-selected":l,className:`group/file-tree-node flex min-h-7 cursor-pointer items-center gap-1.5 rounded-control px-1.5 transition-colors hover:bg-control-hover focus-visible:shadow-focus focus-visible:outline-none ${l?`bg-control`:``} ${t}`,onClick:u,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),u())},role:`treeitem`,tabIndex:0,...o,children:[e??(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,W.jsx)(go,{children:n??(0,W.jsx)(ke,{"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`})}),(0,W.jsx)(_o,{title:i,children:r})]}),a]})}function bo(e){e.stopPropagation()}function xo({className:e=``,...t}){return(0,W.jsx)(`div`,{className:`ml-auto flex items-center gap-1 ${e}`,onClick:bo,onKeyDown:bo,role:`group`,...t})}function So({className:e,...t}){return(0,W.jsx)(Ct,{className:G(`peer inline-grid size-4 shrink-0 place-items-center rounded-[4px] border border-separator-strong bg-panel text-brand-contrast shadow-sm outline-none transition-colors focus-visible:border-brand focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-brand data-[state=checked]:bg-brand data-[state=indeterminate]:border-brand data-[state=indeterminate]:bg-brand`,e),"data-slot":`checkbox`,...t,children:(0,W.jsxs)(Ze,{className:`group [&_svg]:size-3`,"data-slot":`checkbox-indicator`,children:[(0,W.jsx)(ge,{"aria-hidden":`true`,className:`group-data-[state=indeterminate]:hidden`}),(0,W.jsx)(fe,{"aria-hidden":`true`,className:`hidden group-data-[state=indeterminate]:block`})]})})}function Co(e){return(0,W.jsx)(rt,{"data-slot":`dialog`,...e})}function wo(e){return(0,W.jsx)(Tt,{"data-slot":`dialog-trigger`,...e})}function To({children:e,...t}){return typeof document>`u`?(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(Ot,{"data-slot":`dialog-portal`,...t,children:e})}function Eo({className:e,...t}){return(0,W.jsx)(lt,{className:G(`fixed inset-0 z-50 bg-scrim data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),"data-slot":`dialog-overlay`,...t})}function Do({children:e,className:t,...n}){return(0,W.jsxs)(To,{children:[(0,W.jsx)(Eo,{}),(0,W.jsx)(et,{className:G(`fixed left-1/2 top-1/2 z-50 grid min-w-0 max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 overflow-auto rounded-surface bg-dialog p-5 text-foreground shadow-panel outline-none duration-180 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,t),"data-slot":`dialog-content`,...n,children:e})]})}function Oo({className:e,...t}){return(0,W.jsx)(`div`,{className:G(`flex flex-col gap-1 text-left`,e),"data-slot":`dialog-header`,...t})}function ko({className:e,...t}){return(0,W.jsx)(`div`,{className:G(`flex justify-end gap-2`,e),"data-slot":`dialog-footer`,...t})}function Ao({className:e,...t}){return(0,W.jsx)(bt,{className:G(`text-heading font-semibold leading-tight`,e),"data-slot":`dialog-title`,...t})}function jo({className:e,...t}){return(0,W.jsx)(Ke,{className:G(`text-body-small text-muted-foreground`,e),"data-slot":`dialog-description`,...t})}function Mo({draftPath:e,isPathValidated:t,requestedPath:n,selectedPaths:r,submittedPath:i,validatedPath:a}){return r.length>0?r:!t||e!==void 0||i===void 0||n!==i||a===void 0?[]:[a]}var No=be(`min-w-0 text-foreground outline-none transition-[border-color,box-shadow] placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,{defaultVariants:{variant:`default`},variants:{variant:{compact:`h-8 w-full rounded-control bg-raised px-2.5 text-label shadow-sm focus-visible:shadow-focus`,default:`h-9 w-full rounded-control bg-control px-3 text-body focus-visible:shadow-focus`,embedded:`flex-1 bg-transparent`,outline:`h-11 w-full rounded-control border border-separator-strong bg-panel px-3 text-body-small focus-visible:border-brand focus-visible:shadow-focus sm:h-9`}}});function J({className:e,type:t,variant:n=`default`,...r}){return(0,W.jsx)(`input`,{className:G(No({className:e,variant:n})),"data-slot":`input`,"data-variant":n,type:t,...r})}var Po=`flex cursor-default items-center justify-center py-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`;function Fo({...e}){return(0,W.jsx)(xt,{"data-slot":`select`,...e})}function Io({...e}){return(0,W.jsx)(st,{"data-slot":`select-group`,...e})}function Lo({...e}){return(0,W.jsx)(it,{"data-slot":`select-value`,...e})}function Ro({className:e,size:t=`default`,children:n,...r}){return(0,W.jsxs)(dt,{"data-slot":`select-trigger`,"data-size":t,className:G(`flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-control border border-separator-strong bg-panel px-3 py-2 text-label outline-none transition-colors focus:border-brand focus:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4`,t===`toolbar`&&`h-6 gap-1 px-1 text-caption [&_svg:not([class*='size-'])]:size-3`,e),...r,children:[n,(0,W.jsx)(gt,{asChild:!0,children:(0,W.jsx)(me,{className:`opacity-50`})})]})}function zo({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,W.jsx)(St,{children:(0,W.jsxs)(Et,{"data-slot":`select-content`,className:G(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-control border border-separator bg-raised text-foreground shadow-panel data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(At,{className:G(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,W.jsx)(Ho,{})]})})}function Bo({className:e,children:t,...n}){return(0,W.jsxs)(kt,{"data-slot":`select-item`,className:G(`relative flex w-full cursor-default items-center gap-2 rounded-control py-1.5 pr-8 pl-2 text-label outline-hidden select-none focus:bg-control-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-muted-foreground [&_svg:not([class*='size-'])]:size-3.5`,e),...n,children:[(0,W.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(ct,{children:(0,W.jsx)(ge,{})})}),(0,W.jsx)(ut,{children:t})]})}function Vo({className:e,...t}){return(0,W.jsx)(ft,{"data-slot":`select-scroll-up-button`,className:G(Po,e),...t,children:(0,W.jsx)(ee,{})})}function Ho({className:e,...t}){return(0,W.jsx)(_t,{"data-slot":`select-scroll-down-button`,className:G(Po,e),...t,children:(0,W.jsx)(me,{})})}function Uo({delayDuration:e=350,disableHoverableContent:t=!0,skipDelayDuration:n=150,...r}){return(0,W.jsx)(wt,{"data-slot":`tooltip-provider`,delayDuration:e,disableHoverableContent:t,skipDelayDuration:n,...r})}function Y(e){return(0,W.jsx)(pt,{"data-slot":`tooltip`,...e})}function X(e){return(0,W.jsx)(at,{"data-slot":`tooltip-trigger`,...e})}function Z({children:e,className:t,collisionPadding:n=8,sideOffset:r=8,...i}){return(0,W.jsx)(yt,{children:(0,W.jsx)(Dt,{className:G(`pointer-events-none z-50 w-fit max-w-[min(20rem,calc(100vw-1rem))] whitespace-normal rounded-control bg-foreground px-2 py-1 text-meta text-raised shadow-floating`,t),collisionPadding:n,"data-slot":`tooltip-content`,sideOffset:r,...i,children:e})})}function Wo(e,t){let n=t.toLowerCase();return e.find(e=>n.startsWith(e.path.toLowerCase()))}function Go({disabled:e,includeHidden:t,labels:n,listing:r,onNavigateParent:i,onNavigatePath:a,onNavigateRoot:o,onPathChange:s,onToggleHidden:c,path:l}){let u=r===void 0?void 0:Wo(r.roots,r.path)?.path,d=t?n.hideHidden:n.showHidden;return(0,W.jsxs)(`div`,{className:`flex min-h-10 items-center gap-2 border-y border-separator bg-panel px-3 sm:px-4`,children:[r===void 0||r.roots.length<2?null:(0,W.jsxs)(Fo,{disabled:e,onValueChange:o,...u===void 0?{}:{value:u},children:[(0,W.jsx)(Ro,{"aria-label":n.filesystemRoot,className:`h-8 min-w-20 px-2 font-mono`,size:`sm`,children:(0,W.jsx)(Lo,{placeholder:n.filesystemRoot})}),(0,W.jsx)(zo,{position:`popper`,children:r.roots.map(e=>(0,W.jsx)(Bo,{value:e.path,children:e.name},e.path))})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n.parent,disabled:r?.parentPath===null||r===void 0||e,onClick:i,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Fe,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:n.parent})]}),(0,W.jsxs)(`form`,{className:`flex min-w-0 flex-1 items-center gap-1`,onSubmit:e=>{e.preventDefault(),a()},children:[(0,W.jsx)(J,{"aria-label":n.pathLabel,autoComplete:`off`,className:`h-8 min-w-0 px-2 font-mono text-caption max-workbench:h-11`,disabled:e,onChange:e=>{s(e.target.value)},placeholder:n.pathPlaceholder,spellCheck:!1,value:l,variant:`compact`}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n.goToPath,disabled:l.trim().length===0||e,size:`icon-sm`,type:`submit`,variant:`ghost`,children:(0,W.jsx)(ae,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:n.goToPath})]})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d,"aria-pressed":t,disabled:e,onClick:c,size:`icon-sm`,type:`button`,variant:`ghost`,children:t?(0,W.jsx)(ce,{"aria-hidden":`true`}):(0,W.jsx)(se,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d})]})]})}function Ko({directoryStates:e,entries:t,expandedPaths:n,onRetry:r,onRootCheckedChange:i,selectedPaths:a,selectionDisabled:o=!1}){let{t:s}=R(`workbench`);return t.map(t=>{let c=e.get(t.path),l=n.has(t.path);return(0,W.jsx)(vo,{name:t.name,path:t.path,selectionControl:(0,W.jsx)(So,{"aria-label":s(`projectPicker.selectRoot`,{name:t.name}),checked:a.has(t.path),disabled:o,onCheckedChange:e=>{i(t.path,e===!0)}}),trailing:l&&c?.isFetching===!0?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-3.5 animate-spin text-muted-foreground`}):void 0,children:l?c?.error!==null&&c?.error!==void 0?(0,W.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-2 px-2 py-1`,children:[(0,W.jsx)(`p`,{className:`min-w-0 text-caption text-danger`,role:`alert`,children:s(`projectPicker.loadBranchError`)}),(0,W.jsxs)(K,{className:`shrink-0`,onClick:()=>{r(t.path)},size:`sm`,type:`button`,variant:`ghost`,children:[(0,W.jsx)(Ee,{"aria-hidden":`true`,"data-icon":`inline-start`}),s(`actions.retry`)]})]}):c?.data===void 0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-caption text-muted-foreground`,role:`status`,children:s(`projectPicker.loadingBranch`)}):c.data.entries.length===0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-caption text-muted-foreground`,children:s(`projectPicker.empty`)}):(0,W.jsx)(Ko,{directoryStates:e,entries:c.data.entries,expandedPaths:n,onRetry:r,onRootCheckedChange:i,selectedPaths:a,selectionDisabled:o}):null},t.path)})}function qo({directoryStates:e,expandedPaths:t,listing:n,onExpandedChange:r,onRetry:i,onRootCheckedChange:a,selectedPaths:o,selectionDisabled:s=!1}){let{t:c}=R(`workbench`),l=(0,z.useMemo)(()=>new Map(e.map(e=>[e.path,e])),[e]);return(0,W.jsx)(ho,{"aria-label":c(`projectPicker.treeLabel`),expanded:t,onExpandedChange:r,children:(0,W.jsx)(Ko,{directoryStates:l,entries:n.entries,expandedPaths:t,onRetry:i,onRootCheckedChange:a,selectedPaths:o,selectionDisabled:s})})}function Jo({client:e,isAdding:t,onAdd:n,onClose:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(),[s,c]=(0,z.useState)(),[l,u]=(0,z.useState)(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(()=>new Set),[h,_]=(0,z.useState)([]),v=g({queryFn:({signal:t})=>e.listProjectDirectories(a,{includeHidden:d,signal:t}),queryKey:[`project-directories`,a??null,d],staleTime:3e4}),b=v.data,x=Mo({draftPath:s,isPathValidated:v.isSuccess,requestedPath:a,selectedPaths:h,submittedPath:l,validatedPath:b?.path}),S=x.length>0,C=h.length===0&&x.length===1,w=(0,z.useMemo)(()=>new Set(h),[h]),T=C?x[0]??``:h.map((e,t)=>t===0?i(`projectPicker.primaryRootSummary`,{path:e}):e).join(i(`projectPicker.rootSeparator`)),E=(0,z.useMemo)(()=>[...p],[p]),D=y({queries:E.map(t=>({queryFn:({signal:n})=>e.listProjectDirectories(t,{includeHidden:d,signal:n}),queryKey:[`project-directories`,t,d],staleTime:3e4}))}),O=E.map((e,t)=>{let n=D[t];return{...n?.data===void 0?{}:{data:n.data},error:n?.error??null,isFetching:n?.isFetching??!1,path:e}}),k=s??a??b?.path??``;return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&r()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`project-directory-picker-title`,className:`grid h-[min(84dvh,42rem)] max-w-2xl grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-0 overflow-hidden p-0`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:[(0,W.jsxs)(Oo,{className:`px-4 pb-3 pt-4 sm:px-5 sm:pt-5`,children:[(0,W.jsx)(Ao,{id:`project-directory-picker-title`,children:i(`projectPicker.title`)}),(0,W.jsx)(jo,{className:`sr-only`,children:i(`projectPicker.description`)})]}),(0,W.jsx)(Go,{disabled:t,includeHidden:d,labels:{filesystemRoot:i(`projectPicker.filesystemRoot`),goToPath:i(`projectPicker.goToPath`),hideHidden:i(`projectPicker.hideHidden`),parent:i(`projectPicker.parent`),pathLabel:i(`projectPicker.pathLabel`),pathPlaceholder:i(`projectPicker.pathPlaceholder`),showHidden:i(`projectPicker.showHidden`)},listing:b,onNavigateParent:()=>{let e=b?.parentPath;e!=null&&(o(e),c(void 0),u(void 0),m(new Set),_([]))},onNavigatePath:()=>{let e=k.trim();e.length!==0&&(o(e),c(void 0),u(e),m(new Set),_([]))},onNavigateRoot:e=>{o(e),c(void 0),u(void 0),m(new Set),_([])},onPathChange:e=>{c(e),u(void 0)},onToggleHidden:()=>{f(e=>!e),_([])},path:k}),(0,W.jsx)(`div`,{className:`min-h-0 overflow-y-auto px-3 py-2 sm:px-4`,children:v.isPending?(0,W.jsxs)(`p`,{className:`flex min-h-32 items-center justify-center gap-2 text-body-small text-muted-foreground`,role:`status`,children:[(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}),i(`projectPicker.loading`)]}):v.error===null?b===void 0?null:b.entries.length===0?(0,W.jsx)(`p`,{className:`grid min-h-32 place-items-center text-body-small text-muted-foreground`,children:i(`projectPicker.empty`)}):(0,W.jsx)(qo,{directoryStates:O,expandedPaths:p,listing:b,onExpandedChange:m,onRetry:e=>{let t=E.indexOf(e);D[t]?.refetch()},onRootCheckedChange:(e,t)=>{u(void 0),_(n=>zi(n,e,t))},selectedPaths:w,selectionDisabled:t}):(0,W.jsxs)(`div`,{className:`flex min-h-32 flex-col items-center justify-center gap-3 text-center`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,role:`alert`,children:i(`projectPicker.loadError`)}),(0,W.jsxs)(K,{onClick:()=>void v.refetch(),type:`button`,variant:`outline`,children:[(0,W.jsx)(Ee,{"aria-hidden":`true`,"data-icon":`inline-start`}),i(`actions.retry`)]})]})}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 border-t border-separator bg-raised px-4 py-3 sm:flex-row sm:items-center sm:px-5`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1`,children:[(0,W.jsx)(`p`,{"aria-live":`polite`,className:`text-caption text-muted-foreground`,children:C?i(`projectPicker.directPathReady`):i(`projectPicker.selectedRoots`,{count:h.length})}),C?null:(0,W.jsx)(`p`,{className:`ml-auto text-right text-caption text-muted-foreground`,children:i(`projectPicker.primaryRootHint`)})]}),T.length===0?null:(0,W.jsx)(`p`,{className:`min-w-0 break-words font-mono text-caption text-foreground [overflow-wrap:anywhere]`,children:T})]}),(0,W.jsxs)(ko,{className:`w-full flex-col-reverse sm:w-auto sm:flex-row`,children:[(0,W.jsx)(K,{className:`h-10 w-full sm:h-8 sm:w-auto`,disabled:t,onClick:r,type:`button`,variant:`outline`,children:i(`actions.cancel`)}),(0,W.jsxs)(K,{className:`h-10 w-full sm:h-8 sm:w-auto`,disabled:!S||t,onClick:()=>{x.length>0&&n(x)},type:`button`,children:[t?(0,W.jsx)(N,{"aria-hidden":`true`,className:`animate-spin`,"data-icon":`inline-start`}):(0,W.jsx)(Ae,{"aria-hidden":`true`,"data-icon":`inline-start`}),i(t?`projectPicker.adding`:`projectPicker.add`)]})]})]})]})})}function Yo({isPending:e,onClose:t,onRemove:n,project:r}){let{t:i}=R(`workbench`);return(0,W.jsx)(Co,{onOpenChange:n=>{!n&&!e&&t()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`project-remove-title`,className:`max-w-96 p-4`,onEscapeKeyDown:t=>{e&&t.preventDefault()},onInteractOutside:t=>{e&&t.preventDefault()},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`project-remove-title`,children:i(`projectDialog.remove`)}),(0,W.jsx)(jo,{children:i(`projectDialog.removeDescription`,{name:r.name})})]}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{className:`h-8 rounded-control px-3 text-body-small text-muted-foreground hover:bg-control-hover hover:text-foreground`,disabled:e,onClick:t,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:e,onClick:n,type:`button`,variant:`destructive`,children:i(`projectDialog.delete`)})]})]})})}function Xo({initialName:e,isPending:t,onClose:n,onRename:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(e),s=a.trim();return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&n()},open:!0,children:(0,W.jsx)(Do,{"aria-labelledby":`project-rename-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:(0,W.jsxs)(`form`,{className:`grid gap-4`,onSubmit:e=>{e.preventDefault(),s.length>0&&r(s)},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`project-rename-title`,children:i(`projectDialog.rename`)}),(0,W.jsx)(jo,{children:i(`projectDialog.renameDescription`)})]}),(0,W.jsx)(J,{"aria-label":i(`projectDialog.name`),autoFocus:!0,disabled:t,maxLength:200,onChange:e=>{o(e.currentTarget.value)},value:a}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:t,onClick:n,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:t||s.length===0||s===e,type:`submit`,children:i(`actions.save`)})]})]})})})}function Zo({initialTitle:e,isPending:t,onClose:n,onRename:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(e);return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&n()},open:!0,children:(0,W.jsx)(Do,{"aria-labelledby":`task-rename-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:(0,W.jsxs)(`form`,{className:`grid gap-4`,onSubmit:e=>{e.preventDefault();let t=a.trim();t.length>0&&r(t)},children:[(0,W.jsx)(Oo,{children:(0,W.jsx)(Ao,{id:`task-rename-title`,children:i(`taskDialog.rename`)})}),(0,W.jsx)(J,{"aria-label":i(`taskDialog.name`),autoFocus:!0,disabled:t,maxLength:200,onChange:e=>{o(e.currentTarget.value)},value:a}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:t,onClick:n,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:t||a.trim().length===0,type:`submit`,children:i(`actions.save`)})]})]})})})}function Qo({client:e,isProjectActionPending:t,isProjectAddPending:n,isProjectPickerOpen:r,onAddProject:i,onCloseProjectDialog:a,onCloseProjectPicker:o,onCloseTaskRename:s,onRemoveProject:c,onRenameProject:l,onRenameTask:u,removingProject:d,renamingProject:f,renamingTask:p,taskRenamePending:m}){return(0,W.jsxs)(W.Fragment,{children:[p===null?null:(0,W.jsx)(Zo,{initialTitle:p.title,isPending:m,onClose:s,onRename:e=>{u(p,e)}},p.id),r?(0,W.jsx)(Jo,{client:e,isAdding:n,onAdd:i,onClose:o}):null,f===null?null:(0,W.jsx)(Xo,{initialName:f.name,isPending:t,onClose:()=>{a(f.id)},onRename:e=>{l(f,e)}},f.id),d===null?null:(0,W.jsx)(Yo,{isPending:t,onClose:()=>{a(d.id)},onRemove:()=>{c(d)},project:d},d.id)]})}var $o=4,es=100;async function ts(e,t){let n=new Set,r=new Set,i;for(;;){let a=await e.listTasks(t,{archived:!0,...i===void 0?{}:{cursor:i},limit:es});for(let e of a.data)n.add(e.id);if(a.nextCursor===null)break;if(r.has(a.nextCursor))throw Error(`Archived task pagination returned a repeated cursor`);r.add(a.nextCursor),i=a.nextCursor}return[...n]}async function ns(e,t){let n=await ts(e,t),r;for(let i=0;i<n.length;i+=$o){let a=n.slice(i,i+$o),o=await Promise.allSettled(a.map(n=>e.deleteTask(t,n)));for(let e of o)e.status===`rejected`&&r===void 0&&(r=e.reason instanceof Error?e.reason:Error(String(e.reason)))}if(r!==void 0)throw r}function rs({confirmLabel:e,description:t,isPending:n,onClose:r,onConfirm:i,title:a}){let{t:o}=R(`workbench`);return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!n&&r()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`task-delete-confirmation-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{n&&e.preventDefault()},onInteractOutside:e=>{n&&e.preventDefault()},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`task-delete-confirmation-title`,children:a}),(0,W.jsx)(jo,{children:t})]}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:n,onClick:r,type:`button`,variant:`ghost`,children:o(`actions.cancel`)}),(0,W.jsx)(K,{disabled:n,onClick:i,type:`button`,variant:`destructive`,children:e})]})]})})}function is({isPending:e,onClose:t,onDelete:n,task:r}){let{t:i}=R(`workbench`);return(0,W.jsx)(rs,{confirmLabel:i(`sidebar.deletePermanently`),description:i(`sidebar.deleteTaskDescription`,{task:r.title}),isPending:e,onClose:t,onConfirm:n,title:i(`sidebar.deleteTaskTitle`)})}function as({error:e,isPending:t,mutationPending:n,onDelete:r,onDeleteAll:i,onNext:a,onPrevious:o,onRestore:s,onRetry:c,page:l,pageNumber:u}){let{t:d}=R(`workbench`);return t?(0,W.jsxs)(`div`,{className:`flex min-h-48 items-center justify-center`,role:`status`,children:[(0,W.jsx)(N,{className:`size-5 animate-spin text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`sr-only`,children:d(`archivedTasks.loading`)})]}):e===null?(0,W.jsxs)(`div`,{className:`grid min-h-0 grid-rows-[minmax(0,1fr)_auto]`,children:[l?.data.length===0?(0,W.jsx)(`p`,{className:`flex min-h-48 items-center justify-center px-4 text-body-small text-muted-foreground`,children:d(`archivedTasks.empty`)}):(0,W.jsx)(`ul`,{className:`min-h-0 overflow-y-auto`,children:l?.data.map(e=>(0,W.jsxs)(`li`,{className:`flex min-h-14 min-w-0 items-center gap-3 px-4 py-2`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`truncate text-body-small font-medium text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`text-caption text-muted-foreground`,children:d(`archivedTasks.updatedAt`,{date:new Date(e.updatedAt).toLocaleString()})})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.restoreTask`,{task:e.title}),disabled:n,onClick:()=>{s(e)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(I,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.restore`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.deleteTask`,{task:e.title}),disabled:n,onClick:()=>{r(e)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Be,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.delete`)})]})]},e.id))}),(0,W.jsxs)(`div`,{className:`flex min-h-12 items-center justify-between gap-2 px-4`,children:[(0,W.jsxs)(K,{className:`text-danger hover:text-danger`,disabled:n,onClick:i,size:`sm`,type:`button`,variant:`ghost`,children:[(0,W.jsx)(Be,{"aria-hidden":`true`}),d(`archivedTasks.deleteAll`)]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.previous`),className:`size-11 sm:size-8`,disabled:n||u===1,onClick:o,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(re,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.previous`)})]}),(0,W.jsx)(`span`,{className:`min-w-16 text-center text-caption text-muted-foreground`,children:d(`archivedTasks.page`,{page:u})}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.next`),className:`size-11 sm:size-8`,disabled:n||l?.nextCursor===null,onClick:a,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(he,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.next`)})]})]})]})]}):(0,W.jsxs)(`div`,{className:`flex min-h-48 flex-col items-center justify-center gap-3 px-4 text-center`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,role:`alert`,children:d(`archivedTasks.loadError`)}),(0,W.jsx)(K,{onClick:c,size:`sm`,type:`button`,variant:`outline`,children:d(`actions.retry`)})]})}function os({client:e,onClose:t,project:n}){let{t:r}=R(`workbench`),i=p(),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)([void 0]),[d,f]=(0,z.useState)(0),[m,h]=(0,z.useState)(null),[_,y]=(0,z.useState)(!1),b=(0,z.useRef)(kr()),x=l[d],S=g(lr(n.id,x,s,e)),C=v(Ln(e)),w=v(Rn(e)),T=v({mutationFn:()=>ns(e,n.id),mutationKey:[`tasks`,`delete-all-archived`,n.id]}),E=C.isPending||w.isPending||T.isPending;(0,z.useEffect)(()=>{let e=window.setTimeout(()=>{c(a.trim()),u([void 0]),f(0)},250);return()=>{window.clearTimeout(e)}},[a]);let D=()=>{u([void 0]),f(0),i.removeQueries({queryKey:[`projects`,n.id,`archived-tasks`]})},O=e=>b.current.run(async()=>{try{let t=await C.mutateAsync({projectId:n.id,taskId:e.id});i.setQueryData([`projects`,n.id,`tasks`],e=>yn(e,t.task)),xn(i,t.task),D()}catch{}}),k=e=>b.current.run(async()=>{try{await w.mutateAsync({projectId:n.id,taskId:e.id}),h(null),D()}catch{}}),A=()=>b.current.run(async()=>{try{await T.mutateAsync(),y(!1)}catch{}finally{D()}});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!E&&t()},open:!0,children:(0,W.jsxs)(Do,{className:`grid h-[min(42rem,calc(100dvh-2rem))] max-w-2xl grid-rows-[auto_auto_minmax(0,1fr)] gap-0 overflow-hidden p-0`,children:[(0,W.jsx)(Oo,{className:`px-4 pb-3 pt-4 sm:px-5 sm:pt-5`,children:(0,W.jsx)(Ao,{children:r(`archivedTasks.title`,{project:n.name})})}),(0,W.jsxs)(`div`,{className:`relative px-4 pb-3 sm:px-5`,children:[(0,W.jsx)(Me,{"aria-hidden":`true`,className:`pointer-events-none absolute left-7 top-2.5 size-4 text-muted-foreground sm:left-8`}),(0,W.jsx)(J,{"aria-label":r(`archivedTasks.search`),className:`h-9 w-full pl-8`,onChange:e=>{o(e.currentTarget.value)},placeholder:r(`archivedTasks.search`),value:a})]}),(0,W.jsx)(as,{error:S.error,isPending:S.isPending,mutationPending:E,onDelete:h,onDeleteAll:()=>{y(!0)},onNext:()=>{let e=S.data?.nextCursor;e!=null&&(u(t=>[...t.slice(0,d+1),e]),f(e=>e+1))},onPrevious:()=>{f(e=>Math.max(0,e-1))},onRestore:e=>{O(e)},onRetry:()=>{S.refetch()},page:S.data,pageNumber:d+1})]})}),m===null?null:(0,W.jsx)(rs,{confirmLabel:r(`archivedTasks.confirmDelete`),description:r(`archivedTasks.deleteDescription`,{task:m.title}),isPending:w.isPending,onClose:()=>{h(null)},onConfirm:()=>{k(m)},title:r(`archivedTasks.deleteTitle`)}),_?(0,W.jsx)(rs,{confirmLabel:r(`archivedTasks.confirmDeleteAll`),description:r(`archivedTasks.deleteAllDescription`,{project:n.name}),isPending:T.isPending,onClose:()=>{y(!1)},onConfirm:()=>{A()},title:r(`archivedTasks.deleteAllTitle`)}):null]})}function ss(e){return(0,W.jsx)(Ye,{"data-slot":`dropdown-menu`,...e})}function cs(e){return(0,W.jsx)(Qe,{"data-slot":`dropdown-menu-trigger`,...e})}function ls(e){return(0,W.jsx)(ht,{"data-slot":`dropdown-menu-sub`,...e})}function us({children:e,...t}){return typeof document>`u`?(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(jt,{"data-slot":`dropdown-menu-portal`,...t,children:e})}function ds({children:e,className:t,collisionPadding:n=8,sideOffset:r=2,...i}){return(0,W.jsx)(us,{children:(0,W.jsx)(Nt,{className:G(`z-50 min-w-32 overflow-hidden rounded-surface bg-raised p-1 text-foreground shadow-floating outline-none`,t),collisionPadding:n,"data-slot":`dropdown-menu-content`,sideOffset:r,...i,children:e})})}function fs({className:e,...t}){return(0,W.jsx)(Mt,{className:G(`flex cursor-default select-none items-center gap-2 rounded-control px-2 py-1.5 text-body-small outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),"data-slot":`dropdown-menu-item`,...t})}function ps({children:e,className:t,...n}){return(0,W.jsxs)(mt,{className:G(`flex cursor-default select-none items-center gap-2 rounded-control px-2 py-1.5 text-body-small outline-none transition-colors data-[state=open]:bg-control-hover data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,t),"data-slot":`dropdown-menu-sub-trigger`,...n,children:[e,(0,W.jsx)(he,{"aria-hidden":`true`,className:`ml-auto size-3.5 text-muted-foreground`})]})}function ms({children:e,className:t,collisionPadding:n=8,sideOffset:r=2,...i}){return(0,W.jsx)(us,{children:(0,W.jsx)(qe,{className:G(`z-50 min-w-40 max-h-[calc(100dvh-1rem)] overflow-y-auto rounded-surface bg-raised p-1 text-foreground shadow-floating outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,t),collisionPadding:n,"data-slot":`dropdown-menu-sub-content`,sideOffset:r,...i,children:e})})}function hs(e){return(0,W.jsx)(ot,{"data-slot":`dropdown-menu-group`,...e})}function gs({className:e,...t}){return(0,W.jsx)(Je,{className:G(`px-2 py-1 text-label font-medium text-foreground`,e),"data-slot":`dropdown-menu-label`,...t})}function _s({className:e,...t}){return(0,W.jsx)($e,{className:G(`-mx-1 my-1 h-px bg-separator`,e),"data-slot":`dropdown-menu-separator`,...t})}function vs(e){return(0,W.jsx)(nt,{"data-slot":`dropdown-menu-radio-group`,...e})}function ys({children:e,className:t,indicator:n=`radio`,...r}){return(0,W.jsxs)(Xe,{className:G(`relative flex cursor-default select-none items-center gap-2.5 rounded-control py-1.5 text-body-small outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,n===`check`?`pl-2 pr-8`:`pl-8 pr-2`,t),"data-indicator":n,"data-indicator-position":n===`check`?`end`:`start`,"data-slot":`dropdown-menu-radio-item`,...r,children:[(0,W.jsx)(`span`,{className:G(`pointer-events-none absolute flex size-3.5 items-center justify-center`,n===`check`?`right-2`:`left-2`),children:(0,W.jsx)(tt,{children:n===`check`?(0,W.jsx)(ge,{"aria-hidden":`true`,className:`size-3.5`}):(0,W.jsx)(ie,{"aria-hidden":`true`,className:`size-2 fill-current text-brand`})})}),e]})}function bs(e){let t=new Map;for(let n of e){let e=t.get(n.projectId);e===void 0?t.set(n.projectId,[n]):e.push(n)}return t}function xs({error:e,hasHiddenLoadedTasks:t,hasNextPage:n,isExpanded:r,isFetchingNextPage:i}){return r?n?{action:`load`,disabled:i,label:i?L.t(`sidebar.expandLoading`,{ns:`workbench`}):e===null?L.t(`sidebar.expand`,{ns:`workbench`}):L.t(`sidebar.expandRetry`,{ns:`workbench`})}:t?{action:`collapse`,disabled:!1,label:L.t(`sidebar.collapse`,{ns:`workbench`})}:null:n?{action:`expand-and-load`,disabled:!1,label:L.t(`sidebar.expand`,{ns:`workbench`})}:t?{action:`expand`,disabled:!1,label:L.t(`sidebar.expand`,{ns:`workbench`})}:null}function Ss({hasActiveTask:e,projectDataFailed:t,projectDataPending:n,taskConnectionState:r}){return e?r:t?`closed`:n?`connecting`:`connected`}function Cs(e){switch(e){case`connected`:return{labelKey:`sidebar.connection.online`,toneClassName:`text-diff-added`};case`connecting`:return{labelKey:`sidebar.connection.connecting`,toneClassName:`text-warning`};case`reconnecting`:return{labelKey:`sidebar.connection.reconnecting`,toneClassName:`text-warning`};case`closed`:return{labelKey:`sidebar.connection.offline`,toneClassName:`text-danger`}}}function ws({disabled:e,onOpen:t}){let{t:n}=R(`workbench`);return(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n(`sidebar.addProject`),disabled:e,onClick:t,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{"aria-hidden":`true`,className:`size-3.5`})})}),(0,W.jsx)(Z,{children:n(`sidebar.addProject`)})]})}function Ts({isPending:e,onOpenArchived:t,onRemove:n,onRename:r,project:i}){let{t:a}=R(`workbench`);return(0,W.jsx)(`div`,{className:`relative shrink-0`,children:(0,W.jsxs)(ss,{modal:!1,children:[(0,W.jsx)(cs,{asChild:!0,children:(0,W.jsx)(K,{variant:`ghost`,"aria-label":a(`sidebar.openProjectActions`,{project:i.name}),className:`grid size-7 place-items-center rounded-control text-muted-foreground opacity-0 transition-[color,background-color,opacity] hover:bg-control-hover hover:text-foreground focus-visible:opacity-100 focus-visible:shadow-focus group-hover/project:opacity-100 data-[state=open]:opacity-100`,disabled:e,id:`project-actions-${i.id}`,type:`button`,children:(0,W.jsx)(ue,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Ds,{isPending:e,onOpenArchived:()=>{t(i)},onRemove:()=>{n(i)},onRename:()=>{r(i)},project:i})]})})}var Es=`h-8 w-full text-left text-foreground`;function Ds({isPending:e,onOpenArchived:t,onRemove:n,onRename:r,project:i}){let{t:a}=R(`workbench`);return(0,W.jsxs)(ds,{align:`start`,"aria-label":a(`sidebar.projectActions`,{project:i.name}),"aria-labelledby":void 0,className:`w-32`,children:[(0,W.jsxs)(fs,{className:Es,disabled:e,onSelect:r,children:[(0,W.jsx)(xe,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.rename`)]}),(0,W.jsxs)(fs,{className:Es,disabled:e,onSelect:t,children:[(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.archived`)]}),(0,W.jsxs)(fs,{className:`${Es} text-danger`,disabled:e,onSelect:n,children:[(0,W.jsx)(Be,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.remove`)]})]})}function Os({appInfo:e,connectionState:t,onOpen:n}){let{t:r}=R(`workbench`),i=Cs(t),a=r(i.labelKey),o=e?.appVersion??`…`,s=e?.updateAvailable===!0;return(0,W.jsxs)(`div`,{className:`flex h-9 w-full items-stretch text-body-small text-muted-foreground`,children:[(0,W.jsxs)(K,{"aria-label":r(`sidebar.settings`),className:`h-full min-w-0 flex-1 gap-2.5 rounded-r-none px-2.5`,contentAlign:`start`,id:`global-settings-trigger`,onClick:()=>{n(`appearance`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(Ce,{className:`size-4`,"aria-hidden":`true`}),r(`sidebar.settings`)]}),(0,W.jsx)(K,{"aria-label":r(`sidebar.aboutStatus`,{status:a,update:s?r(`sidebar.updateAvailableLabel`):``,version:o}),className:`h-full gap-1 rounded-l-none px-2.5 text-caption`,id:`global-settings-about-trigger`,onClick:()=>{n(`about`)},type:`button`,variant:`ghost`,children:(0,W.jsxs)(`span`,{"aria-live":`polite`,className:`inline-flex items-center gap-1`,children:[(0,W.jsxs)(`span`,{className:s?`text-warning`:`text-muted-foreground`,children:[s?(0,W.jsx)(de,{"aria-hidden":`true`,className:`mr-1 inline size-3`}):null,`v`,o]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted-foreground`,children:`·`}),(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 ${i.toneClassName}`,children:[(0,W.jsx)(ks,{connectionState:t}),a]})]})})]})}function ks({connectionState:e}){return e===`connected`?(0,W.jsx)(Se,{className:`size-3`,"aria-hidden":`true`}):e===`closed`?(0,W.jsx)(je,{className:`size-3`,"aria-hidden":`true`}):(0,W.jsx)(`span`,{className:`inline-flex animate-spin`,"aria-hidden":`true`,children:(0,W.jsx)(N,{className:`size-3`})})}function As(e,t){return e===`temporary`?{params:{taskId:t},to:`/temporary/t/$taskId`}:{params:{projectId:e,taskId:t},to:`/p/$projectId/t/$taskId`}}function js({active:e,attention:t,icon:n,isActionPending:r,isAwaitingApproval:i,isRunning:a,onArchive:o,onDelete:s,onPin:c,onRename:l,task:u}){let{t:d}=R(`workbench`),f=As(u.projectId,u.id);return(0,W.jsxs)(`div`,{className:`group relative min-w-0`,children:[(0,W.jsxs)(C,{"aria-current":e?`page`:void 0,className:`flex h-8 min-w-0 items-center gap-2 rounded-control px-2 text-body-small transition-colors ${e?`bg-control-active font-medium text-foreground`:`text-muted-foreground hover:bg-control-hover hover:text-foreground`}`,...f,children:[n===void 0?null:(0,W.jsx)(`span`,{className:`shrink-0 text-subtle-foreground`,children:n}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:u.title}),(0,W.jsx)(Ms,{attention:t,isAwaitingApproval:i,isRunning:a,updatedAt:u.updatedAt})]}),(0,W.jsxs)(ss,{modal:!1,children:[(0,W.jsx)(cs,{asChild:!0,children:(0,W.jsx)(K,{variant:`ghost`,"aria-label":d(`sidebar.openTaskActions`,{task:u.title}),className:`task-actions absolute right-1 top-1 grid size-6 place-items-center rounded-control text-muted-foreground transition-colors hover:bg-control-hover hover:text-foreground focus-visible:opacity-100 focus-visible:shadow-focus`,disabled:r,type:`button`,children:(0,W.jsx)(ue,{className:`size-4`,"aria-hidden":`true`})})}),(0,W.jsx)(Ps,{isPending:r,onArchive:()=>{o(u)},onDelete:()=>{s(u)},onPin:()=>{c(u)},onRename:()=>{l(u)},task:u})]})]})}function Ms({attention:e,isAwaitingApproval:t,isRunning:n,updatedAt:r}){let{t:i}=R(`workbench`),a;return a=t||e===`approval`?{animated:!0,label:i(`sidebar.taskApproval`),tone:`text-task-waiting`}:n?{animated:!0,label:i(`sidebar.taskRunning`),tone:`text-task-running`}:e===`completed`?{animated:!1,label:i(`sidebar.taskComplete`),tone:`text-task-completed`}:e===`failed`?{animated:!1,label:i(`sidebar.taskIncomplete`),tone:`text-task-failed`}:null,a===null?(0,W.jsx)(`span`,{className:`task-age task-status ml-auto shrink-0 text-caption text-subtle-foreground`,children:ta(r)}):(0,W.jsx)(`span`,{"aria-label":a.label,className:`task-status ml-auto inline-grid size-3.5 shrink-0 place-items-center ${a.tone}`,role:`status`,children:(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`task-status-dot block size-2 rounded-full bg-current ${a.animated?`task-status-dot--breathing`:``}`})})}var Ns=`h-8 w-full text-left text-foreground`;function Ps({isPending:e,onArchive:t,onDelete:n,onPin:r,onRename:i,task:a}){let{t:o}=R(`workbench`);return(0,W.jsxs)(ds,{align:`start`,"aria-label":o(`sidebar.taskActions`,{task:a.title}),"aria-labelledby":void 0,className:`w-40`,children:[(0,W.jsxs)(fs,{className:Ns,disabled:e,onSelect:r,children:[(0,W.jsx)(We,{className:`size-3.5`,"aria-hidden":`true`}),a.pinned?o(`sidebar.unpin`):o(`sidebar.pin`)]}),(0,W.jsxs)(fs,{className:Ns,disabled:e,onSelect:i,children:[(0,W.jsx)(xe,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.rename`)]}),(0,W.jsxs)(fs,{className:`${Ns} text-danger`,disabled:e,onSelect:t,children:[(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.archive`)]}),(0,W.jsxs)(fs,{className:`${Ns} text-danger`,disabled:e,onSelect:n,children:[(0,W.jsx)(Be,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.deletePermanently`)]})]})}function Fs({expanded:e,onCreate:t,onOpenArchived:n,onToggle:r}){let{t:i}=R(`workbench`),a=i(`sidebar.temporaryTasks`),o=`opacity-0 transition-[color,background-color,opacity] focus-visible:opacity-100 group-hover/temporary:opacity-100`;return(0,W.jsxs)(`div`,{className:`group/temporary flex h-8 items-center gap-0.5 text-muted-foreground`,children:[(0,W.jsxs)(K,{"aria-controls":`temporary-tasks-content`,"aria-expanded":e,className:`h-8 min-w-0 flex-1 gap-2 rounded-control px-2 text-body-small font-medium`,contentAlign:`start`,id:`temporary-tasks-title`,onClick:r,type:`button`,variant:`ghost`,children:[(0,W.jsx)(te,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:a})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":i(`sidebar.archived`),className:o,id:`project-actions-${O}`,onClick:()=>{n({id:O,name:a})},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:i(`sidebar.archived`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":i(`sidebar.newTask`),className:o,onClick:t,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:i(`sidebar.newTask`)})]})]})}var Is=[];function Ls({archiveTask:e,deleteTask:t,error:n,expandedProjects:r,expandedTaskProjects:i,fetchNextProjectTaskPage:a,getProjectReorderProps:o,hasTaskError:s,isPending:c,isProjectActionPending:l,isProjectAddPending:u,normalizedQuery:d,onOpenTemporaryDraft:f,onOpenProjectDraft:p,onOpenArchived:m,onOpenProjectPicker:h,onRemoveProject:g,onRenameProject:_,orderedProjects:v,pinTask:y,pinnedTasks:b,projectId:x,projectOrderAnnouncement:S,projectTaskStates:C,reorderingProjectId:w,setExpandedTaskProjects:T,setRenamingTask:E,taskActionPending:D,taskActivity:k,taskId:A,taskSearch:j,tasksByProjectId:ee,toggleProject:te}){let{t:M}=R(`workbench`),[N]=(0,z.useState)(ro),[P,ne]=(0,z.useState)(()=>oo(N)),re=ee.get(`temporary`)??Is,ie=C.get(O),ae=i.has(O),oe=ea(re,ae),F=xs({error:ie?.error??null,hasHiddenLoadedTasks:re.length>5,hasNextPage:d.length===0?ie?.hasNextPage??!1:!1,isExpanded:ae,isFetchingNextPage:ie?.isFetchingNextPage??!1});return(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden px-2 pt-2`,children:[b.length>0?(0,W.jsxs)(`section`,{className:`mb-4 max-h-40 shrink-0 overflow-y-auto`,"aria-labelledby":`pinned-title`,children:[(0,W.jsx)(`h2`,{className:`px-2 pb-2 text-meta font-semibold text-muted-foreground`,id:`pinned-title`,children:M(`sidebar.pinned`)}),(0,W.jsx)(`div`,{className:`space-y-0.5`,children:b.map(n=>{let r=Gr(k,n.projectId,n.id);return(0,W.jsx)(js,{active:n.projectId===x&&n.id===A,attention:r.attention,icon:(0,W.jsx)(We,{className:`size-3.5`,"aria-hidden":`true`}),isActionPending:D,isAwaitingApproval:r.isAwaitingApproval,isRunning:r.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:n},`${n.projectId}:${n.id}`)})})]}):null,(0,W.jsxs)(`section`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"aria-labelledby":`projects-title`,children:[(0,W.jsxs)(`div`,{className:`flex h-8 min-w-0 w-full shrink-0 items-center justify-between pl-2`,children:[(0,W.jsx)(`h2`,{className:`text-body-small font-semibold text-foreground`,id:`projects-title`,children:M(`sidebar.projects`)}),(0,W.jsx)(ws,{disabled:u,onOpen:()=>{h()}})]}),c?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,j.isPending?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.searchAll`)}):null,n===null&&!s?null:(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta leading-5 text-danger`,role:`alert`,children:M(`sidebar.errorLoadTasks`)}),j.error===null?null:(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta leading-5 text-danger`,role:`alert`,children:M(`sidebar.errorSearchTasks`)}),(0,W.jsx)(`p`,{"aria-live":`polite`,className:`sr-only`,children:S}),(0,W.jsxs)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-x-hidden overflow-y-auto pb-3`,"data-testid":`project-tree-scroll`,children:[(0,W.jsxs)(`section`,{className:`min-w-0`,"aria-labelledby":`temporary-tasks-title`,children:[(0,W.jsx)(Fs,{expanded:P,onCreate:f,onOpenArchived:m,onToggle:()=>{ne(e=>{let t=!e;return so(N,t),t})}}),P?(0,W.jsxs)(`div`,{className:`min-w-0 space-y-0.5 pl-5`,id:`temporary-tasks-content`,children:[oe.tasks.map(n=>{let r=Gr(k,n.projectId,n.id);return(0,W.jsx)(js,{active:x===`temporary`&&n.id===A,attention:r.attention,isActionPending:D,isAwaitingApproval:r.isAwaitingApproval,isRunning:r.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:n},`${n.projectId}:${n.id}`)}),ie?.isPending===!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,F===null?null:(0,W.jsx)(K,{variant:`ghost`,"aria-expanded":ae,className:`flex h-7 w-full items-center rounded-control px-2 text-left text-meta font-medium text-subtle-foreground transition-colors hover:bg-control-hover hover:text-foreground`,contentAlign:`start`,disabled:F.disabled,onClick:()=>{F.action===`expand`||F.action===`expand-and-load`?T(e=>new Set(e).add(O)):F.action===`collapse`&&T(e=>{let t=new Set(e);return t.delete(O),t}),(F.action===`expand-and-load`||F.action===`load`)&&a(O).catch(()=>void 0)},type:`button`,children:F.label}),re.length===0&&d.length===0&&ie?.isPending!==!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noTemporaryTasks`)}):null,re.length===0&&d.length>0&&!j.isPending&&j.error===null?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noMatchingTasks`)}):null]}):null]}),v.map(n=>{let s=ee.get(n.id)??Is,c=r.has(n.id),u=i.has(n.id),f=ea(s,u),h=C.get(n.id),v=xs({error:h?.error??null,hasHiddenLoadedTasks:s.length>5,hasNextPage:d.length===0?h?.hasNextPage??!1:!1,isExpanded:u,isFetchingNextPage:h?.isFetchingNextPage??!1});return(0,W.jsxs)(`div`,{className:`min-w-0 transition-[opacity,transform] ${w===n.id?`relative z-10 opacity-80`:``}`,"data-project-reordering":w===n.id?`true`:`false`,children:[(0,W.jsxs)(`div`,{className:`group/project flex min-w-0 items-center gap-0.5`,children:[(0,W.jsxs)(K,{variant:`ghost`,"aria-expanded":c,"aria-label":M(`sidebar.toggleProject`,{project:n.name}),className:`flex h-8 min-w-0 flex-1 touch-pan-y select-none items-center gap-2 rounded-control px-2 text-body-small font-medium transition-colors hover:bg-control-hover hover:text-foreground ${w===n.id?`cursor-grabbing bg-control-active text-foreground shadow-sm`:`cursor-grab text-muted-foreground`}`,contentAlign:`start`,onClick:()=>{te(n.id)},type:`button`,...o(n.id),children:[(0,W.jsx)(le,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:n.name})]}),(0,W.jsx)(Ts,{isPending:l,onOpenArchived:m,onRemove:e=>{g(e)},onRename:e=>{_(e)},project:n}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":M(`sidebar.createInProject`,{project:n.name}),className:`opacity-0 transition-[color,background-color,opacity] focus-visible:opacity-100 group-hover/project:opacity-100`,onClick:()=>{p(n.id)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:M(`sidebar.createInProject`,{project:n.name})})]})]}),c?(0,W.jsxs)(`div`,{className:`mt-0.5 min-w-0 space-y-0.5 pl-5`,children:[f.tasks.map(r=>{let i=Gr(k,r.projectId,r.id);return(0,W.jsx)(js,{active:n.id===x&&r.id===A,attention:i.attention,isActionPending:D,isAwaitingApproval:i.isAwaitingApproval,isRunning:i.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:r},`${r.projectId}:${r.id}`)}),h?.isPending===!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,v===null?null:(0,W.jsx)(K,{variant:`ghost`,"aria-expanded":u,className:`flex h-7 w-full items-center rounded-control px-2 text-left text-meta font-medium text-subtle-foreground transition-colors hover:bg-control-hover hover:text-foreground`,contentAlign:`start`,disabled:v.disabled,onClick:()=>{v.action===`expand`||v.action===`expand-and-load`?T(e=>new Set(e).add(n.id)):v.action===`collapse`&&T(e=>{let t=new Set(e);return t.delete(n.id),t}),(v.action===`expand-and-load`||v.action===`load`)&&a(n.id).catch(()=>void 0)},type:`button`,children:v.label}),s.length===0&&d.length===0&&h?.isPending!==!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noTasks`)}):null,s.length===0&&d.length>0&&!j.isPending&&j.error===null?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noMatchingTasks`)}):null]}):null]},n.id)})]})]})]})})}function Rs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ne,{"aria-hidden":`true`,className:t}),r(`scheduledTasks.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,params:{projectId:n},to:`/p/$projectId/scheduled`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,to:`/temporary/scheduled`,children:i})}function zs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(oe,{"aria-hidden":`true`,className:t}),r(`skillsMarket.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,activeOptions:{includeSearch:!1},params:{projectId:n,section:`skills`},to:`/p/$projectId/extensions/$section`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,params:{section:`skills`},to:`/temporary/extensions/$section`,children:i})}function Bs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(P,{"aria-hidden":`true`,className:t}),r(`taskBoard.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,params:{projectId:n},to:`/p/$projectId/board`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,to:`/temporary/board`,children:i})}function Vs(e){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Rs,{...e}),(0,W.jsx)(Bs,{...e}),(0,W.jsx)(zs,{...e})]})}function Hs({onClose:e,query:t,setQuery:n}){let{t:r}=R(`workbench`),[i,a]=(0,z.useState)(!1),o=(0,z.useRef)(null),s=(0,z.useRef)(null);(0,z.useEffect)(()=>{i&&o.current?.focus()},[i]);let c=()=>{n(``),a(!1),requestAnimationFrame(()=>{s.current?.focus()})};return(0,W.jsxs)(`div`,{className:`flex h-workbench-header items-center gap-1.5 px-3`,children:[i?(0,W.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,W.jsx)(Me,{"aria-hidden":`true`,className:`pointer-events-none absolute left-2.5 top-2 size-3.5 text-muted-foreground`}),(0,W.jsx)(J,{"aria-label":r(`sidebar.search`),className:`h-8 w-full rounded-control bg-control pl-8 pr-2 text-body-small text-foreground shadow-sm outline-none placeholder:text-muted-foreground focus:shadow-focus`,onChange:e=>{n(e.currentTarget.value)},onKeyDown:e=>{e.key===`Escape`&&c()},placeholder:r(`sidebar.search`),ref:o,value:t})]}):(0,W.jsx)(Us,{}),i?(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.closeSearch`),onClick:c,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Re,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.closeSearch`)})]}):(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.search`),onClick:()=>{a(!0)},ref:s,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Me,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.search`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.close`),className:`min-workbench:hidden`,onClick:e,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ue,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.close`)})]})]})}function Us(){return(0,W.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center`,children:(0,W.jsx)(`img`,{alt:`Codexly`,className:`h-7 w-auto max-w-full`,height:`28`,src:`/brand/codexly-logo.svg`,width:`116`})})}var Ws=`flex h-8 w-full items-center gap-2.5 rounded-control px-2.5 text-body-small font-medium text-foreground transition-colors hover:bg-control-hover`,Gs=`size-4 shrink-0 text-muted-foreground`;function Ks({appInfo:e,connectionState:t,onClose:n,onOpenSettings:r,projectId:i,taskId:a}){let{t:o}=R(`workbench`),{client:c,error:l,isPending:u,projects:d,projectTaskStates:f,tasks:m}=Sr(),{addProject:h,fetchNextProjectTaskPage:g,forgetTask:_,reorderProjects:y,removeProject:b,renameProject:x,setExpandedProjectTaskIds:S}=Cr(),{isProjectActionPending:w,isProjectOrderPending:T,isProjectAddPending:E,taskActivity:D}=wr(),O=s(),k=p(),[A]=(0,z.useState)(ro),[j]=(0,z.useState)(()=>io(A)),ee=(0,z.useRef)(j),te=(0,z.useRef)(d.length>0),[M,N]=(0,z.useState)(()=>co(d.map(e=>e.id),j)),P=(0,z.useRef)(M),[ne,re]=(0,z.useState)(``),[ie,ae]=(0,z.useState)(()=>new Set),[oe,F]=(0,z.useState)(null),[se,ce]=(0,z.useState)(null),[le,ue]=(0,z.useState)(null),[de,fe]=(0,z.useState)(null),[pe,me]=(0,z.useState)(!1),he=v(Pn(c)),ge=v(Fn(c)),_e=v(In(c)),ve=(0,z.useRef)(kr()),I=eo({actionLock:ve.current,activeProjectId:i,activeTaskId:a}),ye=ne.trim().toLocaleLowerCase(),be=Er(ye),L=Or(),xe=ye.length===0?m:be.tasks,Se=(0,z.useMemo)(()=>bs(xe),[xe]),Ce=$i(ye.length===0?L.tasks:xe),we=L.error!==null||[...f.values()].some(e=>e.error!==null),Te=he.isPending||ge.isPending||_e.isPending||I.isDeletePending,{activeProjectId:Ee,announcement:De,getProjectReorderProps:Oe,orderedProjects:ke}=$a({disabled:T,onReorder:y,projects:d});(0,z.useEffect)(()=>{if(u||i===void 0||i===`temporary`||d.some(e=>e.id===i))return;let e=d[0];O(e===void 0?{replace:!0,to:`/`}:{params:{projectId:e.id},replace:!0,to:`/p/$projectId`})},[u,O,i,d]),(0,z.useEffect)(()=>{let e=d.map(e=>e.id);if(!te.current&&e.length>0){te.current=!0;let t=co(e,ee.current);P.current=t,N(t);return}let t=new Set(e),n=P.current,r=new Set([...n].filter(e=>t.has(e)));r.size!==n.size&&(P.current=r,N(r))},[d]),(0,z.useEffect)(()=>{S(M)},[M,S]);let Ae=(0,z.useCallback)(e=>{let t=e(P.current);P.current=t,ee.current=t,ao(A,t),N(t)},[A]),je=e=>{Ae(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Me=async e=>{await h(e)!==void 0&&me(!1)},Ne=async e=>{Ae(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n}),await O({params:{projectId:e},to:`/p/$projectId`})},Fe=e=>{xn(k,e)},Ie=e=>ve.current.run(async()=>{try{let t=await he.mutateAsync({pinned:!e.pinned,projectId:e.projectId,taskId:e.id});Fe(t.task)}catch{}}),Le=(e,t)=>ve.current.run(async()=>{try{let n=await ge.mutateAsync({projectId:e.projectId,taskId:e.id,title:t});Fe(n.task),F(null)}catch{}}),Re=e=>ve.current.run(async()=>{try{await _e.mutateAsync({projectId:e.projectId,taskId:e.id}),await Mn(k,e.projectId,e.id),k.removeQueries({exact:!0,queryKey:[`projects`,e.projectId,`tasks`,e.id]}),_(e.projectId,e.id),e.projectId===i&&e.id===a&&await(e.projectId===`temporary`?O({to:`/temporary`}):O({params:{projectId:e.projectId},to:`/p/$projectId`})),Ka(e.projectId,e.id),c.unsubscribeTask(e.projectId,e.id).catch(()=>void 0)}catch{}}),ze=e=>{fe(null),ce(null),ue(null),requestAnimationFrame(()=>{document.getElementById(`project-actions-${e}`)?.focus()})},Be=async(e,t)=>{await x(e.id,t)&&ze(e.id)},Ve=async e=>{await b(e.id)!==void 0&&ue(null)};return(0,W.jsxs)(`aside`,{"aria-label":o(`sidebar.landmark`),className:`workbench-sidebar z-30 grid min-h-0 grid-rows-[auto_auto_minmax(0,1fr)_auto] bg-sidebar shadow-divider`,children:[(0,W.jsx)(Hs,{onClose:n,query:ne,setQuery:re}),(0,W.jsxs)(`nav`,{className:`space-y-0.5 px-2`,"aria-label":o(`sidebar.agentNavigation`),children:[(0,W.jsxs)(C,{className:Ws,to:`/temporary`,children:[(0,W.jsx)(Pe,{className:Gs,"aria-hidden":`true`}),o(`sidebar.newTask`)]}),(0,W.jsx)(Vs,{className:Ws,iconClassName:Gs,...i===void 0?{}:{projectId:i}})]}),(0,W.jsx)(Ls,{archiveTask:Re,deleteTask:I.requestTaskDeletion,error:l,expandedProjects:M,expandedTaskProjects:ie,fetchNextProjectTaskPage:g,getProjectReorderProps:Oe,hasTaskError:we,isPending:u,isProjectActionPending:w,isProjectAddPending:E,normalizedQuery:ye,onOpenTemporaryDraft:()=>{O({to:`/temporary`})},onOpenProjectDraft:Ne,onOpenArchived:fe,onOpenProjectPicker:()=>{me(!0)},onRemoveProject:e=>{ue(e)},onRenameProject:e=>{ce(e)},orderedProjects:ke,pinTask:Ie,pinnedTasks:Ce,...i===void 0?{}:{projectId:i},projectOrderAnnouncement:De,projectTaskStates:f,reorderingProjectId:Ee,setExpandedTaskProjects:ae,setRenamingTask:F,taskActionPending:Te,taskActivity:D,...a===void 0?{}:{taskId:a},taskSearch:be,tasksByProjectId:Se,toggleProject:je}),de===null?null:(0,W.jsx)(os,{client:c,onClose:()=>{ze(de.id)},project:de}),I.deletingTask===null?null:(0,W.jsx)(is,{isPending:I.isDeletePending,onClose:I.closeTaskDeletion,onDelete:()=>{I.confirmTaskDeletion()},task:I.deletingTask}),(0,W.jsx)(Qo,{client:c,isProjectActionPending:w,isProjectAddPending:E,isProjectPickerOpen:pe,onAddProject:Me,onCloseProjectDialog:ze,onCloseProjectPicker:()=>{E||me(!1)},onCloseTaskRename:()=>{F(null)},onRemoveProject:e=>{Ve(e)},onRenameProject:(e,t)=>{Be(e,t)},onRenameTask:(e,t)=>{Le(e,t)},removingProject:le,renamingProject:se,renamingTask:oe,taskRenamePending:ge.isPending}),(0,W.jsx)(`div`,{className:`p-2`,children:(0,W.jsx)(Os,{...e===void 0?{}:{appInfo:e},connectionState:t,onOpen:r})})]})}function qs(){let{t:e}=R(`common`);return(0,W.jsx)(`main`,{className:`grid h-full place-items-center bg-window px-6`,"aria-labelledby":`not-found-title`,children:(0,W.jsxs)(`section`,{className:`w-full max-w-md rounded-surface bg-raised p-6 shadow-panel`,children:[(0,W.jsx)(`p`,{className:`mb-2 font-mono text-xs text-warning`,children:`404`}),(0,W.jsx)(`h1`,{id:`not-found-title`,className:`text-xl font-semibold`,children:e(`errors.notFoundTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-muted-foreground`,children:e(`errors.notFoundDescription`)}),(0,W.jsxs)(C,{className:`mt-5 inline-flex items-center gap-2 text-sm font-medium text-brand-strong`,to:`/`,children:[(0,W.jsx)(ve,{className:`size-4`,"aria-hidden":`true`}),e(`actions.backToWorkbench`)]})]})})}var Js=a({component:Xs,errorComponent:Ys,notFoundComponent:qs});function Ys({error:e,reset:t}){let{t:n}=R(`common`);return(0,W.jsx)(`main`,{className:`grid h-full place-items-center bg-window px-6`,"aria-labelledby":`route-error-title`,children:(0,W.jsxs)(`section`,{className:`w-full max-w-lg rounded-surface bg-raised p-6 shadow-panel`,children:[(0,W.jsx)(`p`,{className:`mb-2 text-xs font-semibold text-danger uppercase`,children:n(`errors.routeErrorLabel`)}),(0,W.jsx)(`h1`,{id:`route-error-title`,className:`text-xl font-semibold text-foreground`,children:n(`errors.routeErrorTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.message}),(0,W.jsx)(K,{variant:`ghost`,className:`mt-5 rounded-control bg-control px-3 py-2 text-body font-medium text-foreground shadow-sm transition-colors hover:bg-control-hover`,onClick:t,type:`button`,children:n(`actions.retry`)})]})})}function Xs(){return(0,W.jsx)(`div`,{className:`h-full min-h-0 bg-window text-foreground`,"data-testid":`app-root`,children:(0,W.jsx)(u,{})})}var Zs=(0,z.lazy)(()=>Wi().then(e=>({default:e.GlobalSettingsDialog}))),Qs=S({component:$s,getParentRoute:()=>Js,path:`/`});function $s(){let{t:e}=R(`common`),t=Yi(),{client:n,error:r,isPending:i,projects:a}=Sr(),{retry:o}=Cr(),c=s(),l=p(),u=g(Bt(n)),d=v({...Ht(n),onSuccess(e){l.setQueryData([`app-info`],e)}}),f=g(Un(n)),m=g(Hn(n)),h=v({...Wn(n),onSuccess(e){l.setQueryData([`settings`],e)}}),[_,y]=(0,z.useState)(null),[b]=(0,z.useState)(()=>io(ro())),x=lo(a.map(e=>e.id),b);return(0,z.useEffect)(()=>{if(x!==void 0){c({params:{projectId:x},replace:!0,to:`/p/$projectId`});return}!i&&a.length===0&&c({replace:!0,to:`/temporary`})},[x,i,c,a.length]),r===null?i||x!==void 0||a.length===0?(0,W.jsx)(`main`,{className:`grid h-full place-items-center text-sm text-muted-foreground`,children:e(`app.loadingProjects`)}):(0,W.jsxs)(`div`,{className:`workbench-shell h-full min-h-0 overflow-hidden bg-window`,"data-inspector-open":`false`,"data-sidebar-open":`true`,children:[(0,W.jsx)(Ks,{...u.data===void 0?{}:{appInfo:u.data},connectionState:`connected`,onClose:()=>void 0,onOpenSettings:e=>{y(e)}}),(0,W.jsx)(`main`,{className:`grid min-h-0 min-w-0 place-items-center bg-content text-sm text-muted-foreground`,children:e(`app.noProjects`)}),_===null?null:(0,W.jsx)(z.Suspense,{fallback:null,children:(0,W.jsx)(Zs,{...t.status===void 0?{}:{accessMode:t.status.mode},...u.data===void 0?{}:{appInfo:u.data},appInfoError:u.error,initialSection:_,apps:[],error:f.error??m.error,isPending:f.isPending||m.isPending,isAppInfoPending:u.isPending,isAppUpdatePending:d.isPending,models:m.data?.data??[],onClose:()=>{let e=_===`about`?`#global-settings-about-trigger`:`#global-settings-trigger`;y(null),requestAnimationFrame(()=>{document.querySelector(e)?.focus()})},onLogoutAccess:t.logout,onRetry:()=>Promise.all([f.refetch(),m.refetch()]),onRetryAppInfo:()=>u.refetch(),onSave:e=>h.mutateAsync(e).then(()=>void 0),onUpdate:e=>d.mutateAsync(e).then(()=>void 0),...f.data===void 0?{}:{settings:f.data.settings}})})]}):(0,W.jsx)(`main`,{className:`flex h-full min-h-0`,children:(0,W.jsx)(Qi,{onRetry:()=>void o()})})}var ec={blurPercentage:0,mode:`none`,overlayOpacity:60,selectedCustomImageId:null},tc=`codexly:workbench-background-changed`,nc=`codexly.workbench-background-preference`,rc=3,ic=`codexly-workbench`,ac=2,Q=`background-images`,oc=20*1024*1024,sc=new Set([`image/gif`,`image/jpeg`,`image/png`,`image/webp`]);function cc(e){return e===`none`||e===`custom`||e===`bing`}function lc(e){try{let t=JSON.parse(e.getItem(nc)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===rc&&`blurPercentage`in t&&typeof t.blurPercentage==`number`&&Number.isInteger(t.blurPercentage)&&t.blurPercentage>=0&&t.blurPercentage<=95&&`mode`in t&&cc(t.mode)&&`overlayOpacity`in t&&typeof t.overlayOpacity==`number`&&Number.isInteger(t.overlayOpacity)&&t.overlayOpacity>=0&&t.overlayOpacity<=95&&`selectedCustomImageId`in t&&(t.selectedCustomImageId===null||typeof t.selectedCustomImageId==`string`))return{blurPercentage:t.blurPercentage,mode:t.mode,overlayOpacity:t.overlayOpacity,selectedCustomImageId:t.selectedCustomImageId}}catch{}return ec}function uc(e,t){try{t.setItem(nc,JSON.stringify({...e,version:rc}))}catch{}}function dc(e){return e.size>0&&e.size<=oc&&sc.has(e.type)}function fc(e,t=crypto.randomUUID()){return{blob:e,createdAt:Date.now(),id:t,name:e.name}}function pc(e,t,n){let r=e.filter(e=>e.id!==t);return{images:r,selectedCustomImageId:n===t?r[0]?.id??null:n}}function mc(){return new Promise((e,t)=>{let n=window.indexedDB.open(ic,ac);n.onerror=()=>{t(n.error??Error(`Unable to open background image storage`))},n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Q)&&e.deleteObjectStore(Q),e.createObjectStore(Q,{keyPath:`id`})},n.onsuccess=()=>{e(n.result)}})}function hc(e){return typeof e==`object`&&!!e&&`blob`in e&&e.blob instanceof Blob&&`createdAt`in e&&typeof e.createdAt==`number`&&`id`in e&&typeof e.id==`string`&&`name`in e&&typeof e.name==`string`}async function gc(){let e=await mc();return new Promise((t,n)=>{let r=e.transaction(Q,`readonly`),i=r.objectStore(Q).getAll();i.onerror=()=>{e.close(),n(i.error??Error(`Unable to read custom background images`))},i.onsuccess=()=>{t(i.result.filter(hc).sort((e,t)=>e.createdAt-t.createdAt))},r.oncomplete=()=>{e.close()}})}async function _c(e){let t=await mc();return new Promise((n,r)=>{let i=t.transaction(Q,`readonly`),a=i.objectStore(Q).get(e);a.onerror=()=>{t.close(),r(a.error??Error(`Unable to read custom background image`))},a.onsuccess=()=>{n(hc(a.result)?a.result.blob:null)},i.oncomplete=()=>{t.close()}})}async function vc(e){if(e.deletedImageIds.length===0&&e.imagesToSave.length===0)return;let t=await mc();return new Promise((n,r)=>{let i=t.transaction(Q,`readwrite`),a=i.objectStore(Q);e.deletedImageIds.forEach(e=>a.delete(e)),e.imagesToSave.forEach(e=>a.put(e)),i.onerror=()=>{r(i.error??Error(`Unable to update custom background images`))},i.onabort=()=>{t.close()},i.oncomplete=()=>{t.close(),n()}})}async function yc(e,t){await vc(t),uc(e,window.localStorage),window.dispatchEvent(new CustomEvent(tc,{detail:e}))}function bc(e,t,n){return{height:Math.max(1,Math.round(t*n)),width:Math.max(1,Math.round(e*n))}}function xc(e){return[e.source,e.width,e.height,e.devicePixelRatio,e.blurRadius].join(`\0`)}function Sc(e,t,n,r,i){let a=n+i*2,o=r+i*2,s=Math.max(a/e,o/t),c=e*s,l=t*s;return{height:l,width:c,x:(n-c)/2,y:(r-l)/2}}function Cc(e){let t=new Image;return t.decoding=`async`,t.src=e,t.decode().then(()=>t)}async function wc(e,t){let n=await Cc(t.source);if(n.naturalWidth===0||n.naturalHeight===0)throw Error(`Decoded workbench background has no dimensions`);let r=bc(t.width,t.height,t.devicePixelRatio);e.width=r.width,e.height=r.height;let i=e.getContext(`2d`);if(i===null)throw Error(`Canvas 2D context is unavailable`);let a=Sc(n.naturalWidth,n.naturalHeight,t.width,t.height,t.blurRadius),o=t.devicePixelRatio;i.clearRect(0,0,r.width,r.height),i.save(),t.blurRadius>0&&(i.filter=`blur(${String(t.blurRadius*o)}px)`),i.drawImage(n,a.x*o,a.y*o,a.width*o,a.height*o),i.restore()}function Tc(e){try{let t=document.createElement(`canvas`);t.width=32,t.height=32;let n=t.getContext(`2d`,{willReadFrequently:!0});return n===null?null:(n.drawImage(e,0,0,t.width,t.height),n.getImageData(0,0,t.width,t.height).data)}catch{return null}}var Ec=Math.sqrt(1.05*.05)-.05,Dc=120;function Oc(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function kc(e){let t=[];for(let n=0;n+3<e.length;n+=4){if(e[n+3]===0)continue;let r=Oc(e[n]??0),i=Oc(e[n+1]??0),a=Oc(e[n+2]??0);t.push(.2126*r+.7152*i+.0722*a)}return t.length===0?null:(t.sort((e,t)=>e-t),(t[Math.floor(t.length/2)]??0)>Ec?`light`:`dark`)}function Ac(e){return String(e).padStart(2,`0`)}function jc(e){return`/v1/workbench-background/bing?day=${`${String(e.getFullYear())}-${Ac(e.getMonth()+1)}-${Ac(e.getDate())}`}`}function Mc(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()+1);return Math.max(1e3,t.getTime()-e.getTime()+1e3)}function Nc(e){return Math.round((e/95*20+2**-52)*100)/100}function Pc({backgroundTone:e,canvasRef:t,children:n,imageLoaded:r,preference:i}){return(0,W.jsxs)(`div`,{className:`workbench-background h-full min-h-0 overflow-hidden`,"data-background-mode":i.mode,"data-background-tone":e??void 0,"data-has-image":r,"data-workbench-background":`true`,children:[i.mode===`none`?null:(0,W.jsx)(`canvas`,{"aria-hidden":`true`,className:`workbench-background__canvas`,"data-workbench-background-canvas":`true`,ref:t,style:{opacity:+!!r}}),r?(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`workbench-background__overlay`,"data-workbench-background-overlay":`true`,style:{opacity:i.overlayOpacity/100}}):null,n]})}function Fc({children:e}){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(()=>typeof window>`u`?ec:lc(window.localStorage)),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(()=>jc(new Date)),[l,u]=(0,z.useState)(!1),d=(0,z.useRef)(null),f=(0,z.useRef)(null);(0,z.useEffect)(()=>{let e=e=>{if(e instanceof CustomEvent){let t=e.detail;i(t)}};return window.addEventListener(tc,e),()=>{window.removeEventListener(tc,e)}},[]),(0,z.useEffect)(()=>{if(r.mode!==`custom`){o(null);return}let e=!1,t=null,n=r.selectedCustomImageId;if(n===null){o(null);return}return _c(n).then(n=>{e||n===null||(t=URL.createObjectURL(n),o(t))}).catch(()=>{e||o(null)}),()=>{e=!0,t!==null&&URL.revokeObjectURL(t)}},[r.mode,r.selectedCustomImageId]),(0,z.useEffect)(()=>{if(r.mode!==`bing`)return;let e,t=()=>{e=setTimeout(()=>{c(jc(new Date)),t()},Mc(new Date))};return t(),()=>{clearTimeout(e)}},[r.mode]);let p=r.mode===`custom`?a:r.mode===`bing`?s:null;return(0,z.useEffect)(()=>{u(!1),n(null),f.current=null},[p]),(0,z.useEffect)(()=>{if(p===null)return;let e=!1,t,i=0,a,o=()=>{let t=d.current;if(t===null||t.clientWidth===0||t.clientHeight===0)return;let a=t.getBoundingClientRect(),o={blurRadius:Nc(r.blurPercentage),devicePixelRatio:Math.max(1,window.devicePixelRatio||1),height:a.height,source:p,width:a.width},s=xc(o);if(f.current===s)return;let c=++i;wc(t,o).then(()=>{if(e||c!==i)return;f.current=s;let r=Tc(t);n(r===null?null:kc(r)),u(!0)}).catch(()=>{e||c!==i||(f.current=null,n(null),u(!1))})},s=()=>{clearTimeout(t),t=setTimeout(o,Dc)},c=()=>{a?.removeEventListener(`change`,l),a=window.matchMedia(`(resolution: ${String(window.devicePixelRatio)}dppx)`),a.addEventListener(`change`,l)};function l(){c(),s()}return o(),c(),window.addEventListener(`resize`,s),()=>{e=!0,i+=1,clearTimeout(t),window.removeEventListener(`resize`,s),a?.removeEventListener(`change`,l)}},[p,r.blurPercentage]),(0,W.jsx)(Pc,{backgroundTone:t,canvasRef:d,imageLoaded:l,preference:r,children:e})}var $=S({component:Ic,getParentRoute:()=>Js,id:`workbench`});function Ic(){let e=_({select:e=>{let t=e.matches.at(-1)?.params;return{board:e.location.pathname.endsWith(`/board`),scheduled:e.location.pathname.endsWith(`/scheduled`),extensionSection:t!==void 0&&`section`in t?t.section:void 0,projectId:t!==void 0&&`projectId`in t?t.projectId:void 0,taskId:t!==void 0&&`taskId`in t?t.taskId:void 0,todoId:t!==void 0&&`todoId`in t?t.todoId:void 0}}}),t=e.projectId??`temporary`,n=e.projectId===void 0;return(0,W.jsx)(Fc,{children:(0,W.jsx)(zc,{board:e.board,...e.extensionSection===void 0?{}:{extensionSection:e.extensionSection},scheduled:e.scheduled,...e.todoId===void 0?{}:{todoId:e.todoId},projectId:t,temporary:n,...e.taskId===void 0?{}:{taskId:e.taskId}})})}function Lc(){return t(()=>import(`./workbench-shell-DXDRW3gW.js`),__vite__mapDeps([19,1,15,2,3,4,5,6,7,8,20,21,11,13,17,22,23,24,9,25,26,14,27,28,29,30,31,12,16,32,33]))}var Rc=(0,z.lazy)(()=>Lc().then(e=>({default:e.WorkbenchShell})));function zc(e){let{t}=R(`common`);return(0,W.jsx)(z.Suspense,{fallback:(0,W.jsx)(`main`,{className:`grid h-full place-items-center text-sm text-muted-foreground`,role:`status`,children:t(`app.loadingProjects`)}),children:(0,W.jsx)(Rc,{...e})})}var Bc=S({getParentRoute:()=>$,path:`p/$projectId`}),Vc=S({getParentRoute:()=>$,path:`p/$projectId/todo/$todoId`}),Hc=1024*1024,Uc=new Set([`gif`,`jpeg`,`jpg`,`png`,`webp`]),Wc=new Set(`7z.avi.dmg.doc.docm.docx.exe.gz.key.mov.mp3.mp4.numbers.odp.ods.odt.pages.pdf.pkg.ppt.pptm.pptx.rar.tar.tgz.wav.xls.xlsb.xlsm.xlsx.zip`.split(`.`));function Gc(e){let t=e.split(/[\\/]/u).at(-1)?.toLowerCase()??``,n=t.includes(`.`)?t.split(`.`).at(-1)??``:``;return Uc.has(n)?`image`:Wc.has(n)?`system`:`source`}function Kc(e){return e.kind===`image`?`image`:e.kind===`text`?`source`:e.size>1048576?`system`:Gc(e.name)===`source`?`source`:`system`}var qc=`codexly-project-file-popup`,Jc=`popup,width=1100,height=800,resizable=yes,scrollbars=yes`;function Yc(e){if(e==null||e===``)return null;let t=typeof e==`number`?e:Number(e);if(!Number.isSafeInteger(t)||t<1)throw TypeError(`Project file popup lineNumber must be a positive integer`);return t}function Xc(e){let t=e.path,n=e.previewKind,r=e.rootPath;if(typeof t!=`string`||t.length===0)throw TypeError(`Project file popup path is required`);if(n!==`image`&&n!==`source`)throw TypeError(`Project file popup previewKind is invalid`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`Project file popup rootPath is invalid`);return{lineNumber:Yc(e.lineNumber),path:t,previewKind:n,...r===void 0?{}:{rootPath:r}}}function Zc(e,t,n,r){let i=Gc(n.path);if(i===`system`)throw TypeError(`System-default files do not have an internal popup URL`);let a=new URL(`/p/${encodeURIComponent(t)}/file`,e);return a.searchParams.set(`path`,n.path),a.searchParams.set(`previewKind`,i),n.lineNumber!==null&&a.searchParams.set(`lineNumber`,String(n.lineNumber)),r!==void 0&&a.searchParams.set(`rootPath`,r),a.href}function Qc({onOpenSystemDefault:e,projectId:t,reference:n,rootPath:r}){if(Gc(n.path)===`system`){e(n.path);return}let i=Zc(window.location.href,t,n,r);window.open(i,qc,Jc)}var $c=S({component:nl,getParentRoute:()=>Js,path:`p/$projectId/file`,validateSearch:Xc});function el(){return t(()=>import(`./project-file-popup-page-D7w0o_EU.js`),__vite__mapDeps([34,1,2,25,15,3,4,5,6,7,8,26,14,27]))}var tl=(0,z.lazy)(()=>el().then(e=>({default:e.ProjectFilePopupPage})));function nl(){let{projectId:e}=$c.useParams(),t=$c.useSearch();return(0,W.jsx)(z.Suspense,{fallback:null,children:(0,W.jsx)(tl,{projectId:e,search:t})})}var rl=S({getParentRoute:()=>$,path:`p/$projectId/extensions/$section`}),il=S({getParentRoute:()=>$,path:`temporary/extensions/$section`}),al=S({getParentRoute:()=>$,path:`p/$projectId/t/$taskId`}),ol=S({getParentRoute:()=>$,path:`p/$projectId/scheduled`}),sl=S({getParentRoute:()=>$,path:`temporary/scheduled`}),cl=S({getParentRoute:()=>$,path:`p/$projectId/board`}),ll=S({getParentRoute:()=>$,path:`temporary/board`}),ul=S({getParentRoute:()=>$,path:`temporary`}),dl=S({getParentRoute:()=>$,path:`temporary/t/$taskId`}),fl=d({defaultPreload:`intent`,routeTree:Js.addChildren([Qs,$c,$.addChildren([Bc,ol,rl,Vc,cl,al,ul,sl,il,ll,dl])]),scrollRestoration:!0});function pl(){return(0,W.jsx)(m,{router:fl})}function ml({error:e,loading:t,onPair:n,onRetry:r,pairing:i}){let{t:a}=R(`common`),[o,s]=(0,z.useState)(``);return(0,W.jsx)(`main`,{className:`access-gate grid h-full min-h-0 place-items-center overflow-y-auto bg-window px-5 py-10 text-foreground`,children:(0,W.jsxs)(`section`,{"aria-labelledby":`access-gate-title`,className:`w-full max-w-sm`,children:[(0,W.jsx)(`h1`,{className:`mb-8`,id:`access-gate-title`,children:(0,W.jsx)(`img`,{alt:`Codexly`,className:`h-10 w-auto`,height:`40`,src:`/brand/codexly-logo.svg`,width:`165`})}),t?(0,W.jsx)(`p`,{className:`text-body-small text-muted-foreground`,role:`status`,children:a(`access.checking`)}):e===`load`?(0,W.jsxs)(`div`,{className:`space-y-4`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,children:a(`access.loadError`)}),(0,W.jsxs)(K,{onClick:r,size:`lg`,type:`button`,variant:`secondary`,children:[(0,W.jsx)(De,{"aria-hidden":`true`,className:`size-4`}),a(`actions.retry`)]})]}):(0,W.jsxs)(`form`,{className:`space-y-5`,onSubmit:e=>{e.preventDefault();let t=o.trim();t.length>0&&!i&&n(t)},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-heading font-semibold`,children:a(`access.pairingTitle`)}),(0,W.jsx)(`p`,{className:`mt-1 text-body-small text-muted-foreground`,children:a(`access.pairingDescription`)})]}),(0,W.jsx)(`label`,{className:`block text-body-small font-medium`,htmlFor:`access-pairing-code`,children:a(`access.codeLabel`)}),(0,W.jsxs)(`div`,{className:`flex h-10 items-center rounded-control border border-separator-strong bg-panel focus-within:border-brand focus-within:shadow-focus`,children:[(0,W.jsx)(M,{"aria-hidden":`true`,className:`ml-3 size-4 shrink-0 text-muted-foreground`}),(0,W.jsx)(J,{"aria-label":a(`access.codeLabel`),autoComplete:`current-password`,className:`access-code-input min-w-0 flex-1 bg-transparent px-3 font-mono text-body`,id:`access-pairing-code`,onChange:e=>{s(e.currentTarget.value)},spellCheck:!1,type:`password`,value:o,variant:`embedded`}),(0,W.jsx)(K,{"aria-label":a(`access.pair`),className:`mr-1`,disabled:i||o.trim().length===0,title:a(`access.pair`),type:`submit`,size:`icon-compact`,children:(0,W.jsx)(ae,{"aria-hidden":`true`,className:`size-4`})})]}),i?(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,role:`status`,children:a(`access.pairing`)}):null]})]})})}var hl=[`provider-connection`];function gl(e){return e?.state===`pending`&&1e3}function _l(e=B){return o({queryFn:({signal:t})=>e.getProviderConnection({signal:t}),queryKey:hl,refetchInterval:e=>gl(e.state.data)})}async function vl(e){await Promise.all([e.invalidateQueries({exact:!0,queryKey:hl}),e.invalidateQueries({exact:!0,queryKey:[`models`]}),e.invalidateQueries({exact:!0,queryKey:[`settings`]}),e.invalidateQueries({predicate:e=>e.queryKey[0]===`projects`&&e.queryKey[2]===`defaults`})])}function yl(e,t=B){return h({mutationFn:()=>t.startOfficialProviderLogin(),mutationKey:[`provider-connection`,`official-login`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}function bl(e,t=B){return h({mutationFn:e=>t.cancelProviderLogin(e),mutationKey:[`provider-connection`,`official-login`,`cancel`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}function xl(e,t=B){return h({mutationFn:()=>t.logoutProvider(),mutationKey:[`provider-connection`,`logout`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}async function Sl(e,t,n=B){let r=await n.configureCustomProvider(e);return await vl(t),r}function Cl({disabled:e,models:t,onAdd:n,onChange:r,onRemove:i}){let{t:a}=R(`settings`);return(0,W.jsxs)(`div`,{className:`grid gap-2`,children:[t.length===0?null:(0,W.jsxs)(`div`,{className:`hidden grid-cols-[minmax(0,1fr)_minmax(0,1fr)_2rem] gap-2 px-1 text-meta font-medium text-muted-foreground sm:grid`,children:[(0,W.jsx)(`span`,{children:a(`provider.modelId`)}),(0,W.jsx)(`span`,{children:a(`provider.modelName`)}),(0,W.jsx)(`span`,{})]}),t.map(t=>(0,W.jsxs)(`div`,{className:`grid gap-2 border-b border-separator pb-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_2rem] sm:items-end`,children:[(0,W.jsxs)(`label`,{className:`grid min-w-0 gap-1`,children:[(0,W.jsx)(`span`,{className:`text-meta font-medium text-muted-foreground sm:sr-only`,children:a(`provider.modelId`)}),(0,W.jsx)(J,{autoCapitalize:`none`,autoComplete:`off`,disabled:e,maxLength:256,onChange:e=>{r(t.key,`id`,e.currentTarget.value)},spellCheck:!1,value:t.id,variant:`outline`})]}),(0,W.jsxs)(`label`,{className:`grid min-w-0 gap-1`,children:[(0,W.jsx)(`span`,{className:`text-meta font-medium text-muted-foreground sm:sr-only`,children:a(`provider.modelName`)}),(0,W.jsx)(J,{autoComplete:`off`,disabled:e,maxLength:256,onChange:e=>{r(t.key,`name`,e.currentTarget.value)},value:t.name,variant:`outline`})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":a(`provider.removeModel`),className:`justify-self-end sm:justify-self-auto`,disabled:e,onClick:()=>{i(t.key)},size:`icon-compact`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Be,{"aria-hidden":`true`,className:`size-4`})})}),(0,W.jsx)(Z,{children:a(`provider.removeModel`)})]})]},t.key)),(0,W.jsxs)(K,{className:`justify-self-start`,disabled:e||t.length>=1e3,onClick:n,type:`button`,variant:`outline`,children:[(0,W.jsx)(Ve,{"aria-hidden":`true`,className:`size-4`}),a(`provider.addModel`)]})]})}function wl({apiKey:e,baseUrl:t,error:n,isBusy:r,mode:i,models:a,onAddModel:o,onApiKeyChange:s,onBaseUrlChange:c,onCancelLogin:l,onConfigureCustom:u,onLogout:d,onModelChange:f,onModeChange:p,onRetry:m,onRemoveModel:h,onStartOfficialLogin:g,status:_}){let{t:v}=R(`settings`),y=_?.mode===i&&_.state===`connected`,b=_?.mode===`official`&&_.state===`pending`;return(0,W.jsxs)(`div`,{className:`w-full max-w-[38rem]`,children:[(0,W.jsxs)(`div`,{"aria-label":v(`provider.mode`),className:`grid grid-cols-2 rounded-control bg-control p-1`,role:`group`,children:[(0,W.jsxs)(K,{"aria-pressed":i===`official`,className:G(`inline-flex h-10 items-center justify-center gap-2 rounded-[5px] text-body-small font-medium sm:h-9`,i===`official`?`bg-raised text-foreground shadow-control`:`text-muted-foreground hover:text-foreground`),onClick:()=>{p(`official`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(pe,{"aria-hidden":`true`,"data-icon":`inline-start`}),v(`provider.official`)]}),(0,W.jsxs)(K,{"aria-pressed":i===`custom`,className:G(`inline-flex h-10 items-center justify-center gap-2 rounded-[5px] text-body-small font-medium sm:h-9`,i===`custom`?`bg-raised text-foreground shadow-control`:`text-muted-foreground hover:text-foreground`),onClick:()=>{p(`custom`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(Te,{"aria-hidden":`true`,"data-icon":`inline-start`}),v(`provider.custom`)]})]}),(0,W.jsx)(`div`,{className:`mt-5`,children:i===`official`?(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-h-12 items-center gap-3 border-b border-separator pb-4`,children:[y?(0,W.jsx)(F,{"aria-hidden":`true`,className:`size-5 shrink-0 text-brand`}):b?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-5 shrink-0 animate-spin text-brand`}):(0,W.jsx)(pe,{"aria-hidden":`true`,className:`size-5 shrink-0 text-muted-foreground`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-body-small font-medium text-foreground`,children:v(y?`provider.connected`:b?`provider.waiting`:`provider.disconnected`)}),_?.account?.type===`chatgpt`&&_.account.email!==null?(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:_.account.email}):null]})]}),b?(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:l,type:`button`,variant:`outline`,children:[(0,W.jsx)(Re,{"aria-hidden":`true`,className:`size-4`}),v(`provider.cancelLogin`)]}):y?(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:d,type:`button`,variant:`outline`,children:[(0,W.jsx)(He,{"aria-hidden":`true`,className:`size-4`}),v(`provider.logout`)]}):(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:g,type:`button`,children:[r?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}):(0,W.jsx)(pe,{"aria-hidden":`true`,className:`size-4`}),v(`provider.login`)]})]}):(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`label`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[v(`provider.baseUrl`),(0,W.jsx)(J,{autoCapitalize:`none`,autoComplete:`url`,disabled:r,inputMode:`url`,maxLength:2048,onChange:e=>{c(e.currentTarget.value)},placeholder:`https://api.example.com/v1`,spellCheck:!1,type:`url`,value:t,variant:`outline`})]}),(0,W.jsxs)(`label`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[v(`provider.apiKey`),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(M,{"aria-hidden":`true`,className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)(J,{autoComplete:`new-password`,className:`pl-9`,disabled:r,maxLength:16384,onChange:e=>{s(e.currentTarget.value)},spellCheck:!1,type:`password`,value:e,variant:`outline`})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[(0,W.jsx)(`span`,{children:v(`provider.models`)}),(0,W.jsx)(Cl,{disabled:r,models:a,onAdd:o,onChange:f,onRemove:h})]}),y?(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small text-brand`,children:[(0,W.jsx)(F,{"aria-hidden":`true`,className:`size-4`}),(0,W.jsx)(`span`,{children:v(`provider.connected`)})]}):null,(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r||t.trim().length===0||Tl(a),onClick:u,type:`button`,children:[r?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}):(0,W.jsx)(Te,{"aria-hidden":`true`,className:`size-4`}),v(y?`provider.reconnect`:`provider.connect`)]})]})}),n===null?null:(0,W.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3 text-body-small`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`min-w-0 text-danger`,children:n}),(0,W.jsx)(K,{"aria-label":v(`provider.retry`),className:`shrink-0`,onClick:m,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(ye,{"aria-hidden":`true`,className:`size-4`})})]})]})}function Tl(e){return e.some(e=>e.id.trim().length===0||e.name.trim().length===0)}function El({apiKey:e,baseUrl:t,models:n}){let r=n.map(({id:e,name:t})=>({id:e.trim(),name:t.trim()}));return{...e.length===0?{}:{apiKey:e},baseUrl:t.trim(),...r.length===0?{}:{models:r}}}function Dl(e){let t=new URL(e);if(t.protocol!==`https:`)throw Error(`Official login URL must use HTTPS`);window.open(t,`_blank`,`noopener,noreferrer`)}function Ol(){let e=p(),t=g(_l()),n=v(yl(e)),r=v(bl(e)),i=v(xl(e)),[a,o]=(0,z.useState)(`official`),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)([]),m=(0,z.useRef)(1),[h,_]=(0,z.useState)(!1),y=t.data;(0,z.useEffect)(()=>{y!==void 0&&(o(y.mode),y.customBaseUrl!==null&&c(y.customBaseUrl))},[y]);let b=n.isPending||r.isPending||i.isPending||h;return(0,W.jsx)(wl,{apiKey:l,baseUrl:s,error:t.error?.message??null,isBusy:b,mode:a,models:d,onAddModel:()=>{let e=`custom-model-${String(m.current)}`;m.current+=1,f(t=>[...t,{id:``,key:e,name:``}])},onApiKeyChange:u,onBaseUrlChange:c,onCancelLogin:()=>{let e=y?.pendingLogin?.loginId;e!==void 0&&r.mutateAsync(e).catch(()=>void 0)},onConfigureCustom:()=>{_(!0),Sl(El({apiKey:l,baseUrl:s,models:d}),e).then(()=>{u(``),Ni()}).catch(e=>{U(e)}).finally(()=>{u(``),_(!1)})},onLogout:()=>{i.mutateAsync().catch(()=>void 0)},onModelChange:(e,t,n)=>{f(r=>r.map(r=>r.key===e?{...r,[t]:n}:r))},onModeChange:e=>{o(e)},onRetry:()=>{t.refetch()},onRemoveModel:e=>{f(t=>t.filter(t=>t.key!==e))},onStartOfficialLogin:()=>{n.mutateAsync().then(e=>{try{Dl(e.authUrl)}catch(e){U(e)}}).catch(()=>void 0)},status:y})}function kl({children:e}){let{t}=R(`settings`),n=g(_l());return n.data?.state===`connected`?e:n.isPending?(0,W.jsx)(`main`,{className:`grid h-full min-h-0 place-items-center bg-window text-body-small text-muted-foreground`,children:t(`provider.loading`)}):(0,W.jsx)(`main`,{className:`h-full min-h-0 overflow-y-auto bg-window px-5 py-8 sm:px-8 sm:py-12`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-[42rem]`,children:[(0,W.jsxs)(`header`,{className:`mb-8 border-b border-separator pb-5`,children:[(0,W.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`Codexly`}),(0,W.jsx)(`p`,{className:`mt-1 text-body-small text-muted-foreground`,children:t(`provider.title`)})]}),n.error===null?(0,W.jsx)(Ol,{}):(0,W.jsxs)(`div`,{className:`grid justify-items-start gap-3`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,children:t(`provider.errors.load`)}),(0,W.jsx)(K,{onClick:()=>void n.refetch(),type:`button`,variant:`outline`,children:t(`provider.retry`)})]})]})})}var Al={attachments:[],content:[]},jl=`codexly:composer-draft:v1:`,Ml=(0,z.createContext)(void 0);function Nl(e,t){return JSON.stringify([e,t??`draft`])}function Pl(e){return e.content.length===0&&e.attachments.length===0}function Fl(e){return e.attachments.map(e=>e.previewUrl)}function Il(e){for(let t of new Set(Fl(e)))t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function Ll(e,t){let n=new Set(Fl(t));for(let t of new Set(Fl(e)))!n.has(t)&&t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function Rl(){try{return globalThis.localStorage}catch{return}}function zl(e,t){try{let n=JSON.parse(e?.getItem(`${jl}${t}`)??`null`);if(typeof n!=`object`||!n)return;let r=n;return!Array.isArray(r.content)||!Array.isArray(r.attachments)?void 0:r}catch{return}}function Bl(e,t,n){if(e===void 0)return;let r=`${jl}${t}`;if(n===void 0){e.removeItem(r);return}e.setItem(r,JSON.stringify({attachments:n.attachments.filter(e=>e.source===`host`),content:n.content}))}function Vl(e=Rl()){let t=new Map,n=n=>{let r=t.get(n);if(r!==void 0)return r;let i=zl(e,n);return i!==void 0&&t.set(n,i),i??Al};return{clear:n=>{let r=t.get(n);r!==void 0&&(Il(r),t.delete(n)),Bl(e,n,void 0)},dispose:()=>{t.forEach(Il),t.clear()},read:n,update:(r,i)=>{let a=n(r),o=i(a);Ll(a,o),Pl(o)?(t.delete(r),Bl(e,r,void 0)):(t.set(r,o),Bl(e,r,o))}}}function Hl({children:e}){let t=(0,z.useRef)(Vl()).current;return(0,z.useEffect)(()=>()=>{t.dispose()},[t]),(0,W.jsx)(Ml.Provider,{value:t,children:e})}function Ul(){let e=(0,z.useContext)(Ml);if(e===void 0)throw Error(`useComposerDraftStore must be used inside ComposerDraftProvider`);return e}var Wl=`codexly:project-todos:v1:`,Gl=`codexly:project-todo:v1:`,Kl={attachments:[],content:[]};function ql(){try{return globalThis.localStorage}catch{return}}function Jl(e){return`${Wl}${e}`}function Yl(e,t){return`${Gl}${e}:${t}`}function Xl(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.content)&&Array.isArray(t.attachments)}function Zl(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.createdAt==`number`&&Number.isFinite(t.createdAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)}function Ql(e){if(!Zl(e))return!1;let t=e;return Xl(t.draft)&&(t.workingDraft===void 0||Xl(t.workingDraft))}function $l(e){return{attachments:e.attachments.filter(e=>e.source===`host`),content:e.content}}function eu(e){return{...e,draft:$l(e.draft),...e.workingDraft===void 0?{}:{workingDraft:$l(e.workingDraft)}}}function tu(e,t){let n=new Set(t.attachments.map(e=>e.previewUrl));for(let t of new Set(e.attachments.map(e=>e.previewUrl)))!n.has(t)&&t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function nu(e,t){try{let n=JSON.parse(e?.getItem(Jl(t))??`null`);if(typeof n!=`object`||!n)return[];let r=n.todos;return Array.isArray(r)?r.filter(Zl).map(n=>{let r=JSON.parse(e?.getItem(Yl(t,n.id))??`null`);return Ql(r)?r:void 0}).filter(e=>e!==void 0).sort((e,t)=>t.updatedAt-e.updatedAt):[]}catch{return[]}}function ru(e,t,n){if(e!==void 0){if(n.length===0){e.removeItem(Jl(t));return}e.setItem(Jl(t),JSON.stringify({todos:n.map(({createdAt:e,id:t,updatedAt:n})=>({createdAt:e,id:t,updatedAt:n}))}))}}function iu(e=ql(),t={}){let n=t.createId??T,r=t.now??Date.now,i=new Map,a=new Set,o=0,s=t=>{let n=i.get(t);if(n!==void 0)return n;let r=nu(e,t);return i.set(t,r),r},c=(e,t,n=!0)=>{let r=[...t].sort((e,t)=>t.updatedAt-e.updatedAt);return i.set(e,r),n&&(o+=1,a.forEach(e=>{e()})),r},l=(t,n,r,i=!0)=>{let a=s(t),o=a.some(e=>e.id===n.id),l=c(t,o?a.map(e=>e.id===n.id?n:e):[n,...a],i);e?.setItem(Yl(t,n.id),JSON.stringify(eu(n))),r&&ru(e,t,l)},u=(e,t)=>s(e).find(e=>e.id===t);return{create:(e,t)=>{let i=r(),a={createdAt:i,draft:$l(t),id:n(),updatedAt:i};return l(e,a,!0),a},discardWorking:(e,t)=>{let n=u(e,t);if(n?.workingDraft===void 0)return;tu(n.workingDraft,n.draft);let{workingDraft:r,...i}=n;l(e,i,!1)},getRevision:()=>o,list:s,read:u,readWorking:(e,t)=>u(e,t)?.workingDraft,remove:(t,n)=>{let r=s(t),i=r.find(e=>e.id===n);if(i===void 0)return;i.workingDraft!==void 0&&tu(i.workingDraft,Kl);let a=c(t,r.filter(e=>e.id!==n));e?.removeItem(Yl(t,n)),ru(e,t,a)},save:(e,t,n)=>{let i=u(e,t);if(i===void 0)return;let a={createdAt:i.createdAt,draft:$l(n),id:i.id,updatedAt:r()};return i.workingDraft!==void 0&&tu(i.workingDraft,a.draft),l(e,a,!0),a},subscribe:e=>(a.add(e),()=>{a.delete(e)}),updateWorking:(e,t,n)=>{let r=u(e,t);if(r===void 0)return;tu(r.workingDraft??r.draft,n);let i={...r,workingDraft:n};return l(e,i,!1,r.workingDraft===void 0),i}}}var au=(0,z.createContext)(void 0);function ou({children:e}){let t=(0,z.useRef)(null);return t.current??=iu(),(0,W.jsx)(au.Provider,{value:t.current,children:e})}function su(){let e=(0,z.useContext)(au);if(e===void 0)throw Error(`useProjectTodoStore must be used inside ProjectTodoProvider`);return e}function cu(e){let t=su(),n=(0,z.useCallback)(()=>t.list(e),[e,t]);return(0,z.useSyncExternalStore)(t.subscribe,n,n)}function lu(e){let t=su();return(0,z.useSyncExternalStore)(t.subscribe,t.getRevision,t.getRevision),e.flatMap(e=>t.list(e).map(t=>({projectId:e,record:t})))}var uu=`codexly.notification-preference`,du=1;function fu(e){try{let t=JSON.parse(e.getItem(uu)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===du&&`enabled`in t&&typeof t.enabled==`boolean`)return t.enabled}catch{}return!0}function pu(e,t){try{t.setItem(uu,JSON.stringify({enabled:e,version:du}))}catch{}}function mu(){try{return typeof window>`u`||fu(window.localStorage)}catch{return!0}}function hu(e){try{typeof window<`u`&&pu(e,window.localStorage)}catch{}}var gu=48*1048576;function _u(e){return Array.isArray(e)&&e.length===4&&e[0]===`projects`&&typeof e[1]==`string`&&e[2]===`tasks`&&typeof e[3]==`string`}function vu(e,t=gu,n=12){let r=new ai({getRetainedBytes:(e,t)=>t.retainedBytes,maxBytes:t,maxEntries:n,onEvict(t,n,r){r!==`replaced`&&e.getQueryCache().find({exact:!0,queryKey:n.queryKey})?.getObserversCount()===0&&e.removeQueries({exact:!0,queryKey:n.queryKey})}});return e.getQueryCache().subscribe(e=>{let t=e.query,n=t.queryKey,i=t.queryHash,a=t.state.data;if(!(!_u(n)||typeof i!=`string`)){if(e.type===`removed`||t.getObserversCount()>0||a===void 0){r.delete(i);return}r.set(i,{queryKey:n,retainedBytes:H(a)})}})}var yu=2*6e4;function bu(){let e=new x({mutationCache:Pi(),defaultOptions:{queries:{gcTime:yu,refetchOnWindowFocus:!1,retry:1,staleTime:3e4}}});return vu(e),e}var xu=bu();function Su(e,t){e===`temporary`?fl.navigate({params:{taskId:t},to:`/temporary/t/$taskId`}):fl.navigate({params:{projectId:e,taskId:t},to:`/p/$projectId/t/$taskId`})}var Cu=Ir({isEnabled:mu,navigateToTask:Su});function wu({access:e,children:t}){return e.status?.authenticated===!0?t:(0,W.jsx)(ml,{error:e.error,loading:e.loading,onPair:e.pair,onRetry:e.retry,pairing:e.pairing})}function Tu({children:e}){let t=Yi(),{t:n}=R(`common`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(wu,{access:t,children:(0,W.jsx)(kl,{children:(0,W.jsx)(Ui,{taskNotifier:Cu,children:(0,W.jsx)(ou,{children:(0,W.jsx)(Hl,{children:e})})})})}),(0,W.jsx)(A,{containerAriaLabel:n(`app.notificationRegion`),duration:5e3,position:`top-center`,richColors:!0,theme:`system`})]})}function Eu({children:e}){return(0,W.jsx)(ze,{i18n:L,children:(0,W.jsx)(Uo,{children:(0,W.jsx)(c,{client:xu,children:(0,W.jsx)(Ji,{client:B,queryClient:xu,children:(0,W.jsx)(Tu,{children:e})})})})})}var Du=`codexly.theme-preference`,Ou=1,ku=`(prefers-color-scheme: dark)`,Au;function ju(e){try{let t=JSON.parse(e.getItem(Du)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===Ou&&`theme`in t&&(t.theme===`dark`||t.theme===`light`||t.theme===`system`))return t.theme}catch{}return`system`}function Mu(e,t){try{t.setItem(Du,JSON.stringify({theme:e,version:Ou}))}catch{}}function Nu(e,t,n=!1){t.dataset.theme=e===`system`?n?`dark`:`light`:e}function Pu(e){Au?.(),Au=void 0;let t=window.matchMedia(ku),n=()=>{Nu(e,document.documentElement,t.matches)};n(),e===`system`&&(t.addEventListener(`change`,n),Au=()=>{t.removeEventListener(`change`,n)})}function Fu(e){Mu(e,window.localStorage),Pu(e)}function Iu(){let e=ju(window.localStorage);return Pu(e),e}var Lu=document.querySelector(`#root`);if(!(Lu instanceof HTMLElement))throw Error(`Missing #root element`);Iu(),(0,Pt.createRoot)(Lu).render((0,W.jsx)(z.StrictMode,{children:(0,W.jsx)(Eu,{children:(0,W.jsx)(pl,{})})}));export{Oo as $,Fn as $t,vs as A,Cr as At,Z as B,sr as Bt,Ks as C,H as Ct,hs as D,V as Dt,ds as E,Wr as Et,ps as F,Wn as Ft,Bo as G,ar as Gt,Fo as H,Xn as Ht,cs as I,Un as It,J,rr as Jt,Ro as K,ir as Kt,Zo as L,qn as Lt,_s as M,Sr as Mt,ls as N,Tr as Nt,fs as O,kr as Ot,ms as P,fr as Pt,ko as Q,Kn as Qt,Go as R,Jn as Rt,pc as S,ai as St,ss as T,Gr as Tt,zo as U,Yn as Ut,X as V,or as Vt,Io as W,cr as Wt,Do as X,er as Xt,Co as Y,nr as Yt,jo as Z,Gn as Zt,yc as _,Wi as _t,lu as a,pn as an,yo as at,gc as b,Ni as bt,Nl as c,Ht as cn,_o as ct,_l as d,B as dn,pa as dt,Zn as en,Ao as et,Qc as f,zt as fn,ma as ft,ec as g,Yi as gt,Gc as h,G as ht,hu as i,yn as in,xo as it,ys as j,wr as jt,gs as k,Dr as kt,Ul as l,Vt as ln,Wa as lt,Kc as m,K as mt,Fu as n,Cn as nn,So as nt,su as o,mn as on,vo as ot,Hc as p,Qi as pt,Lo as q,tr as qt,mu as r,vn as rn,ho as rt,cu as s,Bt as sn,go as st,ju as t,xn as tn,wo as tt,Ol as u,It as un,Ma as ut,fc as v,Ri as vt,Ss as w,ii as wt,lc as x,gi as xt,dc as y,U as yt,Y as z,Hn as zt};
4
+ `),s=e.payload.sectionIndex),f(e.payload.field,e.payload.delta),!0):!1;if(e.type===`plan.delta`)return t.type===`plan`?(f(`plan`,e.payload.delta),!0):!1;if(t.type!==`command`)return!1;let n=l?.getView().outputBytes??0;return l?.append(e.payload.delta),u+=(l?.getView().outputBytes??0)-n,r+=1,!0},getRetainedBytes:()=>u,peek:()=>t,publish(){d.setState(e=>({revision:e.revision+1}))},read(){if(i===r)return a;let e=t;if(t.type===`message`){let r=n.get(`text`);r!==void 0&&(e={...t,text:[t.text,...r].join(``)})}else if(t.type===`reasoning`){let r=n.get(`content`);(r!==void 0||o.hasChanges)&&(e={...t,content:r===void 0?t.content:[t.content,...r].join(``),summary:o.read()??t.summary})}else if(t.type===`command`){let n=l?.getView();n!==void 0&&(e={...t,...n.hasOutput?{output:n.materialize()}:{},outputOmitted:n.outputOmitted})}else if(t.type===`plan`){let r=n.get(`plan`);r!==void 0&&(e={...t,text:[t.text,...r].join(``)})}return a=e,i=r,a},readCommandOutput(){return l?.getView()},readReasoningSummary:()=>o.read(),replace(e){t=ga(e),n.clear(),o.replace(e.type===`reasoning`?e.summary:void 0),s=void 0,c=e.type===`reasoning`?e.summary.length:0,l=e.type===`command`?new ca(e.output,e.outputOmitted):void 0,u=H(t)+(l?.getView().outputBytes??0),r+=1}})}function va(e,t){let n=e.pendingRequestsById[t.requestId]!==void 0,r=e.pendingRequestIds;t.status===`pending`?n||(r=[...e.pendingRequestIds,t.requestId]):r=[...e.pendingRequestIds.filter(e=>e!==t.requestId),t.requestId];let i={...e.pendingRequestsById,[t.requestId]:t},a=r.filter(e=>i[e]?.status!==`pending`),o=new Set(a.slice(0,-20));return o.size===0?{pendingRequestIds:r,pendingRequestsById:i}:{pendingRequestIds:r.filter(e=>!o.has(e)),pendingRequestsById:Object.fromEntries(Object.entries(i).filter(([e])=>!o.has(e)))}}function q(e,t){return JSON.stringify([e,t])}function ya(e,t){return e.itemStoresByKey.get(t)?.read()}function ba(e){let{pendingRequests:t,turns:n,turnsNextCursor:r,...i}=e.snapshot,a=[],o={},s={},c=new Map;for(let e of n){let{items:t,...n}=e;a.push(e.id),o[e.id]=n,s[e.id]=t.map(t=>q(e.id,t.id));for(let n of t){let t=q(e.id,n.id);c.set(t,_a(n))}}let l={pendingRequestIds:[],pendingRequestsById:{}};for(let e of t)l=va(l,e);let{budget:u}=xa({previousBudget:{commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytes:0,commandOutputBytesByItemKey:new Map},sourceItemStoresByKey:c,touchedItemKeys:[...c.keys()]}),d=H(e.checkpoint)+H(i)+H(r);for(let e of a){d+=H(o[e]);for(let t of s[e]??[])d+=c.get(t)?.getRetainedBytes()??0}for(let e of l.pendingRequestIds)d+=H(l.pendingRequestsById[e]);return{checkpoint:e.checkpoint,...u,itemKeysByTurnId:s,itemStoresByKey:c,itemStructureRevision:0,notices:[],...l,retainedBytes:d,snapshotMetadata:i,turnIds:a,turnsNextCursor:r,turnsById:o}}function xa(e){let t=e.previousBudget.commandOutputAccessByItemKey,n=e.previousBudget.commandOutputBytesByItemKey,r=e.previousBudget.commandOutputAccessSequence,i=e.previousBudget.commandOutputBytes,a=new Map;for(let a of new Set(e.touchedItemKeys)){let o=n.get(a)??0,s=e.sourceItemStoresByKey.get(a)?.readCommandOutput();if(!s?.hasOutput){t.delete(a),n.delete(a),i-=o;continue}r+=1,t.set(a,r),n.set(a,s.outputBytes),i+=s.outputBytes-o}if(i<=8388608)return{budget:{commandOutputAccessByItemKey:t,commandOutputAccessSequence:r,commandOutputBytes:i,commandOutputBytesByItemKey:n},retainedBytesDeltaByItemKey:a};let o=[...t.keys()].toSorted((e,n)=>(t.get(e)??0)-(t.get(n)??0));for(let t of o){if(i<=8388608)break;let r=e.sourceItemStoresByKey.get(t),o=r?.peek();if(r===void 0||o?.type!==`command`)continue;let s=n.get(t)??0,c=r.getRetainedBytes(),l=r.readCommandOutput();r.replace({...o,output:ma,outputOmitted:{bytes:(l?.outputOmitted.bytes??o.outputOmitted.bytes)+s,lines:(l?.outputOmitted.lines??o.outputOmitted.lines)+(l?.outputLines??0)}}),e.changedItemStores?.add(r),n.set(t,ha),i-=s-ha,a.set(t,r.getRetainedBytes()-c)}return{budget:{commandOutputAccessByItemKey:t,commandOutputAccessSequence:r,commandOutputBytes:i,commandOutputBytesByItemKey:n},retainedBytesDeltaByItemKey:a}}function Sa(e,t){if(e?.type!==`message`||e.role!==`user`||t.type!==`message`||t.role!==`user`||t.text.length>0||(t.skills?.length??0)===0)return;let n=new Set((e.skills??[]).map(e=>e.name)),r=[...e.skills??[]];for(let e of t.skills??[])n.has(e.name)||(n.add(e.name),r.push(e));return{...e,skills:r,text:D(e.text,r)}}function Ca(e,t,n){if(n.type===`command.output_delta`)return[q(n.turnId,n.itemId)];if(n.type===`item.started`||n.type===`item.completed`){let t=q(n.turnId,n.itemId);return n.payload.item.type===`command`||e.commandOutputBytesByItemKey.has(t)?[t]:void 0}if(n.type===`turn.started`||n.type===`turn.completed`)return[...e.itemKeysByTurnId[n.turnId]??[],...t.itemKeysByTurnId[n.turnId]??[]]}function wa(e){switch(e.type){case`message.delta`:return{id:e.itemId,role:`assistant`,text:``,type:`message`};case`reasoning.delta`:return{content:``,id:e.itemId,summary:``,type:`reasoning`};case`plan.delta`:return{id:e.itemId,text:``,type:`plan`};case`command.output_delta`:return{command:pa,cwd:``,id:e.itemId,output:``,outputOmitted:{bytes:0,lines:0},status:`running`,type:`command`};default:return}}function Ta(e,t,n,r){let i=e.itemKeysByTurnId[t]??[],a=new Set(n.map(e=>q(t,e.id)));for(let t of i)a.has(t)||e.itemStoresByKey.delete(t);for(let i of n){let n=q(t,i.id),a=e.itemStoresByKey.get(n);a===void 0?e.itemStoresByKey.set(n,_a(i)):(a.replace(i),r.add(a))}return{itemKeysByTurnId:{...e.itemKeysByTurnId,[t]:[...a]}}}function Ea(e,t,n){let r=`submitted-user-${t}`,i=n.find(e=>e.type===`message`&&e.role===`user`),a=[],o=new Set;for(let n of e.itemKeysByTurnId[t]??[]){let t=ya(e,n);if(t===void 0)continue;let s=t.id===r&&i!==void 0?i:t;o.has(s.id)||(o.add(s.id),a.push(s))}let s=new Set(a.map(e=>e.id)),c=new Map(n.map(e=>[e.id,e])),l=new Map,u=[];for(let e of n){if(!s.has(e.id)){u.push(e);continue}u.length>0&&(l.set(e.id,u),u=[])}return[...a.flatMap(e=>[...l.get(e.id)??[],c.get(e.id)??e]),...u]}function Da(e,t,n){let r=e.snapshotMetadata;if(r===null)return{};let i={sequence:t.sequence,sessionId:t.sessionId};switch(t.type){case`project.git_metadata_changed`:return{};case`turn.started`:{let{items:a,...o}=t.payload.turn;return{checkpoint:i,...Ta(e,t.turnId,a,n),snapshotMetadata:{...r,status:`running`,updatedAt:t.timestamp},itemStructureRevision:e.itemStructureRevision+1,turnIds:[...e.turnIds.filter(e=>e!==t.turnId),t.turnId],turnsById:{...e.turnsById,[t.turnId]:o}}}case`message.delta`:case`plan.delta`:case`reasoning.delta`:case`command.output_delta`:{let a=e.turnsById[t.turnId];if(a===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let o=a.status===`running`&&a.error!==null?{...e.turnsById,[t.turnId]:{...a,error:null}}:e.turnsById,s=q(t.turnId,t.itemId),c=e.itemStoresByKey.get(s);if(c!==void 0)return c.appendDelta(t)&&n.add(c),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp},turnsById:o};let l=wa(t);if(l===void 0)return{checkpoint:i};let u=_a(l);return u.appendDelta(t),e.itemStoresByKey.set(s,u),n.add(u),{checkpoint:i,itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:[...e.itemKeysByTurnId[t.turnId]??[],s]},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp},turnsById:o}}case`tool.progress`:{let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a);if(o===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let s=o.read();return s.type===`tool`?(o.replace({...s,progress:t.payload.message}),n.add(o),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}}):{checkpoint:i}}case`file_change.updated`:{let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a);if(o!==void 0){let e=o.read();return e.type===`file_change`?(o.replace({...e,changes:t.payload.changes,status:`running`}),n.add(o),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}}):{checkpoint:i}}if(e.turnsById[t.turnId]===void 0)return{checkpoint:i};let s=_a({changes:t.payload.changes,id:t.itemId,status:`running`,type:`file_change`});return e.itemStoresByKey.set(a,s),n.add(s),{checkpoint:i,itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:[...e.itemKeysByTurnId[t.turnId]??[],a]},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp}}}case`task.notice`:return{checkpoint:i,notices:t.payload.code===`guardian_warning`?e.notices:[...e.notices,t].slice(-20),snapshotMetadata:{...r,updatedAt:t.timestamp}};case`mcp_server.status_updated`:return{checkpoint:i};case`goal.updated`:return{checkpoint:i,snapshotMetadata:{...r,goal:t.payload.goal,updatedAt:t.timestamp}};case`goal.cleared`:return{checkpoint:i,snapshotMetadata:{...r,goal:null,updatedAt:t.timestamp}};case`queue.changed`:return{checkpoint:i};case`task.status_updated`:return{checkpoint:i,snapshotMetadata:{...r,status:t.payload.status,updatedAt:t.timestamp}};case`skills.changed`:case`task.metadata_changed`:case`task.removed`:return{checkpoint:i};case`item.started`:case`item.completed`:{if(e.turnsById[t.turnId]===void 0)return{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let a=q(t.turnId,t.itemId),o=e.itemStoresByKey.get(a),s=o!==void 0,c=e.itemKeysByTurnId[t.turnId]??[],l=c.at(-1),u=l===void 0?void 0:e.itemStoresByKey.get(l),d=Sa(u?.read(),t.payload.item);if(d!==void 0&&u!==void 0)return u.replace(d),n.add(u),{checkpoint:i,snapshotMetadata:{...r,updatedAt:t.timestamp}};let f=`submitted-user-${t.turnId}`,p=q(t.turnId,f),m=t.payload.item.type===`message`&&t.payload.item.role===`user`&&c.includes(p),h=m?c.filter(e=>e!==p).concat(s?[]:a):s?c:[...c,a];return m&&e.itemStoresByKey.delete(p),o===void 0?e.itemStoresByKey.set(a,_a(t.payload.item)):(o.replace(t.payload.item),n.add(o)),{checkpoint:i,itemKeysByTurnId:h===c?e.itemKeysByTurnId:{...e.itemKeysByTurnId,[t.turnId]:h},itemStructureRevision:e.itemStructureRevision+1,snapshotMetadata:{...r,updatedAt:t.timestamp}}}case`turn.completed`:{let a=e.turnsById[t.turnId],o=a?.status===`failed`?a.error:null,s=t.payload.turn.error===null&&o!==null?{...t.payload.turn,error:o}:t.payload.turn,{items:c,...l}=s,u=Ea(e,t.turnId,c);return{checkpoint:i,...a===void 0?{}:Ta(e,t.turnId,u,n),notices:[],snapshotMetadata:{...r,status:s.status===`failed`?`failed`:`idle`,updatedAt:t.timestamp},itemStructureRevision:e.itemStructureRevision+1,turnsById:a===void 0?e.turnsById:{...e.turnsById,[t.turnId]:l}}}case`plan.updated`:return{checkpoint:i,snapshotMetadata:{...r,plan:t.payload.plan,updatedAt:t.timestamp}};case`usage.updated`:return{checkpoint:i,snapshotMetadata:{...r,contextUsage:t.payload.usage,updatedAt:t.timestamp}};case`provider.error`:{let n=e.turnsById[t.turnId],a=n===void 0?e.turnsById:{...e.turnsById,[t.turnId]:{...n,error:t.payload.message,status:t.payload.willRetry?n.status:`failed`}};return{checkpoint:i,snapshotMetadata:t.payload.willRetry?r:{...r,status:`failed`,updatedAt:t.timestamp},turnsById:a}}case`pending_request.created`:case`pending_request.resolved`:case`pending_request.expired`:{let n=t.payload.request;return{checkpoint:i,...va(e,n),snapshotMetadata:{...r,updatedAt:t.timestamp}}}}}function Oa(e){if(e.snapshotMetadata!==null)return{...e.snapshotMetadata,pendingRequests:e.pendingRequestIds.flatMap(t=>{let n=e.pendingRequestsById[t];return n?.status===`pending`?[n]:[]}),turnsNextCursor:e.turnsNextCursor,turns:e.turnIds.flatMap(t=>{let n=e.turnsById[t];if(n===void 0)return[];let r=(e.itemKeysByTurnId[t]??[]).flatMap(t=>{let n=ya(e,t);return n===void 0?[]:[n]});return[{...n,items:r}]})}}function ka(e,t){if(e.role!==`user`||t.role!==`user`||e.text.length>0||t.text.length>0)return!1;let n=e.attachments??[],r=t.attachments??[];return n.length===0||n.length!==r.length?!1:n.every((e,t)=>{let n=r[t];return e.kind===`image`&&n?.kind===`image`&&e.mediaType===n.mediaType&&e.size===n.size})}function Aa(e,t){let n=new Map(t.items.map(e=>[e.id,e])),r=new Map,i=e.items.filter(e=>e.type===`message`),a=t.items.filter(e=>e.type===`message`),o=new Map(i.map(e=>[e.id,e])),s=new Set,c=new Set,l=(e,t)=>{s.add(e.id),c.add(t.id),n.delete(t.id),r.set(e.id,{...t,id:e.id})};for(let e of a){let t=o.get(e.id);t!==void 0&&l(t,e)}let u=i.filter(e=>!s.has(e.id)),d=a.filter(e=>!c.has(e.id)),f=new Map,p=new Map;for(let e of d){let t=u.filter(t=>t.role===e.role&&(t.text.length>0&&e.text.length>0&&(t.text.startsWith(e.text)||e.text.startsWith(t.text))||ka(t,e)));f.set(e.id,t);for(let e of t)p.set(e.id,(p.get(e.id)??0)+1)}for(let e of d){let t=f.get(e.id)??[],n=t.length===1?t[0]:void 0;n!==void 0&&p.get(n.id)===1&&l(n,e)}return[...e.items.flatMap(e=>{let t=r.get(e.id);if(t!==void 0)return[t];let i=n.get(e.id);return i===void 0?[e]:(n.delete(e.id),[i])}),...n.values()]}function ja(e,t){let n=Oa(e);if(n===void 0)return t;let r=new Map(n.turns.map(e=>[e.id,e])),i=new Set(t.snapshot.turns.map(e=>e.id)),a=n.turns.flatMap((e,t)=>i.has(e.id)?[t]:[]),o=a.at(0),s=a.at(-1),c=t.snapshot.turnsNextCursor!==null&&o!==void 0&&s!==void 0,l=c?n.turns.slice(0,o).filter(e=>!i.has(e.id)):[],u=c?n.turns.slice(s+1).filter(e=>!i.has(e.id)):[];return{...t,snapshot:{...t.snapshot,turns:[...l,...t.snapshot.turns.map(e=>{let t=r.get(e.id);return t===void 0?e:{...e,items:Aa(t,e)}}),...u],turnsNextCursor:l.length>0?n.turnsNextCursor:t.snapshot.turnsNextCursor}}}function Ma(e,t){let n=t===void 0?{checkpoint:null,commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytesByItemKey:new Map,commandOutputBytes:0,itemKeysByTurnId:{},itemStoresByKey:new Map,itemStructureRevision:0,notices:[],pendingRequestIds:[],pendingRequestsById:{},retainedBytes:0,snapshotMetadata:null,turnIds:[],turnsNextCursor:null,turnsById:{}}:ba(t);if(t!==void 0&&(t.snapshot.projectId!==e.projectId||t.snapshot.id!==e.taskId))throw Error(`Task store identity does not match the initial snapshot`);return w()((t,r)=>({...n,applyEvents(e){if(e.length===0)return;let n=new Set;t(t=>{let r=t;for(let t of e){let e=r.checkpoint,i=e!==null&&t.sessionId===e.sessionId&&t.sequence>e.sequence;if(t.taskId!==r.taskId||!i)continue;let a=r,o=Pa(a,t),s=Ia(a,t);r={...r,...Da(r,t,n)};let c=Ca(a,r,t),l=new Map;if(c!==void 0){let e=xa({previousBudget:a,changedItemStores:n,sourceItemStoresByKey:r.itemStoresByKey,touchedItemKeys:c});({retainedBytesDeltaByItemKey:l}=e),r={...r,...e.budget}}let u=new Set([...s.keys(),...Fa(r,t)]),d=La(r,u)-Ra(s),f=[...l].reduce((e,[t,n])=>e+(u.has(t)?0:n),0);r={...r,retainedBytes:r.retainedBytes+Pa(r,t)-o+d+f}}return r});for(let e of n)e.publish()},connectionState:`connecting`,error:null,hydrate(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the snapshot`);t(e=>({...ba(n),itemStructureRevision:e.itemStructureRevision+1,connectionState:`connecting`,error:null}))},projectId:e.projectId,prependHistory(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the history page`);let r=new Set;t(e=>Na(e,n,r));for(let e of r)e.publish()},reconcile(n){if(n.snapshot.projectId!==e.projectId||n.snapshot.id!==e.taskId)throw Error(`Task store identity does not match the snapshot`);t(e=>{let t=e.checkpoint;return t!==null&&t.sessionId===n.checkpoint.sessionId&&t.sequence>n.checkpoint.sequence?e:{...ba(ja(e,n)),itemStructureRevision:e.itemStructureRevision+1,connectionState:`connecting`,error:null}})},getItem:(e,t)=>r().itemStoresByKey.get(q(t,e))?.read(),getItemByKey:e=>r().itemStoresByKey.get(e)?.read(),reconstructSnapshot:()=>Oa(r()),setConnectionState(e){t({connectionState:e})},setError(e){t({error:e})},setTaskSettings(e){t(t=>t.snapshotMetadata===null?t:{snapshotMetadata:{...t.snapshotMetadata,settings:e}})},taskId:e.taskId}))}function Na(e,t,n){let r=ba(t),i=r.turnIds.filter(t=>e.turnsById[t]===void 0),a=new Set(i.flatMap(e=>r.itemKeysByTurnId[e]??[])),o=new Map(e.itemStoresByKey);for(let e of a){let t=r.itemStoresByKey.get(e);t!==void 0&&o.set(e,t)}let s={...e.itemKeysByTurnId},c={...e.turnsById};for(let e of i){s[e]=r.itemKeysByTurnId[e]??[];let t=r.turnsById[e];t!==void 0&&(c[e]=t)}let{budget:l,retainedBytesDeltaByItemKey:u}=xa({previousBudget:{commandOutputAccessByItemKey:new Map,commandOutputAccessSequence:0,commandOutputBytes:0,commandOutputBytesByItemKey:new Map},changedItemStores:n,sourceItemStoresByKey:o,touchedItemKeys:[...a,...e.itemStoresByKey.keys()]}),d=e.retainedBytes-H(e.turnsNextCursor)+H(t.snapshot.turnsNextCursor);for(let e of i){d+=H(c[e]);for(let t of s[e]??[])d+=o.get(t)?.getRetainedBytes()??0}for(let[e,t]of u)a.has(e)||(d+=t);return{...e,...l,checkpoint:e.checkpoint??t.checkpoint,itemKeysByTurnId:s,itemStoresByKey:o,itemStructureRevision:e.itemStructureRevision+1,retainedBytes:d,turnIds:[...i,...e.turnIds],turnsNextCursor:t.snapshot.turnsNextCursor,turnsById:c}}function Pa(e,t){let n=0;if((t.type===`turn.started`||t.type===`turn.completed`||t.type===`provider.error`)&&(n+=H(e.turnsById[t.turnId])),(t.type===`task.notice`||t.type===`turn.completed`)&&(n+=e.notices.reduce((e,t)=>e+H(t),0)),(t.type===`goal.updated`||t.type===`goal.cleared`||t.type===`plan.updated`||t.type===`provider.error`||t.type===`task.status_updated`||t.type===`turn.started`||t.type===`turn.completed`||t.type===`usage.updated`)&&(n+=H(e.snapshotMetadata)),t.type===`pending_request.created`||t.type===`pending_request.resolved`||t.type===`pending_request.expired`)for(let t of e.pendingRequestIds)n+=H(e.pendingRequestsById[t]);return n}function Fa(e,t){if(t.type===`turn.started`||t.type===`turn.completed`)return e.itemKeysByTurnId[t.turnId]??[];if(!(`itemId`in t)||!(`turnId`in t))return[];let n=[q(t.turnId,t.itemId)];if(t.type===`item.started`||t.type===`item.completed`){let r=(e.itemKeysByTurnId[t.turnId]??[]).at(-1);r!==void 0&&n.push(r),n.push(q(t.turnId,`submitted-user-${t.turnId}`))}return n}function Ia(e,t){return new Map(Fa(e,t).map(t=>[t,e.itemStoresByKey.get(t)?.getRetainedBytes()??0]))}function La(e,t){let n=0;for(let r of t)n+=e.itemStoresByKey.get(r)?.getRetainedBytes()??0;return n}function Ra(e){let t=0;for(let n of e.values())t+=n;return t}var za=class{#e;#t=new Map;#n=new Map;#r;#i;#a;#o=0;constructor(e={}){if(this.#r=e.maxRetainedBytes??67108864,!Number.isSafeInteger(this.#r)||this.#r<0)throw RangeError(`Task store registry maxRetainedBytes must be non-negative`);if(this.#i=e.maxRetainedStores??20,!Number.isInteger(this.#i)||this.#i<0)throw RangeError(`Task store registry maxRetainedStores must be a non-negative integer`);this.#e=e.createStore??(e=>Ma(e)),this.#a=e.onEvict}acquire(e,t){let n=Ba(e,t),r=this.#t.get(n);return r===void 0?(r={consumers:0,identity:{projectId:e,taskId:t},retainedBytes:0,store:this.#e({projectId:e,taskId:t})},this.#t.set(n,r)):r.consumers===0&&this.#c(n,r),r.consumers+=1,r.store}release(e,t){let n=this.#t.get(Ba(e,t));return n===void 0||n.consumers===0?!1:(--n.consumers,n.consumers===0&&(n.retainedBytes=n.store.getState().retainedBytes,this.#n.set(Ba(e,t),n),this.#o+=n.retainedBytes,this.#s()),n.consumers===0)}get retainedBytes(){return this.#o}get size(){return this.#t.size}peek(e,t){return this.#t.get(Ba(e,t))?.store}remove(e,t){let n=Ba(e,t),r=this.#t.get(n);return r===void 0||r.consumers>0?!1:(this.#c(n,r),this.#t.delete(n),this.#a?.(r.identity,r.store),!0)}#s(){for(;this.#n.size>this.#i||this.#o>this.#r;){let e=this.#n.entries().next().value;if(e===void 0)return;let[t,n]=e;this.#c(t,n),this.#t.delete(t),this.#a?.(n.identity,n.store)}}#c(e,t){this.#n.delete(e)&&(this.#o-=t.retainedBytes,t.retainedBytes=0)}};function Ba(e,t){return JSON.stringify([e,t])}function Va(e={}){return new za(e)}var Ha=Va({maxRetainedStores:20}),Ua=Ma({projectId:``,taskId:``});function Wa(e,t,n){let r=p(),i=n.client,a=`${e}\u0000${t??``}`,[o,s]=(0,z.useState)({error:null,isPending:t!==void 0,scope:a}),[c,l]=(0,z.useState)(),[u,d]=(0,z.useState)(!1),[f,m]=(0,z.useState)(null),h=(0,z.useRef)(null),g=c??Ua,_=E(g,e=>e.turnIds.findLast(t=>e.turnsById[t]?.status===`running`)),v=E(g,e=>e.connectionState),y=E(g,e=>e.error),b=E(g,e=>e.snapshotMetadata??void 0),x=E(g,e=>e.itemStructureRevision),S=E(g,e=>e.turnsNextCursor);(0,z.useEffect)(()=>{h.current=null,d(!1),m(null)},[e,t]),(0,z.useEffect)(()=>{if(t===void 0){l(void 0);return}let n=Ha.acquire(e,t);return l(n),()=>{Ha.release(e,t)}},[e,t]),(0,z.useEffect)(()=>{if(c===void 0||t===void 0)return;let o=c.getState();if(o.projectId!==e||o.taskId!==t)return;let l=new AbortController,u=fr(e,t,i).queryKey,d,f=!1;s({error:null,isPending:!0,scope:a});let p=Ga(r,u);return(p===void 0?i.readTask(e,t,{signal:l.signal}):Promise.resolve(p)).then(o=>{f||(d=n.attachTaskStore(o,c,()=>i.readTask(e,t)),r.removeQueries({exact:!0,queryKey:u}),s({error:null,isPending:!1,scope:a}))}).catch(e=>{!f&&!l.signal.aborted&&s({error:e instanceof Error?e:Error(String(e)),isPending:!1,scope:a})}),()=>{f=!0,l.abort(),d?.()}},[i,e,n,r,c,t,a]);let C=c===void 0?void 0:qa(c,e,t),w=(0,z.useCallback)(async()=>{if(C===void 0||t===void 0||S===null||h.current!==null)return;let n={};h.current=n,d(!0),m(null);try{let n=await i.readTask(e,t,{cursor:S});C.getState().prependHistory(n)}catch(e){h.current===n&&m(e instanceof Error?e:Error(String(e)))}finally{h.current===n&&(h.current=null,d(!1))}},[C,i,e,t,S]),T=C?.getState().snapshotMetadata!==null,D=o.scope===a?o.error:null,O=t!==void 0&&(o.scope!==a||o.isPending),k=C===void 0||!T?D:v===`closed`?y:null,A=(0,z.useCallback)(()=>C?.getState().reconstructSnapshot(),[C]),j=Ja({error:k,hasActiveRuntime:C!==void 0,hasHydratedSnapshot:T,snapshotPending:O});return(0,z.useMemo)(()=>({activeTurnId:_,connectionState:C===void 0?`connecting`:v,error:k,hasOlderHistory:S!==null,isLoadingOlderHistory:u,isPending:j,itemStructureRevision:x,loadOlderHistory:w,metadata:b,olderHistoryError:f,readSnapshot:A,store:C}),[C,_,v,k,u,j,x,w,b,f,A,S])}function Ga(e,t){let n=e.getQueryData(t);return n!==void 0&&e.removeQueries({exact:!0,queryKey:t}),n}function Ka(e,t){return Ha.remove(e,t)}function qa(e,t,n){let r=e?.getState();return n!==void 0&&r?.projectId===t&&r.taskId===n?e:void 0}function Ja(e){return e.error!==null||e.hasHydratedSnapshot?!1:e.snapshotPending||!e.hasActiveRuntime}var Ya=8;function Xa(e,t,n,r){if(t===n||!e.includes(t))return e;let i=e.filter(e=>e!==t),a=i.indexOf(n);if(a===-1)return e;let o=r===`after`?a+1:a;return i.toSpliced(o,0,t)}function Za(e,t,n){let r=e.indexOf(t),i=r+n;return r===-1||i<0||i>=e.length?e:e.toSpliced(r,1).toSpliced(i,0,t)}function Qa(e,t){if(t===null)return e;let n=new Map(e.map(e=>[e.id,e])),r=t.flatMap(e=>{let t=n.get(e);return t===void 0?[]:[t]}),i=new Set(r.map(e=>e.id));return[...r,...e.filter(e=>!i.has(e.id))]}function $a({disabled:e=!1,onReorder:t,projects:n}){let{t:r}=R(`conversation`),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)(null),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=Qa(n,c),p=(0,z.useRef)(f);p.current=f;let m=e=>{let t=u.current;t!==null&&(t.removeGlobalListeners(),e&&t.element.hasPointerCapture(t.pointerId)&&t.element.releasePointerCapture(t.pointerId),u.current=null)};(0,z.useEffect)(()=>()=>{m(!1)},[]);let h=async(e,i)=>{let a=await t(e);if(l(null),a){let t=n.find(e=>e.id===i),a=e.indexOf(i)+1;s(r(`reorder.moved`,{name:t?.name??r(`reorder.projectFallback`),position:a}))}},g=(t,n)=>{if(e||t.button!==0)return;m(!0),t.currentTarget.setPointerCapture(t.pointerId);let r=t.currentTarget,i=e=>{v(e.pointerId)},a=e=>{y(e.pointerId)},o={activated:!1,element:r,pointerId:t.pointerId,projectId:n,projectIds:p.current.map(e=>e.id),removeGlobalListeners:()=>{window.removeEventListener(`pointercancel`,a),window.removeEventListener(`pointerup`,i)},startClientX:t.clientX,startClientY:t.clientY};u.current=o,window.addEventListener(`pointercancel`,a),window.addEventListener(`pointerup`,i)},_=e=>{let t=u.current;if(t?.pointerId!==e.pointerId)return;let n=Math.hypot(e.clientX-t.startClientX,e.clientY-t.startClientY);if(!t.activated){if(n<=Ya)return;t.activated=!0,t.element.hasPointerCapture(t.pointerId)&&t.element.releasePointerCapture(t.pointerId),l(t.projectIds),a(t.projectId),s(r(`reorder.started`))}e.preventDefault();let i=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-project-reorder-id]`)??null;if(i===null)return;let o=i.dataset.projectReorderId;if(o===void 0)return;let c=i.getBoundingClientRect(),d=e.clientY<c.top+c.height/2?`before`:`after`;t.projectIds=Xa(t.projectIds,t.projectId,o,d),l(t.projectIds)},v=e=>{let t=u.current;if(t?.pointerId!==e)return;let n=t.activated;m(!0),n&&(d.current=t.projectId,a(null),h(t.projectIds,t.projectId))},y=e=>{u.current?.pointerId===e&&(m(!1),a(null),l(null),s(r(`reorder.cancelled`)))},b=e=>{v(e.pointerId)},x=e=>{y(e.pointerId)},S=(e,t)=>{d.current===t&&(d.current=null,e.preventDefault(),e.stopPropagation())},C=(t,n)=>{if(e||!t.altKey||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=p.current.map(e=>e.id),i=Za(r,n,t.key===`ArrowUp`?-1:1);i!==r&&(l(i),h(i,n))};return{activeProjectId:i,announcement:o,getProjectReorderProps:e=>({"aria-keyshortcuts":`Alt+ArrowUp Alt+ArrowDown`,"data-project-reorder-id":e,onClickCapture:t=>{S(t,e)},onKeyDown:t=>{C(t,e)},onPointerCancel:x,onPointerDown:t=>{g(t,e)},onPointerMove:_,onPointerUp:b,title:r(`reorder.title`)}),orderedProjects:f}}function eo({actionLock:e,activeProjectId:t,activeTaskId:n}){let{client:r}=Sr(),{forgetTask:i}=Cr(),a=s(),o=p(),[c,l]=(0,z.useState)(null),u=v(Rn(r));return{closeTaskDeletion:()=>{u.isPending||l(null)},confirmTaskDeletion:()=>{let s=c;return s===null?Promise.resolve(void 0):e.run(async()=>{try{await u.mutateAsync({projectId:s.projectId,taskId:s.id}),l(null),await Mn(o,s.projectId,s.id).catch(()=>void 0),o.removeQueries({exact:!0,queryKey:[`projects`,s.projectId,`tasks`,s.id]}),i(s.projectId,s.id),Ka(s.projectId,s.id),s.projectId===t&&s.id===n&&await(s.projectId===`temporary`?a({to:`/temporary`}):a({params:{projectId:s.projectId},to:`/p/$projectId`})),r.unsubscribeTask(s.projectId,s.id).catch(()=>void 0)}catch{}})},deletingTask:c,isDeletePending:u.isPending,requestTaskDeletion:l}}var to=`codexly:project-sidebar:expanded-projects:v1`,no=`codexly:project-sidebar:temporary-tasks-expanded:v1`;function ro(){try{return typeof window>`u`?void 0:window.localStorage}catch{return}}function io(e){if(e===void 0)return null;try{let t=e.getItem(to);if(t===null)return null;let n=JSON.parse(t);return uo(n)?new Set(n.expandedProjectIds):null}catch{return null}}function ao(e,t){if(e===void 0)return;let n={expandedProjectIds:[...t],version:1};try{e.setItem(to,JSON.stringify(n))}catch{}}function oo(e){if(e===void 0)return!0;try{let t=e.getItem(no);if(t===null)return!0;let n=JSON.parse(t);return!fo(n)||n.expanded}catch{return!0}}function so(e,t){if(e===void 0)return;let n={expanded:t,version:1};try{e.setItem(no,JSON.stringify(n))}catch{}}function co(e,t){if(t===null){let t=e[0];return t===void 0?new Set:new Set([t])}return new Set(e.filter(e=>t.has(e)))}function lo(e,t){let n=co(e,t);return e.find(e=>n.has(e))??e[0]}function uo(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.version===1&&Array.isArray(t.expandedProjectIds)&&t.expandedProjectIds.every(e=>typeof e==`string`)}function fo(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.version===1&&typeof t.expanded==`boolean`}var po=new Set,mo=(0,z.createContext)({expandedPaths:po,onSelect:void 0,selectedPath:void 0,togglePath:()=>void 0});function ho({children:e,className:t=``,defaultExpanded:n=po,expanded:r,onExpandedChange:i,onSelect:a,selectedPath:o,...s}){let[c,l]=(0,z.useState)(()=>new Set(n)),u=r??c,d=(0,z.useCallback)(e=>{let t=new Set(u);t.has(e)?t.delete(e):t.add(e),r===void 0&&l(t),i?.(t)},[r,u,i]),f=(0,z.useMemo)(()=>({expandedPaths:u,onSelect:a,selectedPath:o,togglePath:d}),[u,a,o,d]);return(0,W.jsx)(mo.Provider,{value:f,children:(0,W.jsx)(`div`,{className:`w-full font-mono text-label text-foreground ${t}`,"data-ai-file-tree":``,role:`tree`,...s,children:e})})}function go({className:e=``,...t}){return(0,W.jsx)(`span`,{className:`shrink-0 ${e}`,...t})}function _o({className:e=``,...t}){return(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate ${e}`,...t})}function vo({children:e,className:t=``,name:n,path:r,selectionControl:i,trailing:a,...o}){let{expandedPaths:s,onSelect:c,selectedPath:l,togglePath:u}=(0,z.useContext)(mo),{t:d}=R(`conversation`),f=s.has(r),p=l===r,m=()=>{u(r),c?.(r)};return(0,W.jsxs)(`div`,{"aria-expanded":f,"aria-selected":p,className:t,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`ArrowRight`&&!f||e.key===`ArrowLeft`&&f?(e.preventDefault(),u(r)):(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),m()))},role:`treeitem`,tabIndex:0,...o,children:[(0,W.jsxs)(`div`,{className:`group/file-tree-node flex min-h-7 w-full items-center gap-1 rounded-control px-1.5 text-left transition-colors hover:bg-control-hover ${p?`bg-control`:``}`,children:[(0,W.jsx)(K,{"aria-label":d(f?`agentComponents.folderCollapse`:`agentComponents.folderExpand`,{name:n}),className:`inline-grid size-5 shrink-0 place-items-center rounded-control text-muted-foreground hover:text-foreground focus-visible:shadow-focus focus-visible:outline-none`,onClick:()=>{u(r)},size:`embedded`,type:`button`,variant:`embedded`,children:(0,W.jsx)(he,{"aria-hidden":`true`,className:`size-3.5 transition-transform ${f?`rotate-90`:``}`})}),i,(0,W.jsxs)(K,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-left focus-visible:outline-none`,contentAlign:`start`,onClick:m,size:`embedded`,type:`button`,variant:`embedded`,children:[(0,W.jsx)(go,{children:f?(0,W.jsx)(j,{"aria-hidden":`true`,className:`size-3.5 text-brand`}):(0,W.jsx)(le,{"aria-hidden":`true`,className:`size-3.5 text-brand`})}),(0,W.jsx)(_o,{title:n,children:n})]}),a]}),f?(0,W.jsx)(`div`,{className:`ml-3 border-l border-separator pl-1`,role:`group`,children:e}):null]})}function yo({children:e,className:t=``,icon:n,name:r,path:i,trailing:a,...o}){let{onSelect:s,selectedPath:c}=(0,z.useContext)(mo),l=c===i,u=()=>{s?.(i)};return(0,W.jsxs)(`div`,{"aria-selected":l,className:`group/file-tree-node flex min-h-7 cursor-pointer items-center gap-1.5 rounded-control px-1.5 transition-colors hover:bg-control-hover focus-visible:shadow-focus focus-visible:outline-none ${l?`bg-control`:``} ${t}`,onClick:u,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),u())},role:`treeitem`,tabIndex:0,...o,children:[e??(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,W.jsx)(go,{children:n??(0,W.jsx)(ke,{"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`})}),(0,W.jsx)(_o,{title:i,children:r})]}),a]})}function bo(e){e.stopPropagation()}function xo({className:e=``,...t}){return(0,W.jsx)(`div`,{className:`ml-auto flex items-center gap-1 ${e}`,onClick:bo,onKeyDown:bo,role:`group`,...t})}function So({className:e,...t}){return(0,W.jsx)(Ct,{className:G(`peer inline-grid size-4 shrink-0 place-items-center rounded-[4px] border border-separator-strong bg-panel text-brand-contrast shadow-sm outline-none transition-colors focus-visible:border-brand focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-brand data-[state=checked]:bg-brand data-[state=indeterminate]:border-brand data-[state=indeterminate]:bg-brand`,e),"data-slot":`checkbox`,...t,children:(0,W.jsxs)(Ze,{className:`group [&_svg]:size-3`,"data-slot":`checkbox-indicator`,children:[(0,W.jsx)(ge,{"aria-hidden":`true`,className:`group-data-[state=indeterminate]:hidden`}),(0,W.jsx)(fe,{"aria-hidden":`true`,className:`hidden group-data-[state=indeterminate]:block`})]})})}function Co(e){return(0,W.jsx)(rt,{"data-slot":`dialog`,...e})}function wo(e){return(0,W.jsx)(Tt,{"data-slot":`dialog-trigger`,...e})}function To({children:e,...t}){return typeof document>`u`?(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(Ot,{"data-slot":`dialog-portal`,...t,children:e})}function Eo({className:e,...t}){return(0,W.jsx)(lt,{className:G(`fixed inset-0 z-50 bg-scrim data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),"data-slot":`dialog-overlay`,...t})}function Do({children:e,className:t,...n}){return(0,W.jsxs)(To,{children:[(0,W.jsx)(Eo,{}),(0,W.jsx)(et,{className:G(`fixed left-1/2 top-1/2 z-50 grid min-w-0 max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 overflow-auto rounded-surface bg-dialog p-5 text-foreground shadow-panel outline-none duration-180 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,t),"data-slot":`dialog-content`,...n,children:e})]})}function Oo({className:e,...t}){return(0,W.jsx)(`div`,{className:G(`flex flex-col gap-1 text-left`,e),"data-slot":`dialog-header`,...t})}function ko({className:e,...t}){return(0,W.jsx)(`div`,{className:G(`flex justify-end gap-2`,e),"data-slot":`dialog-footer`,...t})}function Ao({className:e,...t}){return(0,W.jsx)(bt,{className:G(`text-heading font-semibold leading-tight`,e),"data-slot":`dialog-title`,...t})}function jo({className:e,...t}){return(0,W.jsx)(Ke,{className:G(`text-body-small text-muted-foreground`,e),"data-slot":`dialog-description`,...t})}function Mo({draftPath:e,isPathValidated:t,requestedPath:n,selectedPaths:r,submittedPath:i,validatedPath:a}){return r.length>0?r:!t||e!==void 0||i===void 0||n!==i||a===void 0?[]:[a]}var No=be(`min-w-0 text-foreground outline-none transition-[border-color,box-shadow] placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,{defaultVariants:{variant:`default`},variants:{variant:{compact:`h-8 w-full rounded-control bg-raised px-2.5 text-label shadow-sm focus-visible:shadow-focus`,default:`h-9 w-full rounded-control bg-control px-3 text-body focus-visible:shadow-focus`,embedded:`flex-1 bg-transparent`,outline:`h-11 w-full rounded-control border border-separator-strong bg-panel px-3 text-body-small focus-visible:border-brand focus-visible:shadow-focus sm:h-9`}}});function J({className:e,type:t,variant:n=`default`,...r}){return(0,W.jsx)(`input`,{className:G(No({className:e,variant:n})),"data-slot":`input`,"data-variant":n,type:t,...r})}var Po=`flex cursor-default items-center justify-center py-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`;function Fo({...e}){return(0,W.jsx)(xt,{"data-slot":`select`,...e})}function Io({...e}){return(0,W.jsx)(st,{"data-slot":`select-group`,...e})}function Lo({...e}){return(0,W.jsx)(it,{"data-slot":`select-value`,...e})}function Ro({className:e,size:t=`default`,children:n,...r}){return(0,W.jsxs)(dt,{"data-slot":`select-trigger`,"data-size":t,className:G(`flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-control border border-separator-strong bg-panel px-3 py-2 text-label outline-none transition-colors focus:border-brand focus:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4`,t===`toolbar`&&`h-6 gap-1 px-1 text-caption [&_svg:not([class*='size-'])]:size-3`,e),...r,children:[n,(0,W.jsx)(gt,{asChild:!0,children:(0,W.jsx)(me,{className:`opacity-50`})})]})}function zo({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,W.jsx)(St,{children:(0,W.jsxs)(Et,{"data-slot":`select-content`,className:G(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-control border border-separator bg-raised text-foreground shadow-panel data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,W.jsx)(Vo,{}),(0,W.jsx)(At,{className:G(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,W.jsx)(Ho,{})]})})}function Bo({className:e,children:t,...n}){return(0,W.jsxs)(kt,{"data-slot":`select-item`,className:G(`relative flex w-full cursor-default items-center gap-2 rounded-control py-1.5 pr-8 pl-2 text-label outline-hidden select-none focus:bg-control-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-muted-foreground [&_svg:not([class*='size-'])]:size-3.5`,e),...n,children:[(0,W.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(ct,{children:(0,W.jsx)(ge,{})})}),(0,W.jsx)(ut,{children:t})]})}function Vo({className:e,...t}){return(0,W.jsx)(ft,{"data-slot":`select-scroll-up-button`,className:G(Po,e),...t,children:(0,W.jsx)(ee,{})})}function Ho({className:e,...t}){return(0,W.jsx)(_t,{"data-slot":`select-scroll-down-button`,className:G(Po,e),...t,children:(0,W.jsx)(me,{})})}function Uo({delayDuration:e=350,disableHoverableContent:t=!0,skipDelayDuration:n=150,...r}){return(0,W.jsx)(wt,{"data-slot":`tooltip-provider`,delayDuration:e,disableHoverableContent:t,skipDelayDuration:n,...r})}function Y(e){return(0,W.jsx)(pt,{"data-slot":`tooltip`,...e})}function X(e){return(0,W.jsx)(at,{"data-slot":`tooltip-trigger`,...e})}function Z({children:e,className:t,collisionPadding:n=8,sideOffset:r=8,...i}){return(0,W.jsx)(yt,{children:(0,W.jsx)(Dt,{className:G(`pointer-events-none z-50 w-fit max-w-[min(20rem,calc(100vw-1rem))] whitespace-normal rounded-control bg-foreground px-2 py-1 text-meta text-raised shadow-floating`,t),collisionPadding:n,"data-slot":`tooltip-content`,sideOffset:r,...i,children:e})})}function Wo(e,t){let n=t.toLowerCase();return e.find(e=>n.startsWith(e.path.toLowerCase()))}function Go({disabled:e,includeHidden:t,labels:n,listing:r,onNavigateParent:i,onNavigatePath:a,onNavigateRoot:o,onPathChange:s,onToggleHidden:c,path:l}){let u=r===void 0?void 0:Wo(r.roots,r.path)?.path,d=t?n.hideHidden:n.showHidden;return(0,W.jsxs)(`div`,{className:`flex min-h-10 items-center gap-2 border-y border-separator bg-panel px-3 sm:px-4`,children:[r===void 0||r.roots.length<2?null:(0,W.jsxs)(Fo,{disabled:e,onValueChange:o,...u===void 0?{}:{value:u},children:[(0,W.jsx)(Ro,{"aria-label":n.filesystemRoot,className:`h-8 min-w-20 px-2 font-mono`,size:`sm`,children:(0,W.jsx)(Lo,{placeholder:n.filesystemRoot})}),(0,W.jsx)(zo,{position:`popper`,children:r.roots.map(e=>(0,W.jsx)(Bo,{value:e.path,children:e.name},e.path))})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n.parent,disabled:r?.parentPath===null||r===void 0||e,onClick:i,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Fe,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:n.parent})]}),(0,W.jsxs)(`form`,{className:`flex min-w-0 flex-1 items-center gap-1`,onSubmit:e=>{e.preventDefault(),a()},children:[(0,W.jsx)(J,{"aria-label":n.pathLabel,autoComplete:`off`,className:`h-8 min-w-0 px-2 font-mono text-caption max-workbench:h-11`,disabled:e,onChange:e=>{s(e.target.value)},placeholder:n.pathPlaceholder,spellCheck:!1,value:l,variant:`compact`}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n.goToPath,disabled:l.trim().length===0||e,size:`icon-sm`,type:`submit`,variant:`ghost`,children:(0,W.jsx)(ae,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:n.goToPath})]})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d,"aria-pressed":t,disabled:e,onClick:c,size:`icon-sm`,type:`button`,variant:`ghost`,children:t?(0,W.jsx)(ce,{"aria-hidden":`true`}):(0,W.jsx)(se,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d})]})]})}function Ko({directoryStates:e,entries:t,expandedPaths:n,onRetry:r,onRootCheckedChange:i,selectedPaths:a,selectionDisabled:o=!1}){let{t:s}=R(`workbench`);return t.map(t=>{let c=e.get(t.path),l=n.has(t.path);return(0,W.jsx)(vo,{name:t.name,path:t.path,selectionControl:(0,W.jsx)(So,{"aria-label":s(`projectPicker.selectRoot`,{name:t.name}),checked:a.has(t.path),disabled:o,onCheckedChange:e=>{i(t.path,e===!0)}}),trailing:l&&c?.isFetching===!0?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-3.5 animate-spin text-muted-foreground`}):void 0,children:l?c?.error!==null&&c?.error!==void 0?(0,W.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-2 px-2 py-1`,children:[(0,W.jsx)(`p`,{className:`min-w-0 text-caption text-danger`,role:`alert`,children:s(`projectPicker.loadBranchError`)}),(0,W.jsxs)(K,{className:`shrink-0`,onClick:()=>{r(t.path)},size:`sm`,type:`button`,variant:`ghost`,children:[(0,W.jsx)(Ee,{"aria-hidden":`true`,"data-icon":`inline-start`}),s(`actions.retry`)]})]}):c?.data===void 0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-caption text-muted-foreground`,role:`status`,children:s(`projectPicker.loadingBranch`)}):c.data.entries.length===0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-caption text-muted-foreground`,children:s(`projectPicker.empty`)}):(0,W.jsx)(Ko,{directoryStates:e,entries:c.data.entries,expandedPaths:n,onRetry:r,onRootCheckedChange:i,selectedPaths:a,selectionDisabled:o}):null},t.path)})}function qo({directoryStates:e,expandedPaths:t,listing:n,onExpandedChange:r,onRetry:i,onRootCheckedChange:a,selectedPaths:o,selectionDisabled:s=!1}){let{t:c}=R(`workbench`),l=(0,z.useMemo)(()=>new Map(e.map(e=>[e.path,e])),[e]);return(0,W.jsx)(ho,{"aria-label":c(`projectPicker.treeLabel`),expanded:t,onExpandedChange:r,children:(0,W.jsx)(Ko,{directoryStates:l,entries:n.entries,expandedPaths:t,onRetry:i,onRootCheckedChange:a,selectedPaths:o,selectionDisabled:s})})}function Jo({client:e,isAdding:t,onAdd:n,onClose:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(),[s,c]=(0,z.useState)(),[l,u]=(0,z.useState)(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(()=>new Set),[h,_]=(0,z.useState)([]),v=g({queryFn:({signal:t})=>e.listProjectDirectories(a,{includeHidden:d,signal:t}),queryKey:[`project-directories`,a??null,d],staleTime:3e4}),b=v.data,x=Mo({draftPath:s,isPathValidated:v.isSuccess,requestedPath:a,selectedPaths:h,submittedPath:l,validatedPath:b?.path}),S=x.length>0,C=h.length===0&&x.length===1,w=(0,z.useMemo)(()=>new Set(h),[h]),T=C?x[0]??``:h.map((e,t)=>t===0?i(`projectPicker.primaryRootSummary`,{path:e}):e).join(i(`projectPicker.rootSeparator`)),E=(0,z.useMemo)(()=>[...p],[p]),D=y({queries:E.map(t=>({queryFn:({signal:n})=>e.listProjectDirectories(t,{includeHidden:d,signal:n}),queryKey:[`project-directories`,t,d],staleTime:3e4}))}),O=E.map((e,t)=>{let n=D[t];return{...n?.data===void 0?{}:{data:n.data},error:n?.error??null,isFetching:n?.isFetching??!1,path:e}}),k=s??a??b?.path??``;return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&r()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`project-directory-picker-title`,className:`grid h-[min(84dvh,42rem)] max-w-2xl grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-0 overflow-hidden p-0`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:[(0,W.jsxs)(Oo,{className:`px-4 pb-3 pt-4 sm:px-5 sm:pt-5`,children:[(0,W.jsx)(Ao,{id:`project-directory-picker-title`,children:i(`projectPicker.title`)}),(0,W.jsx)(jo,{className:`sr-only`,children:i(`projectPicker.description`)})]}),(0,W.jsx)(Go,{disabled:t,includeHidden:d,labels:{filesystemRoot:i(`projectPicker.filesystemRoot`),goToPath:i(`projectPicker.goToPath`),hideHidden:i(`projectPicker.hideHidden`),parent:i(`projectPicker.parent`),pathLabel:i(`projectPicker.pathLabel`),pathPlaceholder:i(`projectPicker.pathPlaceholder`),showHidden:i(`projectPicker.showHidden`)},listing:b,onNavigateParent:()=>{let e=b?.parentPath;e!=null&&(o(e),c(void 0),u(void 0),m(new Set),_([]))},onNavigatePath:()=>{let e=k.trim();e.length!==0&&(o(e),c(void 0),u(e),m(new Set),_([]))},onNavigateRoot:e=>{o(e),c(void 0),u(void 0),m(new Set),_([])},onPathChange:e=>{c(e),u(void 0)},onToggleHidden:()=>{f(e=>!e),_([])},path:k}),(0,W.jsx)(`div`,{className:`min-h-0 overflow-y-auto px-3 py-2 sm:px-4`,children:v.isPending?(0,W.jsxs)(`p`,{className:`flex min-h-32 items-center justify-center gap-2 text-body-small text-muted-foreground`,role:`status`,children:[(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}),i(`projectPicker.loading`)]}):v.error===null?b===void 0?null:b.entries.length===0?(0,W.jsx)(`p`,{className:`grid min-h-32 place-items-center text-body-small text-muted-foreground`,children:i(`projectPicker.empty`)}):(0,W.jsx)(qo,{directoryStates:O,expandedPaths:p,listing:b,onExpandedChange:m,onRetry:e=>{let t=E.indexOf(e);D[t]?.refetch()},onRootCheckedChange:(e,t)=>{u(void 0),_(n=>zi(n,e,t))},selectedPaths:w,selectionDisabled:t}):(0,W.jsxs)(`div`,{className:`flex min-h-32 flex-col items-center justify-center gap-3 text-center`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,role:`alert`,children:i(`projectPicker.loadError`)}),(0,W.jsxs)(K,{onClick:()=>void v.refetch(),type:`button`,variant:`outline`,children:[(0,W.jsx)(Ee,{"aria-hidden":`true`,"data-icon":`inline-start`}),i(`actions.retry`)]})]})}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 border-t border-separator bg-raised px-4 py-3 sm:flex-row sm:items-center sm:px-5`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1`,children:[(0,W.jsx)(`p`,{"aria-live":`polite`,className:`text-caption text-muted-foreground`,children:C?i(`projectPicker.directPathReady`):i(`projectPicker.selectedRoots`,{count:h.length})}),C?null:(0,W.jsx)(`p`,{className:`ml-auto text-right text-caption text-muted-foreground`,children:i(`projectPicker.primaryRootHint`)})]}),T.length===0?null:(0,W.jsx)(`p`,{className:`min-w-0 break-words font-mono text-caption text-foreground [overflow-wrap:anywhere]`,children:T})]}),(0,W.jsxs)(ko,{className:`w-full flex-col-reverse sm:w-auto sm:flex-row`,children:[(0,W.jsx)(K,{className:`h-10 w-full sm:h-8 sm:w-auto`,disabled:t,onClick:r,type:`button`,variant:`outline`,children:i(`actions.cancel`)}),(0,W.jsxs)(K,{className:`h-10 w-full sm:h-8 sm:w-auto`,disabled:!S||t,onClick:()=>{x.length>0&&n(x)},type:`button`,children:[t?(0,W.jsx)(N,{"aria-hidden":`true`,className:`animate-spin`,"data-icon":`inline-start`}):(0,W.jsx)(Ae,{"aria-hidden":`true`,"data-icon":`inline-start`}),i(t?`projectPicker.adding`:`projectPicker.add`)]})]})]})]})})}function Yo({isPending:e,onClose:t,onRemove:n,project:r}){let{t:i}=R(`workbench`);return(0,W.jsx)(Co,{onOpenChange:n=>{!n&&!e&&t()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`project-remove-title`,className:`max-w-96 p-4`,onEscapeKeyDown:t=>{e&&t.preventDefault()},onInteractOutside:t=>{e&&t.preventDefault()},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`project-remove-title`,children:i(`projectDialog.remove`)}),(0,W.jsx)(jo,{children:i(`projectDialog.removeDescription`,{name:r.name})})]}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{className:`h-8 rounded-control px-3 text-body-small text-muted-foreground hover:bg-control-hover hover:text-foreground`,disabled:e,onClick:t,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:e,onClick:n,type:`button`,variant:`destructive`,children:i(`projectDialog.delete`)})]})]})})}function Xo({initialName:e,isPending:t,onClose:n,onRename:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(e),s=a.trim();return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&n()},open:!0,children:(0,W.jsx)(Do,{"aria-labelledby":`project-rename-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:(0,W.jsxs)(`form`,{className:`grid gap-4`,onSubmit:e=>{e.preventDefault(),s.length>0&&r(s)},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`project-rename-title`,children:i(`projectDialog.rename`)}),(0,W.jsx)(jo,{children:i(`projectDialog.renameDescription`)})]}),(0,W.jsx)(J,{"aria-label":i(`projectDialog.name`),autoFocus:!0,disabled:t,maxLength:200,onChange:e=>{o(e.currentTarget.value)},value:a}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:t,onClick:n,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:t||s.length===0||s===e,type:`submit`,children:i(`actions.save`)})]})]})})})}function Zo({initialTitle:e,isPending:t,onClose:n,onRename:r}){let{t:i}=R(`workbench`),[a,o]=(0,z.useState)(e);return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!t&&n()},open:!0,children:(0,W.jsx)(Do,{"aria-labelledby":`task-rename-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{t&&e.preventDefault()},onInteractOutside:e=>{t&&e.preventDefault()},children:(0,W.jsxs)(`form`,{className:`grid gap-4`,onSubmit:e=>{e.preventDefault();let t=a.trim();t.length>0&&r(t)},children:[(0,W.jsx)(Oo,{children:(0,W.jsx)(Ao,{id:`task-rename-title`,children:i(`taskDialog.rename`)})}),(0,W.jsx)(J,{"aria-label":i(`taskDialog.name`),autoFocus:!0,disabled:t,maxLength:200,onChange:e=>{o(e.currentTarget.value)},value:a}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:t,onClick:n,type:`button`,variant:`ghost`,children:i(`actions.cancel`)}),(0,W.jsx)(K,{disabled:t||a.trim().length===0,type:`submit`,children:i(`actions.save`)})]})]})})})}function Qo({client:e,isProjectActionPending:t,isProjectAddPending:n,isProjectPickerOpen:r,onAddProject:i,onCloseProjectDialog:a,onCloseProjectPicker:o,onCloseTaskRename:s,onRemoveProject:c,onRenameProject:l,onRenameTask:u,removingProject:d,renamingProject:f,renamingTask:p,taskRenamePending:m}){return(0,W.jsxs)(W.Fragment,{children:[p===null?null:(0,W.jsx)(Zo,{initialTitle:p.title,isPending:m,onClose:s,onRename:e=>{u(p,e)}},p.id),r?(0,W.jsx)(Jo,{client:e,isAdding:n,onAdd:i,onClose:o}):null,f===null?null:(0,W.jsx)(Xo,{initialName:f.name,isPending:t,onClose:()=>{a(f.id)},onRename:e=>{l(f,e)}},f.id),d===null?null:(0,W.jsx)(Yo,{isPending:t,onClose:()=>{a(d.id)},onRemove:()=>{c(d)},project:d},d.id)]})}var $o=4,es=100;async function ts(e,t){let n=new Set,r=new Set,i;for(;;){let a=await e.listTasks(t,{archived:!0,...i===void 0?{}:{cursor:i},limit:es});for(let e of a.data)n.add(e.id);if(a.nextCursor===null)break;if(r.has(a.nextCursor))throw Error(`Archived task pagination returned a repeated cursor`);r.add(a.nextCursor),i=a.nextCursor}return[...n]}async function ns(e,t){let n=await ts(e,t),r;for(let i=0;i<n.length;i+=$o){let a=n.slice(i,i+$o),o=await Promise.allSettled(a.map(n=>e.deleteTask(t,n)));for(let e of o)e.status===`rejected`&&r===void 0&&(r=e.reason instanceof Error?e.reason:Error(String(e.reason)))}if(r!==void 0)throw r}function rs({confirmLabel:e,description:t,isPending:n,onClose:r,onConfirm:i,title:a}){let{t:o}=R(`workbench`);return(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!n&&r()},open:!0,children:(0,W.jsxs)(Do,{"aria-labelledby":`task-delete-confirmation-title`,className:`max-w-96 p-4`,onEscapeKeyDown:e=>{n&&e.preventDefault()},onInteractOutside:e=>{n&&e.preventDefault()},children:[(0,W.jsxs)(Oo,{children:[(0,W.jsx)(Ao,{id:`task-delete-confirmation-title`,children:a}),(0,W.jsx)(jo,{children:t})]}),(0,W.jsxs)(ko,{children:[(0,W.jsx)(K,{disabled:n,onClick:r,type:`button`,variant:`ghost`,children:o(`actions.cancel`)}),(0,W.jsx)(K,{disabled:n,onClick:i,type:`button`,variant:`destructive`,children:e})]})]})})}function is({isPending:e,onClose:t,onDelete:n,task:r}){let{t:i}=R(`workbench`);return(0,W.jsx)(rs,{confirmLabel:i(`sidebar.deletePermanently`),description:i(`sidebar.deleteTaskDescription`,{task:r.title}),isPending:e,onClose:t,onConfirm:n,title:i(`sidebar.deleteTaskTitle`)})}function as({error:e,isPending:t,mutationPending:n,onDelete:r,onDeleteAll:i,onNext:a,onPrevious:o,onRestore:s,onRetry:c,page:l,pageNumber:u}){let{t:d}=R(`workbench`);return t?(0,W.jsxs)(`div`,{className:`flex min-h-48 items-center justify-center`,role:`status`,children:[(0,W.jsx)(N,{className:`size-5 animate-spin text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`sr-only`,children:d(`archivedTasks.loading`)})]}):e===null?(0,W.jsxs)(`div`,{className:`grid min-h-0 grid-rows-[minmax(0,1fr)_auto]`,children:[l?.data.length===0?(0,W.jsx)(`p`,{className:`flex min-h-48 items-center justify-center px-4 text-body-small text-muted-foreground`,children:d(`archivedTasks.empty`)}):(0,W.jsx)(`ul`,{className:`min-h-0 overflow-y-auto`,children:l?.data.map(e=>(0,W.jsxs)(`li`,{className:`flex min-h-14 min-w-0 items-center gap-3 px-4 py-2`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`truncate text-body-small font-medium text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`text-caption text-muted-foreground`,children:d(`archivedTasks.updatedAt`,{date:new Date(e.updatedAt).toLocaleString()})})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.restoreTask`,{task:e.title}),disabled:n,onClick:()=>{s(e)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(I,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.restore`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.deleteTask`,{task:e.title}),disabled:n,onClick:()=>{r(e)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Be,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.delete`)})]})]},e.id))}),(0,W.jsxs)(`div`,{className:`flex min-h-12 items-center justify-between gap-2 px-4`,children:[(0,W.jsxs)(K,{className:`text-danger hover:text-danger`,disabled:n,onClick:i,size:`sm`,type:`button`,variant:`ghost`,children:[(0,W.jsx)(Be,{"aria-hidden":`true`}),d(`archivedTasks.deleteAll`)]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.previous`),className:`size-11 sm:size-8`,disabled:n||u===1,onClick:o,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(re,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.previous`)})]}),(0,W.jsx)(`span`,{className:`min-w-16 text-center text-caption text-muted-foreground`,children:d(`archivedTasks.page`,{page:u})}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":d(`archivedTasks.next`),className:`size-11 sm:size-8`,disabled:n||l?.nextCursor===null,onClick:a,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(he,{"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:d(`archivedTasks.next`)})]})]})]})]}):(0,W.jsxs)(`div`,{className:`flex min-h-48 flex-col items-center justify-center gap-3 px-4 text-center`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,role:`alert`,children:d(`archivedTasks.loadError`)}),(0,W.jsx)(K,{onClick:c,size:`sm`,type:`button`,variant:`outline`,children:d(`actions.retry`)})]})}function os({client:e,onClose:t,project:n}){let{t:r}=R(`workbench`),i=p(),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)([void 0]),[d,f]=(0,z.useState)(0),[m,h]=(0,z.useState)(null),[_,y]=(0,z.useState)(!1),b=(0,z.useRef)(kr()),x=l[d],S=g(lr(n.id,x,s,e)),C=v(Ln(e)),w=v(Rn(e)),T=v({mutationFn:()=>ns(e,n.id),mutationKey:[`tasks`,`delete-all-archived`,n.id]}),E=C.isPending||w.isPending||T.isPending;(0,z.useEffect)(()=>{let e=window.setTimeout(()=>{c(a.trim()),u([void 0]),f(0)},250);return()=>{window.clearTimeout(e)}},[a]);let D=()=>{u([void 0]),f(0),i.removeQueries({queryKey:[`projects`,n.id,`archived-tasks`]})},O=e=>b.current.run(async()=>{try{let t=await C.mutateAsync({projectId:n.id,taskId:e.id});i.setQueryData([`projects`,n.id,`tasks`],e=>yn(e,t.task)),xn(i,t.task),D()}catch{}}),k=e=>b.current.run(async()=>{try{await w.mutateAsync({projectId:n.id,taskId:e.id}),h(null),D()}catch{}}),A=()=>b.current.run(async()=>{try{await T.mutateAsync(),y(!1)}catch{}finally{D()}});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Co,{onOpenChange:e=>{!e&&!E&&t()},open:!0,children:(0,W.jsxs)(Do,{className:`grid h-[min(42rem,calc(100dvh-2rem))] max-w-2xl grid-rows-[auto_auto_minmax(0,1fr)] gap-0 overflow-hidden p-0`,children:[(0,W.jsx)(Oo,{className:`px-4 pb-3 pt-4 sm:px-5 sm:pt-5`,children:(0,W.jsx)(Ao,{children:r(`archivedTasks.title`,{project:n.name})})}),(0,W.jsxs)(`div`,{className:`relative px-4 pb-3 sm:px-5`,children:[(0,W.jsx)(Me,{"aria-hidden":`true`,className:`pointer-events-none absolute left-7 top-2.5 size-4 text-muted-foreground sm:left-8`}),(0,W.jsx)(J,{"aria-label":r(`archivedTasks.search`),className:`h-9 w-full pl-8`,onChange:e=>{o(e.currentTarget.value)},placeholder:r(`archivedTasks.search`),value:a})]}),(0,W.jsx)(as,{error:S.error,isPending:S.isPending,mutationPending:E,onDelete:h,onDeleteAll:()=>{y(!0)},onNext:()=>{let e=S.data?.nextCursor;e!=null&&(u(t=>[...t.slice(0,d+1),e]),f(e=>e+1))},onPrevious:()=>{f(e=>Math.max(0,e-1))},onRestore:e=>{O(e)},onRetry:()=>{S.refetch()},page:S.data,pageNumber:d+1})]})}),m===null?null:(0,W.jsx)(rs,{confirmLabel:r(`archivedTasks.confirmDelete`),description:r(`archivedTasks.deleteDescription`,{task:m.title}),isPending:w.isPending,onClose:()=>{h(null)},onConfirm:()=>{k(m)},title:r(`archivedTasks.deleteTitle`)}),_?(0,W.jsx)(rs,{confirmLabel:r(`archivedTasks.confirmDeleteAll`),description:r(`archivedTasks.deleteAllDescription`,{project:n.name}),isPending:T.isPending,onClose:()=>{y(!1)},onConfirm:()=>{A()},title:r(`archivedTasks.deleteAllTitle`)}):null]})}function ss(e){return(0,W.jsx)(Ye,{"data-slot":`dropdown-menu`,...e})}function cs(e){return(0,W.jsx)(Qe,{"data-slot":`dropdown-menu-trigger`,...e})}function ls(e){return(0,W.jsx)(ht,{"data-slot":`dropdown-menu-sub`,...e})}function us({children:e,...t}){return typeof document>`u`?(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(jt,{"data-slot":`dropdown-menu-portal`,...t,children:e})}function ds({children:e,className:t,collisionPadding:n=8,sideOffset:r=2,...i}){return(0,W.jsx)(us,{children:(0,W.jsx)(Nt,{className:G(`z-50 min-w-32 overflow-hidden rounded-surface bg-raised p-1 text-foreground shadow-floating outline-none`,t),collisionPadding:n,"data-slot":`dropdown-menu-content`,sideOffset:r,...i,children:e})})}function fs({className:e,...t}){return(0,W.jsx)(Mt,{className:G(`flex cursor-default select-none items-center gap-2 rounded-control px-2 py-1.5 text-body-small outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),"data-slot":`dropdown-menu-item`,...t})}function ps({children:e,className:t,...n}){return(0,W.jsxs)(mt,{className:G(`flex cursor-default select-none items-center gap-2 rounded-control px-2 py-1.5 text-body-small outline-none transition-colors data-[state=open]:bg-control-hover data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,t),"data-slot":`dropdown-menu-sub-trigger`,...n,children:[e,(0,W.jsx)(he,{"aria-hidden":`true`,className:`ml-auto size-3.5 text-muted-foreground`})]})}function ms({children:e,className:t,collisionPadding:n=8,sideOffset:r=2,...i}){return(0,W.jsx)(us,{children:(0,W.jsx)(qe,{className:G(`z-50 min-w-40 max-h-[calc(100dvh-1rem)] overflow-y-auto rounded-surface bg-raised p-1 text-foreground shadow-floating outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,t),collisionPadding:n,"data-slot":`dropdown-menu-sub-content`,sideOffset:r,...i,children:e})})}function hs(e){return(0,W.jsx)(ot,{"data-slot":`dropdown-menu-group`,...e})}function gs({className:e,...t}){return(0,W.jsx)(Je,{className:G(`px-2 py-1 text-label font-medium text-foreground`,e),"data-slot":`dropdown-menu-label`,...t})}function _s({className:e,...t}){return(0,W.jsx)($e,{className:G(`-mx-1 my-1 h-px bg-separator`,e),"data-slot":`dropdown-menu-separator`,...t})}function vs(e){return(0,W.jsx)(nt,{"data-slot":`dropdown-menu-radio-group`,...e})}function ys({children:e,className:t,indicator:n=`radio`,...r}){return(0,W.jsxs)(Xe,{className:G(`relative flex cursor-default select-none items-center gap-2.5 rounded-control py-1.5 text-body-small outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-control-hover [&_svg]:pointer-events-none [&_svg]:shrink-0`,n===`check`?`pl-2 pr-8`:`pl-8 pr-2`,t),"data-indicator":n,"data-indicator-position":n===`check`?`end`:`start`,"data-slot":`dropdown-menu-radio-item`,...r,children:[(0,W.jsx)(`span`,{className:G(`pointer-events-none absolute flex size-3.5 items-center justify-center`,n===`check`?`right-2`:`left-2`),children:(0,W.jsx)(tt,{children:n===`check`?(0,W.jsx)(ge,{"aria-hidden":`true`,className:`size-3.5`}):(0,W.jsx)(ie,{"aria-hidden":`true`,className:`size-2 fill-current text-brand`})})}),e]})}function bs(e){let t=new Map;for(let n of e){let e=t.get(n.projectId);e===void 0?t.set(n.projectId,[n]):e.push(n)}return t}function xs({error:e,hasHiddenLoadedTasks:t,hasNextPage:n,isExpanded:r,isFetchingNextPage:i}){return r?n?{action:`load`,disabled:i,label:i?L.t(`sidebar.expandLoading`,{ns:`workbench`}):e===null?L.t(`sidebar.expand`,{ns:`workbench`}):L.t(`sidebar.expandRetry`,{ns:`workbench`})}:t?{action:`collapse`,disabled:!1,label:L.t(`sidebar.collapse`,{ns:`workbench`})}:null:n?{action:`expand-and-load`,disabled:!1,label:L.t(`sidebar.expand`,{ns:`workbench`})}:t?{action:`expand`,disabled:!1,label:L.t(`sidebar.expand`,{ns:`workbench`})}:null}function Ss({hasActiveTask:e,projectDataFailed:t,projectDataPending:n,taskConnectionState:r}){return e?r:t?`closed`:n?`connecting`:`connected`}function Cs(e){switch(e){case`connected`:return{labelKey:`sidebar.connection.online`,toneClassName:`text-diff-added`};case`connecting`:return{labelKey:`sidebar.connection.connecting`,toneClassName:`text-warning`};case`reconnecting`:return{labelKey:`sidebar.connection.reconnecting`,toneClassName:`text-warning`};case`closed`:return{labelKey:`sidebar.connection.offline`,toneClassName:`text-danger`}}}function ws({disabled:e,onOpen:t}){let{t:n}=R(`workbench`);return(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":n(`sidebar.addProject`),disabled:e,onClick:t,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{"aria-hidden":`true`,className:`size-3.5`})})}),(0,W.jsx)(Z,{children:n(`sidebar.addProject`)})]})}function Ts({isPending:e,onOpenArchived:t,onRemove:n,onRename:r,project:i}){let{t:a}=R(`workbench`);return(0,W.jsx)(`div`,{className:`relative shrink-0`,children:(0,W.jsxs)(ss,{modal:!1,children:[(0,W.jsx)(cs,{asChild:!0,children:(0,W.jsx)(K,{variant:`ghost`,"aria-label":a(`sidebar.openProjectActions`,{project:i.name}),className:`grid size-7 place-items-center rounded-control text-muted-foreground opacity-0 transition-[color,background-color,opacity] hover:bg-control-hover hover:text-foreground focus-visible:opacity-100 focus-visible:shadow-focus group-hover/project:opacity-100 data-[state=open]:opacity-100`,disabled:e,id:`project-actions-${i.id}`,type:`button`,children:(0,W.jsx)(ue,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Ds,{isPending:e,onOpenArchived:()=>{t(i)},onRemove:()=>{n(i)},onRename:()=>{r(i)},project:i})]})})}var Es=`h-8 w-full text-left text-foreground`;function Ds({isPending:e,onOpenArchived:t,onRemove:n,onRename:r,project:i}){let{t:a}=R(`workbench`);return(0,W.jsxs)(ds,{align:`start`,"aria-label":a(`sidebar.projectActions`,{project:i.name}),"aria-labelledby":void 0,className:`w-32`,children:[(0,W.jsxs)(fs,{className:Es,disabled:e,onSelect:r,children:[(0,W.jsx)(xe,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.rename`)]}),(0,W.jsxs)(fs,{className:Es,disabled:e,onSelect:t,children:[(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.archived`)]}),(0,W.jsxs)(fs,{className:`${Es} text-danger`,disabled:e,onSelect:n,children:[(0,W.jsx)(Be,{className:`size-3.5`,"aria-hidden":`true`}),a(`sidebar.remove`)]})]})}function Os({appInfo:e,connectionState:t,onOpen:n}){let{t:r}=R(`workbench`),i=Cs(t),a=r(i.labelKey),o=e?.appVersion??`…`,s=e?.updateAvailable===!0;return(0,W.jsxs)(`div`,{className:`flex h-9 w-full items-stretch text-body-small text-muted-foreground`,children:[(0,W.jsxs)(K,{"aria-label":r(`sidebar.settings`),className:`h-full min-w-0 flex-1 gap-2.5 rounded-r-none px-2.5`,contentAlign:`start`,id:`global-settings-trigger`,onClick:()=>{n(`appearance`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(Ce,{className:`size-4`,"aria-hidden":`true`}),r(`sidebar.settings`)]}),(0,W.jsx)(K,{"aria-label":r(`sidebar.aboutStatus`,{status:a,update:s?r(`sidebar.updateAvailableLabel`):``,version:o}),className:`h-full gap-1 rounded-l-none px-2.5 text-caption`,id:`global-settings-about-trigger`,onClick:()=>{n(`about`)},type:`button`,variant:`ghost`,children:(0,W.jsxs)(`span`,{"aria-live":`polite`,className:`inline-flex items-center gap-1`,children:[(0,W.jsxs)(`span`,{className:s?`text-warning`:`text-muted-foreground`,children:[s?(0,W.jsx)(de,{"aria-hidden":`true`,className:`mr-1 inline size-3`}):null,`v`,o]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted-foreground`,children:`·`}),(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 ${i.toneClassName}`,children:[(0,W.jsx)(ks,{connectionState:t}),a]})]})})]})}function ks({connectionState:e}){return e===`connected`?(0,W.jsx)(Se,{className:`size-3`,"aria-hidden":`true`}):e===`closed`?(0,W.jsx)(je,{className:`size-3`,"aria-hidden":`true`}):(0,W.jsx)(`span`,{className:`inline-flex animate-spin`,"aria-hidden":`true`,children:(0,W.jsx)(N,{className:`size-3`})})}function As(e,t){return e===`temporary`?{params:{taskId:t},to:`/temporary/t/$taskId`}:{params:{projectId:e,taskId:t},to:`/p/$projectId/t/$taskId`}}function js({active:e,attention:t,icon:n,isActionPending:r,isAwaitingApproval:i,isRunning:a,onArchive:o,onDelete:s,onPin:c,onRename:l,task:u}){let{t:d}=R(`workbench`),f=As(u.projectId,u.id);return(0,W.jsxs)(`div`,{className:`group relative min-w-0`,children:[(0,W.jsxs)(C,{"aria-current":e?`page`:void 0,className:`flex h-8 min-w-0 items-center gap-2 rounded-control px-2 text-body-small transition-colors ${e?`bg-control-active font-medium text-foreground`:`text-muted-foreground hover:bg-control-hover hover:text-foreground`}`,...f,children:[n===void 0?null:(0,W.jsx)(`span`,{className:`shrink-0 text-subtle-foreground`,children:n}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:u.title}),(0,W.jsx)(Ms,{attention:t,isAwaitingApproval:i,isRunning:a,updatedAt:u.updatedAt})]}),(0,W.jsxs)(ss,{modal:!1,children:[(0,W.jsx)(cs,{asChild:!0,children:(0,W.jsx)(K,{variant:`ghost`,"aria-label":d(`sidebar.openTaskActions`,{task:u.title}),className:`task-actions absolute right-1 top-1 grid size-6 place-items-center rounded-control text-muted-foreground transition-colors hover:bg-control-hover hover:text-foreground focus-visible:opacity-100 focus-visible:shadow-focus`,disabled:r,type:`button`,children:(0,W.jsx)(ue,{className:`size-4`,"aria-hidden":`true`})})}),(0,W.jsx)(Ps,{isPending:r,onArchive:()=>{o(u)},onDelete:()=>{s(u)},onPin:()=>{c(u)},onRename:()=>{l(u)},task:u})]})]})}function Ms({attention:e,isAwaitingApproval:t,isRunning:n,updatedAt:r}){let{t:i}=R(`workbench`),a;return a=t||e===`approval`?{animated:!0,label:i(`sidebar.taskApproval`),tone:`text-task-waiting`}:n?{animated:!0,label:i(`sidebar.taskRunning`),tone:`text-task-running`}:e===`completed`?{animated:!1,label:i(`sidebar.taskComplete`),tone:`text-task-completed`}:e===`failed`?{animated:!1,label:i(`sidebar.taskIncomplete`),tone:`text-task-failed`}:null,a===null?(0,W.jsx)(`span`,{className:`task-age task-status ml-auto shrink-0 text-caption text-subtle-foreground`,children:ta(r)}):(0,W.jsx)(`span`,{"aria-label":a.label,className:`task-status ml-auto inline-grid size-3.5 shrink-0 place-items-center ${a.tone}`,role:`status`,children:(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`task-status-dot block size-2 rounded-full bg-current ${a.animated?`task-status-dot--breathing`:``}`})})}var Ns=`h-8 w-full text-left text-foreground`;function Ps({isPending:e,onArchive:t,onDelete:n,onPin:r,onRename:i,task:a}){let{t:o}=R(`workbench`);return(0,W.jsxs)(ds,{align:`start`,"aria-label":o(`sidebar.taskActions`,{task:a.title}),"aria-labelledby":void 0,className:`w-40`,children:[(0,W.jsxs)(fs,{className:Ns,disabled:e,onSelect:r,children:[(0,W.jsx)(We,{className:`size-3.5`,"aria-hidden":`true`}),a.pinned?o(`sidebar.unpin`):o(`sidebar.pin`)]}),(0,W.jsxs)(fs,{className:Ns,disabled:e,onSelect:i,children:[(0,W.jsx)(xe,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.rename`)]}),(0,W.jsxs)(fs,{className:`${Ns} text-danger`,disabled:e,onSelect:t,children:[(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.archive`)]}),(0,W.jsxs)(fs,{className:`${Ns} text-danger`,disabled:e,onSelect:n,children:[(0,W.jsx)(Be,{className:`size-3.5`,"aria-hidden":`true`}),o(`sidebar.deletePermanently`)]})]})}function Fs({expanded:e,onCreate:t,onOpenArchived:n,onToggle:r}){let{t:i}=R(`workbench`),a=i(`sidebar.temporaryTasks`),o=`opacity-0 transition-[color,background-color,opacity] focus-visible:opacity-100 group-hover/temporary:opacity-100`;return(0,W.jsxs)(`div`,{className:`group/temporary flex h-8 items-center gap-0.5 text-muted-foreground`,children:[(0,W.jsxs)(K,{"aria-controls":`temporary-tasks-content`,"aria-expanded":e,className:`h-8 min-w-0 flex-1 gap-2 rounded-control px-2 text-body-small font-medium`,contentAlign:`start`,id:`temporary-tasks-title`,onClick:r,type:`button`,variant:`ghost`,children:[(0,W.jsx)(te,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:a})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":i(`sidebar.archived`),className:o,id:`project-actions-${O}`,onClick:()=>{n({id:O,name:a})},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(_e,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:i(`sidebar.archived`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":i(`sidebar.newTask`),className:o,onClick:t,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:i(`sidebar.newTask`)})]})]})}var Is=[];function Ls({archiveTask:e,deleteTask:t,error:n,expandedProjects:r,expandedTaskProjects:i,fetchNextProjectTaskPage:a,getProjectReorderProps:o,hasTaskError:s,isPending:c,isProjectActionPending:l,isProjectAddPending:u,normalizedQuery:d,onOpenTemporaryDraft:f,onOpenProjectDraft:p,onOpenArchived:m,onOpenProjectPicker:h,onRemoveProject:g,onRenameProject:_,orderedProjects:v,pinTask:y,pinnedTasks:b,projectId:x,projectOrderAnnouncement:S,projectTaskStates:C,reorderingProjectId:w,setExpandedTaskProjects:T,setRenamingTask:E,taskActionPending:D,taskActivity:k,taskId:A,taskSearch:j,tasksByProjectId:ee,toggleProject:te}){let{t:M}=R(`workbench`),[N]=(0,z.useState)(ro),[P,ne]=(0,z.useState)(()=>oo(N)),re=ee.get(`temporary`)??Is,ie=C.get(O),ae=i.has(O),oe=ea(re,ae),F=xs({error:ie?.error??null,hasHiddenLoadedTasks:re.length>5,hasNextPage:d.length===0?ie?.hasNextPage??!1:!1,isExpanded:ae,isFetchingNextPage:ie?.isFetchingNextPage??!1});return(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden px-2 pt-2`,children:[b.length>0?(0,W.jsxs)(`section`,{className:`mb-4 max-h-40 shrink-0 overflow-y-auto`,"aria-labelledby":`pinned-title`,children:[(0,W.jsx)(`h2`,{className:`px-2 pb-2 text-meta font-semibold text-muted-foreground`,id:`pinned-title`,children:M(`sidebar.pinned`)}),(0,W.jsx)(`div`,{className:`space-y-0.5`,children:b.map(n=>{let r=Gr(k,n.projectId,n.id);return(0,W.jsx)(js,{active:n.projectId===x&&n.id===A,attention:r.attention,icon:(0,W.jsx)(We,{className:`size-3.5`,"aria-hidden":`true`}),isActionPending:D,isAwaitingApproval:r.isAwaitingApproval,isRunning:r.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:n},`${n.projectId}:${n.id}`)})})]}):null,(0,W.jsxs)(`section`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"aria-labelledby":`projects-title`,children:[(0,W.jsxs)(`div`,{className:`flex h-8 min-w-0 w-full shrink-0 items-center justify-between pl-2`,children:[(0,W.jsx)(`h2`,{className:`text-body-small font-semibold text-foreground`,id:`projects-title`,children:M(`sidebar.projects`)}),(0,W.jsx)(ws,{disabled:u,onOpen:()=>{h()}})]}),c?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,j.isPending?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.searchAll`)}):null,n===null&&!s?null:(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta leading-5 text-danger`,role:`alert`,children:M(`sidebar.errorLoadTasks`)}),j.error===null?null:(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta leading-5 text-danger`,role:`alert`,children:M(`sidebar.errorSearchTasks`)}),(0,W.jsx)(`p`,{"aria-live":`polite`,className:`sr-only`,children:S}),(0,W.jsxs)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-x-hidden overflow-y-auto pb-3`,"data-testid":`project-tree-scroll`,children:[(0,W.jsxs)(`section`,{className:`min-w-0`,"aria-labelledby":`temporary-tasks-title`,children:[(0,W.jsx)(Fs,{expanded:P,onCreate:f,onOpenArchived:m,onToggle:()=>{ne(e=>{let t=!e;return so(N,t),t})}}),P?(0,W.jsxs)(`div`,{className:`min-w-0 space-y-0.5 pl-5`,id:`temporary-tasks-content`,children:[oe.tasks.map(n=>{let r=Gr(k,n.projectId,n.id);return(0,W.jsx)(js,{active:x===`temporary`&&n.id===A,attention:r.attention,isActionPending:D,isAwaitingApproval:r.isAwaitingApproval,isRunning:r.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:n},`${n.projectId}:${n.id}`)}),ie?.isPending===!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,F===null?null:(0,W.jsx)(K,{variant:`ghost`,"aria-expanded":ae,className:`flex h-7 w-full items-center rounded-control px-2 text-left text-meta font-medium text-subtle-foreground transition-colors hover:bg-control-hover hover:text-foreground`,contentAlign:`start`,disabled:F.disabled,onClick:()=>{F.action===`expand`||F.action===`expand-and-load`?T(e=>new Set(e).add(O)):F.action===`collapse`&&T(e=>{let t=new Set(e);return t.delete(O),t}),(F.action===`expand-and-load`||F.action===`load`)&&a(O).catch(()=>void 0)},type:`button`,children:F.label}),re.length===0&&d.length===0&&ie?.isPending!==!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noTemporaryTasks`)}):null,re.length===0&&d.length>0&&!j.isPending&&j.error===null?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noMatchingTasks`)}):null]}):null]}),v.map(n=>{let s=ee.get(n.id)??Is,c=r.has(n.id),u=i.has(n.id),f=ea(s,u),h=C.get(n.id),v=xs({error:h?.error??null,hasHiddenLoadedTasks:s.length>5,hasNextPage:d.length===0?h?.hasNextPage??!1:!1,isExpanded:u,isFetchingNextPage:h?.isFetchingNextPage??!1});return(0,W.jsxs)(`div`,{className:`min-w-0 transition-[opacity,transform] ${w===n.id?`relative z-10 opacity-80`:``}`,"data-project-reordering":w===n.id?`true`:`false`,children:[(0,W.jsxs)(`div`,{className:`group/project flex min-w-0 items-center gap-0.5`,children:[(0,W.jsxs)(K,{variant:`ghost`,"aria-expanded":c,"aria-label":M(`sidebar.toggleProject`,{project:n.name}),className:`flex h-8 min-w-0 flex-1 touch-pan-y select-none items-center gap-2 rounded-control px-2 text-body-small font-medium transition-colors hover:bg-control-hover hover:text-foreground ${w===n.id?`cursor-grabbing bg-control-active text-foreground shadow-sm`:`cursor-grab text-muted-foreground`}`,contentAlign:`start`,onClick:()=>{te(n.id)},type:`button`,...o(n.id),children:[(0,W.jsx)(le,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:n.name})]}),(0,W.jsx)(Ts,{isPending:l,onOpenArchived:m,onRemove:e=>{g(e)},onRename:e=>{_(e)},project:n}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":M(`sidebar.createInProject`,{project:n.name}),className:`opacity-0 transition-[color,background-color,opacity] focus-visible:opacity-100 group-hover/project:opacity-100`,onClick:()=>{p(n.id)},size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ve,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:M(`sidebar.createInProject`,{project:n.name})})]})]}),c?(0,W.jsxs)(`div`,{className:`mt-0.5 min-w-0 space-y-0.5 pl-5`,children:[f.tasks.map(r=>{let i=Gr(k,r.projectId,r.id);return(0,W.jsx)(js,{active:n.id===x&&r.id===A,attention:i.attention,isActionPending:D,isAwaitingApproval:i.isAwaitingApproval,isRunning:i.isRunning,onArchive:t=>void e(t),onDelete:e=>void t(e),onPin:e=>void y(e),onRename:E,task:r},`${r.projectId}:${r.id}`)}),h?.isPending===!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.taskLoading`)}):null,v===null?null:(0,W.jsx)(K,{variant:`ghost`,"aria-expanded":u,className:`flex h-7 w-full items-center rounded-control px-2 text-left text-meta font-medium text-subtle-foreground transition-colors hover:bg-control-hover hover:text-foreground`,contentAlign:`start`,disabled:v.disabled,onClick:()=>{v.action===`expand`||v.action===`expand-and-load`?T(e=>new Set(e).add(n.id)):v.action===`collapse`&&T(e=>{let t=new Set(e);return t.delete(n.id),t}),(v.action===`expand-and-load`||v.action===`load`)&&a(n.id).catch(()=>void 0)},type:`button`,children:v.label}),s.length===0&&d.length===0&&h?.isPending!==!0?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noTasks`)}):null,s.length===0&&d.length>0&&!j.isPending&&j.error===null?(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-meta text-subtle-foreground`,children:M(`sidebar.noMatchingTasks`)}):null]}):null]},n.id)})]})]})]})})}function Rs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ne,{"aria-hidden":`true`,className:t}),r(`scheduledTasks.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,params:{projectId:n},to:`/p/$projectId/scheduled`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,to:`/temporary/scheduled`,children:i})}function zs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(oe,{"aria-hidden":`true`,className:t}),r(`skillsMarket.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,activeOptions:{includeSearch:!1},params:{projectId:n,section:`skills`},to:`/p/$projectId/extensions/$section`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,params:{section:`skills`},to:`/temporary/extensions/$section`,children:i})}function Bs({className:e,iconClassName:t,projectId:n}){let{t:r}=R(`workbench`),i=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(P,{"aria-hidden":`true`,className:t}),r(`taskBoard.title`)]}),a={className:`${e} bg-control-active`};return n!==void 0&&n!==`temporary`?(0,W.jsx)(C,{activeProps:a,className:e,params:{projectId:n},to:`/p/$projectId/board`,children:i}):(0,W.jsx)(C,{activeProps:a,className:e,to:`/temporary/board`,children:i})}function Vs(e){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Rs,{...e}),(0,W.jsx)(Bs,{...e}),(0,W.jsx)(zs,{...e})]})}function Hs({onClose:e,query:t,setQuery:n}){let{t:r}=R(`workbench`),[i,a]=(0,z.useState)(!1),o=(0,z.useRef)(null),s=(0,z.useRef)(null);(0,z.useEffect)(()=>{i&&o.current?.focus()},[i]);let c=()=>{n(``),a(!1),requestAnimationFrame(()=>{s.current?.focus()})};return(0,W.jsxs)(`div`,{className:`flex h-workbench-header items-center gap-1.5 px-3`,children:[i?(0,W.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,W.jsx)(Me,{"aria-hidden":`true`,className:`pointer-events-none absolute left-2.5 top-2 size-3.5 text-muted-foreground`}),(0,W.jsx)(J,{"aria-label":r(`sidebar.search`),className:`h-8 w-full rounded-control bg-control pl-8 pr-2 text-body-small text-foreground shadow-sm outline-none placeholder:text-muted-foreground focus:shadow-focus`,onChange:e=>{n(e.currentTarget.value)},onKeyDown:e=>{e.key===`Escape`&&c()},placeholder:r(`sidebar.search`),ref:o,value:t})]}):(0,W.jsx)(Us,{}),i?(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.closeSearch`),onClick:c,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Re,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.closeSearch`)})]}):(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.search`),onClick:()=>{a(!0)},ref:s,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Me,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.search`)})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":r(`sidebar.close`),className:`min-workbench:hidden`,onClick:e,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Ue,{className:`size-3.5`,"aria-hidden":`true`})})}),(0,W.jsx)(Z,{children:r(`sidebar.close`)})]})]})}function Us(){return(0,W.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center`,children:(0,W.jsx)(`img`,{alt:`Codexly`,className:`h-7 w-auto max-w-full`,height:`28`,src:`/brand/codexly-logo.svg`,width:`116`})})}var Ws=`flex h-8 w-full items-center gap-2.5 rounded-control px-2.5 text-body-small font-medium text-foreground transition-colors hover:bg-control-hover`,Gs=`size-4 shrink-0 text-muted-foreground`;function Ks({appInfo:e,connectionState:t,onClose:n,onOpenSettings:r,projectId:i,taskId:a}){let{t:o}=R(`workbench`),{client:c,error:l,isPending:u,projects:d,projectTaskStates:f,tasks:m}=Sr(),{addProject:h,fetchNextProjectTaskPage:g,forgetTask:_,reorderProjects:y,removeProject:b,renameProject:x,setExpandedProjectTaskIds:S}=Cr(),{isProjectActionPending:w,isProjectOrderPending:T,isProjectAddPending:E,taskActivity:D}=wr(),O=s(),k=p(),[A]=(0,z.useState)(ro),[j]=(0,z.useState)(()=>io(A)),ee=(0,z.useRef)(j),te=(0,z.useRef)(d.length>0),[M,N]=(0,z.useState)(()=>co(d.map(e=>e.id),j)),P=(0,z.useRef)(M),[ne,re]=(0,z.useState)(``),[ie,ae]=(0,z.useState)(()=>new Set),[oe,F]=(0,z.useState)(null),[se,ce]=(0,z.useState)(null),[le,ue]=(0,z.useState)(null),[de,fe]=(0,z.useState)(null),[pe,me]=(0,z.useState)(!1),he=v(Pn(c)),ge=v(Fn(c)),_e=v(In(c)),ve=(0,z.useRef)(kr()),I=eo({actionLock:ve.current,activeProjectId:i,activeTaskId:a}),ye=ne.trim().toLocaleLowerCase(),be=Er(ye),L=Or(),xe=ye.length===0?m:be.tasks,Se=(0,z.useMemo)(()=>bs(xe),[xe]),Ce=$i(ye.length===0?L.tasks:xe),we=L.error!==null||[...f.values()].some(e=>e.error!==null),Te=he.isPending||ge.isPending||_e.isPending||I.isDeletePending,{activeProjectId:Ee,announcement:De,getProjectReorderProps:Oe,orderedProjects:ke}=$a({disabled:T,onReorder:y,projects:d});(0,z.useEffect)(()=>{if(u||i===void 0||i===`temporary`||d.some(e=>e.id===i))return;let e=d[0];O(e===void 0?{replace:!0,to:`/`}:{params:{projectId:e.id},replace:!0,to:`/p/$projectId`})},[u,O,i,d]),(0,z.useEffect)(()=>{let e=d.map(e=>e.id);if(!te.current&&e.length>0){te.current=!0;let t=co(e,ee.current);P.current=t,N(t);return}let t=new Set(e),n=P.current,r=new Set([...n].filter(e=>t.has(e)));r.size!==n.size&&(P.current=r,N(r))},[d]),(0,z.useEffect)(()=>{S(M)},[M,S]);let Ae=(0,z.useCallback)(e=>{let t=e(P.current);P.current=t,ee.current=t,ao(A,t),N(t)},[A]),je=e=>{Ae(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Me=async e=>{await h(e)!==void 0&&me(!1)},Ne=async e=>{Ae(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n}),await O({params:{projectId:e},to:`/p/$projectId`})},Fe=e=>{xn(k,e)},Ie=e=>ve.current.run(async()=>{try{let t=await he.mutateAsync({pinned:!e.pinned,projectId:e.projectId,taskId:e.id});Fe(t.task)}catch{}}),Le=(e,t)=>ve.current.run(async()=>{try{let n=await ge.mutateAsync({projectId:e.projectId,taskId:e.id,title:t});Fe(n.task),F(null)}catch{}}),Re=e=>ve.current.run(async()=>{try{await _e.mutateAsync({projectId:e.projectId,taskId:e.id}),await Mn(k,e.projectId,e.id),k.removeQueries({exact:!0,queryKey:[`projects`,e.projectId,`tasks`,e.id]}),_(e.projectId,e.id),e.projectId===i&&e.id===a&&await(e.projectId===`temporary`?O({to:`/temporary`}):O({params:{projectId:e.projectId},to:`/p/$projectId`})),Ka(e.projectId,e.id),c.unsubscribeTask(e.projectId,e.id).catch(()=>void 0)}catch{}}),ze=e=>{fe(null),ce(null),ue(null),requestAnimationFrame(()=>{document.getElementById(`project-actions-${e}`)?.focus()})},Be=async(e,t)=>{await x(e.id,t)&&ze(e.id)},Ve=async e=>{await b(e.id)!==void 0&&ue(null)};return(0,W.jsxs)(`aside`,{"aria-label":o(`sidebar.landmark`),className:`workbench-sidebar z-30 grid min-h-0 grid-rows-[auto_auto_minmax(0,1fr)_auto] bg-sidebar shadow-divider`,children:[(0,W.jsx)(Hs,{onClose:n,query:ne,setQuery:re}),(0,W.jsxs)(`nav`,{className:`space-y-0.5 px-2`,"aria-label":o(`sidebar.agentNavigation`),children:[(0,W.jsxs)(C,{className:Ws,to:`/temporary`,children:[(0,W.jsx)(Pe,{className:Gs,"aria-hidden":`true`}),o(`sidebar.newTask`)]}),(0,W.jsx)(Vs,{className:Ws,iconClassName:Gs,...i===void 0?{}:{projectId:i}})]}),(0,W.jsx)(Ls,{archiveTask:Re,deleteTask:I.requestTaskDeletion,error:l,expandedProjects:M,expandedTaskProjects:ie,fetchNextProjectTaskPage:g,getProjectReorderProps:Oe,hasTaskError:we,isPending:u,isProjectActionPending:w,isProjectAddPending:E,normalizedQuery:ye,onOpenTemporaryDraft:()=>{O({to:`/temporary`})},onOpenProjectDraft:Ne,onOpenArchived:fe,onOpenProjectPicker:()=>{me(!0)},onRemoveProject:e=>{ue(e)},onRenameProject:e=>{ce(e)},orderedProjects:ke,pinTask:Ie,pinnedTasks:Ce,...i===void 0?{}:{projectId:i},projectOrderAnnouncement:De,projectTaskStates:f,reorderingProjectId:Ee,setExpandedTaskProjects:ae,setRenamingTask:F,taskActionPending:Te,taskActivity:D,...a===void 0?{}:{taskId:a},taskSearch:be,tasksByProjectId:Se,toggleProject:je}),de===null?null:(0,W.jsx)(os,{client:c,onClose:()=>{ze(de.id)},project:de}),I.deletingTask===null?null:(0,W.jsx)(is,{isPending:I.isDeletePending,onClose:I.closeTaskDeletion,onDelete:()=>{I.confirmTaskDeletion()},task:I.deletingTask}),(0,W.jsx)(Qo,{client:c,isProjectActionPending:w,isProjectAddPending:E,isProjectPickerOpen:pe,onAddProject:Me,onCloseProjectDialog:ze,onCloseProjectPicker:()=>{E||me(!1)},onCloseTaskRename:()=>{F(null)},onRemoveProject:e=>{Ve(e)},onRenameProject:(e,t)=>{Be(e,t)},onRenameTask:(e,t)=>{Le(e,t)},removingProject:le,renamingProject:se,renamingTask:oe,taskRenamePending:ge.isPending}),(0,W.jsx)(`div`,{className:`p-2`,children:(0,W.jsx)(Os,{...e===void 0?{}:{appInfo:e},connectionState:t,onOpen:r})})]})}function qs(){let{t:e}=R(`common`);return(0,W.jsx)(`main`,{className:`grid h-full place-items-center bg-window px-6`,"aria-labelledby":`not-found-title`,children:(0,W.jsxs)(`section`,{className:`w-full max-w-md rounded-surface bg-raised p-6 shadow-panel`,children:[(0,W.jsx)(`p`,{className:`mb-2 font-mono text-xs text-warning`,children:`404`}),(0,W.jsx)(`h1`,{id:`not-found-title`,className:`text-xl font-semibold`,children:e(`errors.notFoundTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-muted-foreground`,children:e(`errors.notFoundDescription`)}),(0,W.jsxs)(C,{className:`mt-5 inline-flex items-center gap-2 text-sm font-medium text-brand-strong`,to:`/`,children:[(0,W.jsx)(ve,{className:`size-4`,"aria-hidden":`true`}),e(`actions.backToWorkbench`)]})]})})}var Js=a({component:Xs,errorComponent:Ys,notFoundComponent:qs});function Ys({error:e,reset:t}){let{t:n}=R(`common`);return(0,W.jsx)(`main`,{className:`grid h-full place-items-center bg-window px-6`,"aria-labelledby":`route-error-title`,children:(0,W.jsxs)(`section`,{className:`w-full max-w-lg rounded-surface bg-raised p-6 shadow-panel`,children:[(0,W.jsx)(`p`,{className:`mb-2 text-xs font-semibold text-danger uppercase`,children:n(`errors.routeErrorLabel`)}),(0,W.jsx)(`h1`,{id:`route-error-title`,className:`text-xl font-semibold text-foreground`,children:n(`errors.routeErrorTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.message}),(0,W.jsx)(K,{variant:`ghost`,className:`mt-5 rounded-control bg-control px-3 py-2 text-body font-medium text-foreground shadow-sm transition-colors hover:bg-control-hover`,onClick:t,type:`button`,children:n(`actions.retry`)})]})})}function Xs(){return(0,W.jsx)(`div`,{className:`h-full min-h-0 bg-window text-foreground`,"data-testid":`app-root`,children:(0,W.jsx)(u,{})})}var Zs=(0,z.lazy)(()=>Wi().then(e=>({default:e.GlobalSettingsDialog}))),Qs=S({component:$s,getParentRoute:()=>Js,path:`/`});function $s(){let{t:e}=R(`common`),t=Yi(),{client:n,error:r,isPending:i,projects:a}=Sr(),{retry:o}=Cr(),c=s(),l=p(),u=g(Bt(n)),d=v({...Ht(n),onSuccess(e){l.setQueryData([`app-info`],e)}}),f=g(Un(n)),m=g(Hn(n)),h=v({...Wn(n),onSuccess(e){l.setQueryData([`settings`],e)}}),[_,y]=(0,z.useState)(null),[b]=(0,z.useState)(()=>io(ro())),x=lo(a.map(e=>e.id),b);return(0,z.useEffect)(()=>{if(x!==void 0){c({params:{projectId:x},replace:!0,to:`/p/$projectId`});return}!i&&a.length===0&&c({replace:!0,to:`/temporary`})},[x,i,c,a.length]),r===null?i||x!==void 0||a.length===0?(0,W.jsx)(`main`,{className:`grid h-full place-items-center text-sm text-muted-foreground`,children:e(`app.loadingProjects`)}):(0,W.jsxs)(`div`,{className:`workbench-shell h-full min-h-0 overflow-hidden bg-window`,"data-inspector-open":`false`,"data-sidebar-open":`true`,children:[(0,W.jsx)(Ks,{...u.data===void 0?{}:{appInfo:u.data},connectionState:`connected`,onClose:()=>void 0,onOpenSettings:e=>{y(e)}}),(0,W.jsx)(`main`,{className:`grid min-h-0 min-w-0 place-items-center bg-content text-sm text-muted-foreground`,children:e(`app.noProjects`)}),_===null?null:(0,W.jsx)(z.Suspense,{fallback:null,children:(0,W.jsx)(Zs,{...t.status===void 0?{}:{accessMode:t.status.mode},...u.data===void 0?{}:{appInfo:u.data},appInfoError:u.error,initialSection:_,apps:[],error:f.error??m.error,isPending:f.isPending||m.isPending,isAppInfoPending:u.isPending,isAppUpdatePending:d.isPending,models:m.data?.data??[],onClose:()=>{let e=_===`about`?`#global-settings-about-trigger`:`#global-settings-trigger`;y(null),requestAnimationFrame(()=>{document.querySelector(e)?.focus()})},onLogoutAccess:t.logout,onRetry:()=>Promise.all([f.refetch(),m.refetch()]),onRetryAppInfo:()=>u.refetch(),onSave:e=>h.mutateAsync(e).then(()=>void 0),onUpdate:e=>d.mutateAsync(e).then(()=>void 0),...f.data===void 0?{}:{settings:f.data.settings}})})]}):(0,W.jsx)(`main`,{className:`flex h-full min-h-0`,children:(0,W.jsx)(Qi,{onRetry:()=>void o()})})}var ec={blurPercentage:0,mode:`none`,overlayOpacity:60,selectedCustomImageId:null},tc=`codexly:workbench-background-changed`,nc=`codexly.workbench-background-preference`,rc=3,ic=`codexly-workbench`,ac=2,Q=`background-images`,oc=20*1024*1024,sc=new Set([`image/gif`,`image/jpeg`,`image/png`,`image/webp`]);function cc(e){return e===`none`||e===`custom`||e===`bing`}function lc(e){try{let t=JSON.parse(e.getItem(nc)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===rc&&`blurPercentage`in t&&typeof t.blurPercentage==`number`&&Number.isInteger(t.blurPercentage)&&t.blurPercentage>=0&&t.blurPercentage<=95&&`mode`in t&&cc(t.mode)&&`overlayOpacity`in t&&typeof t.overlayOpacity==`number`&&Number.isInteger(t.overlayOpacity)&&t.overlayOpacity>=0&&t.overlayOpacity<=95&&`selectedCustomImageId`in t&&(t.selectedCustomImageId===null||typeof t.selectedCustomImageId==`string`))return{blurPercentage:t.blurPercentage,mode:t.mode,overlayOpacity:t.overlayOpacity,selectedCustomImageId:t.selectedCustomImageId}}catch{}return ec}function uc(e,t){try{t.setItem(nc,JSON.stringify({...e,version:rc}))}catch{}}function dc(e){return e.size>0&&e.size<=oc&&sc.has(e.type)}function fc(e,t=crypto.randomUUID()){return{blob:e,createdAt:Date.now(),id:t,name:e.name}}function pc(e,t,n){let r=e.filter(e=>e.id!==t);return{images:r,selectedCustomImageId:n===t?r[0]?.id??null:n}}function mc(){return new Promise((e,t)=>{let n=window.indexedDB.open(ic,ac);n.onerror=()=>{t(n.error??Error(`Unable to open background image storage`))},n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Q)&&e.deleteObjectStore(Q),e.createObjectStore(Q,{keyPath:`id`})},n.onsuccess=()=>{e(n.result)}})}function hc(e){return typeof e==`object`&&!!e&&`blob`in e&&e.blob instanceof Blob&&`createdAt`in e&&typeof e.createdAt==`number`&&`id`in e&&typeof e.id==`string`&&`name`in e&&typeof e.name==`string`}async function gc(){let e=await mc();return new Promise((t,n)=>{let r=e.transaction(Q,`readonly`),i=r.objectStore(Q).getAll();i.onerror=()=>{e.close(),n(i.error??Error(`Unable to read custom background images`))},i.onsuccess=()=>{t(i.result.filter(hc).sort((e,t)=>e.createdAt-t.createdAt))},r.oncomplete=()=>{e.close()}})}async function _c(e){let t=await mc();return new Promise((n,r)=>{let i=t.transaction(Q,`readonly`),a=i.objectStore(Q).get(e);a.onerror=()=>{t.close(),r(a.error??Error(`Unable to read custom background image`))},a.onsuccess=()=>{n(hc(a.result)?a.result.blob:null)},i.oncomplete=()=>{t.close()}})}async function vc(e){if(e.deletedImageIds.length===0&&e.imagesToSave.length===0)return;let t=await mc();return new Promise((n,r)=>{let i=t.transaction(Q,`readwrite`),a=i.objectStore(Q);e.deletedImageIds.forEach(e=>a.delete(e)),e.imagesToSave.forEach(e=>a.put(e)),i.onerror=()=>{r(i.error??Error(`Unable to update custom background images`))},i.onabort=()=>{t.close()},i.oncomplete=()=>{t.close(),n()}})}async function yc(e,t){await vc(t),uc(e,window.localStorage),window.dispatchEvent(new CustomEvent(tc,{detail:e}))}function bc(e,t,n){return{height:Math.max(1,Math.round(t*n)),width:Math.max(1,Math.round(e*n))}}function xc(e){return[e.source,e.width,e.height,e.devicePixelRatio,e.blurRadius].join(`\0`)}function Sc(e,t,n,r,i){let a=n+i*2,o=r+i*2,s=Math.max(a/e,o/t),c=e*s,l=t*s;return{height:l,width:c,x:(n-c)/2,y:(r-l)/2}}function Cc(e){let t=new Image;return t.decoding=`async`,t.src=e,t.decode().then(()=>t)}async function wc(e,t){let n=await Cc(t.source);if(n.naturalWidth===0||n.naturalHeight===0)throw Error(`Decoded workbench background has no dimensions`);let r=bc(t.width,t.height,t.devicePixelRatio);e.width=r.width,e.height=r.height;let i=e.getContext(`2d`);if(i===null)throw Error(`Canvas 2D context is unavailable`);let a=Sc(n.naturalWidth,n.naturalHeight,t.width,t.height,t.blurRadius),o=t.devicePixelRatio;i.clearRect(0,0,r.width,r.height),i.save(),t.blurRadius>0&&(i.filter=`blur(${String(t.blurRadius*o)}px)`),i.drawImage(n,a.x*o,a.y*o,a.width*o,a.height*o),i.restore()}function Tc(e){try{let t=document.createElement(`canvas`);t.width=32,t.height=32;let n=t.getContext(`2d`,{willReadFrequently:!0});return n===null?null:(n.drawImage(e,0,0,t.width,t.height),n.getImageData(0,0,t.width,t.height).data)}catch{return null}}var Ec=Math.sqrt(1.05*.05)-.05,Dc=120;function Oc(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function kc(e){let t=[];for(let n=0;n+3<e.length;n+=4){if(e[n+3]===0)continue;let r=Oc(e[n]??0),i=Oc(e[n+1]??0),a=Oc(e[n+2]??0);t.push(.2126*r+.7152*i+.0722*a)}return t.length===0?null:(t.sort((e,t)=>e-t),(t[Math.floor(t.length/2)]??0)>Ec?`light`:`dark`)}function Ac(e){return String(e).padStart(2,`0`)}function jc(e){return`/v1/workbench-background/bing?day=${`${String(e.getFullYear())}-${Ac(e.getMonth()+1)}-${Ac(e.getDate())}`}`}function Mc(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()+1);return Math.max(1e3,t.getTime()-e.getTime()+1e3)}function Nc(e){return Math.round((e/95*20+2**-52)*100)/100}function Pc({backgroundTone:e,canvasRef:t,children:n,imageLoaded:r,preference:i}){return(0,W.jsxs)(`div`,{className:`workbench-background h-full min-h-0 overflow-hidden`,"data-background-mode":i.mode,"data-background-tone":e??void 0,"data-has-image":r,"data-workbench-background":`true`,children:[i.mode===`none`?null:(0,W.jsx)(`canvas`,{"aria-hidden":`true`,className:`workbench-background__canvas`,"data-workbench-background-canvas":`true`,ref:t,style:{opacity:+!!r}}),r?(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`workbench-background__overlay`,"data-workbench-background-overlay":`true`,style:{opacity:i.overlayOpacity/100}}):null,n]})}function Fc({children:e}){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(()=>typeof window>`u`?ec:lc(window.localStorage)),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(()=>jc(new Date)),[l,u]=(0,z.useState)(!1),d=(0,z.useRef)(null),f=(0,z.useRef)(null);(0,z.useEffect)(()=>{let e=e=>{if(e instanceof CustomEvent){let t=e.detail;i(t)}};return window.addEventListener(tc,e),()=>{window.removeEventListener(tc,e)}},[]),(0,z.useEffect)(()=>{if(r.mode!==`custom`){o(null);return}let e=!1,t=null,n=r.selectedCustomImageId;if(n===null){o(null);return}return _c(n).then(n=>{e||n===null||(t=URL.createObjectURL(n),o(t))}).catch(()=>{e||o(null)}),()=>{e=!0,t!==null&&URL.revokeObjectURL(t)}},[r.mode,r.selectedCustomImageId]),(0,z.useEffect)(()=>{if(r.mode!==`bing`)return;let e,t=()=>{e=setTimeout(()=>{c(jc(new Date)),t()},Mc(new Date))};return t(),()=>{clearTimeout(e)}},[r.mode]);let p=r.mode===`custom`?a:r.mode===`bing`?s:null;return(0,z.useEffect)(()=>{u(!1),n(null),f.current=null},[p]),(0,z.useEffect)(()=>{if(p===null)return;let e=!1,t,i=0,a,o=()=>{let t=d.current;if(t===null||t.clientWidth===0||t.clientHeight===0)return;let a=t.getBoundingClientRect(),o={blurRadius:Nc(r.blurPercentage),devicePixelRatio:Math.max(1,window.devicePixelRatio||1),height:a.height,source:p,width:a.width},s=xc(o);if(f.current===s)return;let c=++i;wc(t,o).then(()=>{if(e||c!==i)return;f.current=s;let r=Tc(t);n(r===null?null:kc(r)),u(!0)}).catch(()=>{e||c!==i||(f.current=null,n(null),u(!1))})},s=()=>{clearTimeout(t),t=setTimeout(o,Dc)},c=()=>{a?.removeEventListener(`change`,l),a=window.matchMedia(`(resolution: ${String(window.devicePixelRatio)}dppx)`),a.addEventListener(`change`,l)};function l(){c(),s()}return o(),c(),window.addEventListener(`resize`,s),()=>{e=!0,i+=1,clearTimeout(t),window.removeEventListener(`resize`,s),a?.removeEventListener(`change`,l)}},[p,r.blurPercentage]),(0,W.jsx)(Pc,{backgroundTone:t,canvasRef:d,imageLoaded:l,preference:r,children:e})}var $=S({component:Ic,getParentRoute:()=>Js,id:`workbench`});function Ic(){let e=_({select:e=>{let t=e.matches.at(-1)?.params;return{board:e.location.pathname.endsWith(`/board`),scheduled:e.location.pathname.endsWith(`/scheduled`),extensionSection:t!==void 0&&`section`in t?t.section:void 0,projectId:t!==void 0&&`projectId`in t?t.projectId:void 0,taskId:t!==void 0&&`taskId`in t?t.taskId:void 0,todoId:t!==void 0&&`todoId`in t?t.todoId:void 0}}}),t=e.projectId??`temporary`,n=e.projectId===void 0;return(0,W.jsx)(Fc,{children:(0,W.jsx)(zc,{board:e.board,...e.extensionSection===void 0?{}:{extensionSection:e.extensionSection},scheduled:e.scheduled,...e.todoId===void 0?{}:{todoId:e.todoId},projectId:t,temporary:n,...e.taskId===void 0?{}:{taskId:e.taskId}})})}function Lc(){return t(()=>import(`./workbench-shell-0X1Ehypo.js`),__vite__mapDeps([19,1,15,2,3,4,5,6,7,8,20,21,11,13,17,22,23,24,9,25,26,14,27,28,29,30,31,12,16,32,33]))}var Rc=(0,z.lazy)(()=>Lc().then(e=>({default:e.WorkbenchShell})));function zc(e){let{t}=R(`common`);return(0,W.jsx)(z.Suspense,{fallback:(0,W.jsx)(`main`,{className:`grid h-full place-items-center text-sm text-muted-foreground`,role:`status`,children:t(`app.loadingProjects`)}),children:(0,W.jsx)(Rc,{...e})})}var Bc=S({getParentRoute:()=>$,path:`p/$projectId`}),Vc=S({getParentRoute:()=>$,path:`p/$projectId/todo/$todoId`}),Hc=1024*1024,Uc=new Set([`gif`,`jpeg`,`jpg`,`png`,`webp`]),Wc=new Set(`7z.avi.dmg.doc.docm.docx.exe.gz.key.mov.mp3.mp4.numbers.odp.ods.odt.pages.pdf.pkg.ppt.pptm.pptx.rar.tar.tgz.wav.xls.xlsb.xlsm.xlsx.zip`.split(`.`));function Gc(e){let t=e.split(/[\\/]/u).at(-1)?.toLowerCase()??``,n=t.includes(`.`)?t.split(`.`).at(-1)??``:``;return Uc.has(n)?`image`:Wc.has(n)?`system`:`source`}function Kc(e){return e.kind===`image`?`image`:e.kind===`text`?`source`:e.size>1048576?`system`:Gc(e.name)===`source`?`source`:`system`}var qc=`codexly-project-file-popup`,Jc=`popup,width=1100,height=800,resizable=yes,scrollbars=yes`;function Yc(e){if(e==null||e===``)return null;let t=typeof e==`number`?e:Number(e);if(!Number.isSafeInteger(t)||t<1)throw TypeError(`Project file popup lineNumber must be a positive integer`);return t}function Xc(e){let t=e.path,n=e.previewKind,r=e.rootPath;if(typeof t!=`string`||t.length===0)throw TypeError(`Project file popup path is required`);if(n!==`image`&&n!==`source`)throw TypeError(`Project file popup previewKind is invalid`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`Project file popup rootPath is invalid`);return{lineNumber:Yc(e.lineNumber),path:t,previewKind:n,...r===void 0?{}:{rootPath:r}}}function Zc(e,t,n,r){let i=Gc(n.path);if(i===`system`)throw TypeError(`System-default files do not have an internal popup URL`);let a=new URL(`/p/${encodeURIComponent(t)}/file`,e);return a.searchParams.set(`path`,n.path),a.searchParams.set(`previewKind`,i),n.lineNumber!==null&&a.searchParams.set(`lineNumber`,String(n.lineNumber)),r!==void 0&&a.searchParams.set(`rootPath`,r),a.href}function Qc({onOpenSystemDefault:e,projectId:t,reference:n,rootPath:r}){if(Gc(n.path)===`system`){e(n.path);return}let i=Zc(window.location.href,t,n,r);window.open(i,qc,Jc)}var $c=S({component:nl,getParentRoute:()=>Js,path:`p/$projectId/file`,validateSearch:Xc});function el(){return t(()=>import(`./project-file-popup-page-9jdg_OXD.js`),__vite__mapDeps([34,1,2,25,15,3,4,5,6,7,8,26,14,27]))}var tl=(0,z.lazy)(()=>el().then(e=>({default:e.ProjectFilePopupPage})));function nl(){let{projectId:e}=$c.useParams(),t=$c.useSearch();return(0,W.jsx)(z.Suspense,{fallback:null,children:(0,W.jsx)(tl,{projectId:e,search:t})})}var rl=S({getParentRoute:()=>$,path:`p/$projectId/extensions/$section`}),il=S({getParentRoute:()=>$,path:`temporary/extensions/$section`}),al=S({getParentRoute:()=>$,path:`p/$projectId/t/$taskId`}),ol=S({getParentRoute:()=>$,path:`p/$projectId/scheduled`}),sl=S({getParentRoute:()=>$,path:`temporary/scheduled`}),cl=S({getParentRoute:()=>$,path:`p/$projectId/board`}),ll=S({getParentRoute:()=>$,path:`temporary/board`}),ul=S({getParentRoute:()=>$,path:`temporary`}),dl=S({getParentRoute:()=>$,path:`temporary/t/$taskId`}),fl=d({defaultPreload:`intent`,routeTree:Js.addChildren([Qs,$c,$.addChildren([Bc,ol,rl,Vc,cl,al,ul,sl,il,ll,dl])]),scrollRestoration:!0});function pl(){return(0,W.jsx)(m,{router:fl})}function ml({error:e,loading:t,onPair:n,onRetry:r,pairing:i}){let{t:a}=R(`common`),[o,s]=(0,z.useState)(``);return(0,W.jsx)(`main`,{className:`access-gate grid h-full min-h-0 place-items-center overflow-y-auto bg-window px-5 py-10 text-foreground`,children:(0,W.jsxs)(`section`,{"aria-labelledby":`access-gate-title`,className:`w-full max-w-sm`,children:[(0,W.jsx)(`h1`,{className:`mb-8`,id:`access-gate-title`,children:(0,W.jsx)(`img`,{alt:`Codexly`,className:`h-10 w-auto`,height:`40`,src:`/brand/codexly-logo.svg`,width:`165`})}),t?(0,W.jsx)(`p`,{className:`text-body-small text-muted-foreground`,role:`status`,children:a(`access.checking`)}):e===`load`?(0,W.jsxs)(`div`,{className:`space-y-4`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,children:a(`access.loadError`)}),(0,W.jsxs)(K,{onClick:r,size:`lg`,type:`button`,variant:`secondary`,children:[(0,W.jsx)(De,{"aria-hidden":`true`,className:`size-4`}),a(`actions.retry`)]})]}):(0,W.jsxs)(`form`,{className:`space-y-5`,onSubmit:e=>{e.preventDefault();let t=o.trim();t.length>0&&!i&&n(t)},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-heading font-semibold`,children:a(`access.pairingTitle`)}),(0,W.jsx)(`p`,{className:`mt-1 text-body-small text-muted-foreground`,children:a(`access.pairingDescription`)})]}),(0,W.jsx)(`label`,{className:`block text-body-small font-medium`,htmlFor:`access-pairing-code`,children:a(`access.codeLabel`)}),(0,W.jsxs)(`div`,{className:`flex h-10 items-center rounded-control border border-separator-strong bg-panel focus-within:border-brand focus-within:shadow-focus`,children:[(0,W.jsx)(M,{"aria-hidden":`true`,className:`ml-3 size-4 shrink-0 text-muted-foreground`}),(0,W.jsx)(J,{"aria-label":a(`access.codeLabel`),autoComplete:`current-password`,className:`access-code-input min-w-0 flex-1 bg-transparent px-3 font-mono text-body`,id:`access-pairing-code`,onChange:e=>{s(e.currentTarget.value)},spellCheck:!1,type:`password`,value:o,variant:`embedded`}),(0,W.jsx)(K,{"aria-label":a(`access.pair`),className:`mr-1`,disabled:i||o.trim().length===0,title:a(`access.pair`),type:`submit`,size:`icon-compact`,children:(0,W.jsx)(ae,{"aria-hidden":`true`,className:`size-4`})})]}),i?(0,W.jsx)(`p`,{className:`text-meta text-muted-foreground`,role:`status`,children:a(`access.pairing`)}):null]})]})})}var hl=[`provider-connection`];function gl(e){return e?.state===`pending`&&1e3}function _l(e=B){return o({queryFn:({signal:t})=>e.getProviderConnection({signal:t}),queryKey:hl,refetchInterval:e=>gl(e.state.data)})}async function vl(e){await Promise.all([e.invalidateQueries({exact:!0,queryKey:hl}),e.invalidateQueries({exact:!0,queryKey:[`models`]}),e.invalidateQueries({exact:!0,queryKey:[`settings`]}),e.invalidateQueries({predicate:e=>e.queryKey[0]===`projects`&&e.queryKey[2]===`defaults`})])}function yl(e,t=B){return h({mutationFn:()=>t.startOfficialProviderLogin(),mutationKey:[`provider-connection`,`official-login`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}function bl(e,t=B){return h({mutationFn:e=>t.cancelProviderLogin(e),mutationKey:[`provider-connection`,`official-login`,`cancel`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}function xl(e,t=B){return h({mutationFn:()=>t.logoutProvider(),mutationKey:[`provider-connection`,`logout`],onSuccess:()=>vl(e),scope:{id:`provider-connection`}})}async function Sl(e,t,n=B){let r=await n.configureCustomProvider(e);return await vl(t),r}function Cl({disabled:e,models:t,onAdd:n,onChange:r,onRemove:i}){let{t:a}=R(`settings`);return(0,W.jsxs)(`div`,{className:`grid gap-2`,children:[t.length===0?null:(0,W.jsxs)(`div`,{className:`hidden grid-cols-[minmax(0,1fr)_minmax(0,1fr)_2rem] gap-2 px-1 text-meta font-medium text-muted-foreground sm:grid`,children:[(0,W.jsx)(`span`,{children:a(`provider.modelId`)}),(0,W.jsx)(`span`,{children:a(`provider.modelName`)}),(0,W.jsx)(`span`,{})]}),t.map(t=>(0,W.jsxs)(`div`,{className:`grid gap-2 border-b border-separator pb-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_2rem] sm:items-end`,children:[(0,W.jsxs)(`label`,{className:`grid min-w-0 gap-1`,children:[(0,W.jsx)(`span`,{className:`text-meta font-medium text-muted-foreground sm:sr-only`,children:a(`provider.modelId`)}),(0,W.jsx)(J,{autoCapitalize:`none`,autoComplete:`off`,disabled:e,maxLength:256,onChange:e=>{r(t.key,`id`,e.currentTarget.value)},spellCheck:!1,value:t.id,variant:`outline`})]}),(0,W.jsxs)(`label`,{className:`grid min-w-0 gap-1`,children:[(0,W.jsx)(`span`,{className:`text-meta font-medium text-muted-foreground sm:sr-only`,children:a(`provider.modelName`)}),(0,W.jsx)(J,{autoComplete:`off`,disabled:e,maxLength:256,onChange:e=>{r(t.key,`name`,e.currentTarget.value)},value:t.name,variant:`outline`})]}),(0,W.jsxs)(Y,{children:[(0,W.jsx)(X,{asChild:!0,children:(0,W.jsx)(K,{"aria-label":a(`provider.removeModel`),className:`justify-self-end sm:justify-self-auto`,disabled:e,onClick:()=>{i(t.key)},size:`icon-compact`,type:`button`,variant:`ghost`,children:(0,W.jsx)(Be,{"aria-hidden":`true`,className:`size-4`})})}),(0,W.jsx)(Z,{children:a(`provider.removeModel`)})]})]},t.key)),(0,W.jsxs)(K,{className:`justify-self-start`,disabled:e||t.length>=1e3,onClick:n,type:`button`,variant:`outline`,children:[(0,W.jsx)(Ve,{"aria-hidden":`true`,className:`size-4`}),a(`provider.addModel`)]})]})}function wl({apiKey:e,baseUrl:t,error:n,isBusy:r,mode:i,models:a,onAddModel:o,onApiKeyChange:s,onBaseUrlChange:c,onCancelLogin:l,onConfigureCustom:u,onLogout:d,onModelChange:f,onModeChange:p,onRetry:m,onRemoveModel:h,onStartOfficialLogin:g,status:_}){let{t:v}=R(`settings`),y=_?.mode===i&&_.state===`connected`,b=_?.mode===`official`&&_.state===`pending`;return(0,W.jsxs)(`div`,{className:`w-full max-w-[38rem]`,children:[(0,W.jsxs)(`div`,{"aria-label":v(`provider.mode`),className:`grid grid-cols-2 rounded-control bg-control p-1`,role:`group`,children:[(0,W.jsxs)(K,{"aria-pressed":i===`official`,className:G(`inline-flex h-10 items-center justify-center gap-2 rounded-[5px] text-body-small font-medium sm:h-9`,i===`official`?`bg-raised text-foreground shadow-control`:`text-muted-foreground hover:text-foreground`),onClick:()=>{p(`official`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(pe,{"aria-hidden":`true`,"data-icon":`inline-start`}),v(`provider.official`)]}),(0,W.jsxs)(K,{"aria-pressed":i===`custom`,className:G(`inline-flex h-10 items-center justify-center gap-2 rounded-[5px] text-body-small font-medium sm:h-9`,i===`custom`?`bg-raised text-foreground shadow-control`:`text-muted-foreground hover:text-foreground`),onClick:()=>{p(`custom`)},type:`button`,variant:`ghost`,children:[(0,W.jsx)(Te,{"aria-hidden":`true`,"data-icon":`inline-start`}),v(`provider.custom`)]})]}),(0,W.jsx)(`div`,{className:`mt-5`,children:i===`official`?(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-h-12 items-center gap-3 border-b border-separator pb-4`,children:[y?(0,W.jsx)(F,{"aria-hidden":`true`,className:`size-5 shrink-0 text-brand`}):b?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-5 shrink-0 animate-spin text-brand`}):(0,W.jsx)(pe,{"aria-hidden":`true`,className:`size-5 shrink-0 text-muted-foreground`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-body-small font-medium text-foreground`,children:v(y?`provider.connected`:b?`provider.waiting`:`provider.disconnected`)}),_?.account?.type===`chatgpt`&&_.account.email!==null?(0,W.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:_.account.email}):null]})]}),b?(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:l,type:`button`,variant:`outline`,children:[(0,W.jsx)(Re,{"aria-hidden":`true`,className:`size-4`}),v(`provider.cancelLogin`)]}):y?(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:d,type:`button`,variant:`outline`,children:[(0,W.jsx)(He,{"aria-hidden":`true`,className:`size-4`}),v(`provider.logout`)]}):(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r,onClick:g,type:`button`,children:[r?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}):(0,W.jsx)(pe,{"aria-hidden":`true`,className:`size-4`}),v(`provider.login`)]})]}):(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`label`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[v(`provider.baseUrl`),(0,W.jsx)(J,{autoCapitalize:`none`,autoComplete:`url`,disabled:r,inputMode:`url`,maxLength:2048,onChange:e=>{c(e.currentTarget.value)},placeholder:`https://api.example.com/v1`,spellCheck:!1,type:`url`,value:t,variant:`outline`})]}),(0,W.jsxs)(`label`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[v(`provider.apiKey`),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(M,{"aria-hidden":`true`,className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,W.jsx)(J,{autoComplete:`new-password`,className:`pl-9`,disabled:r,maxLength:16384,onChange:e=>{s(e.currentTarget.value)},spellCheck:!1,type:`password`,value:e,variant:`outline`})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-1.5 text-body-small font-medium text-foreground`,children:[(0,W.jsx)(`span`,{children:v(`provider.models`)}),(0,W.jsx)(Cl,{disabled:r,models:a,onAdd:o,onChange:f,onRemove:h})]}),y?(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small text-brand`,children:[(0,W.jsx)(F,{"aria-hidden":`true`,className:`size-4`}),(0,W.jsx)(`span`,{children:v(`provider.connected`)})]}):null,(0,W.jsxs)(K,{className:`h-11 justify-self-start sm:h-9`,disabled:r||t.trim().length===0||Tl(a),onClick:u,type:`button`,children:[r?(0,W.jsx)(N,{"aria-hidden":`true`,className:`size-4 animate-spin`}):(0,W.jsx)(Te,{"aria-hidden":`true`,className:`size-4`}),v(y?`provider.reconnect`:`provider.connect`)]})]})}),n===null?null:(0,W.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3 text-body-small`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`min-w-0 text-danger`,children:n}),(0,W.jsx)(K,{"aria-label":v(`provider.retry`),className:`shrink-0`,onClick:m,size:`icon-sm`,type:`button`,variant:`ghost`,children:(0,W.jsx)(ye,{"aria-hidden":`true`,className:`size-4`})})]})]})}function Tl(e){return e.some(e=>e.id.trim().length===0||e.name.trim().length===0)}function El({apiKey:e,baseUrl:t,models:n}){let r=n.map(({id:e,name:t})=>({id:e.trim(),name:t.trim()}));return{...e.length===0?{}:{apiKey:e},baseUrl:t.trim(),...r.length===0?{}:{models:r}}}function Dl(e){let t=new URL(e);if(t.protocol!==`https:`)throw Error(`Official login URL must use HTTPS`);window.open(t,`_blank`,`noopener,noreferrer`)}function Ol(){let e=p(),t=g(_l()),n=v(yl(e)),r=v(bl(e)),i=v(xl(e)),[a,o]=(0,z.useState)(`official`),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)([]),m=(0,z.useRef)(1),[h,_]=(0,z.useState)(!1),y=t.data;(0,z.useEffect)(()=>{y!==void 0&&(o(y.mode),y.customBaseUrl!==null&&c(y.customBaseUrl))},[y]);let b=n.isPending||r.isPending||i.isPending||h;return(0,W.jsx)(wl,{apiKey:l,baseUrl:s,error:t.error?.message??null,isBusy:b,mode:a,models:d,onAddModel:()=>{let e=`custom-model-${String(m.current)}`;m.current+=1,f(t=>[...t,{id:``,key:e,name:``}])},onApiKeyChange:u,onBaseUrlChange:c,onCancelLogin:()=>{let e=y?.pendingLogin?.loginId;e!==void 0&&r.mutateAsync(e).catch(()=>void 0)},onConfigureCustom:()=>{_(!0),Sl(El({apiKey:l,baseUrl:s,models:d}),e).then(()=>{u(``),Ni()}).catch(e=>{U(e)}).finally(()=>{u(``),_(!1)})},onLogout:()=>{i.mutateAsync().catch(()=>void 0)},onModelChange:(e,t,n)=>{f(r=>r.map(r=>r.key===e?{...r,[t]:n}:r))},onModeChange:e=>{o(e)},onRetry:()=>{t.refetch()},onRemoveModel:e=>{f(t=>t.filter(t=>t.key!==e))},onStartOfficialLogin:()=>{n.mutateAsync().then(e=>{try{Dl(e.authUrl)}catch(e){U(e)}}).catch(()=>void 0)},status:y})}function kl({children:e}){let{t}=R(`settings`),n=g(_l());return n.data?.state===`connected`?e:n.isPending?(0,W.jsx)(`main`,{className:`grid h-full min-h-0 place-items-center bg-window text-body-small text-muted-foreground`,children:t(`provider.loading`)}):(0,W.jsx)(`main`,{className:`h-full min-h-0 overflow-y-auto bg-window px-5 py-8 sm:px-8 sm:py-12`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-[42rem]`,children:[(0,W.jsxs)(`header`,{className:`mb-8 border-b border-separator pb-5`,children:[(0,W.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`Codexly`}),(0,W.jsx)(`p`,{className:`mt-1 text-body-small text-muted-foreground`,children:t(`provider.title`)})]}),n.error===null?(0,W.jsx)(Ol,{}):(0,W.jsxs)(`div`,{className:`grid justify-items-start gap-3`,role:`alert`,children:[(0,W.jsx)(`p`,{className:`text-body-small text-danger`,children:t(`provider.errors.load`)}),(0,W.jsx)(K,{onClick:()=>void n.refetch(),type:`button`,variant:`outline`,children:t(`provider.retry`)})]})]})})}var Al={attachments:[],content:[]},jl=`codexly:composer-draft:v1:`,Ml=(0,z.createContext)(void 0);function Nl(e,t){return JSON.stringify([e,t??`draft`])}function Pl(e){return e.content.length===0&&e.attachments.length===0}function Fl(e){return e.attachments.map(e=>e.previewUrl)}function Il(e){for(let t of new Set(Fl(e)))t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function Ll(e,t){let n=new Set(Fl(t));for(let t of new Set(Fl(e)))!n.has(t)&&t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function Rl(){try{return globalThis.localStorage}catch{return}}function zl(e,t){try{let n=JSON.parse(e?.getItem(`${jl}${t}`)??`null`);if(typeof n!=`object`||!n)return;let r=n;return!Array.isArray(r.content)||!Array.isArray(r.attachments)?void 0:r}catch{return}}function Bl(e,t,n){if(e===void 0)return;let r=`${jl}${t}`;if(n===void 0){e.removeItem(r);return}e.setItem(r,JSON.stringify({attachments:n.attachments.filter(e=>e.source===`host`),content:n.content}))}function Vl(e=Rl()){let t=new Map,n=n=>{let r=t.get(n);if(r!==void 0)return r;let i=zl(e,n);return i!==void 0&&t.set(n,i),i??Al};return{clear:n=>{let r=t.get(n);r!==void 0&&(Il(r),t.delete(n)),Bl(e,n,void 0)},dispose:()=>{t.forEach(Il),t.clear()},read:n,update:(r,i)=>{let a=n(r),o=i(a);Ll(a,o),Pl(o)?(t.delete(r),Bl(e,r,void 0)):(t.set(r,o),Bl(e,r,o))}}}function Hl({children:e}){let t=(0,z.useRef)(Vl()).current;return(0,z.useEffect)(()=>()=>{t.dispose()},[t]),(0,W.jsx)(Ml.Provider,{value:t,children:e})}function Ul(){let e=(0,z.useContext)(Ml);if(e===void 0)throw Error(`useComposerDraftStore must be used inside ComposerDraftProvider`);return e}var Wl=`codexly:project-todos:v1:`,Gl=`codexly:project-todo:v1:`,Kl={attachments:[],content:[]};function ql(){try{return globalThis.localStorage}catch{return}}function Jl(e){return`${Wl}${e}`}function Yl(e,t){return`${Gl}${e}:${t}`}function Xl(e){if(typeof e!=`object`||!e)return!1;let t=e;return Array.isArray(t.content)&&Array.isArray(t.attachments)}function Zl(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.createdAt==`number`&&Number.isFinite(t.createdAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)}function Ql(e){if(!Zl(e))return!1;let t=e;return Xl(t.draft)&&(t.workingDraft===void 0||Xl(t.workingDraft))}function $l(e){return{attachments:e.attachments.filter(e=>e.source===`host`),content:e.content}}function eu(e){return{...e,draft:$l(e.draft),...e.workingDraft===void 0?{}:{workingDraft:$l(e.workingDraft)}}}function tu(e,t){let n=new Set(t.attachments.map(e=>e.previewUrl));for(let t of new Set(e.attachments.map(e=>e.previewUrl)))!n.has(t)&&t.startsWith(`blob:`)&&URL.revokeObjectURL(t)}function nu(e,t){try{let n=JSON.parse(e?.getItem(Jl(t))??`null`);if(typeof n!=`object`||!n)return[];let r=n.todos;return Array.isArray(r)?r.filter(Zl).map(n=>{let r=JSON.parse(e?.getItem(Yl(t,n.id))??`null`);return Ql(r)?r:void 0}).filter(e=>e!==void 0).sort((e,t)=>t.updatedAt-e.updatedAt):[]}catch{return[]}}function ru(e,t,n){if(e!==void 0){if(n.length===0){e.removeItem(Jl(t));return}e.setItem(Jl(t),JSON.stringify({todos:n.map(({createdAt:e,id:t,updatedAt:n})=>({createdAt:e,id:t,updatedAt:n}))}))}}function iu(e=ql(),t={}){let n=t.createId??T,r=t.now??Date.now,i=new Map,a=new Set,o=0,s=t=>{let n=i.get(t);if(n!==void 0)return n;let r=nu(e,t);return i.set(t,r),r},c=(e,t,n=!0)=>{let r=[...t].sort((e,t)=>t.updatedAt-e.updatedAt);return i.set(e,r),n&&(o+=1,a.forEach(e=>{e()})),r},l=(t,n,r,i=!0)=>{let a=s(t),o=a.some(e=>e.id===n.id),l=c(t,o?a.map(e=>e.id===n.id?n:e):[n,...a],i);e?.setItem(Yl(t,n.id),JSON.stringify(eu(n))),r&&ru(e,t,l)},u=(e,t)=>s(e).find(e=>e.id===t);return{create:(e,t)=>{let i=r(),a={createdAt:i,draft:$l(t),id:n(),updatedAt:i};return l(e,a,!0),a},discardWorking:(e,t)=>{let n=u(e,t);if(n?.workingDraft===void 0)return;tu(n.workingDraft,n.draft);let{workingDraft:r,...i}=n;l(e,i,!1)},getRevision:()=>o,list:s,read:u,readWorking:(e,t)=>u(e,t)?.workingDraft,remove:(t,n)=>{let r=s(t),i=r.find(e=>e.id===n);if(i===void 0)return;i.workingDraft!==void 0&&tu(i.workingDraft,Kl);let a=c(t,r.filter(e=>e.id!==n));e?.removeItem(Yl(t,n)),ru(e,t,a)},save:(e,t,n)=>{let i=u(e,t);if(i===void 0)return;let a={createdAt:i.createdAt,draft:$l(n),id:i.id,updatedAt:r()};return i.workingDraft!==void 0&&tu(i.workingDraft,a.draft),l(e,a,!0),a},subscribe:e=>(a.add(e),()=>{a.delete(e)}),updateWorking:(e,t,n)=>{let r=u(e,t);if(r===void 0)return;tu(r.workingDraft??r.draft,n);let i={...r,workingDraft:n};return l(e,i,!1,r.workingDraft===void 0),i}}}var au=(0,z.createContext)(void 0);function ou({children:e}){let t=(0,z.useRef)(null);return t.current??=iu(),(0,W.jsx)(au.Provider,{value:t.current,children:e})}function su(){let e=(0,z.useContext)(au);if(e===void 0)throw Error(`useProjectTodoStore must be used inside ProjectTodoProvider`);return e}function cu(e){let t=su(),n=(0,z.useCallback)(()=>t.list(e),[e,t]);return(0,z.useSyncExternalStore)(t.subscribe,n,n)}function lu(e){let t=su();return(0,z.useSyncExternalStore)(t.subscribe,t.getRevision,t.getRevision),e.flatMap(e=>t.list(e).map(t=>({projectId:e,record:t})))}var uu=`codexly.notification-preference`,du=1;function fu(e){try{let t=JSON.parse(e.getItem(uu)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===du&&`enabled`in t&&typeof t.enabled==`boolean`)return t.enabled}catch{}return!0}function pu(e,t){try{t.setItem(uu,JSON.stringify({enabled:e,version:du}))}catch{}}function mu(){try{return typeof window>`u`||fu(window.localStorage)}catch{return!0}}function hu(e){try{typeof window<`u`&&pu(e,window.localStorage)}catch{}}var gu=48*1048576;function _u(e){return Array.isArray(e)&&e.length===4&&e[0]===`projects`&&typeof e[1]==`string`&&e[2]===`tasks`&&typeof e[3]==`string`}function vu(e,t=gu,n=12){let r=new ai({getRetainedBytes:(e,t)=>t.retainedBytes,maxBytes:t,maxEntries:n,onEvict(t,n,r){r!==`replaced`&&e.getQueryCache().find({exact:!0,queryKey:n.queryKey})?.getObserversCount()===0&&e.removeQueries({exact:!0,queryKey:n.queryKey})}});return e.getQueryCache().subscribe(e=>{let t=e.query,n=t.queryKey,i=t.queryHash,a=t.state.data;if(!(!_u(n)||typeof i!=`string`)){if(e.type===`removed`||t.getObserversCount()>0||a===void 0){r.delete(i);return}r.set(i,{queryKey:n,retainedBytes:H(a)})}})}var yu=2*6e4;function bu(){let e=new x({mutationCache:Pi(),defaultOptions:{queries:{gcTime:yu,refetchOnWindowFocus:!1,retry:1,staleTime:3e4}}});return vu(e),e}var xu=bu();function Su(e,t){e===`temporary`?fl.navigate({params:{taskId:t},to:`/temporary/t/$taskId`}):fl.navigate({params:{projectId:e,taskId:t},to:`/p/$projectId/t/$taskId`})}var Cu=Ir({isEnabled:mu,navigateToTask:Su});function wu({access:e,children:t}){return e.status?.authenticated===!0?t:(0,W.jsx)(ml,{error:e.error,loading:e.loading,onPair:e.pair,onRetry:e.retry,pairing:e.pairing})}function Tu({children:e}){let t=Yi(),{t:n}=R(`common`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(wu,{access:t,children:(0,W.jsx)(kl,{children:(0,W.jsx)(Ui,{taskNotifier:Cu,children:(0,W.jsx)(ou,{children:(0,W.jsx)(Hl,{children:e})})})})}),(0,W.jsx)(A,{containerAriaLabel:n(`app.notificationRegion`),duration:5e3,position:`top-center`,richColors:!0,theme:`system`})]})}function Eu({children:e}){return(0,W.jsx)(ze,{i18n:L,children:(0,W.jsx)(Uo,{children:(0,W.jsx)(c,{client:xu,children:(0,W.jsx)(Ji,{client:B,queryClient:xu,children:(0,W.jsx)(Tu,{children:e})})})})})}var Du=`codexly.theme-preference`,Ou=1,ku=`(prefers-color-scheme: dark)`,Au;function ju(e){try{let t=JSON.parse(e.getItem(Du)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===Ou&&`theme`in t&&(t.theme===`dark`||t.theme===`light`||t.theme===`system`))return t.theme}catch{}return`system`}function Mu(e,t){try{t.setItem(Du,JSON.stringify({theme:e,version:Ou}))}catch{}}function Nu(e,t,n=!1){t.dataset.theme=e===`system`?n?`dark`:`light`:e}function Pu(e){Au?.(),Au=void 0;let t=window.matchMedia(ku),n=()=>{Nu(e,document.documentElement,t.matches)};n(),e===`system`&&(t.addEventListener(`change`,n),Au=()=>{t.removeEventListener(`change`,n)})}function Fu(e){Mu(e,window.localStorage),Pu(e)}function Iu(){let e=ju(window.localStorage);return Pu(e),e}var Lu=document.querySelector(`#root`);if(!(Lu instanceof HTMLElement))throw Error(`Missing #root element`);Iu(),(0,Pt.createRoot)(Lu).render((0,W.jsx)(z.StrictMode,{children:(0,W.jsx)(Eu,{children:(0,W.jsx)(pl,{})})}));export{Oo as $,Fn as $t,vs as A,Cr as At,Z as B,sr as Bt,Ks as C,H as Ct,hs as D,V as Dt,ds as E,Wr as Et,ps as F,Wn as Ft,Bo as G,ar as Gt,Fo as H,Xn as Ht,cs as I,Un as It,J,rr as Jt,Ro as K,ir as Kt,Zo as L,qn as Lt,_s as M,Sr as Mt,ls as N,Tr as Nt,fs as O,kr as Ot,ms as P,fr as Pt,ko as Q,Kn as Qt,Go as R,Jn as Rt,pc as S,ai as St,ss as T,Gr as Tt,zo as U,Yn as Ut,X as V,or as Vt,Io as W,cr as Wt,Do as X,er as Xt,Co as Y,nr as Yt,jo as Z,Gn as Zt,yc as _,Wi as _t,lu as a,pn as an,yo as at,gc as b,Ni as bt,Nl as c,Ht as cn,_o as ct,_l as d,B as dn,pa as dt,Zn as en,Ao as et,Qc as f,zt as fn,ma as ft,ec as g,Yi as gt,Gc as h,G as ht,hu as i,yn as in,xo as it,ys as j,wr as jt,gs as k,Dr as kt,Ul as l,Vt as ln,Wa as lt,Kc as m,K as mt,Fu as n,Cn as nn,So as nt,su as o,mn as on,vo as ot,Hc as p,Qi as pt,Lo as q,tr as qt,mu as r,vn as rn,ho as rt,cu as s,Bt as sn,go as st,ju as t,xn as tn,wo as tt,Ol as u,It as un,Ma as ut,fc as v,Ri as vt,Ss as w,ii as wt,lc as x,gi as xt,dc as y,U as yt,Y as z,Hn as zt};