@qredence/fleet 0.7.4 → 0.8.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 (165) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +5 -4
  3. package/bin/fleet-prime.mjs +33 -6
  4. package/bin/prime-runtime.mjs +79 -0
  5. package/dist/runtime-manifest.json +32 -0
  6. package/dist/web/client/assets/DialogTitle-RY2UDuCY.js +1 -0
  7. package/dist/web/client/assets/FloatingPortal-XC0MCNnD.js +1 -0
  8. package/dist/web/client/assets/action-swap-BWRUNKQA.js +1 -0
  9. package/dist/web/client/assets/{alert-dialog-DtXvVhsF.js → alert-dialog-DGNvg0B1.js} +1 -1
  10. package/dist/web/client/assets/arrow-up-right-CG9RNk4p.js +1 -0
  11. package/dist/web/client/assets/{artifacts-panel-Bseg97yQ.js → artifacts-panel-BGXpKRJ7.js} +1 -1
  12. package/dist/web/client/assets/{badge-C--lf3bb.js → badge-DM06QVqB.js} +6 -6
  13. package/dist/web/client/assets/button-CWYjn8Zk.js +1 -0
  14. package/dist/web/client/assets/{card-Hngi3HGC.js → card-Dj1SnGUU.js} +1 -1
  15. package/dist/web/client/assets/{chat-command-palette-D_rm1r9d.js → chat-command-palette-PenyaZBw.js} +1 -1
  16. package/dist/web/client/assets/code-block-pKKmFZ5w.js +3 -0
  17. package/dist/web/client/assets/collapsible-Bk6zCsRX.js +1 -0
  18. package/dist/web/client/assets/{command-CmtCIDdH.js → command-imgUMV3r.js} +1 -1
  19. package/dist/web/client/assets/{create-project-dialog-m-9aoobN.js → create-project-dialog-C00d5yCq.js} +1 -1
  20. package/dist/web/client/assets/createBaseUIEventDetails-DIxvaz-Y.js +1 -0
  21. package/dist/web/client/assets/{dialog-Ddouieuu.js → dialog-zCNOQI63.js} +1 -1
  22. package/dist/web/client/assets/eye-iNSvs0UA.js +1 -0
  23. package/dist/web/client/assets/file-code-corner-BkDULqko.js +1 -0
  24. package/dist/web/client/assets/{fork-picker-dialog-DfGlB17w.js → fork-picker-dialog-Cgi48NnT.js} +1 -1
  25. package/dist/web/client/assets/globals-BuMuB_ea.css +2 -0
  26. package/dist/web/client/assets/{index-Bz5W4EOn.js → index-BqBdQGWs.js} +3 -3
  27. package/dist/web/client/assets/input-7g8_nw-Z.js +1 -0
  28. package/dist/web/client/assets/{input-group-EPMGh55u.js → input-group-Nq03Qums.js} +1 -1
  29. package/dist/web/client/assets/{ipython-tool-CMhnRVrC.js → ipython-tool-bieUhw9K.js} +1 -1
  30. package/dist/web/client/assets/markdown-CvBfbPCn.js +2 -0
  31. package/dist/web/client/assets/markdown-code-rFOkzN5N.js +4 -0
  32. package/dist/web/client/assets/{message-queue-Bg2MiJHM.js → message-queue-sSljtjYz.js} +1 -1
  33. package/dist/web/client/assets/{model-selector-list-BiU_7ivt.js → model-selector-list-Cp687pdm.js} +1 -1
  34. package/dist/web/client/assets/{notify-DhtmUPfE.js → notify-Cqdu6EV8.js} +1 -1
  35. package/dist/web/client/assets/{openui-renderer-MIB3JKYa.js → openui-renderer-BdYTcn-_.js} +50 -50
  36. package/dist/web/client/assets/{prompt-input-Dy-DSPqF.js → prompt-input-CoV1gTUQ.js} +1 -1
  37. package/dist/web/client/assets/{prompt-suggestions-CrpAiKeB.js → prompt-suggestions-CAY5JI-C.js} +1 -1
  38. package/dist/web/client/assets/provider-label-QrVOwKBO.js +1 -0
  39. package/dist/web/client/assets/reasoning-line-DGdPUMwT.js +1 -0
  40. package/dist/web/client/assets/rehype-katex-DITkIpVl.js +259 -0
  41. package/dist/web/client/assets/{repl-panel-DN5kZAcB.js → repl-panel-5xgkDXO5.js} +1 -1
  42. package/dist/web/client/assets/{resources-panel-DD6iWOF3.js → resources-panel-aJCKt9eF.js} +1 -1
  43. package/dist/web/client/assets/right-panel-registry-BaLZiKny.js +2 -0
  44. package/dist/web/client/assets/routes-BkFkhfO3.js +16 -0
  45. package/dist/web/client/assets/select-BhV4ikeN.js +1 -0
  46. package/dist/web/client/assets/session-activity-panel-Bc4-HSfb.js +1 -0
  47. package/dist/web/client/assets/session-reasoning-panel-CjJJK_bq.js +1 -0
  48. package/dist/web/client/assets/session-tool-renderer-C7mYeUOs.js +166 -0
  49. package/dist/web/client/assets/{session-tree-panel-BBwP_EK2.js → session-tree-panel-By9m9tGB.js} +1 -1
  50. package/dist/web/client/assets/settings-dialog-Dpt4Ha_m.js +2 -0
  51. package/dist/web/client/assets/shield-check-7HDd-2Fn.js +1 -0
  52. package/dist/web/client/assets/{skeleton-DNAr5ULI.js → skeleton-B_Lq2XFl.js} +1 -1
  53. package/dist/web/client/assets/{skeleton-loaders-B28mF4tJ.js → skeleton-loaders-DWc1eDL3.js} +1 -1
  54. package/dist/web/client/assets/sparkles-BwVa9zQJ.js +1 -0
  55. package/dist/web/client/assets/{spinner-CSBXk3Lo.js → spinner-B5TaKP7k.js} +1 -1
  56. package/dist/web/client/assets/{subagent-chat-panel-DhvBO4dQ.js → subagent-chat-panel-DsPmLZSf.js} +1 -1
  57. package/dist/web/client/assets/subagent-transcript-CNQ9wGk2.js +1 -0
  58. package/dist/web/client/assets/{subagents-panel-DRo8Xs6j.js → subagents-panel-gQ9BLfV3.js} +1 -1
  59. package/dist/web/client/assets/surfaces-BUjUJTyD.js +1 -0
  60. package/dist/web/client/assets/switch-C7Myu-Dt.js +1 -0
  61. package/dist/web/client/assets/toast-DlbKi6K-.js +1 -0
  62. package/dist/web/client/assets/tool-output-normalizer-CADgEiI4.js +4 -0
  63. package/dist/web/client/assets/tool-part-normalizer-CYK62WZM.js +4 -0
  64. package/dist/web/client/assets/tool-result-bjAGZ2qm.js +5 -0
  65. package/dist/web/client/assets/tool-timeline-eNqH1zj7.js +2 -0
  66. package/dist/web/client/assets/trace-IsV5RRvM.js +1 -0
  67. package/dist/web/client/assets/ui-preferences-B-PNDkyY.js +1 -0
  68. package/dist/web/client/assets/use-hover-capable-CLq8BADD.js +1 -0
  69. package/dist/web/client/assets/useBaseUiId-lKfDDIcw.js +1 -0
  70. package/dist/web/client/assets/useButton-CvcmqA2s.js +1 -0
  71. package/dist/web/client/assets/useRender-Bbk_fl72.js +1 -0
  72. package/dist/web/client/assets/{utils-CFDGLzf6.js → utils-oBThwhjm.js} +1 -1
  73. package/dist/web/client/assets/{workspace-panel-DdZutYnd.js → workspace-panel-Da5I4p_t.js} +1 -1
  74. package/dist/web/client/assets/workspace-path-nav-D-77sJ_A.js +2 -0
  75. package/dist/web/client/assets/wrench-BXX_Ah2s.js +1 -0
  76. package/dist/web/client/bundle-budget.json +6 -6
  77. package/dist/web/server/{_tanstack-start-manifest_v-YlngJGUa-YTWBGR7L.js → _tanstack-start-manifest_v-BiNPG4xt-BZTMSM2I.js} +33 -28
  78. package/dist/web/server/{artifacts-panel-COSC8o7j-GKW2HH2G.js → artifacts-panel-CqGBNU4q-UHNMC7PK.js} +23 -27
  79. package/dist/web/server/{chat-command-palette-CuOWdzkk-PKZQ5EZP.js → chat-command-palette-B94-zIEz-ES2ZB4ZF.js} +8 -10
  80. package/dist/web/server/{chunk-GLSR4ZI2.js → chunk-2FHYWKDN.js} +669 -833
  81. package/dist/web/server/{chunk-EBC7QORX.js → chunk-5GUEYYYO.js} +3680 -2098
  82. package/dist/web/server/{chunk-GLH2GWMG.js → chunk-7L5PCCYR.js} +411 -306
  83. package/dist/web/server/{chunk-KHHXJZK7.js → chunk-ABMGW6QH.js} +2784 -1662
  84. package/dist/web/server/{chunk-36CAMOVG.js → chunk-BAHZXA4D.js} +6 -6
  85. package/dist/web/server/{chunk-IN2ATSEG.js → chunk-CZLGB3NE.js} +2 -2
  86. package/dist/web/server/{chunk-WCKKN5BR.js → chunk-E6T36NM5.js} +347 -583
  87. package/dist/web/server/{chunk-ORCOCCER.js → chunk-EAKPTSWR.js} +4 -4
  88. package/dist/web/server/chunk-EL2JCDAM.js +270 -0
  89. package/dist/web/server/{chunk-6GTTTYSE.js → chunk-FB2QLQTN.js} +67 -73
  90. package/dist/web/server/{chunk-LLO4MNGE.js → chunk-K67IDUAI.js} +24 -26
  91. package/dist/web/server/{chunk-YU6RHHK6.js → chunk-LQM6QR7S.js} +10 -12
  92. package/dist/web/server/chunk-LTTBT3J7.js +129 -0
  93. package/dist/web/server/{chunk-TMQ3MT3D.js → chunk-OAYEN3JV.js} +2 -0
  94. package/dist/web/server/{chunk-ZUZPJNLY.js → chunk-OSPDNT7S.js} +829 -642
  95. package/dist/web/server/{chunk-XA7EOCHM.js → chunk-SGAQVAYL.js} +2 -2
  96. package/dist/web/server/chunk-SI5IQSG4.js +206 -0
  97. package/dist/web/server/{chunk-AKSDWYJY.js → chunk-SYS5FDNA.js} +5 -5
  98. package/dist/web/server/{chunk-QSM3BRMA.js → chunk-WSK55TKE.js} +169 -156
  99. package/dist/web/server/{chunk-BUKOEXE7.js → chunk-YQO36OP6.js} +2 -2
  100. package/dist/web/server/{create-project-dialog-0-arQpsX-ZELQKHS5.js → create-project-dialog-CFPX6Ihl-EO4XTINS.js} +12 -14
  101. package/dist/web/server/{dist-7G2NZPF4.js → dist-GQUZLXN5.js} +2 -2
  102. package/dist/web/server/{dist-E5637ZAY.js → dist-MN5NWCX6.js} +1 -1
  103. package/dist/web/server/{fork-picker-dialog-fj9p33Mq-I5SA3GLJ.js → fork-picker-dialog-B2RBFzoZ-R6GXPSPL.js} +6 -8
  104. package/dist/web/server/{markdown-CShfYRVO-RBTK7TRB.js → markdown-BvCfOB26-VDH4YOQD.js} +9 -6
  105. package/dist/web/server/{markdown-code-BDV_2b2T-6JYA5FWZ.js → markdown-code-SYc-BQvp-MR4FXT5C.js} +48 -9
  106. package/dist/web/server/{message-queue-BBC843IU-GY4ZIMM4.js → message-queue-D32rLiJo-HEBRGH5B.js} +6 -8
  107. package/dist/web/server/{model-selector-list-DE6aLNXt-LJZMCYOI.js → model-selector-list-DKzt_xEN-5ZPU6XDY.js} +8 -10
  108. package/dist/web/server/{openui-renderer-C3aqSKuS-PWLWJFYO.js → openui-renderer-CeVtOdYl-PY37PCJI.js} +12 -14
  109. package/dist/web/server/{prompt-suggestions-CpTK_fHV-UKJDTLVM.js → prompt-suggestions-CpTK_fHV-Q4ILLZKC.js} +1 -1
  110. package/dist/web/server/{rehype-katex-IDPYWU6M.js → rehype-katex-CYHGKI6Q.js} +490 -843
  111. package/dist/web/server/{repl-panel-1kSS1UGd-U64BPA7X.js → repl-panel-1kSS1UGd-DDM5ADGZ.js} +3 -3
  112. package/dist/web/server/{resources-panel-DWb0eGKa-K4EM3H7Y.js → resources-panel-S4NHlpz7-NF7WYYSR.js} +7 -9
  113. package/dist/web/server/{router-DZYr-9uT-AEXHEFXF.js → router-DVKxZik_-254GZAJW.js} +5 -6
  114. package/dist/web/server/{routes-vYxWRhis-AAZ73SNP.js → routes-BTxAklRp-UM7ZTLLP.js} +50 -30
  115. package/dist/web/server/server.js +2 -2
  116. package/dist/web/server/session-activity-panel-Bz2GrdMk-PCOXG46X.js +173 -0
  117. package/dist/web/server/session-reasoning-panel-CpiTdyQz-O3B5CDKS.js +62 -0
  118. package/dist/web/server/{session-tool-renderer-Dtt74Mts-7YYNSWRV.js → session-tool-renderer-BZiOxtt1-T3ZGAQKX.js} +10 -13
  119. package/dist/web/server/{session-tree-panel-HNl6R9VZ-4JUF34M7.js → session-tree-panel-CzkE0RFB-P4KWA7S2.js} +7 -9
  120. package/dist/web/server/{settings-dialog-DGZBA5Z_-6HYFMPNZ.js → settings-dialog-BUgVNpr1-THSYIOZL.js} +18 -21
  121. package/dist/web/server/{subagent-chat-panel-DuB4hqUk-LDCAJOCL.js → subagent-chat-panel-mw3kEFfK-CDYX7LST.js} +13 -16
  122. package/dist/web/server/{subagents-panel-wAvx3-Rs-L6UTDFUX.js → subagents-panel-2ZJfYrXG-NDJKHJHD.js} +15 -18
  123. package/dist/web/server/{workspace-panel-CPzJZwgv-YS7PTI5C.js → workspace-panel-xznrPDLt-QCJRZOF3.js} +7 -9
  124. package/package.json +2 -2
  125. package/dist/web/client/assets/DialogTitle-D-zqaHvF.js +0 -1
  126. package/dist/web/client/assets/FloatingPortal-73ZRZeD9.js +0 -1
  127. package/dist/web/client/assets/action-swap-BcFwS6is.js +0 -1
  128. package/dist/web/client/assets/button-BJZe4vNJ.js +0 -1
  129. package/dist/web/client/assets/chevron-up-CqeJYyZO.js +0 -1
  130. package/dist/web/client/assets/collapsible-DauSnbYp.js +0 -1
  131. package/dist/web/client/assets/createBaseUIEventDetails-DklXWq23.js +0 -1
  132. package/dist/web/client/assets/eye-Cs0lNChA.js +0 -1
  133. package/dist/web/client/assets/globals-C961mr-b.css +0 -2
  134. package/dist/web/client/assets/input-Def1xOZz.js +0 -1
  135. package/dist/web/client/assets/markdown-Big27m-v.js +0 -2
  136. package/dist/web/client/assets/markdown-code-7L4RiS50.js +0 -3
  137. package/dist/web/client/assets/provider-label-B_vy60P0.js +0 -1
  138. package/dist/web/client/assets/rehype-katex-A4PtQgTX.js +0 -259
  139. package/dist/web/client/assets/right-panel-registry-hKJN__3l.js +0 -2
  140. package/dist/web/client/assets/routes-C3h32Lj_.js +0 -16
  141. package/dist/web/client/assets/select-Buvv1tIo.js +0 -1
  142. package/dist/web/client/assets/session-reasoning-panel-DmEbXOrR.js +0 -1
  143. package/dist/web/client/assets/session-tool-renderer-Daol5fJw.js +0 -169
  144. package/dist/web/client/assets/settings-dialog-DYbx3xuq.js +0 -2
  145. package/dist/web/client/assets/sparkles-D_ANe-HY.js +0 -1
  146. package/dist/web/client/assets/subagent-transcript-Bx-rHni-.js +0 -1
  147. package/dist/web/client/assets/surfaces-B8xTOFeK.js +0 -1
  148. package/dist/web/client/assets/switch-CDfAwEvs.js +0 -1
  149. package/dist/web/client/assets/terminal-Ceucj7us.js +0 -1
  150. package/dist/web/client/assets/toast-9zXN-yVk.js +0 -1
  151. package/dist/web/client/assets/tool-part-normalizer-NbPs9kd1.js +0 -4
  152. package/dist/web/client/assets/tool-result-BccnO34D.js +0 -4
  153. package/dist/web/client/assets/tool-timeline-DlBZyd4j.js +0 -1
  154. package/dist/web/client/assets/ui-preferences-1YaENqef.js +0 -1
  155. package/dist/web/client/assets/use-hover-capable-MwFjBLZQ.js +0 -1
  156. package/dist/web/client/assets/workspace-path-nav-BRwuLsFl.js +0 -2
  157. package/dist/web/client/assets/wrench-BYnD147U.js +0 -1
  158. package/dist/web/server/chunk-CHSKEU3V.js +0 -166
  159. package/dist/web/server/chunk-OO7NBFQQ.js +0 -15
  160. package/dist/web/server/chunk-OXEAXEWD.js +0 -13
  161. package/dist/web/server/chunk-SIJVVYQT.js +0 -234
  162. package/dist/web/server/chunk-UQV2NU63.js +0 -163
  163. package/dist/web/server/chunk-VUBITQ5X.js +0 -653
  164. package/dist/web/server/session-reasoning-panel-XXU2yIOW-XXCKHISS.js +0 -192
  165. package/dist/web/server/tool-timeline-BKWsrZHK-3LGCOTPH.js +0 -12
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./utils-CFDGLzf6.js";import{t as i}from"./git-branch-DZEh2mM2.js";import{t as a}from"./button-BJZe4vNJ.js";import{a as o,i as s,o as c,r as l,s as u,t as d}from"./alert-dialog-DtXvVhsF.js";var f=e(t(),1),p=n();function m(e,t=0){let n=[];for(let r of e)n.push({node:r,depth:t}),n.push(...m(r.children,t+1));return n}function h({depth:e,isSelected:t,node:n,onSelect:i}){return(0,p.jsxs)(a,{type:`button`,variant:`ghost`,"data-testid":`session-tree-node-${n.id}`,onClick:i,className:r(`h-auto w-full flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left font-normal`,t?`bg-foreground/10 ring-1 ring-foreground/15`:`hover:bg-foreground/6`,n.isOnActiveBranch?`text-foreground/90`:`text-foreground/55`),style:{marginLeft:`${e*12}px`,width:`calc(100% - ${e*12}px)`},children:[(0,p.jsxs)(`span`,{className:`flex items-center gap-1.5 text-label leading-5`,children:[n.isLeaf?(0,p.jsx)(`span`,{"aria-hidden":`true`,className:`font-semibold text-foreground`,children:`*`}):null,(0,p.jsx)(`span`,{className:`truncate font-medium`,children:n.preview})]}),(0,p.jsx)(`span`,{className:`truncate font-mono text-caption text-foreground/40`,children:n.id})]})}function g({sessionId:e,snapshot:t,loading:n,error:r,isStreaming:g,selectedEntryId:_,onSelectEntry:v,onRefresh:y,onRewind:b}){let[x,S]=(0,f.useState)(null),[C,w]=(0,f.useState)(null),[T,E]=(0,f.useState)(!1),[D,O]=(0,f.useState)(null),k=(0,f.useRef)(0),A=(0,f.useMemo)(()=>t?m(t.nodes):[],[t]),j=!!((0,f.useMemo)(()=>A.find(e=>e.node.id===_)?.node,[A,_])&&t&&_&&_!==t.leafId&&!g);(0,f.useEffect)(()=>{if(x===null||T||D===null)return;let e=t?.leafId??null;e!==C&&w(e)},[x,T,D,C,t?.leafId]);let M=(0,f.useCallback)(t=>{if(!(!e||t.messageIndex===void 0))return`${e}-m${t.messageIndex}`},[e]),N=(0,f.useCallback)(()=>{k.current+=1,S(null),w(null),O(null),E(!1)},[]);(0,f.useEffect)(()=>{N()},[e,N]);let P=(0,f.useCallback)(async()=>{let e=x,t=C;if(!e)return;let n=++k.current,r=()=>k.current===n;E(!0),O(null);try{await b(e,t),r()&&N()}catch(e){r()&&O(e instanceof Error?e.message:String(e))}finally{r()&&E(!1)}},[N,x,C,b]),F=(0,f.useCallback)(e=>{O(null),S(e),w(t?.leafId??null)},[t?.leafId]);return e?(0,p.jsxs)(`section`,{"aria-label":`Session tree`,className:`flex min-h-0 flex-1 flex-col gap-3`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-label text-foreground/70`,children:[(0,p.jsx)(i,{className:`size-4`,"aria-hidden":`true`}),(0,p.jsx)(`span`,{children:`Branch history`})]}),(0,p.jsx)(a,{type:`button`,size:`compact`,variant:`outline`,onClick:y,disabled:n,children:`Refresh`})]}),r?(0,p.jsx)(`p`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive`,children:r}):null,g?(0,p.jsx)(`p`,{className:`rounded-md border border-border/60 bg-background px-3 py-2 text-label text-foreground/60`,children:`Finish or stop the current turn before rewinding.`}):null,(0,p.jsxs)(`div`,{"data-testid":`session-tree-list`,className:`flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto rounded-md border border-border/60 bg-background p-2`,children:[n&&A.length===0?(0,p.jsx)(`p`,{className:`px-2 py-3 text-label text-foreground/45`,children:`Loading session tree…`}):null,!n&&A.length===0?(0,p.jsx)(`p`,{className:`px-2 py-3 text-label text-foreground/45`,children:`No branch entries yet.`}):null,A.map(({node:e,depth:t})=>(0,p.jsx)(h,{depth:t,node:e,isSelected:e.id===_,onSelect:()=>v(e.id,M(e))},e.id))]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,p.jsxs)(`p`,{className:`text-caption text-foreground/45`,children:[(0,p.jsx)(`span`,{"aria-hidden":`true`,children:`*`}),` marks the current leaf on the active branch.`]}),(0,p.jsx)(a,{type:`button`,size:`compact`,disabled:!j,onClick:()=>_&&F(_),children:`Rewind here`})]}),(0,p.jsx)(d,{open:x!==null,onOpenChange:e=>{!e&&!T&&N()},children:(0,p.jsxs)(s,{children:[(0,p.jsx)(u,{children:`Rewind session?`}),(0,p.jsx)(o,{children:`Later turns on the current branch leave the active session. Rewinding to a user turn follows Prime Agent edit-from-here semantics: the leaf moves to that message's parent so you can resend from there.`}),D?(0,p.jsx)(`p`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive`,children:D}):null,(0,p.jsxs)(c,{children:[(0,p.jsx)(l,{disabled:T,children:`Cancel`}),(0,p.jsx)(a,{type:`button`,variant:`destructive`,disabled:T,onClick:()=>void P(),children:T?`Rewinding…`:`Rewind`})]})]})})]}):(0,p.jsx)(`section`,{"aria-label":`Session tree`,className:`flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45`,children:`Start or open a session to browse its branch history.`})}export{g as SessionTreePanel};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./utils-oBThwhjm.js";import{t as i}from"./git-branch-DZEh2mM2.js";import{t as a}from"./button-CWYjn8Zk.js";import{a as o,i as s,o as c,r as l,s as u,t as d}from"./alert-dialog-DGNvg0B1.js";var f=e(t(),1),p=n();function m(e,t=0){let n=[];for(let r of e)n.push({node:r,depth:t}),n.push(...m(r.children,t+1));return n}function h({depth:e,isSelected:t,node:n,onSelect:i}){return(0,p.jsxs)(a,{type:`button`,variant:`ghost`,"data-testid":`session-tree-node-${n.id}`,onClick:i,className:r(`h-auto w-full flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left font-normal`,t?`bg-foreground/10 ring-1 ring-foreground/15`:`hover:bg-foreground/6`,n.isOnActiveBranch?`text-foreground/90`:`text-foreground/55`),style:{marginLeft:`${e*12}px`,width:`calc(100% - ${e*12}px)`},children:[(0,p.jsxs)(`span`,{className:`flex items-center gap-1.5 text-label leading-5`,children:[n.isLeaf?(0,p.jsx)(`span`,{"aria-hidden":`true`,className:`font-semibold text-foreground`,children:`*`}):null,(0,p.jsx)(`span`,{className:`truncate font-medium`,children:n.preview})]}),(0,p.jsx)(`span`,{className:`truncate font-mono text-caption text-foreground/40`,children:n.id})]})}function g({sessionId:e,snapshot:t,loading:n,error:r,isStreaming:g,selectedEntryId:_,onSelectEntry:v,onRefresh:y,onRewind:b}){let[x,S]=(0,f.useState)(null),[C,w]=(0,f.useState)(null),[T,E]=(0,f.useState)(!1),[D,O]=(0,f.useState)(null),k=(0,f.useRef)(0),A=(0,f.useMemo)(()=>t?m(t.nodes):[],[t]),j=!!((0,f.useMemo)(()=>A.find(e=>e.node.id===_)?.node,[A,_])&&t&&_&&_!==t.leafId&&!g);(0,f.useEffect)(()=>{if(x===null||T||D===null)return;let e=t?.leafId??null;e!==C&&w(e)},[x,T,D,C,t?.leafId]);let M=(0,f.useCallback)(t=>{if(!(!e||t.messageIndex===void 0))return`${e}-m${t.messageIndex}`},[e]),N=(0,f.useCallback)(()=>{k.current+=1,S(null),w(null),O(null),E(!1)},[]);(0,f.useEffect)(()=>{N()},[e,N]);let P=(0,f.useCallback)(async()=>{let e=x,t=C;if(!e)return;let n=++k.current,r=()=>k.current===n;E(!0),O(null);try{await b(e,t),r()&&N()}catch(e){r()&&O(e instanceof Error?e.message:String(e))}finally{r()&&E(!1)}},[N,x,C,b]),F=(0,f.useCallback)(e=>{O(null),S(e),w(t?.leafId??null)},[t?.leafId]);return e?(0,p.jsxs)(`section`,{"aria-label":`Session tree`,className:`flex min-h-0 flex-1 flex-col gap-3`,children:[(0,p.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2 text-label text-foreground/70`,children:[(0,p.jsx)(i,{className:`size-4`,"aria-hidden":`true`}),(0,p.jsx)(`span`,{children:`Branch history`})]}),(0,p.jsx)(a,{type:`button`,size:`compact`,variant:`outline`,onClick:y,disabled:n,children:`Refresh`})]}),r?(0,p.jsx)(`p`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive`,children:r}):null,g?(0,p.jsx)(`p`,{className:`rounded-md border border-border/60 bg-background px-3 py-2 text-label text-foreground/60`,children:`Finish or stop the current turn before rewinding.`}):null,(0,p.jsxs)(`div`,{"data-testid":`session-tree-list`,className:`flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto rounded-md border border-border/60 bg-background p-2`,children:[n&&A.length===0?(0,p.jsx)(`p`,{className:`px-2 py-3 text-label text-foreground/45`,children:`Loading session tree…`}):null,!n&&A.length===0?(0,p.jsx)(`p`,{className:`px-2 py-3 text-label text-foreground/45`,children:`No branch entries yet.`}):null,A.map(({node:e,depth:t})=>(0,p.jsx)(h,{depth:t,node:e,isSelected:e.id===_,onSelect:()=>v(e.id,M(e))},e.id))]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,p.jsxs)(`p`,{className:`text-caption text-foreground/45`,children:[(0,p.jsx)(`span`,{"aria-hidden":`true`,children:`*`}),` marks the current leaf on the active branch.`]}),(0,p.jsx)(a,{type:`button`,size:`compact`,disabled:!j,onClick:()=>_&&F(_),children:`Rewind here`})]}),(0,p.jsx)(d,{open:x!==null,onOpenChange:e=>{!e&&!T&&N()},children:(0,p.jsxs)(s,{children:[(0,p.jsx)(u,{children:`Rewind session?`}),(0,p.jsx)(o,{children:`Later turns on the current branch leave the active session. Rewinding to a user turn follows Prime Agent edit-from-here semantics: the leaf moves to that message's parent so you can resend from there.`}),D?(0,p.jsx)(`p`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-label text-destructive`,children:D}):null,(0,p.jsxs)(c,{children:[(0,p.jsx)(l,{disabled:T,children:`Cancel`}),(0,p.jsx)(a,{type:`button`,variant:`destructive`,disabled:T,onClick:()=>void P(),children:T?`Rewinding…`:`Rewind`})]})]})})]}):(0,p.jsx)(`section`,{"aria-label":`Session tree`,className:`flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45`,children:`Start or open a session to browse its branch history.`})}export{g as SessionTreePanel};
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{G as r,J as i,K as a,Q as o}from"./FloatingPortal-XC0MCNnD.js";import{t as s}from"./utils-oBThwhjm.js";import{M as c,O as l,a as u,j as d}from"./useButton-CvcmqA2s.js";import{E as f}from"./createBaseUIEventDetails-DIxvaz-Y.js";import{r as p}from"./toast-DlbKi6K-.js";import{N as m,S as h,_ as g,a as _,c as v,g as y,r as b,t as x,v as S}from"./select-BhV4ikeN.js";import{t as C}from"./useBaseUiId-lKfDDIcw.js";import{t as w}from"./createLucideIcon-CQY2ECfR.js";import{a as T,i as E,n as D,o as O,r as k,s as A,t as j}from"./provider-label-QrVOwKBO.js";import{t as M}from"./check-BTwIaCtI.js";import{t as N}from"./chevron-right-BPCB1mOg.js";import{t as P}from"./eye-iNSvs0UA.js";import{n as F,r as I,t as L}from"./sparkles-BwVa9zQJ.js";import{t as R}from"./hard-drive-B3opVeEB.js";import{i as z,n as B,r as V,t as H}from"./sun-C7zg8Oas.js";import{t as U}from"./loader-circle-BmKYM_C4.js";import{n as W,t as G}from"./notify-Cqdu6EV8.js";import{t as ee}from"./plug-wCz-036u.js";import{a as K,n as te,r as ne}from"./right-panel-context-DHKWoetk.js";import{t as re}from"./refresh-cw-CqPE3kNY.js";import{t as ie}from"./search-Cb6fFWew.js";import{t as q}from"./button-CWYjn8Zk.js";import{a as ae,n as oe,r as se}from"./ui-preferences-B-PNDkyY.js";import{a as J,i as ce,n as Y,o as le,r as ue,s as de,t as fe}from"./switch-C7Myu-Dt.js";import{a as pe,n as me,o as he,r as ge,t as _e}from"./dialog-zCNOQI63.js";import{t as ve}from"./input-7g8_nw-Z.js";import{i as ye,n as be,r as xe,t as Se}from"./input-group-Nq03Qums.js";import{c as Ce,f as we,l as Te,o as Ee}from"./tokens-DinEQBG4.js";import{t as X}from"./spinner-B5TaKP7k.js";import{a as De,i as Oe,n as ke,o as Ae,r as je,s as Me,t as Ne}from"./alert-dialog-DGNvg0B1.js";var Pe={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};Pe.node;var Fe=w(Pe),Ie={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Ie.node;var Le=w(Ie),Re={name:`eye-off`,size:24,node:[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Re.node;var ze=w(Re),Be={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};Be.node;var Ve=w(Be),He={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};He.node;var Ue=w(He),We={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]};We.node;var Ge=w(We),Ke={name:`message-square`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]};Ke.node;var qe=w(Ke),Je={name:`paintbrush`,size:24,node:[[`path`,{d:`m14.622 17.897-10.68-2.913`,key:`vj2p1u`}],[`path`,{d:`M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z`,key:`18tc5c`}],[`path`,{d:`M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15`,key:`ytzfxy`}]]};Je.node;var Ye=w(Je),Xe={name:`save`,size:24,node:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]};Xe.node;var Ze=w(Xe),Qe={name:`star`,size:24,node:[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]};Qe.node;var $e=w(Qe),et={name:`tag`,size:24,node:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]};et.node;var tt=w(et),nt={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};nt.node;var rt=w(nt),Z=e(t(),1),Q=n(),it=new Set([`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`]),at=new Map,ot=500;function st(e){let t=at.get(e);if(t)return t;let n=RegExp(`^${e.split(``).map(e=>e===`*`?`.*`:e===`?`?`.`:ft(e)).join(``)}$`);return at.size>=ot&&at.clear(),at.set(e,n),n}function ct(e,t){return!t||t.length===0?!1:t.some(t=>lt(e,t))}function lt(e,t){let n=ut(t.trim()).toLowerCase(),r=[e.id,e.modelId,e.name,e.key,e.provider&&e.modelId?`${e.provider}/${e.modelId}`:void 0,e.provider&&e.id?`${e.provider}/${e.id}`:void 0].filter(e=>typeof e==`string`).map(e=>e.toLowerCase());if(!dt(n))return r.includes(n);let i=st(n);return r.some(e=>i.test(e))}function ut(e){let t=e.lastIndexOf(`:`);if(t===-1)return e;let n=e.slice(t+1);return it.has(n)?e.slice(0,t):e}function dt(e){return e.includes(`*`)||e.includes(`?`)}function ft(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function pt(e,t){return`${e}/${t}`}function mt(e,t,n=!0){return t&&n&&e.trim().length===0}function ht({attemptedSave:e,label:t,onChange:n,onToggleVisibility:r,placeholder:i,required:a=!0,showPassword:o,value:c}){let l=(0,Z.useId)(),u=mt(c,e,a);return(0,Q.jsxs)(Y,{"data-invalid":u||void 0,children:[(0,Q.jsx)(J,{htmlFor:l,children:t}),(0,Q.jsxs)(Se,{children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(ye,{id:l,type:o?`text`:`password`,placeholder:i,value:c,onChange:e=>n(e.target.value),"aria-label":t,"aria-invalid":u||void 0}),(0,Q.jsx)(be,{align:`inline-end`,children:(0,Q.jsx)(xe,{size:`icon-xs`,className:s(Ce,`transition-[background-color,transform] duration-150 active:scale-[0.96]`),"aria-label":o?`Hide value`:`Show value`,onClick:r,children:o?(0,Q.jsx)(ze,{}):(0,Q.jsx)(P,{})})})]})]})}function gt({attemptedSave:e,icon:t,inputType:n=`text`,label:r,onChange:i,placeholder:a,required:o=!0,value:s}){let c=(0,Z.useId)(),l=mt(s,e,o);return(0,Q.jsxs)(Y,{"data-invalid":l||void 0,children:[(0,Q.jsx)(J,{htmlFor:c,children:r}),(0,Q.jsxs)(Se,{children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(t,{})}),(0,Q.jsx)(ye,{id:c,type:n,placeholder:a,value:s,onChange:e=>i(e.target.value),"aria-label":r,"aria-invalid":l||void 0})]})]})}function _t({children:e,className:t,description:n,icon:r,label:i,trailing:a}){let o=a??e;return(0,Q.jsxs)(Y,{orientation:`horizontal`,className:s(`items-center justify-between gap-6 rounded-xl border border-border/60 bg-card p-4 transition-colors`,t),children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[r?(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-background/60 text-foreground/70`,children:r}):null,(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(J,{className:`text-sm font-medium text-foreground`,children:i}),n?(0,Q.jsx)(ue,{className:`mt-0.5 text-xs text-muted-foreground leading-normal`,children:n}):null]})]}),o?(0,Q.jsx)(`div`,{className:`shrink-0`,children:o}):null]})}var vt={unconfigured:`Add a key below to turn this on.`,unverified:`Checking the key…`,ready:`Ready.`,error:`The TypeSafe key could not be verified.`},yt={settings:`Using the key saved here.`,environment:`Using TYPESAFE_API_KEY from the server environment.`,none:`No key is set.`};function bt({enabled:e,keySource:t,status:n,onClearKey:r,onEnabledChange:i,onSaveKey:a}){let[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(!1),g=(0,Z.useCallback)(async()=>{if(d(!0),p(null),!(!o.trim()||!a)){h(!0);try{await a(o.trim()),s(``),l(!1),d(!1)}catch(e){p(e instanceof Error?e.message:`Failed to save key`)}finally{h(!1)}}},[o,a]),_=(0,Z.useCallback)(async()=>{if(r){h(!0),p(null);try{await r(),s(``)}catch(e){p(e instanceof Error?e.message:`Failed to remove key`)}finally{h(!1)}}},[r]),v=n===`unconfigured`||n===`error`;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsx)(_t,{label:`Describe a command`,description:`Recognise when a message is really asking for a built-in command, like "compact this" or "show the shortcuts". Messages you send are shared with TypeSafe for classification only when this is on. ${vt[n]}`,trailing:(0,Q.jsx)(fe,{"aria-label":`Describe a command`,checked:e,disabled:!i||!e&&v,onCheckedChange:i})}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-xl border p-4`,children:[(0,Q.jsx)(ht,{attemptedSave:u,label:`TypeSafe API key`,onChange:e=>{s(e),f&&p(null)},onToggleVisibility:()=>l(e=>!e),placeholder:`Paste your TypeSafe API key`,showPassword:c,value:o}),f?(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:f}):null,(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:yt[t]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(q,{type:`button`,size:`compact`,disabled:m||!o.trim(),onClick:()=>void g(),children:`Save key`}),t===`settings`?(0,Q.jsx)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:m,onClick:()=>void _(),children:`Remove key`}):null]})]})]})}function xt({className:e,interactive:t,padding:n,tone:r,...i}){return(0,Q.jsx)(`div`,{className:s(we({interactive:t,padding:n,tone:r}),e),...i})}function $({icon:e,title:t,subtitle:n,trailing:r,className:i,interactive:a=!0,tone:o=`default`,truncateSubtitle:c=!0,truncateTitle:l=!0}){return(0,Q.jsxs)(xt,{tone:o,padding:`md`,interactive:a,className:s(`items-center gap-3`,i),children:[e?(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-background/60 text-foreground/70`,children:e}):null,(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:s(`text-sm font-medium text-foreground`,l&&`truncate`),children:t}),n?(0,Q.jsx)(`div`,{className:s(`mt-0.5 text-xs text-muted-foreground`,c?`truncate`:`leading-normal`),children:n}):null]}),r?(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:r}):null]})}function St({actions:e,children:t,description:n,title:r}){return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`h3`,{className:`text-lg font-medium text-balance`,children:r}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm text-pretty text-muted-foreground`,children:n})]}),e?(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5 pt-0.5`,children:e}):null]}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-3`,children:t})]})}function Ct({dirty:e,disabled:t,onRevert:n,onSave:r,saving:i}){return(0,Q.jsxs)(Q.Fragment,{children:[e?(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`icon-compact`,className:`text-muted-foreground transition-transform active:scale-[0.96]`,disabled:t||i,onClick:n,"aria-label":`Revert changes`,children:(0,Q.jsx)(F,{})}):null,(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,className:s(Ee,`transition-transform active:scale-[0.96]`,e&&`border-primary/30 text-primary`),disabled:!e||t||i,onClick:r,children:[i?(0,Q.jsx)(U,{className:`animate-spin`,"data-icon":`inline-start`}):(0,Q.jsx)(Ze,{"data-icon":`inline-start`}),`Commit`]})]})}var wt=1500,Tt=`Unknown or expired OAuth login`;function Et(e){return new Promise(t=>{setTimeout(t,e)})}function Dt({onConfigured:e,onOAuthLogin:t,providerId:n}){let[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),l=(0,Z.useRef)(null),u=(0,Z.useRef)(0),d=(0,Z.useRef)(!1),f=(0,Z.useRef)(t),p=(0,Z.useRef)(e),m=(0,Z.useRef)(n);(0,Z.useEffect)(()=>{f.current=t,p.current=e,m.current=n},[e,t,n]);let h=(0,Z.useCallback)(async e=>{if(!(!e||!f.current))try{await f.current({providerId:m.current,loginId:e,cancel:!0})}catch{}},[]),g=(0,Z.useCallback)(()=>{l.current=null,d.current=!1,i(null),c(``),o(!1)},[]);(0,Z.useEffect)(()=>()=>{u.current+=1;let e=l.current;l.current=null,h(e)},[h]);let _=(0,Z.useCallback)((e,t)=>{if(t!==u.current){e.status===`waiting`&&e.loginId&&h(e.loginId);return}if(e.status===`success`){l.current=null,i(null),c(``),o(!1),G.success(`Provider credentials applied to your active sessions.`),p.current?.();return}if(e.status===`error`){if(e.error===Tt&&l.current===null)return;let t=l.current;l.current=null,t&&e.error!==`Login cancelled`&&h(t),i(e),o(!1);return}e.loginId&&(l.current=e.loginId),i(e)},[h]),v=(0,Z.useCallback)(async()=>{if(!f.current||d.current)return;d.current=!0;let e=u.current;o(!0);let t=l.current;if(l.current=null,i(null),await h(t),e!==u.current){d.current=!1;return}try{let t=await f.current({providerId:m.current});_(t,e)}catch(t){if(e!==u.current)return;i({status:`error`,error:t instanceof Error?t.message:`Failed to start OAuth sign-in`})}finally{d.current=!1,e===u.current&&o(!1)}},[_,h]),y=(0,Z.useCallback)(async()=>{let e=l.current;if(!f.current||!e)return;let t=u.current;o(!0);try{let n=await f.current({providerId:m.current,loginId:e,promptAnswer:s});c(``),_(n,t)}catch(e){if(t!==u.current)return;G.error(e instanceof Error?e.message:`Failed to continue OAuth sign-in`)}finally{t===u.current&&o(!1)}},[_,s]),b=(0,Z.useCallback)(async()=>{u.current+=1;let e=l.current;g(),await h(e)},[h,g]);return(0,Z.useEffect)(()=>{if(!f.current||r?.status!==`waiting`||!r.loginId)return;let e=u.current,t=r.loginId,n=!1;return(async()=>{for(;!n;){try{let r=await f.current({providerId:m.current,loginId:t});if(n||e!==u.current||(_(r,e),r.status!==`waiting`))return}catch(r){if(n||e!==u.current||l.current!==t)return;l.current=null,h(t),i({status:`error`,error:r instanceof Error?r.message:`OAuth sign-in failed`});return}if(await Et(wt),n||e!==u.current||l.current!==t)return}})(),()=>{n=!0}},[_,h,r?.loginId,r?.status]),{busy:a,cancel:b,canStart:!!t,login:r,promptAnswer:s,setPromptAnswer:c,start:v,submitPrompt:y}}function Ot({onConfigured:e,onOAuthLogin:t,provider:n}){let{busy:r,cancel:i,canStart:a,login:o,promptAnswer:s,setPromptAnswer:c,start:l,submitPrompt:u}=Dt({onConfigured:e,onOAuthLogin:t,providerId:n.id}),d=o?.status===`waiting`,f=o?.status===`error`?o.error:void 0,p=d?o?.authUrl:void 0,m=d?o?.userCode:void 0,h=d?o?.instructions:void 0,g=d?o?.prompt:void 0,_=n.authType===`oauth`;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[n.isConfigured&&_&&!d?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Q.jsx)(M,{className:`size-3.5 text-muted-foreground`}),(0,Q.jsx)(`span`,{children:`Connected`})]}):null,d?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsxs)(`p`,{className:`text-sm`,children:[`Sign in with `,n.name,` to store OAuth credentials for this account.`]}),m?(0,Q.jsxs)(`p`,{className:`text-sm`,children:[`Enter this code: `,(0,Q.jsx)(`span`,{className:`font-mono text-foreground`,children:m})]}):null,h&&!m?(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:h}):null,p?(0,Q.jsxs)(q,{type:`button`,size:`compact`,onClick:()=>{window.open(p,`_blank`,`noopener,noreferrer`)},children:[(0,Q.jsx)(Le,{"data-icon":`inline-start`}),`Open sign-in page`]}):g?null:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(X,{className:`size-3`}),`Waiting for sign-in…`]}),g?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:g.message}),(0,Q.jsx)(ve,{value:s,placeholder:g.placeholder,onChange:e=>c(e.target.value),"aria-label":g.message}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:r||!g.allowEmpty&&!s.trim(),onClick:()=>{u()},children:[r?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Continue`]})})]}):null,(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`compact`,disabled:r,onClick:()=>{i()},children:`Cancel sign-in`})})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[f?(0,Q.jsx)(le,{className:`px-3 py-2`,children:(0,Q.jsx)(de,{className:`text-xs text-pretty`,children:f})}):(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:_&&n.isConfigured?`Sign in again with ${n.name} to refresh OAuth credentials.`:_?`Sign in with ${n.name}. No API key is stored; credentials are saved to auth.json.`:`Sign in with ${n.name} to use OAuth credentials; API-key editing remains available above.`}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:r||!a,onClick:()=>{l()},children:[r?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Sign in with `,n.name]})})]})]})}function kt({className:e,...t}){return(0,Q.jsx)(`textarea`,{"data-slot":`textarea`,className:s(`flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,e),...t})}function At(e){switch(e.status){case`connected`:return`Connected`;case`anonymous`:return`Available without sign-in`;case`needs_auth`:return`Sign-in required`;case`disabled`:return`Disabled`;default:return e.status}}function jt(e){let t=e.transport===`http`?e.url:e.commandPreview;return[e.source===`builtin`?`Built-in`:`User`,e.transport===`http`?`HTTP`:`stdio`,At(e),t].filter(e=>!!e).join(` · `)}function Mt({connections:e,isLoading:t,isPending:n,onOAuth:r,onRemove:i,onUpsert:a}){let[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(`http`),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(!0),[g,_]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(``),[b,S]=(0,Z.useState)(``),[C,w]=(0,Z.useState)(``),[T,D]=(0,Z.useState)(``),[O,k]=(0,Z.useState)(null),A=()=>{d(``),p(``),h(!0),_(``),y(``),S(``),w(``),D(``),l(`http`),s(!1)},j=async()=>{if(!a)return;let e=u.trim();try{if(c===`http`)await a({name:e,transport:`http`,url:f.trim(),...m?{oauth:!0}:{},...g.trim()?{bearerTokenEnvVar:g.trim()}:{},force:!0});else{let t=b.split(/\s+/).map(e=>e.trim()).filter(Boolean),n=T.split(`
2
+ `).map(e=>e.trim()).filter(Boolean).flatMap(e=>{let t=e.indexOf(`=`);if(t<=0)return[];let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();return!n||!r?[]:[{child:n,source:r}]});await a({name:e,transport:`stdio`,command:v.trim(),...t.length>0?{args:t}:{},...C.trim()?{cwd:C.trim()}:{},...n.length>0?{env:n}:{},force:!0})}G.success(`MCP connection saved`),A()}catch(e){G.error(e instanceof Error?e.message:`Could not save MCP connection`)}},M=async e=>{if(i)try{await i({name:e}),G.success(`Removed ${e}`),k(null)}catch(e){G.error(e instanceof Error?e.message:`Could not remove MCP connection`)}},N=async e=>{if(r)try{await r({name:e,action:`logout`}),G.success(`Signed out of ${e}`)}catch(e){G.error(e instanceof Error?e.message:`Could not sign out`)}},P=(0,Z.useMemo)(()=>{if(r)return e=>async t=>{let n=!t.loginId&&!t.cancel;return await r({name:e.name,action:n&&e.status===`connected`?`reconnect`:`login`,loginId:t.loginId,promptAnswer:t.promptAnswer,cancel:t.cancel})}},[r]);return(0,Q.jsxs)(St,{title:`MCP`,description:`Connect built-in and user MCP servers. Tokens stay on the server; this list only shows status and environment-variable names.`,actions:(0,Q.jsxs)(q,{type:`button`,size:`compact`,variant:`outline`,disabled:n||o,onClick:()=>s(!0),children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add server`]}),children:[t?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(X,{className:`size-3.5`}),`Loading MCP connections…`]}):null,o?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl border p-4`,children:[(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Name`}),(0,Q.jsx)(ve,{value:u,onChange:e=>d(e.target.value),"aria-label":`MCP server name`})]}),(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Transport`}),(0,Q.jsx)(x,{value:c,onValueChange:e=>l(e),options:[{label:`HTTP`,value:`http`},{label:`stdio`,value:`stdio`}]})]}),c===`http`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`URL`}),(0,Q.jsx)(ve,{value:f,onChange:e=>p(e.target.value),"aria-label":`MCP server URL`})]}),(0,Q.jsxs)(Y,{orientation:`horizontal`,className:`items-center justify-between`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(J,{children:`OAuth`}),(0,Q.jsx)(ue,{children:`Use the browser sign-in flow for this server.`})]}),(0,Q.jsx)(fe,{checked:m,onCheckedChange:e=>h(e),"aria-label":`Use OAuth`})]}),m?null:(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Bearer token environment variable`}),(0,Q.jsx)(ve,{value:g,onChange:e=>_(e.target.value),"aria-label":`Bearer token environment variable`,placeholder:`MCP_BEARER_TOKEN`})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Command`}),(0,Q.jsx)(ve,{value:v,onChange:e=>y(e.target.value),"aria-label":`MCP command`})]}),(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Arguments`}),(0,Q.jsx)(ve,{value:b,onChange:e=>S(e.target.value),"aria-label":`MCP command arguments`})]}),(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Working directory`}),(0,Q.jsx)(ve,{value:C,onChange:e=>w(e.target.value),"aria-label":`MCP working directory`}),(0,Q.jsx)(ue,{children:`Must stay inside the current workspace.`})]}),(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:`Environment mappings`}),(0,Q.jsx)(kt,{value:T,onChange:e=>D(e.target.value),"aria-label":`MCP environment mappings`,placeholder:`CHILD=SOURCE`}),(0,Q.jsx)(ue,{children:`One CHILD=SOURCE pair per line. Only variable names are stored.`})]})]}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(q,{type:`button`,size:`compact`,variant:`ghost`,onClick:A,children:`Cancel`}),(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:n||!u.trim(),onClick:()=>void j(),children:[n?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Save`]})]})]}):null,!t&&e.length===0&&!o?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No MCP connections yet.`}):null,(0,Q.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map(e=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)($,{icon:(0,Q.jsx)(ee,{className:`size-4`}),title:e.label,subtitle:jt(e),trailing:(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.usesOAuth&&e.status!==`needs_auth`?(0,Q.jsx)(q,{type:`button`,size:`compact`,variant:`ghost`,disabled:n||!r,onClick:()=>{N(e.name)},children:`Sign out`}):null,e.source===`user`?O===e.name?(0,Q.jsx)(q,{type:`button`,size:`compact`,variant:`destructive`,disabled:n,onClick:()=>{M(e.name)},children:`Confirm remove`}):(0,Q.jsx)(q,{type:`button`,size:`compact`,variant:`ghost`,disabled:n||!i,"aria-label":`Remove ${e.name}`,onClick:()=>k(e.name),children:(0,Q.jsx)(E,{className:`size-3.5`})}):null]})}),e.error?(0,Q.jsx)(le,{className:`px-3 py-2`,children:(0,Q.jsx)(de,{className:`text-xs text-pretty`,children:e.error})}):null,e.usesOAuth&&P?(0,Q.jsx)(Ot,{provider:{id:e.name,name:e.label,isConfigured:e.status===`connected`,envVarName:``,authType:`oauth`,supportsOAuth:!0},onOAuthLogin:P(e)}):null]},`${e.source}:${e.name}`))})]})}var Nt=[{value:`system`,label:`System`,icon:V},{value:`light`,label:`Light`,icon:H},{value:`dark`,label:`Dark`,icon:B}];function Pt({onThemePreferenceChange:e,themePreference:t}){return(0,Q.jsxs)(Y,{orientation:`horizontal`,className:`items-center justify-between gap-6 rounded-xl border p-4`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(J,{children:`Theme`}),(0,Q.jsx)(ue,{children:`Match the system theme or pick light or dark.`})]}),(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(x,{"aria-label":`Theme`,className:`w-[160px]`,onValueChange:t=>e(t),options:[...Nt],value:t})})]})}function Ft(e,t){return ct({id:e.id,name:e.name,provider:e.provider,modelId:e.modelId},t)}function It({currentPatterns:e,enabled:t,model:n,models:r}){let i=e??[],a=new Set(r.map(e=>Lt(e))),o=new Set;for(let e of r)Ft(e,i)&&o.add(Lt(e));return t?o.add(Lt(n)):o.delete(Lt(n)),[...i.filter(e=>a.has(e)?!1:t||!lt(n,e)),...o]}function Lt(e){return pt(e.provider,e.modelId)}function Rt(e){return[e.name,e.modelId,e.provider,e.id].join(` `).toLowerCase()}function zt({configuredProviderIds:e,discoverableProviderIds:t,discoveringProviderId:n,enabledModels:r,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onOpenChange:c,open:l,providerLabel:u=j}){let[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(new Set),h=d.trim().toLowerCase(),g=(0,Z.useMemo)(()=>i.filter(t=>!e.has(t.provider)||Ft(t,r)?!1:!h||Rt(t).includes(h)),[e,r,i,h]),_=(0,Z.useMemo)(()=>{let e=new Map;for(let t of g){let n=e.get(t.provider);n?n.push(t):e.set(t.provider,[t])}return[...e.entries()]},[g]),v=(0,Z.useMemo)(()=>{let n=t??e;return Array.from(n).filter(t=>e.has(t)).sort((e,t)=>u(e).localeCompare(u(t)))},[e,t,u]),y=(0,Z.useMemo)(()=>{let e=new Map;for(let t of i)Ft(t,r)&&e.set(t.provider,(e.get(t.provider)??0)+1);return e},[r,i]),b=e=>{m(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n})};return(0,Q.jsx)(_e,{open:l,onOpenChange:c,children:(0,Q.jsxs)(me,{className:`max-w-lg`,children:[(0,Q.jsxs)(pe,{children:[(0,Q.jsx)(he,{children:`Add models`}),(0,Q.jsxs)(ge,{children:[`Pick models discovered from your configured providers. For OpenAI Chat Completions, refresh runs`,` `,(0,Q.jsxs)(`span`,{className:`font-medium`,children:[`GET `,`{baseUrl}/models`]}),`.`]})]}),(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:v.map(e=>{let t=n===e,r=y.get(e)??0;return(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:n!==null,onClick:()=>{o(e)},children:[t?(0,Q.jsx)(X,{"data-icon":`inline-start`}):(0,Q.jsx)(re,{"data-icon":`inline-start`}),u(e),r>0?(0,Q.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[`· `,r,` active`]}):null]},e)})}),(0,Q.jsxs)(Se,{children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(ie,{})}),(0,Q.jsx)(ye,{"aria-label":`Search discovered models`,value:d,onChange:e=>f(e.target.value),placeholder:`Search discovered models…`})]}),(0,Q.jsx)(`div`,{className:`max-h-72 overflow-y-auto overscroll-contain`,children:_.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-center text-xs text-pretty text-muted-foreground`,children:g.length===0&&!h?`All discovered models are already in your list, or none are available yet.`:`No models match your search.`}):(0,Q.jsx)(`div`,{className:`flex flex-col gap-3`,children:_.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsxs)(`div`,{className:`px-2 text-caption font-medium tracking-wide text-muted-foreground uppercase`,children:[u(e),(y.get(e)??0)>0?(0,Q.jsxs)(`span`,{className:`ml-1 font-normal normal-case tabular-nums`,children:[`· `,y.get(e),` active`]}):null]}),t.map(e=>{let t=p.has(e.id);return(0,Q.jsxs)(`button`,{type:`button`,className:s(`flex w-full items-center gap-3 rounded-lg px-2 py-2 text-left transition-[background-color,transform] duration-150`,`hover:bg-muted/60 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none active:scale-[0.96]`,t&&`bg-muted/70`),"aria-pressed":t,onClick:()=>b(e),children:[(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-[4px] border border-border/40 bg-background/60`,children:(0,Q.jsx)(D,{provider:e.provider,className:`text-foreground/70`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,Q.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:e.modelId})]}),(0,Q.jsx)(`span`,{className:s(`size-4 rounded border border-border/60`,t&&`border-foreground bg-foreground`),"aria-hidden":!0})]},e.id)})]},e))})}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`compact`,onClick:()=>c(!1),children:`Cancel`}),(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:p.size===0,onClick:()=>{let e=g.filter(e=>p.has(e.id));e.length>0&&a(e),c(!1)},children:[`Add `,p.size>0?(0,Q.jsxs)(`span`,{className:`tabular-nums`,children:[`(`,p.size,`)`]}):null]})]})]})})}function Bt({draft:e,discoveringProviderId:t,modelDirty:n,modelFilter:r,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onModelFilterChange:c,onRemoveModel:l,onSetDefaultModel:u,onRevert:d,onSave:f,providers:p,saving:m,settingsLoading:h}){let[g,_]=(0,Z.useState)(!1),v=!e||h,y=r.trim().toLowerCase(),b=(0,Z.useMemo)(()=>{let t=new Set;for(let e of p)e.isConfigured&&t.add(e.id);for(let n of i)Ft(n,e?.enabledModels)&&t.add(n.provider);return t},[e?.enabledModels,i,p]),x=(0,Z.useMemo)(()=>{let e=new Set;for(let t of p)t.discoverable===!0&&b.has(t.id)&&e.add(t.id);return e},[b,p]),S=(0,Z.useMemo)(()=>t=>!!e?.defaultProvider&&!!e?.defaultModel&&t.provider===e.defaultProvider&&t.modelId===e.defaultModel,[e?.defaultModel,e?.defaultProvider]),C=(0,Z.useMemo)(()=>{let e=new Map;for(let t of p)(t.displayName||t.name)&&e.set(t.id,t.displayName??t.name??t.id);return t=>e.get(t)??j(t)},[p]),w=(0,Z.useMemo)(()=>i.filter(t=>Ft(t,e?.enabledModels)?!y||[t.name,t.modelId,t.provider,t.id].join(` `).toLowerCase().includes(y):!1),[e?.enabledModels,i,y]),T=(0,Z.useMemo)(()=>{let e=new Map;for(let t of w){let n=e.get(t.provider);n?n.push(t):e.set(t.provider,[t])}return[...e.entries()]},[w]),O=i.length===0?`No models discovered yet. Configure a provider, then add models.`:w.length===0&&!y?`Add models from your configured providers to make them available in chat.`:w.length===0?`No models match your search.`:null,k=()=>{_(!0)};return(0,Q.jsxs)(St,{title:`LLM Models`,description:(0,Q.jsxs)(Q.Fragment,{children:[`Models available in chat. Discover from configured providers, add the ones you want, and remove any you do not need — changes save automatically. `,(0,Q.jsx)(`span`,{className:`tabular-nums`,children:w.length}),` in list`,i.length>0?(0,Q.jsxs)(Q.Fragment,{children:[` `,`· `,(0,Q.jsx)(`span`,{className:`tabular-nums`,children:i.length}),` discovered`]}):null,`.`]}),actions:(0,Q.jsx)(Ct,{dirty:n,disabled:v,onRevert:d,onSave:f,saving:m}),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(Se,{className:`flex-1`,children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(ie,{})}),(0,Q.jsx)(ye,{"aria-label":`Search listed models`,value:r,onChange:e=>c(e.target.value),placeholder:`Search listed models…`,disabled:v||w.length===0})]}),(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:v,onClick:k,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add models`]})]}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-3`,"data-testid":`runtime-models-list`,children:O?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8`,children:[(0,Q.jsx)(`p`,{className:`px-1 text-center text-xs text-pretty text-muted-foreground`,children:O}),y?null:(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:v,onClick:k,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add models`]})]}):T.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-xs font-medium text-muted-foreground`,children:C(e)}),t.map(e=>(0,Q.jsx)($,{icon:(0,Q.jsx)(D,{provider:e.provider}),title:e.name,subtitle:`${C(e.provider)} · ${e.modelId}`,trailing:(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[S(e)?(0,Q.jsx)(`span`,{className:`px-2 text-xs font-medium text-muted-foreground`,children:`Default`}):u?(0,Q.jsxs)(q,{type:`button`,variant:`ghost`,size:`compact`,className:s(Te,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 active:scale-[0.96]`),disabled:v,"aria-label":`Set ${e.name} as default`,onClick:()=>u(e),children:[(0,Q.jsx)($e,{"data-icon":`inline-start`}),`Set default`]}):null,(0,Q.jsxs)(q,{type:`button`,variant:`ghost`,size:`compact`,className:s(Te,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]`),disabled:v,"aria-label":`Remove ${e.name}`,onClick:()=>l(e),children:[(0,Q.jsx)(E,{"data-icon":`inline-start`}),`Remove`]})]})},e.id))]},e))}),(0,Q.jsx)(zt,{open:g,configuredProviderIds:b,discoverableProviderIds:x,discoveringProviderId:t,enabledModels:e?.enabledModels,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onOpenChange:_,providerLabel:C})]})}var Vt=`https://opencode.ai/zen/v1`,Ht=`qwen35-122b-a10b`,Ut=`e.g. OpenCode Zen, Nebius, Groq…`,Wt=`model-a, model-b (comma-separated)`,Gt=[{value:`openai-completions`,label:`OpenAI Chat Completions`},{value:`openai-responses`,label:`OpenAI Responses`},{value:`anthropic-messages`,label:`Anthropic Messages`},{value:`google-genai`,label:`Google Generative AI`}];function Kt({attemptedSave:e,apiKey:t,api:n,baseUrl:r,modelId:i,models:a,displayName:o,isCustom:s,onApiKeyChange:c,onApiChange:l,onBaseUrlChange:u,onModelIdChange:d,onModelsChange:f,onDisplayNameChange:p,onTogglePassword:m,openAiChat:h,placeholder:g,showPassword:_}){let v=s&&l,y=s&&f;return(0,Q.jsxs)(ce,{className:`gap-2`,children:[(h||s)&&p?(0,Q.jsx)(gt,{attemptedSave:e,icon:tt,label:`Provider name`,placeholder:Ut,value:o??``,onChange:p}):null,v?(0,Q.jsx)(qt,{value:n??`openai-completions`,onChange:l}):null,(0,Q.jsx)(ht,{attemptedSave:e,label:`API key`,placeholder:g,value:t,showPassword:_,onChange:c,onToggleVisibility:m}),h||s?(0,Q.jsx)(gt,{attemptedSave:e,icon:I,inputType:`url`,label:`Base URL`,placeholder:Vt,value:r,onChange:u}):null,y?(0,Q.jsx)(gt,{attemptedSave:e,icon:Ue,label:`Model ids`,placeholder:Wt,value:a??``,onChange:f}):null,h&&!y?(0,Q.jsx)(gt,{attemptedSave:e,icon:Fe,label:`Model name`,placeholder:Ht,value:i,onChange:d}):null]})}function qt({value:e,onChange:t}){return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`API family`}),(0,Q.jsx)(x,{"aria-label":`API family`,value:e,options:Gt,placeholder:`Select API family`,onValueChange:e=>t(e)})]})}function Jt(e){return e.authType===`oauth`}function Yt(e){return e.supportsOAuth===!0}var Xt={id:`custom`,name:`Custom provider`,isConfigured:!1,envVarName:`CUSTOM_PROVIDER_API_KEY`,displayName:`Custom provider`};function Zt(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function Qt({onRemoveProvider:e,onUpdateProvider:t,providers:n}){let[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(``),[h,_]=(0,Z.useState)(`openai-completions`),[v,b]=(0,Z.useState)(``),[x,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)(``),[O,k]=(0,Z.useState)(!1),[A,j]=(0,Z.useState)(``),[M,N]=(0,Z.useState)(null),P=(0,Z.useMemo)(()=>[...n.filter(e=>e.id!==Xt.id),Xt],[n]),F=(0,Z.useMemo)(()=>P.filter(e=>e.isConfigured),[P]),I=(0,Z.useMemo)(()=>P.filter(e=>!e.isConfigured||e.id===`openai-chat-completions`&&e.providerFamily===void 0),[P]),L=(0,Z.useMemo)(()=>{let e=E.trim().toLowerCase();return e?F.filter(t=>$t(t,e)):F},[F,E]),R=(0,Z.useMemo)(()=>{let e=A.trim().toLowerCase();return I.filter(t=>$t(t,e))},[A,I]),z=(0,Z.useMemo)(()=>{let e=A.trim().toLowerCase();return F.filter(t=>$t(t,e))},[F,A]),B=R.length>0||z.length>0,V=r&&!F.some(e=>e.id===r)?P.find(e=>e.id===r)??null:null,H=()=>{c(``),u(``),f(``),m(``),_(`openai-completions`),b(``),C(!1),T(!1)},U=()=>{i(null),o(!1),H()},W=(e,t)=>{k(!1),j(``),i(e),o(t?.newOccInstance===!0),H();let r=n.find(t=>t.id===e);u(r?.baseUrl??``),b(r?.displayName??(y(e)?r?.name??``:``)),_(r?.api??`openai-completions`),m((r?.modelIds??[]).join(`, `)),f(r?.modelIds?.[0]??``)},ee=()=>{U(),j(``),k(!0)},K=()=>{k(!1),j(``)};return{activeProviders:F,addPickerOpen:O,addPickerQuery:A,api:h,apiKey:s,attemptedSave:w,baseUrl:l,canSave:(0,Z.useMemo)(()=>s.trim().length===0?!1:r?r===`custom`||y(r)?l.trim().length===0||Zt(p).length===0?!1:v.trim().length>0:S(r)?l.trim().length===0||d.trim().length===0?!1:g(r)||a?v.trim().length>0:!0:!0:!0,[s,l,d,p,v,r,a]),closeAddPicker:K,closeEditor:U,confirmRemoveProvider:M,credentialProviders:P,displayName:v,editingIsNewOccInstance:a,editingProvider:r,editingUnconfiguredProvider:V,filteredActiveProviders:L,filteredPickerAvailable:R,filteredPickerConfigured:z,handleRemove:async t=>{if(e)try{await e({providerId:t.id}),r===t.id&&U(),G.success(`${t.name} removed from your configured providers.`),N(null)}catch(e){G.error(e instanceof Error?e.message:`Failed to remove provider`)}},handleSave:async e=>{if(!t)return;T(!0);let n=e===`custom`||y(e),r=S(e);if(n){let n=Zt(p);if(!s.trim()||!l.trim()||!v.trim()||n.length===0)return;try{await t({providerId:e,apiKey:s.trim(),baseUrl:l.trim(),displayName:v.trim(),api:h,models:n,...e===`custom`?{createOccInstance:!0}:{}}),G.success(`Provider credentials applied to your active sessions.`),U(),K()}catch(e){G.error(e instanceof Error?e.message:`Failed to update provider`)}return}let i=r&&g(e),o=r&&(i||a);if(s.trim()&&!(r&&(!l.trim()||!d.trim()))&&!(o&&!v.trim()))try{await t({providerId:e,apiKey:s.trim(),...r?{baseUrl:l.trim(),modelId:d.trim(),...o?{displayName:v.trim()}:{},...a?{createOccInstance:!0}:{}}:{}}),G.success(`Provider credentials applied to your active sessions.`),U(),K()}catch(e){G.error(e instanceof Error?e.message:`Failed to update provider`)}},modelId:d,models:p,openAddPicker:ee,openEditor:W,pickerHasResults:B,resetEditor:H,searchQuery:E,selectProviderFromPicker:e=>{W(e,{newOccInstance:S(e)})},setAddPickerOpen:k,setAddPickerQuery:j,setApi:_,setApiKey:c,setAttemptedSave:T,setBaseUrl:u,setConfirmRemoveProvider:N,setDisplayName:b,setEditingIsNewOccInstance:o,setEditingProvider:i,setModelId:f,setModels:m,setSearchQuery:D,setShowPassword:C,showPassword:x,unconfiguredProviders:I}}function $t(e,t){if(!t)return!0;let n=Yt(e)?Jt(e)?`oauth sign-in login`:`api key oauth sign-in login`:e.id===`custom`||y(e.id)?`custom provider endpoint openai anthropic google compatible`:S(e.id)?`api key base url model name chat completions`:``;return[e.name,e.envVarName,e.id,n].join(` `).toLowerCase().includes(t)}function en({addPickerQuery:e,credentialProvidersLength:t,filteredPickerAvailable:n,filteredPickerConfigured:r,pickerHasResults:i,onClose:a,onQueryChange:o,onSelect:s}){return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`icon-compact`,"aria-label":`Back to providers`,onClick:a,children:(0,Q.jsx)(A,{})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:`Add provider`}),(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:`Choose a provider to store encrypted credentials for this account.`})]})]}),(0,Q.jsxs)(Se,{children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(ie,{})}),(0,Q.jsx)(ye,{type:`text`,placeholder:`Search providers…`,value:e,onChange:e=>o(e.target.value),"aria-label":`Search providers to add`})]}),(0,Q.jsx)(`div`,{className:`max-h-[min(24rem,50dvh)] overflow-y-auto overscroll-contain`,children:i?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[n.length>0?(0,Q.jsx)(`div`,{className:`flex flex-col gap-1`,children:n.map(e=>(0,Q.jsx)(an,{provider:e,configured:!1,onSelect:()=>s(e.id)},e.id))}):null,r.length>0?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[n.length>0?(0,Q.jsx)(`p`,{className:`px-2 pt-1 text-caption font-medium tracking-wide text-muted-foreground uppercase`,children:`Already configured`}):null,r.map(e=>(0,Q.jsx)(an,{provider:e,configured:!0,onSelect:()=>s(e.id)},e.id))]}):null]}):(0,Q.jsx)(`p`,{className:`py-6 text-center text-xs text-pretty text-muted-foreground`,children:t===0?`No providers available.`:`No matching providers found.`})})]})}function tn({onBack:e,onConfigured:t,onOAuthLogin:n,provider:r}){return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`icon-compact`,"aria-label":`Back to provider list`,onClick:e,children:(0,Q.jsx)(A,{})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`p`,{className:`text-sm font-medium`,children:[`Configure `,r.name]}),(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:`OAuth sign-in. Credentials are stored in auth.json for this account.`})]})]}),(0,Q.jsx)(Ot,{provider:r,onConfigured:t,onOAuthLogin:n},r.id)]})}function nn({provider:e,api:t,apiKey:n,baseUrl:r,modelId:i,models:a,displayName:o,showPassword:s,attemptedSave:c,isPending:l,canSave:u,onApiKeyChange:d,onApiChange:f,onBaseUrlChange:m,onModelIdChange:h,onModelsChange:g,onDisplayNameChange:_,onTogglePassword:v,onBack:b,onCancel:x,onConfigured:C,onOAuthLogin:w,onSave:T}){let E=e.id===`custom`||y(e.id),D=k[e.id]??(E?k.custom:{placeholder:`Enter credentials…`,help:`Stored securely in your local environment overrides.`}),O=S(e.id)&&!E,j=Yt(e);return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`icon-compact`,"aria-label":`Back to provider list`,onClick:b,children:(0,Q.jsx)(A,{})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`p`,{className:`text-sm font-medium`,children:[`Configure `,e.name]}),(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:E?`Name this custom provider, pick its API family, then enter its API key, https base URL, and model ids.`:O?`Name this OpenAI-compatible provider, then enter its API key, base URL, and model name.`:`Stored as ${e.envVarName} for this account.`})]})]}),(0,Q.jsx)(Kt,{attemptedSave:c,api:t,apiKey:n,baseUrl:r,modelId:i,models:a,displayName:o,isCustom:E,openAiChat:O,placeholder:D.placeholder,showPassword:s,onApiKeyChange:d,onApiChange:f,onBaseUrlChange:m,onModelIdChange:h,onModelsChange:g,onDisplayNameChange:_,onTogglePassword:v}),(0,Q.jsxs)(le,{className:`px-3 py-2`,children:[(0,Q.jsx)(p,{}),(0,Q.jsx)(de,{className:`text-xs text-pretty`,children:D.help})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`compact`,onClick:x,children:`Cancel`}),(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:l||!u,onClick:T,children:[l?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Save`]})]}),j?(0,Q.jsx)(Ot,{provider:e,onConfigured:C??x,onOAuthLogin:w},`${e.id}-oauth`):null]})}function rn({confirmRemoveProvider:e,isPending:t,onClose:n,onConfirm:r}){return(0,Q.jsx)(Ne,{open:e!==null,onOpenChange:e=>{e||n()},children:(0,Q.jsxs)(Oe,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsxs)(Me,{children:[`Remove `,e?.name??`provider`,`?`]}),(0,Q.jsx)(De,{children:`This clears stored credentials for this provider from your workspace settings. Active sessions will stop using it immediately.`})]}),(0,Q.jsxs)(Ae,{children:[(0,Q.jsx)(je,{disabled:t,children:`Cancel`}),(0,Q.jsxs)(ke,{disabled:t||!e,onClick:()=>{e&&r(e)},children:[t?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Remove provider`]})]})]})})}function an({configured:e,onSelect:t,provider:n}){let r=S(n.id),i=n.id===`custom`||y(n.id),a=Jt(n),o=Yt(n);return(0,Q.jsxs)(`button`,{type:`button`,className:s(`flex w-full items-center gap-3 rounded-lg px-2 py-2 text-left transition-[background-color,transform] duration-150`,`hover:bg-muted/60 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none active:scale-[0.96]`),onClick:t,children:[(0,Q.jsx)(`div`,{className:`flex size-8 shrink-0 items-center justify-center rounded-[4px] border border-border/40 bg-background/60`,children:(0,Q.jsx)(D,{provider:i?`custom`:n.id,api:n.api,className:`text-foreground/70`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`truncate text-sm font-medium`,children:n.name}),(0,Q.jsxs)(`div`,{className:`truncate text-xs text-muted-foreground`,children:[a?`OAuth sign-in`:o?`API key or OAuth`:i?`API family + key + https base URL + models`:r?`API key + base URL + model name`:n.envVarName,e?` · Update`:``]})]})]})}function on({providers:e,editingProvider:t,form:n,operation:r,actions:i,onEdit:a,onCancelEdit:o,onSave:c,onRemove:l,onOAuthLogin:u,onConfigured:d}){let{api:f,apiKey:m,baseUrl:h,modelId:g,models:_,displayName:v,showPassword:b,attemptedSave:x,canSave:C}=n,{isPending:w,canRemove:T}=r,{onApiKeyChange:O,onApiChange:A,onBaseUrlChange:j,onModelIdChange:M,onModelsChange:N,onDisplayNameChange:P,onTogglePassword:F}=i;return(0,Q.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.map(e=>{let n=t===e.id,r=y(e.id),i=k[e.id]??k[r?`custom`:`openai-chat-completions`],I=S(e.id),L=Jt(e),R=Yt(e);return(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)($,{interactive:!1,icon:(0,Q.jsx)(D,{provider:e.id,api:e.api,className:`text-foreground/80`}),title:e.name,subtitle:L?`OAuth sign-in`:R?`API key or OAuth`:r?`Custom provider · API key + base URL + models`:I?`OpenAI-compatible · API key + base URL + model name`:e.envVarName,trailing:(0,Q.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Q.jsxs)(q,{type:`button`,variant:`ghost`,size:`compact`,className:s(Te,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]`),disabled:w||!T,"aria-label":`Remove ${e.name}`,onClick:()=>l(e),children:[(0,Q.jsx)(E,{"data-icon":`inline-start`}),`Remove`]}),(0,Q.jsxs)(q,{type:`button`,variant:`ghost`,size:`compact`,className:s(Te,`h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]`),disabled:w,onClick:()=>{if(n){o();return}a(e.id)},children:[n?null:(0,Q.jsx)(W,{"data-icon":`inline-start`}),n?`Cancel`:`Update`]})]})}),n?(0,Q.jsx)(xt,{tone:`inset`,padding:`md`,className:`flex flex-col gap-2 border-t border-border/30`,children:L?(0,Q.jsx)(Ot,{provider:e,onConfigured:d,onOAuthLogin:u},e.id):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Kt,{attemptedSave:x,api:e.api??f,apiKey:m,baseUrl:h,modelId:g,models:_,displayName:v,isCustom:r,openAiChat:I,placeholder:i.placeholder,showPassword:b,onApiKeyChange:O,onApiChange:A,onBaseUrlChange:j,onModelIdChange:M,onModelsChange:N,onDisplayNameChange:r||e.providerFamily!==void 0?P:void 0,onTogglePassword:F}),(0,Q.jsxs)(le,{className:`px-3 py-2`,children:[(0,Q.jsx)(p,{}),(0,Q.jsx)(de,{className:`text-xs text-pretty`,children:i.help})]}),(0,Q.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:w||!C,onClick:()=>c(e.id),children:[w?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Save`]})}),R?(0,Q.jsx)(Ot,{provider:e,onConfigured:d,onOAuthLogin:u},`${e.id}-oauth`):null]})}):null]},e.id)})})}function sn({isLoading:e,isPending:t,onOAuthLogin:n,onRemoveProvider:r,onUpdateProvider:i,providers:a}){let{activeProviders:o,addPickerOpen:s,addPickerQuery:c,api:l,apiKey:u,attemptedSave:d,baseUrl:f,canSave:p,closeAddPicker:m,closeEditor:h,confirmRemoveProvider:g,credentialProviders:_,displayName:v,editingProvider:y,editingUnconfiguredProvider:b,filteredActiveProviders:x,filteredPickerAvailable:S,filteredPickerConfigured:C,handleRemove:w,handleSave:T,modelId:E,models:D,openAddPicker:O,openEditor:k,pickerHasResults:A,searchQuery:j,selectProviderFromPicker:M,setAddPickerQuery:N,setApi:P,setApiKey:F,setBaseUrl:I,setConfirmRemoveProvider:L,setDisplayName:R,setModelId:z,setModels:B,setSearchQuery:V,setShowPassword:H,showPassword:U}=Qt({onRemoveProvider:r,onUpdateProvider:i,providers:a}),W={api:l,apiKey:u,baseUrl:f,modelId:E,models:D,displayName:v,showPassword:U,attemptedSave:d,canSave:p},G={isPending:t,canRemove:!!r},ee={onApiKeyChange:F,onApiChange:P,onBaseUrlChange:I,onModelIdChange:z,onModelsChange:B,onDisplayNameChange:R,onTogglePassword:()=>H(e=>!e)};return(0,Q.jsxs)(St,{title:`Providers`,description:(0,Q.jsxs)(Q.Fragment,{children:[`Locally, API keys are stored in`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 font-mono text-caption text-foreground`,children:`.env.local`}),`. When deployed, they are stored encrypted in your account.`]}),children:[s?(0,Q.jsx)(en,{addPickerQuery:c,credentialProvidersLength:_.length,filteredPickerAvailable:S,filteredPickerConfigured:C,pickerHasResults:A,onClose:m,onQueryChange:N,onSelect:M}):b&&Jt(b)?(0,Q.jsx)(tn,{provider:b,onBack:O,onConfigured:h,onOAuthLogin:n},b.id):b?(0,Q.jsx)(nn,{provider:b,api:l,apiKey:u,baseUrl:f,modelId:E,models:D,displayName:v,showPassword:U,attemptedSave:d,isPending:t,canSave:p,onApiKeyChange:F,onApiChange:P,onBaseUrlChange:I,onModelIdChange:z,onModelsChange:B,onDisplayNameChange:R,onTogglePassword:()=>H(e=>!e),onBack:O,onCancel:h,onConfigured:h,onOAuthLogin:n,onSave:()=>{y&&T(y)}}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(Se,{className:`flex-1`,children:[(0,Q.jsx)(be,{align:`inline-start`,children:(0,Q.jsx)(ie,{})}),(0,Q.jsx)(ye,{type:`text`,placeholder:`Search credentials…`,value:j,onChange:e=>V(e.target.value),"aria-label":`Search credentials`,disabled:e||o.length===0})]}),(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:e||_.length===0,onClick:O,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add provider`]})]}),e?(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-xs text-muted-foreground`,children:[(0,Q.jsx)(X,{className:`size-3`}),(0,Q.jsx)(`span`,{children:`Loading…`})]}):o.length===0?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-8`,children:[(0,Q.jsx)(`p`,{className:`text-center text-xs text-pretty text-muted-foreground`,children:`No providers configured`}),(0,Q.jsxs)(q,{type:`button`,variant:`outline`,size:`compact`,disabled:_.length===0,onClick:O,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add provider`]})]}):x.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-center text-xs text-pretty text-muted-foreground`,children:`No matching providers found.`}):(0,Q.jsx)(on,{providers:x,editingProvider:y,form:W,operation:G,actions:ee,onEdit:k,onCancelEdit:h,onSave:e=>void T(e),onRemove:L,onOAuthLogin:n,onConfigured:h})]}),(0,Q.jsx)(rn,{confirmRemoveProvider:g,isPending:t,onClose:()=>L(null),onConfirm:e=>{w(e)}})]})}function cn(e){return{defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,defaultThinkingLevel:e.defaultThinkingLevel,enabledModels:e.enabledModels===void 0?null:gn(e.enabledModels)}}function ln(e){let t=e.enabledModels,n=t==null?null:gn(t).toSorted();return{defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,defaultThinkingLevel:e.defaultThinkingLevel,enabledModels:n}}function un(e){return{packages:e.packages,extensions:gn(e.extensions),skills:gn(e.skills),prompts:gn(e.prompts),themes:gn(e.themes),enableSkillCommands:e.enableSkillCommands}}function dn(e){return{compaction:{enabled:e.compaction.enabled,reserveTokens:e.compaction.reserveTokens,keepRecentTokens:e.compaction.keepRecentTokens},retry:{enabled:e.retry.enabled,maxRetries:e.retry.maxRetries,baseDelayMs:e.retry.baseDelayMs},transport:e.transport,steeringMode:e.steeringMode,followUpMode:e.followUpMode}}function fn(e,t){return JSON.stringify(e)===JSON.stringify(t)}function pn(e){let t=e?[...e.skills,...e.prompts,...e.extensions,...e.packages,...e.themes,...e.agentsFiles]:[];return{active:t.filter(e=>e.activationStatus===`active`).length,staged:t.filter(e=>e.activationStatus===`staged`).length,reloadRequired:t.filter(e=>e.activationStatus===`reload-required`).length,diagnostics:e?.diagnostics??[],total:t.length}}function mn(e){return e.map(e=>typeof e==`string`?e:JSON.stringify(e))}function hn(e){let t=[];for(let n of e){let e=n.trim();if(!e)continue;if(!e.startsWith(`{`)){t.push(e);continue}let r=JSON.parse(e);if(!r||typeof r!=`object`||Array.isArray(r))throw Error(`Package JSON entries must be objects.`);t.push(r)}return t}function gn(e){return e.flatMap(e=>{let t=e.trim();return t?[t]:[]})}function _n({draft:e,setDraft:t,updateDraft:n,settings:r,providers:i,models:a,modelCatalog:o,onDiscoverModels:s,saveSettings:c,setSavingSection:l}){let[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)([]),[m,h]=(0,Z.useState)(null),g=(0,Z.useRef)(null),_=(0,Z.useMemo)(()=>{let e=new Set;for(let t of i)t.isConfigured&&e.add(t.id);return e},[i]),v=o??a,y=(0,Z.useMemo)(()=>{let e=new Map;for(let t of v)_.has(t.provider)&&t.available!==!1&&e.set(t.id,t);for(let t of f)_.has(t.provider)&&t.available!==!1&&e.set(t.id,t);return[...e.values()]},[v,_,f]),b=g.current??(r?ln(r.effective):null),x=!!e&&!!b&&!fn(ln(e),b),S=(0,Z.useCallback)(()=>{g.current=null},[]),C=async(e,n)=>{t(e),l(`models`);try{let r=await c(cn(e)),i={...r.effective,enabledModels:r.project.enabledModels??e.enabledModels??r.effective.enabledModels,defaultProvider:r.project.defaultProvider??e.defaultProvider??r.effective.defaultProvider,defaultModel:r.project.defaultModel??e.defaultModel??r.effective.defaultModel,defaultThinkingLevel:r.project.defaultThinkingLevel??e.defaultThinkingLevel??r.effective.defaultThinkingLevel};return g.current=ln(i),t(i),n?.silent||G.success(`Pi settings saved`),!0}catch(e){return G.error(e instanceof Error?e.message:`Settings save failed`),!1}finally{l(null)}},w=e=>{C(e)},T=(t,n)=>{if(!e)return;let r={...e,enabledModels:It({currentPatterns:e.enabledModels,enabled:n,model:t,models:y})};w(r)};return{modelFilter:u,setModelFilter:d,modelOptions:y,modelDirty:x,addModels:t=>{if(!e||t.length===0)return;let n=e.enabledModels;for(let e of t)n=It({currentPatterns:n,enabled:!0,model:e,models:y});w({...e,enabledModels:n})},removeModel:e=>{T(e,!1)},setDefaultModel:t=>{e&&C({...e,defaultProvider:t.provider,defaultModel:t.modelId})},discoverProvider:async e=>{if(s){h(e);try{let t=await s(e);p(e=>{let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()]})}finally{h(null)}}},discoveringProviderId:m,commitModelSettings:C,revertModelDraft:()=>{r&&n(e=>({...e,defaultProvider:r.effective.defaultProvider,defaultModel:r.effective.defaultModel,defaultThinkingLevel:r.effective.defaultThinkingLevel,enabledModels:r.effective.enabledModels}))},resetCommittedModelBaseline:S}}var vn=[{value:`auto`,label:`Auto`},{value:`sse`,label:`SSE`},{value:`websocket`,label:`WebSocket`}],yn=[{value:`all`,label:`All`},{value:`one-at-a-time`,label:`One at a time`}];function bn({draft:e,updateDraft:t}){let n=!e;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)($,{title:`Compaction`,subtitle:`Summarize old turns when context fills up`,trailing:(0,Q.jsx)(fe,{"aria-label":`Compaction`,checked:e?.compaction.enabled??!1,disabled:n,onCheckedChange:e=>t(t=>({...t,compaction:{...t.compaction,enabled:e}}))})}),(0,Q.jsx)($,{title:`Auto-retry`,subtitle:`Retry failed provider requests`,trailing:(0,Q.jsx)(fe,{"aria-label":`Auto-retry`,checked:e?.retry.enabled??!1,disabled:n,onCheckedChange:e=>t(t=>({...t,retry:{...t.retry,enabled:e}}))})}),(0,Q.jsx)($,{title:`Transport`,trailing:(0,Q.jsx)(x,{"aria-label":`Transport`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,transport:e})),options:[...vn],value:e?.transport??`auto`})}),(0,Q.jsx)($,{title:`Steering`,subtitle:`How queued steers are delivered mid-turn`,trailing:(0,Q.jsx)(x,{"aria-label":`Steering`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,steeringMode:e})),options:[...yn],value:e?.steeringMode??`all`})}),(0,Q.jsx)($,{title:`Follow-up`,subtitle:`How queued follow-ups run after the turn`,trailing:(0,Q.jsx)(x,{"aria-label":`Follow-up`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,followUpMode:e})),options:[...yn],value:e?.followUpMode??`all`})})]})}var xn=new Set([`auto`,`global`,`local`,`project`,`workspace`]);function Sn(e){let t=e.source?.trim();if(t&&!xn.has(t))return t;let n=(e.workspacePath??e.path??``).trim();return n?Cn(n):e.name.trim()}function Cn(e){let t=e.replace(/\\/g,`/`);if(/^\/Users\//.test(t)||/^\/home\//.test(t)||/^[A-Za-z]:\//.test(t))return``;if(!t.startsWith(`/`)&&!/^[A-Za-z]:\//.test(t))return t.startsWith(`agent-workspace/`)?wn(`../${t}`):t.startsWith(`../agent-workspace/.pi/`)?wn(t.replace(`../agent-workspace/.pi/`,`../agent-workspace/pi/`)):wn(t);let n=t.match(/\/(agent-workspace\/.+)$/);if(n?.[1])return wn(`../${n[1].replace(/^agent-workspace\/\.pi\//,`agent-workspace/pi/`)}`);let r=t.match(/\/\.pi\/(extensions\/.+|skills\/.+|prompts\/.+|themes\/.+)$/);return r?.[1]?wn(r[1]):``}function wn(e){return e.replace(/\/SKILL\.md$/i,``).replace(/\/index\.(ts|tsx|js|jsx|mjs|cjs)$/i,``)}function Tn(e,t){let n=Cn(t);return e.some(e=>Cn(e)===n)}function En(e,t){let n=t.trim();if(!n)return e;let r=Cn(n);return!r||Tn(e,r)?e:[...e,r]}function Dn({addLabel:e,catalog:t,onChange:n,placeholder:r,values:i}){let[a,o]=(0,Z.useState)(``),s=new Set,c=[];for(let e of t){let t=Sn(e);t.length===0||s.has(t)||(s.add(t),c.push({value:t,label:e.name||t}))}let l=new Map(c.map(e=>[e.value,e.label])),u=e=>l.get(e)??l.get(Cn(e)),d=c.filter(e=>!Tn(i,e.value)),f=()=>{let e=a.trim();e&&(n(En(i,e)),o(``))};return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[i.length===0?(0,Q.jsx)(`p`,{className:`px-1 py-2 text-xs text-pretty text-muted-foreground`,children:`Nothing selected yet.`}):i.map(e=>{let t=u(e);return(0,Q.jsx)($,{interactive:!1,title:t??e,subtitle:t&&t!==e?e:void 0,trailing:(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`icon-compact`,"aria-label":`Remove ${e}`,onClick:()=>n(i.filter(t=>t!==e)),children:(0,Q.jsx)(E,{})})},e)}),d.length>0?(0,Q.jsx)(x,{"aria-label":e,value:null,placeholder:e,options:d,onValueChange:e=>{e&&n(En(i,e))}}):(0,Q.jsxs)(Se,{children:[(0,Q.jsx)(ye,{"aria-label":e,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),f())},placeholder:r}),(0,Q.jsx)(be,{align:`inline-end`,children:(0,Q.jsxs)(xe,{onClick:f,disabled:!a.trim(),children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add`]})})]})]})}function On({draft:e,onEnableSkillCommandsChange:t,onExtensionsChange:n,onPackageRowsChange:r,onPromptsChange:i,onRevert:a,onSave:o,onSkillsChange:s,onThemesChange:c,packageError:l,packageRows:u,resourceDirty:d,resources:f,resourceSummary:p,saving:m,scope:h=`harness`,settingsLoading:g,updateDraft:_}){let v=!e||g||!!l,y=p.total===0?`Empty`:p.reloadRequired>0?`${p.total} · ${p.reloadRequired} reload`:`${p.total}`;return(0,Q.jsx)(St,{title:h===`skills`?`Skills`:`Pi Harness`,description:h===`skills`?`Pick detected workspace skills and slash-command discovery.`:`Runtime (compaction, retry, transport) plus packages, extensions, prompts, and themes.`,actions:(0,Q.jsx)(Ct,{dirty:d,disabled:v,onRevert:a,onSave:o,saving:m}),children:h===`skills`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{title:`Skill slash commands`,trailing:(0,Q.jsx)(fe,{"aria-label":`Skill slash commands`,checked:e?.enableSkillCommands??!0,disabled:!e,onCheckedChange:t})}),(0,Q.jsx)(kn,{label:`Skills`,count:e?.skills.length??0,children:(0,Q.jsx)(Dn,{addLabel:`Add skill`,catalog:f?.skills??[],placeholder:`../agent-workspace/pi/skills`,values:e?.skills??[],onChange:s})})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(bn,{draft:e,updateDraft:_}),(0,Q.jsx)($,{interactive:!1,title:`Catalog`,subtitle:(0,Q.jsx)(`span`,{className:`tabular-nums`,children:y})}),(0,Q.jsxs)(kn,{label:`Packages`,count:u.length,children:[(0,Q.jsx)(Dn,{addLabel:`Add package`,catalog:f?.packages??[],placeholder:`npm:pi-skills or {"source":"npm:pkg"}`,values:u,onChange:r}),l?(0,Q.jsx)(`p`,{className:`px-1 text-xs text-destructive`,children:l}):null]}),(0,Q.jsx)(kn,{label:`Extensions`,count:e?.extensions.length??0,children:(0,Q.jsx)(Dn,{addLabel:`Add extension`,catalog:f?.extensions??[],placeholder:`../agent-workspace/pi/extensions`,values:e?.extensions??[],onChange:n})}),(0,Q.jsx)(kn,{label:`Prompts`,count:e?.prompts.length??0,children:(0,Q.jsx)(Dn,{addLabel:`Add prompt`,catalog:f?.prompts??[],placeholder:`../agent-workspace/pi/prompts`,values:e?.prompts??[],onChange:i})}),(0,Q.jsx)(kn,{label:`Themes`,count:e?.themes.length??0,children:(0,Q.jsx)(Dn,{addLabel:`Add theme`,catalog:f?.themes??[],placeholder:`../agent-workspace/pi/themes`,values:e?.themes??[],onChange:c})})]})})}function kn({children:e,count:t,label:n}){return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 px-1`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:n}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground tabular-nums`,children:t===1?`1 item`:`${t} items`})]}),e]})}function An({isLoading:e,isPending:t,onUpdateProvider:n,providers:r}){let[i,a]=(0,Z.useState)(!1),[o,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),g=(0,Z.useMemo)(()=>r.find(e=>e.id===`daytona`),[r]),_=(0,Z.useMemo)(()=>r.find(e=>e.id===`daytona-target`),[r]),v=!!(g?.isConfigured&&_?.isConfigured),y=()=>{c(``),u(``),f(!1),h(!1)},b=()=>{a(!1),y()},x=async()=>{if(n&&(h(!0),!(!o.trim()&&!l.trim())))try{o.trim()&&await n({providerId:`daytona`,apiKey:o.trim()}),l.trim()&&await n({providerId:`daytona-target`,apiKey:l.trim()}),G.success(`Sandbox provider updated`),b()}catch(e){G.error(e instanceof Error?e.message:`Failed to update provider`)}},S=o.trim().length>0||l.trim().length>0;return(0,Q.jsx)(St,{title:`Sandbox`,description:`Configure isolated execution environments.`,children:e?(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-xs text-muted-foreground`,children:[(0,Q.jsx)(X,{}),(0,Q.jsx)(`span`,{children:`Loading…`})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)($,{interactive:!1,icon:(0,Q.jsx)(R,{className:`size-4 text-foreground/80`}),title:`Daytona`,subtitle:`DAYTONA_API_KEY · DAYTONA_TARGET`,trailing:(0,Q.jsx)(q,{type:`button`,variant:`ghost`,size:`compact`,className:s(Te,`h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]`),onClick:()=>{if(i){b();return}a(!0),y()},children:i?`Cancel`:v?`Update`:`Configure`})}),i?(0,Q.jsxs)(xt,{tone:`inset`,padding:`md`,className:`flex flex-col gap-2 border-t border-border/30`,children:[(0,Q.jsxs)(ce,{className:`gap-2`,children:[(0,Q.jsx)(ht,{attemptedSave:m,label:`Daytona API key`,placeholder:`Enter Daytona API Key…`,value:o,showPassword:d,required:!1,onChange:c,onToggleVisibility:()=>f(e=>!e)}),(0,Q.jsx)(gt,{attemptedSave:m,icon:I,label:`Region / target`,placeholder:`e.g. us-east`,value:l,required:!1,onChange:u})]}),(0,Q.jsxs)(le,{className:`px-3 py-2`,children:[(0,Q.jsx)(p,{}),(0,Q.jsx)(de,{className:`text-xs text-pretty`,children:`Settings are stored securely in your local environment overrides. Provide at least one value to save.`})]}),(0,Q.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,Q.jsxs)(q,{type:`button`,size:`compact`,disabled:t||!S,onClick:()=>void x(),children:[t?(0,Q.jsx)(X,{"data-icon":`inline-start`}):null,`Save`]})})]}):null]})})}var jn={appearance:{id:`appearance`,order:10,title:`Appearance`,ariaLabel:`Appearance settings`,icon:Ye,group:`workspace`},chat:{id:`chat`,order:20,title:`Chat`,ariaLabel:`Chat settings`,icon:qe,group:`workspace`},mcp:{id:`mcp`,order:25,title:`MCP`,ariaLabel:`MCP connection settings`,icon:ee,group:`workspace`},sandbox:{id:`sandbox`,order:30,title:`Sandbox`,ariaLabel:`Sandbox settings`,icon:R,group:`advanced`},providers:{id:`providers`,order:40,title:`Providers`,ariaLabel:`Provider settings`,icon:Ve,group:`models`},"llm-models":{id:`llm-models`,order:50,title:`LLM Models`,ariaLabel:`LLM model settings`,icon:O,group:`models`},skills:{id:`skills`,order:60,title:`Skills`,ariaLabel:`Skill settings`,icon:L,group:`advanced`},"pi-harness":{id:`pi-harness`,order:70,title:`Pi Harness`,ariaLabel:`Pi harness settings`,icon:T,group:`advanced`},keybindings:{id:`keybindings`,order:80,title:`Keybindings`,ariaLabel:`Keybinding settings`,icon:z,group:`advanced`},sessions:{id:`sessions`,order:90,title:`Sessions`,ariaLabel:`Session settings`,icon:rt,group:`workspace`}},Mn=[{id:`workspace`,label:`Workspace`},{id:`models`,label:`Models`},{id:`advanced`,label:`Advanced`}],Nn=Object.values(jn).sort((e,t)=>e.order-t.order);function Pn(e){return Nn.some(t=>t.id===e)}function Fn({draft:e,settings:t,updateDraft:n}){let[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(),s=(0,Z.useMemo)(()=>mn(t?.effective.packages??[]),[t?.effective.packages]),c=r??s;return{packageRows:c,packageError:a,resourceDirty:!!e&&!!t&&(!fn(un(e),un(t.effective))||!fn(dn(e),dn(t.effective))||!fn(c.filter(e=>e.trim()),mn(t.effective.packages))),handlePackageRowsChange:e=>{i(e);try{let t=hn(e);o(void 0),n(e=>({...e,packages:t}))}catch(e){o(e instanceof Error?e.message:String(e))}},revertResourceDraft:()=>{t&&(n(e=>({...e,packages:t.effective.packages,extensions:t.effective.extensions,skills:t.effective.skills,prompts:t.effective.prompts,themes:t.effective.themes,enableSkillCommands:t.effective.enableSkillCommands,compaction:t.effective.compaction,retry:t.effective.retry,transport:t.effective.transport,steeringMode:t.effective.steeringMode,followUpMode:t.effective.followUpMode})),i(null),o(void 0))}}}function In({className:e,...t}){return(0,Q.jsx)(`nav`,{"aria-label":`breadcrumb`,"data-slot":`breadcrumb`,className:s(e),...t})}function Ln({className:e,...t}){return(0,Q.jsx)(`ol`,{"data-slot":`breadcrumb-list`,className:s(`flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground`,e),...t})}function Rn({className:e,...t}){return(0,Q.jsx)(`li`,{"data-slot":`breadcrumb-item`,className:s(`inline-flex items-center gap-1`,e),...t})}function zn({className:e,...t}){return(0,Q.jsx)(`span`,{"data-slot":`breadcrumb-page`,"aria-current":`page`,className:s(`font-normal text-foreground`,e),...t})}function Bn({children:e,className:t,...n}){return(0,Q.jsx)(`li`,{"data-slot":`breadcrumb-separator`,role:`presentation`,"aria-hidden":`true`,className:s(`[&>svg]:size-3.5`,t),...n,children:e??(0,Q.jsx)(N,{})})}var Vn=Z.createContext(void 0);function Hn(){let e=Z.useContext(Vn);if(e===void 0)throw Error(d(53));return e}function Un(e,t,n){if(!e)return 0;let r=getComputedStyle(e),i=`${t}${n===`x`?`Inline`:`Block`}`,a=parseFloat(r[`${i}Start`]);return n===`x`&&t===`margin`?a*2:a+parseFloat(r[`${i}End`])}var Wn=`data-has-overflow-x`,Gn=`data-has-overflow-y`,Kn=`data-overflow-x-start`,qn=`data-overflow-x-end`,Jn=`data-overflow-y-start`,Yn=`data-overflow-y-end`,Xn=e=>t=>t?{[e]:``}:null,Zn={hasOverflowX:Xn(Wn),hasOverflowY:Xn(Gn),overflowXStart:Xn(Kn),overflowXEnd:Xn(qn),overflowYStart:Xn(Jn),overflowYEnd:Xn(Yn),cornerHidden:()=>null},Qn=`--scroll-area-corner-height`,$n=`--scroll-area-corner-width`,er=`data-orientation`,tr={x:0,y:0},nr={width:0,height:0},rr={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},ir={x:!0,y:!0,corner:!0},ar=Z.forwardRef(function(e,t){let{render:n,className:i,overflowEdgeThreshold:a,style:s,...c}=e,{xStart:d,xEnd:f,yStart:p,yEnd:m}=or(a),h=C(),g=o(),v=o(),{nonce:y,disableStyleElements:x}=b(),[S,w]=Z.useState(!1),[T,E]=Z.useState(!1),[D,O]=Z.useState(!1),[k,A]=Z.useState(!1),[j,M]=Z.useState(!1),[N,P]=Z.useState(nr),[F,I]=Z.useState(nr),[L,R]=Z.useState(rr),[z,B]=Z.useState(ir),V=Z.useRef(null),H=Z.useRef(null),U=Z.useRef(null),W=Z.useRef(null),G=Z.useRef(null),ee=Z.useRef(null),K=Z.useRef(null),te=Z.useRef(null),ne=Z.useRef(0),re=Z.useRef(0),ie=Z.useRef(0),q=Z.useRef(0),ae=Z.useRef(`vertical`),oe=Z.useRef(tr),se=Z.useRef(null);function J(e){let t=e?O:E,n=e?g:v;t(!0),n.start(500,()=>{t(!1)})}let ce=l(e=>{let t=e.x-oe.current.x,n=e.y-oe.current.y;oe.current=e,n!==0&&J(!0),t!==0&&J(!1)}),Y=l(()=>{let e=H.current;e&&se.current===null&&(se.current=e.style.scrollSnapType,e.style.scrollSnapType=`none`)}),le=l(e=>{if(e.button!==0||te.current!==null&&(ae.current===`vertical`?G.current:ee.current)?.hasPointerCapture(te.current))return;te.current=e.pointerId,ne.current=e.clientY,re.current=e.clientX,ae.current=e.currentTarget.getAttribute(er);let t=H.current;t&&(ie.current=t.scrollTop,q.current=t.scrollLeft,Y()),(ae.current===`vertical`?G.current:ee.current)?.setPointerCapture(e.pointerId)}),ue=l(e=>{if(e.pointerId!==te.current)return;te.current=null,(ae.current===`vertical`?O:E)(!1),se.current!==null&&(H.current&&(H.current.style.scrollSnapType=se.current),se.current=null);let t=ae.current===`vertical`?G.current:ee.current;t?.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}),de=l(e=>{if(e.pointerId!==te.current)return;if(e.buttons%2==0){ue(e);return}let t=H.current;if(!t)return;let n=ae.current===`vertical`,r=n?G.current:ee.current,i=n?U.current:W.current;if(!r||!i)return;let a=n?`y`:`x`,o=Un(i,`padding`,a),s=Un(r,`margin`,a),c=n?r.offsetHeight:r.offsetWidth,l=(n?i.offsetHeight:i.offsetWidth)-c-o-s,u=n?e.clientY-ne.current:e.clientX-re.current,d=l<=0?0:u/l,f=n?t.scrollHeight:t.scrollWidth,p=n?t.clientHeight:t.clientWidth,m=(n?ie.current:q.current)+d*(f-p);n?t.scrollTop=m:t.scrollLeft=m,e.preventDefault(),J(n)});function fe(e){A(e.pointerType===`touch`)}function pe(e){if(fe(e),e.pointerType!==`touch`){let t=r(V.current,e.target);w(t)}}let me=Z.useMemo(()=>({scrolling:T||D,hasOverflowX:!z.x,hasOverflowY:!z.y,overflowXStart:L.xStart,overflowXEnd:L.xEnd,overflowYStart:L.yStart,overflowYEnd:L.yEnd,cornerHidden:z.corner}),[T,D,z.x,z.y,z.corner,L]),he={role:`presentation`,onPointerEnter:pe,onPointerMove:pe,onPointerDown:fe,onPointerLeave(){w(!1)},style:{position:`relative`,[Qn]:`${N.height}px`,[$n]:`${N.width}px`}},ge=u(`div`,e,{state:me,ref:[t,V],props:[he,c],stateAttributesMapping:Zn}),_e=Z.useMemo(()=>({handlePointerDown:le,handlePointerMove:de,handlePointerUp:ue,handleScroll:ce,disableViewportSnap:Y,cornerSize:N,setCornerSize:P,thumbSize:F,setThumbSize:I,hasMeasuredScrollbar:j,setHasMeasuredScrollbar:M,touchModality:k,cornerRef:K,scrollingX:T,scrollingY:D,hovering:S,setHovering:w,viewportRef:H,scrollbarYRef:U,scrollbarXRef:W,thumbYRef:G,thumbXRef:ee,rootId:h,hiddenState:z,setHiddenState:B,overflowEdges:L,setOverflowEdges:R,viewportState:me,overflowEdgeThreshold:{xStart:d,xEnd:f,yStart:p,yEnd:m}}),[le,de,ue,ce,Y,N,F,j,k,T,D,S,h,z,L,me,d,f,p,m]);return(0,Q.jsxs)(Vn.Provider,{value:_e,children:[!x&&_.getElement(y),ge]})});function or(e){let t=typeof e==`number`?{xStart:e,xEnd:e,yStart:e,yEnd:e}:e;return{xStart:Math.max(0,t?.xStart||0),xEnd:Math.max(0,t?.xEnd||0),yStart:Math.max(0,t?.yStart||0),yEnd:Math.max(0,t?.yEnd||0)}}var sr=Z.createContext(void 0);function cr(){let e=Z.useContext(sr);if(e===void 0)throw Error(d(55));return e}var lr=`--scroll-area-overflow-x-start`,ur=`--scroll-area-overflow-x-end`,dr=`--scroll-area-overflow-y-start`,fr=`--scroll-area-overflow-y-end`,pr=`--scroll-area-thumb-height`,mr=`--scroll-area-thumb-width`,hr=[lr,ur,dr,fr],gr=!1;function _r(){gr||i||(typeof CSS<`u`&&`registerProperty`in CSS&&hr.forEach(e=>{try{CSS.registerProperty({name:e,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),gr=!0)}var vr=Z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{viewportRef:s,scrollbarYRef:d,scrollbarXRef:f,thumbYRef:p,thumbXRef:m,cornerRef:g,cornerSize:y,setCornerSize:b,setThumbSize:x,rootId:S,setHiddenState:C,hiddenState:w,setHasMeasuredScrollbar:T,handleScroll:E,touchModality:D,setHovering:O,setOverflowEdges:k,overflowEdgeThreshold:A,viewportState:j}=Hn(),M=h(),N=Z.useRef(!0),P=Z.useRef([NaN,NaN,NaN,NaN]),F=o(),I=o(),L=l(()=>{let e=s.current,t=d.current,n=f.current,r=p.current,i=m.current,a=g.current;if(!e)return;let o=e.scrollHeight,c=e.scrollWidth,l=e.clientHeight,u=e.clientWidth,h=e.scrollTop,_=e.scrollLeft,S=P.current,w=Number.isNaN(S[0]);if(S[0]=l,S[1]=o,S[2]=u,S[3]=c,w&&T(!0),o===0||c===0)return;let E=yr(e),D=E.y,O=E.x,j=u/c,N=l/o,F=Math.max(0,c-u),I=Math.max(0,o-l),L=0,R=0;O||(L=v(M===`rtl`?-_:_,F),R=F-L);let z=D?0:v(h,I),B=D?0:I-z,V=O?0:u,H=D?0:l,U=0,W=0;!O&&!D&&(U=t?.offsetWidth||0,W=n?.offsetHeight||0);let G=y.width===0&&y.height===0,ee=G?U:0,K=G?W:0,te=Un(n,`padding`,`x`),ne=Un(t,`padding`,`y`),re=Un(i,`margin`,`x`),ie=Un(r,`margin`,`y`),q=V-te-re,ae=H-ne-ie,oe=n?Math.min(n.offsetWidth-ee,q):q,se=t?Math.min(t.offsetHeight-K,ae):ae,J=Math.max(16,oe*j),ce=Math.max(16,se*N);if(x(e=>br(e,{width:J,height:ce})),t&&r){let e=xr(r,pr,h,I,o,ce,t.offsetHeight-ce-ne-ie);r.style.transform=`translate3d(0,${e}px,0)`}if(n&&i){let e=n.offsetWidth-J-te-re,t=xr(i,mr,M===`rtl`?-_:_,F,c,J,e);i.style.transform=`translate3d(${M===`rtl`?-t:t}px,0,0)`}let Y=[L,R,z,B];hr.forEach((t,n)=>{e.style.setProperty(t,`${Y[n]}px`)}),a&&b(e=>br(e,{width:U,height:W})),C(e=>br(e,E));let le={xStart:!O&&L>A.xStart,xEnd:!O&&R>A.xEnd,yStart:!D&&z>A.yStart,yEnd:!D&&B>A.yEnd};k(e=>br(e,le))});c(()=>{_r()},[]),c(()=>{queueMicrotask(L)},[L,w,M,A.xStart,A.xEnd,A.yStart,A.yEnd]),c(()=>{s.current?.matches(`:hover`)&&O(!0)},[s,O]),c(()=>{let e=s.current;if(typeof ResizeObserver>`u`||!e)return;let t=!1,n=new ResizeObserver(()=>{if(!t){t=!0;let n=P.current;if(n[0]===e.clientHeight&&n[1]===e.scrollHeight&&n[2]===e.clientWidth&&n[3]===e.scrollWidth)return}L()});return n.observe(e),I.start(0,()=>{let t=e.getAnimations({subtree:!0});t.length!==0&&Promise.allSettled(t.map(e=>e.finished)).then(L).catch(()=>{})}),()=>{n.disconnect(),I.clear()}},[L,s,I]);function R(){N.current=!1}let z={role:`presentation`,...S&&{"data-id":`${S}-viewport`},tabIndex:w.x&&w.y?-1:0,className:_.className,style:{overflow:`scroll`},onScroll(){s.current&&(L(),(D||!N.current)&&E({x:s.current.scrollLeft,y:s.current.scrollTop}),F.start(100,()=>{N.current=!0}))},onWheel:R,onPointerMove:R,onPointerEnter:R,onKeyDown:R},B=u(`div`,e,{ref:[t,s],state:j,props:[z,a],stateAttributesMapping:Zn}),V=Z.useMemo(()=>({computeThumbPosition:L}),[L]);return(0,Q.jsx)(sr.Provider,{value:V,children:B})});function yr(e){let t=e.clientHeight>=e.scrollHeight,n=e.clientWidth>=e.scrollWidth;return{y:t,x:n,corner:t||n}}function br(e,t){for(let n in t)if(e[n]!==t[n])return t;return e}function xr(e,t,n,r,i,a,o){let s=m(n,0,r),c=n-s,l=Math.max(16,a*i/(i+Math.abs(c)));return e.style.setProperty(t,c?`${l}px`:``),(r?s/r*o:0)+(c>0?a-l:0)}var Sr=Z.createContext(void 0);function Cr(){let e=Z.useContext(Sr);if(e===void 0)throw Error(d(54));return e}var wr=Z.forwardRef(function(e,t){let{render:n,className:i,orientation:o=`vertical`,keepMounted:s=!1,style:c,...l}=e,{hovering:d,scrollingX:p,scrollingY:m,hiddenState:g,scrollbarYRef:_,scrollbarXRef:v,viewportRef:y,thumbYRef:b,thumbXRef:x,handlePointerDown:S,handlePointerUp:C,handleScroll:w,disableViewportSnap:T,rootId:E,thumbSize:D,hasMeasuredScrollbar:O,viewportState:k}=Hn(),A=o===`vertical`,j={...k,hovering:d,scrolling:A?m:p,orientation:o},M=h(),N=!O&&!s,P=A?g.y:g.x,F=s||!P;Z.useEffect(()=>{if(!F)return;let e=y.current,t=A?_.current:v.current;if(!t)return;function n(t){if(!e||t.ctrlKey)return;let n=!A,r=n?`scrollLeft`:`scrollTop`,i=n?t.deltaX:t.deltaY;if(i===0)return;let a=n?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight,o=n&&M===`rtl`?-a:0,s=n&&M===`rtl`?0:a,c=e[r];c<=o&&i<0||c>=s&&i>0||(t.preventDefault(),e[r]=Math.min(s,Math.max(o,c+i)),w({x:e.scrollLeft,y:e.scrollTop}))}return f(t,`wheel`,n,{passive:!1})},[M,w,A,v,_,F,y]);let I={...E&&{"data-id":`${E}-scrollbar`},"aria-hidden":!0,onPointerDown(e){if(e.button!==0)return;let t=a(e.nativeEvent),n=A?b.current:x.current;if(n&&r(n,t))return;let i=y.current;if(!i)return;let o=A?_.current:v.current;if(!n||!o)return;let s=A?`y`:`x`,c=Un(n,`margin`,s),l=Un(o,`padding`,s),u=A?n.offsetHeight:n.offsetWidth,d=o.getBoundingClientRect(),f=A?e.clientY-d.top-u/2-l+c/2:e.clientX-d.left-u/2-l+c/2,p=A?i.scrollHeight:i.scrollWidth,m=A?i.clientHeight:i.clientWidth,h=(A?o.offsetHeight:o.offsetWidth)-u-l-c;if(h<=0)return;let g=f/h,C=p-m;T(),A?i.scrollTop=g*C:i.scrollLeft=M===`rtl`?-(1-g)*C:g*C,w({x:i.scrollLeft,y:i.scrollTop}),S(e)},onMouseDown(e){e.preventDefault()},onPointerUp:C,onPointerCancel:C,style:{position:`absolute`,touchAction:`none`,WebkitUserSelect:`none`,userSelect:`none`,visibility:N?`hidden`:void 0,...A?{top:0,bottom:`var(${Qn})`,insetInlineEnd:0,[pr]:`${D.height}px`}:{insetInlineStart:0,insetInlineEnd:`var(${$n})`,bottom:0,[mr]:`${D.width}px`}}},L=u(`div`,e,{ref:[t,A?_:v],state:j,props:[I,l],stateAttributesMapping:Zn});return F?(0,Q.jsx)(Sr.Provider,{value:o,children:L}):null}),Tr=Z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{computeThumbPosition:o}=cr(),{hasMeasuredScrollbar:s,viewportState:l}=Hn(),d=Z.useRef(null),f=Z.useRef(s);return c(()=>{if(typeof ResizeObserver>`u`)return;let e=!1,t=new ResizeObserver(()=>{!e&&(e=!0,!f.current)||o()});return d.current&&t.observe(d.current),()=>{t.disconnect()}},[o]),u(`div`,e,{ref:[t,d],state:l,stateAttributesMapping:Zn,props:[{role:`presentation`,style:{minWidth:`fit-content`}},a]})}),Er=Z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{thumbYRef:o,thumbXRef:s,handlePointerDown:c,handlePointerMove:l,handlePointerUp:d,scrollingX:f,scrollingY:p,hasMeasuredScrollbar:m}=Hn(),h=Cr(),g=h===`vertical`;return u(`div`,e,{ref:[t,g?o:s],state:{scrolling:g?p:f,orientation:h},props:[{onPointerDown:c,onPointerMove:l,onPointerUp:d,onPointerCancel:d,style:{visibility:m?void 0:`hidden`,...g?{height:`var(--scroll-area-thumb-height)`}:{width:`var(--scroll-area-thumb-width)`}}},a]})}),Dr=Z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{cornerRef:o,cornerSize:s,hiddenState:c}=Hn(),l=u(`div`,e,{ref:[t,o],props:[{"aria-hidden":!0,style:{position:`absolute`,bottom:0,insetInlineEnd:0,width:s.width,height:s.height}},a]});return c.corner?null:l});function Or(){let[e,t]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(typeof window>`u`)return;let e=new AbortController,{signal:n}=e,r=()=>{let e=`ontouchstart`in window||navigator.maxTouchPoints>0,n=window.matchMedia(`(pointer: coarse)`).matches;t(e&&n)};return window.matchMedia(`(pointer: coarse)`).addEventListener(`change`,r,{signal:n}),window.addEventListener(`pointerdown`,r,{signal:n}),r(),()=>e.abort()},[]),e}var kr=(0,Z.createContext)(!1),Ar=(0,Z.forwardRef)(({className:e,children:t,viewportClassName:n,orientation:r=`vertical`,...i},a)=>{let o=Or();return(0,Q.jsx)(kr.Provider,{value:o,children:o?(0,Q.jsx)(`div`,{ref:a,role:`group`,"data-slot":`scroll-area`,"aria-roledescription":`scroll area`,className:s(`relative overflow-hidden`,e),...i,children:(0,Q.jsx)(`div`,{"data-slot":`scroll-area-viewport`,className:s(`size-full overscroll-contain rounded-[inherit]`,r===`vertical`&&`overflow-y-auto`,r===`horizontal`&&`overflow-x-auto`,r===`both`&&`overflow-auto`,n),tabIndex:0,children:t})}):(0,Q.jsxs)(ar,{ref:a,"data-slot":`scroll-area`,className:s(`relative overflow-hidden`,e),...i,children:[(0,Q.jsx)(vr,{"data-slot":`scroll-area-viewport`,className:s(`size-full rounded-[inherit]`,n),children:(0,Q.jsx)(Tr,{className:s(r===`vertical`&&`w-full min-w-full`),children:t})}),r!==`horizontal`&&(0,Q.jsx)(jr,{orientation:`vertical`}),r!==`vertical`&&(0,Q.jsx)(jr,{orientation:`horizontal`}),r===`both`&&(0,Q.jsx)(Dr,{})]})})});Ar.displayName=`ScrollArea`;var jr=(0,Z.forwardRef)(({className:e,orientation:t=`vertical`,...n},r)=>(0,Z.useContext)(kr)?null:(0,Q.jsx)(wr,{ref:r,orientation:t,"data-slot":`scroll-area-scrollbar`,className:s(`group/scrollbar absolute z-20 flex touch-none select-none`,`opacity-0 transition-opacity duration-120 ease-out delay-160`,`data-[hovering]:duration-160 data-[scrolling]:duration-160`,`data-[hovering]:opacity-100 data-[scrolling]:opacity-100`,`data-[hovering]:delay-0 data-[scrolling]:delay-0`,t===`vertical`&&`top-0 right-0 h-full w-2.5`,t===`horizontal`&&`bottom-0 left-0 h-2.5 w-full flex-col`,e),...n,children:(0,Q.jsx)(Er,{"data-slot":`scroll-area-thumb`,className:s(`relative rounded-lg bg-[rgb(var(--overlay)/0.08)] transition-[background-color,width,height] duration-160 ease-in-out`,`group-hover/scrollbar:bg-[rgb(var(--overlay)/0.12)] active:!bg-[rgb(var(--overlay)/0.16)]`,t===`vertical`&&`mx-auto my-1 w-1 -translate-x-0.5 h-[var(--scroll-area-thumb-height)] group-hover/scrollbar:w-1.5`,t===`horizontal`&&`my-auto mx-1 h-1 -translate-y-0.5 w-[var(--scroll-area-thumb-width)] group-hover/scrollbar:h-1.5`)})}));jr.displayName=`ScrollBar`;function Mr(){let{isLoadingMcp:e,isLoadingProviders:t,isUpdatingMcp:n,isUpdatingProvider:r,mcpConnections:i=[],modelCatalog:a,onDiscoverModels:o,onMcpOAuth:s,onOAuthLogin:c,onRemoveMcp:l,onRemoveProvider:u,onThemePreferenceChange:d,onUpdateMcp:f,onUpdateProvider:p,providers:m=[],saveSettings:h,settings:g,settingsLoading:_,themePreference:v}=ne(),{models:y,resources:b}=te(),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(null),T=pn(b),E=e=>{S(t=>t&&e(t))},{packageRows:D,packageError:O,resourceDirty:k,handlePackageRowsChange:A,revertResourceDraft:j}=Fn({draft:x,settings:g,updateDraft:E}),{modelFilter:M,setModelFilter:N,modelOptions:P,modelDirty:F,addModels:I,removeModel:L,setDefaultModel:R,discoverProvider:z,discoveringProviderId:B,commitModelSettings:V,revertModelDraft:H,resetCommittedModelBaseline:U}=_n({draft:x,setDraft:S,updateDraft:E,settings:g,providers:m,models:y,modelCatalog:a,onDiscoverModels:o,saveSettings:h,setSavingSection:w}),W=F||k;return(0,Z.useEffect)(()=>{if(!g)return;let e=g.effective;x&&W||x&&fn(x,e)||S(e)},[x,W,g]),{isLoadingMcp:e,isLoadingProviders:t,isUpdatingMcp:n,isUpdatingProvider:r,mcpConnections:i,onMcpOAuth:s,onOAuthLogin:c,onRemoveMcp:l,onRemoveProvider:u,onThemePreferenceChange:d,onUpdateMcp:f,onUpdateProvider:p,providers:m,resources:b,settingsLoading:_,themePreference:v,draft:x,savingSection:C,packageRows:D,packageError:O,modelFilter:M,setModelFilter:N,resourceSummary:T,modelOptions:P,modelDirty:F,resourceDirty:k,revertResourceDraft:j,revertModelDraft:H,resetDraft:()=>{g&&S(g.effective)},updateDraft:E,handlePackageRowsChange:A,addModels:I,removeModel:L,setDefaultModel:R,discoverProvider:z,discoveringProviderId:B,saveSection:async(e,t)=>{if(e===`models`&&x){if(!await V(x))throw Error(`Settings save failed`);return}w(e);try{await h(t),G.success(`Pi settings saved`)}catch(e){throw G.error(e instanceof Error?e.message:`Settings save failed`),e}finally{w(null)}},requestCloseSettings:async()=>C===`models`?`wait`:k?`discard-prompt`:F&&x?await V(x,{silent:!0})?`close`:`discard-prompt`:`close`,resetCommittedModelBaseline:U}}function Nr({active:e,onClick:t,icon:n,label:r}){return(0,Q.jsxs)(`button`,{type:`button`,onClick:t,className:s(`flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-label transition-colors`,e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,Q.jsx)(n,{className:`size-4 shrink-0`}),(0,Q.jsx)(`span`,{children:r})]})}function Pr({open:e,onOpenChange:t,initialTab:n}){return(0,Z.useEffect)(()=>{oe(se())},[]),(0,Q.jsx)(Fr,{initialTab:n,onOpenChange:t,open:e})}function Fr({initialTab:e,onOpenChange:t,open:n}){let r=(0,Z.useRef)(()=>{t(!1)});return(0,Q.jsx)(_e,{open:n,onOpenChange:(e,n)=>{if(e){t(!0);return}r.current(n)},children:n?(0,Q.jsx)(Lr,{initialTab:e,onCloseAttemptRef:r,onOpenChange:t}):null})}function Ir({activeTab:e,composerIntent:t,form:n,onComposerIntentChange:r,onComposerIntentKeyChange:i,preferences:a,updatePreference:o}){let{isLoadingMcp:s,isLoadingProviders:c,isUpdatingMcp:l,isUpdatingProvider:u,mcpConnections:d,onMcpOAuth:f,onOAuthLogin:p,onRemoveMcp:m,onRemoveProvider:h,onThemePreferenceChange:g,onUpdateMcp:_,onUpdateProvider:v,providers:y,resources:b,settingsLoading:S,themePreference:C,draft:w,savingSection:T,packageRows:E,packageError:D,modelFilter:O,setModelFilter:k,resourceSummary:A,modelOptions:j,modelDirty:M,resourceDirty:N,revertResourceDraft:P,revertModelDraft:F,updateDraft:I,handlePackageRowsChange:L,addModels:R,removeModel:z,setDefaultModel:B,discoverProvider:V,discoveringProviderId:H,saveSection:U}=n,W=e=>(0,Q.jsx)(On,{scope:e,draft:w,updateDraft:I,onEnableSkillCommandsChange:e=>I(t=>({...t,enableSkillCommands:e})),onExtensionsChange:e=>I(t=>({...t,extensions:e})),onPackageRowsChange:L,onPromptsChange:e=>I(t=>({...t,prompts:e})),onRevert:P,onSave:()=>w&&U(`resources`,{...un(w),...e===`harness`?dn(w):{}}),onSkillsChange:e=>I(t=>({...t,skills:e})),onThemesChange:e=>I(t=>({...t,themes:e})),packageError:D,packageRows:E,resourceDirty:N,resources:b,resourceSummary:A,saving:T===`resources`,settingsLoading:S});return{appearance:()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-lg font-medium`,children:`Appearance`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Customize the look and feel of the interface.`})]}),(0,Q.jsx)(Pt,{onThemePreferenceChange:g,themePreference:C}),(0,Q.jsx)(_t,{label:`Density`,description:`Adjust spacing across chat and panels.`,children:(0,Q.jsx)(x,{"aria-label":`Density`,value:a.density,onValueChange:e=>o(`density`,e),options:[{label:`Comfortable`,value:`comfortable`},{label:`Compact`,value:`compact`}]})}),(0,Q.jsx)(_t,{label:`Motion`,description:`Respect the system setting or reduce UI motion.`,children:(0,Q.jsx)(x,{"aria-label":`Motion`,value:a.motion,onValueChange:e=>o(`motion`,e),options:[{label:`System`,value:`system`},{label:`Reduced`,value:`reduced`}]})})]}),chat:()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-lg font-medium`,children:`Chat`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Control transcript behavior.`})]}),(0,Q.jsx)(_t,{label:`Streaming transcript`,description:`Follow new output or preserve the reading position.`,children:(0,Q.jsx)(x,{"aria-label":`Streaming transcript`,value:a.transcript,onValueChange:e=>o(`transcript`,e),options:[{label:`Follow output`,value:`follow`},{label:`Manual`,value:`manual`}]})}),(0,Q.jsx)(bt,{enabled:t?.enabled??!1,keySource:t?.keySource??`none`,status:t?.status??`unconfigured`,onClearKey:()=>i?.(null),onEnabledChange:r,onSaveKey:e=>i?.(e)})]}),mcp:()=>(0,Q.jsx)(Mt,{connections:d,isLoading:s??!1,isPending:l??!1,onOAuth:f,onRemove:m,onUpsert:_}),sandbox:()=>(0,Q.jsx)(An,{isLoading:c??!1,isPending:u??!1,providers:y,onUpdateProvider:v}),providers:()=>(0,Q.jsx)(sn,{isLoading:c??!1,isPending:u??!1,providers:y,onOAuthLogin:p,onRemoveProvider:h,onUpdateProvider:v}),"llm-models":()=>(0,Q.jsx)(Bt,{draft:w,discoveringProviderId:H,modelDirty:M,modelFilter:O,modelOptions:j,onAddModels:R,onDiscoverProvider:V,onModelFilterChange:k,onRemoveModel:z,onSetDefaultModel:B,providers:y,onRevert:F,onSave:()=>w&&U(`models`,cn(w)),saving:T===`models`,settingsLoading:S}),skills:()=>W(`skills`),"pi-harness":()=>W(`harness`),keybindings:()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 text-sm`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-lg font-medium`,children:`Keybindings`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Every shortcut also has a visible control in the header, panel, or composer.`})]}),(0,Q.jsxs)(`div`,{className:`rounded-xl border p-4 font-mono text-xs leading-7`,children:[(0,Q.jsx)(`div`,{children:`Command palette: Ctrl/Command K`}),(0,Q.jsx)(`div`,{children:`Conversation sidebar: Ctrl/Command B`}),(0,Q.jsx)(`div`,{children:`Toggle Resources: Ctrl/Command Shift 1`}),(0,Q.jsx)(`div`,{children:`Toggle Workspace: Ctrl/Command Shift 2`}),(0,Q.jsx)(`div`,{children:`Toggle Artifacts: Ctrl/Command Shift 3`}),(0,Q.jsx)(`div`,{children:`Focus active panel: Ctrl/Command Shift P`}),(0,Q.jsx)(`div`,{children:`Return focus to chat: Ctrl/Command Shift C`}),(0,Q.jsx)(`div`,{children:`Close active panel: Escape`})]})]}),sessions:()=>(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-lg font-medium`,children:`Sessions`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Set local conversation preferences. Provider and workspace configuration remains Fleet Prime-owned.`})]}),(0,Q.jsx)(_t,{label:`Confirm session deletion`,description:`Require confirmation before deleting a saved conversation.`,children:(0,Q.jsx)(fe,{checked:a.confirmSessionDelete,onCheckedChange:e=>o(`confirmSessionDelete`,e),"aria-label":`Confirm session deletion`})}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Provider credentials, OAuth, models, sandbox configuration, and workspace selection are managed by Fleet Prime and its CLI.`})]})}[e]()}function Lr({initialTab:e,onCloseAttemptRef:t,onOpenChange:n}){let r=Mr(),{composerIntent:i,onComposerIntentChange:a,onComposerIntentKeyChange:o}=ne(),{resourceDirty:s,revertResourceDraft:c,resetDraft:l,requestCloseSettings:u,resetCommittedModelBaseline:d}=r,[f,p]=(0,Z.useState)(()=>e??`appearance`),[m,h]=(0,Z.useState)(se);(0,Z.useEffect)(()=>{ae(m)},[m]);let g=(e,t)=>{h(n=>({...n,[e]:t}))},[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(`resource`),S=Nn.find(e=>e.id===f)??Nn[0],C=(e,t)=>{if(e){n(!0);return}t?.cancel(),(async()=>{let e=await u();if(e===`close`){n(!1);return}if(e===`wait`){G.message(`Saving model list…`);return}b(s?`resource`:`model`),v(!0)})()};t.current=e=>{C(!1,e)};let w=()=>{c(),l(),d(),v(!1),n(!1)};(0,Z.useEffect)(()=>{d()},[d]);let T=(0,Q.jsx)(Ir,{activeTab:f,composerIntent:i,form:r,onComposerIntentChange:a,onComposerIntentKeyChange:o,preferences:m,updatePreference:g});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(me,{className:`flex h-[min(640px,calc(100dvh-4rem))] w-full max-w-[calc(100%-2rem)] overflow-hidden rounded-2xl p-0 sm:max-w-[min(860px,calc(100%-2rem))]`,children:[(0,Q.jsx)(he,{className:`sr-only`,children:`Settings`}),(0,Q.jsx)(ge,{className:`sr-only`,children:`Customize your settings here.`}),(0,Q.jsxs)(`div`,{className:`flex h-full w-full min-h-0 min-w-0 flex-1`,children:[(0,Q.jsxs)(`nav`,{"aria-label":`Settings sections`,className:`hidden h-full w-52 shrink-0 flex-col border-r border-border bg-sidebar sm:flex`,children:[(0,Q.jsx)(`div`,{className:`px-6 pt-6 pb-2 text-label font-semibold`,children:`Settings`}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 pb-6`,children:Mn.map(e=>(0,Q.jsxs)(`div`,{className:`py-2`,children:[(0,Q.jsx)(`p`,{className:`px-2 pb-1 text-caption font-medium uppercase tracking-wide text-muted-foreground`,children:e.label}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:Nn.filter(t=>t.group===e.id).map(e=>(0,Q.jsx)(Nr,{active:f===e.id,onClick:()=>p(e.id),icon:e.icon,label:e.title},e.id))})]},e.id))})]}),(0,Q.jsxs)(`main`,{className:`flex h-full w-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,Q.jsx)(`header`,{className:`flex h-14 w-full shrink-0 items-center gap-2 border-b border-border/10 px-6`,children:(0,Q.jsx)(`div`,{className:`flex w-full flex-1 items-center justify-between`,children:(0,Q.jsx)(In,{children:(0,Q.jsxs)(Ln,{children:[(0,Q.jsx)(Rn,{className:`hidden sm:block`,children:`Settings`}),(0,Q.jsx)(Bn,{className:`hidden sm:block`}),(0,Q.jsx)(Rn,{children:(0,Q.jsx)(zn,{children:S.title})})]})})})}),(0,Q.jsx)(`div`,{className:`w-full shrink-0 border-b border-border/10 bg-muted/5 px-4 py-2.5 sm:hidden`,children:(0,Q.jsx)(x,{"aria-label":`Settings sections`,value:f,onValueChange:e=>{Pn(e)&&p(e)},options:Nn.map(e=>({label:e.title,value:e.id}))})}),(0,Q.jsx)(Ar,{className:`min-h-0 w-full flex-1`,children:(0,Q.jsx)(`div`,{id:`panel-${f}`,role:`tabpanel`,"aria-label":S.title,tabIndex:0,className:`w-full p-6 outline-none`,children:T})})]})]})]}),(0,Q.jsx)(Ne,{open:_,onOpenChange:v,children:(0,Q.jsxs)(Oe,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(Me,{children:`Discard unsaved changes?`}),(0,Q.jsx)(De,{children:y===`resource`?`Your resource changes have not been committed. If you leave settings now, those changes will be lost.`:`Your model list could not be saved. If you leave settings now, those changes will be lost.`})]}),(0,Q.jsxs)(Ae,{children:[(0,Q.jsx)(je,{children:`Keep editing`}),(0,Q.jsx)(ke,{onClick:w,children:`Discard changes`})]})]})})]})}export{Pr as SettingsDialog};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CQY2ECfR.js";var t={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};t.node;var n=e(t);export{n as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./utils-CFDGLzf6.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{"data-slot":`skeleton`,className:t(`animate-pulse rounded-md bg-muted`,e),...r})}export{r as t};
1
+ import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./utils-oBThwhjm.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{"data-slot":`skeleton`,className:t(`animate-pulse rounded-md bg-muted`,e),...r})}export{r as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-NZYk81nU.js";import{i as t,n}from"./resource-helpers-CKbSmzpw.js";import{t as r}from"./skeleton-DNAr5ULI.js";var i=e();function a({description:e,icon:t,title:n}){return(0,i.jsxs)(`div`,{className:`my-1.5 rounded-sm bg-foreground/5 px-2.5 py-2`,children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2 text-label font-medium text-foreground/65`,children:[(0,i.jsx)(t,{className:`size-3.5`}),(0,i.jsx)(`span`,{children:n})]}),(0,i.jsx)(`p`,{className:`mt-1 text-caption leading-4 text-foreground/40`,children:e})]})}function o({id:e,icon:n,items:r,label:a}){return(0,i.jsxs)(`section`,{id:`resource-section-${e}`,className:`flex min-w-0 flex-col gap-2 py-2.5`,"aria-label":`${a} resources`,children:[(0,i.jsxs)(`div`,{className:`flex min-w-0 items-center text-body leading-5 text-foreground/45`,children:[(0,i.jsx)(`span`,{className:`truncate underline decoration-foreground/25 underline-offset-2`,children:a}),(0,i.jsx)(`span`,{className:`ml-1 shrink-0 text-caption leading-4 text-foreground/30 tabular-nums no-underline`,children:r.length})]}),(0,i.jsx)(`ul`,{className:`flex min-w-0 flex-col items-stretch gap-1.5`,"data-testid":`resource-chip-section-${a.toLowerCase()}`,children:r.length===0?(0,i.jsx)(`li`,{className:`inline-flex h-7.5 items-center rounded-lg border border-border/60 bg-background px-3 text-body leading-5 text-foreground/35 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)]`,children:`Empty`}):r.map(e=>(0,i.jsx)(s,{icon:n,item:e,stacked:!0},t(e)))})]})}function s({icon:e,item:t,stacked:r=!1}){let a=n(t);return(0,i.jsxs)(`li`,{className:`max-w-full rounded-lg border border-border/70 bg-background px-2.5 text-body leading-5 text-foreground/80 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)] ${r?`flex min-h-9 w-full min-w-0 items-center gap-2 py-1.5`:`inline-flex h-7.5 items-center gap-1`}`,"aria-label":a,"data-testid":`resource-chip`,title:a,children:[(0,i.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,i.jsx)(c,{icon:e}),(0,i.jsx)(`span`,{className:`min-w-0 truncate`,children:t.name})]}),t.source&&(0,i.jsx)(`span`,{className:`max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-micro leading-3 text-foreground/35`,children:t.source}),t.activationStatus&&(0,i.jsx)(`span`,{className:`max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-micro leading-3 text-foreground/35`,children:t.activationStatus})]})}function c({icon:e}){return(0,i.jsx)(`span`,{className:`inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-foreground/4 text-foreground/45`,children:(0,i.jsx)(e,{className:`size-3.5`})})}function l(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-24`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-20 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-24 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-16 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-28 rounded-full`})]})]}),(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-28`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-22 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-18 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-26 rounded-full`})]})]}),(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-20`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-24 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-20 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-30 rounded-full`})]})]})]})}function u(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-2 p-1`,children:[(0,i.jsx)(r,{className:`h-7 w-full rounded-sm`}),(0,i.jsx)(r,{className:`h-6 w-[90%]`}),(0,i.jsx)(r,{className:`h-6 w-[85%]`}),(0,i.jsx)(r,{className:`h-6 w-[70%]`}),(0,i.jsx)(r,{className:`h-6 w-[80%]`}),(0,i.jsx)(r,{className:`h-6 w-[60%]`}),(0,i.jsx)(r,{className:`h-6 w-[75%]`}),(0,i.jsx)(r,{className:`h-6 w-[55%]`})]})}function d(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-3 p-2`,children:[(0,i.jsx)(r,{className:`h-4 w-3/4`}),(0,i.jsx)(r,{className:`h-4 w-full`}),(0,i.jsx)(r,{className:`h-4 w-[95%]`}),(0,i.jsx)(r,{className:`h-4 w-[80%]`}),(0,i.jsx)(r,{className:`h-4 w-full`}),(0,i.jsx)(r,{className:`h-4 w-[70%]`}),(0,i.jsx)(r,{className:`h-4 w-[90%]`}),(0,i.jsx)(r,{className:`h-4 w-[60%]`})]})}export{a,o as i,d as n,u as r,l as t};
1
+ import{t as e}from"./jsx-runtime-NZYk81nU.js";import{i as t,n}from"./resource-helpers-CKbSmzpw.js";import{t as r}from"./skeleton-B_Lq2XFl.js";var i=e();function a({description:e,icon:t,title:n}){return(0,i.jsxs)(`div`,{className:`my-1.5 rounded-sm bg-foreground/5 px-2.5 py-2`,children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2 text-label font-medium text-foreground/65`,children:[(0,i.jsx)(t,{className:`size-3.5`}),(0,i.jsx)(`span`,{children:n})]}),(0,i.jsx)(`p`,{className:`mt-1 text-caption leading-4 text-foreground/40`,children:e})]})}function o({id:e,icon:n,items:r,label:a}){return(0,i.jsxs)(`section`,{id:`resource-section-${e}`,className:`flex min-w-0 flex-col gap-2 py-2.5`,"aria-label":`${a} resources`,children:[(0,i.jsxs)(`div`,{className:`flex min-w-0 items-center text-body leading-5 text-foreground/45`,children:[(0,i.jsx)(`span`,{className:`truncate underline decoration-foreground/25 underline-offset-2`,children:a}),(0,i.jsx)(`span`,{className:`ml-1 shrink-0 text-caption leading-4 text-foreground/30 tabular-nums no-underline`,children:r.length})]}),(0,i.jsx)(`ul`,{className:`flex min-w-0 flex-col items-stretch gap-1.5`,"data-testid":`resource-chip-section-${a.toLowerCase()}`,children:r.length===0?(0,i.jsx)(`li`,{className:`inline-flex h-7.5 items-center rounded-lg border border-border/60 bg-background px-3 text-body leading-5 text-foreground/35 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)]`,children:`Empty`}):r.map(e=>(0,i.jsx)(s,{icon:n,item:e,stacked:!0},t(e)))})]})}function s({icon:e,item:t,stacked:r=!1}){let a=n(t);return(0,i.jsxs)(`li`,{className:`max-w-full rounded-lg border border-border/70 bg-background px-2.5 text-body leading-5 text-foreground/80 shadow-[0_1px_4px_-1px_rgba(0,0,0,0.06)] ${r?`flex min-h-9 w-full min-w-0 items-center gap-2 py-1.5`:`inline-flex h-7.5 items-center gap-1`}`,"aria-label":a,"data-testid":`resource-chip`,title:a,children:[(0,i.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,i.jsx)(c,{icon:e}),(0,i.jsx)(`span`,{className:`min-w-0 truncate`,children:t.name})]}),t.source&&(0,i.jsx)(`span`,{className:`max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-micro leading-3 text-foreground/35`,children:t.source}),t.activationStatus&&(0,i.jsx)(`span`,{className:`max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-micro leading-3 text-foreground/35`,children:t.activationStatus})]})}function c({icon:e}){return(0,i.jsx)(`span`,{className:`inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-foreground/4 text-foreground/45`,children:(0,i.jsx)(e,{className:`size-3.5`})})}function l(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-24`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-20 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-24 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-16 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-28 rounded-full`})]})]}),(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-28`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-22 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-18 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-26 rounded-full`})]})]}),(0,i.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,i.jsx)(r,{className:`h-4 w-20`}),(0,i.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,i.jsx)(r,{className:`h-7 w-24 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-20 rounded-full`}),(0,i.jsx)(r,{className:`h-7 w-30 rounded-full`})]})]})]})}function u(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-2 p-1`,children:[(0,i.jsx)(r,{className:`h-7 w-full rounded-sm`}),(0,i.jsx)(r,{className:`h-6 w-[90%]`}),(0,i.jsx)(r,{className:`h-6 w-[85%]`}),(0,i.jsx)(r,{className:`h-6 w-[70%]`}),(0,i.jsx)(r,{className:`h-6 w-[80%]`}),(0,i.jsx)(r,{className:`h-6 w-[60%]`}),(0,i.jsx)(r,{className:`h-6 w-[75%]`}),(0,i.jsx)(r,{className:`h-6 w-[55%]`})]})}function d(){return(0,i.jsxs)(`div`,{className:`flex flex-col gap-3 p-2`,children:[(0,i.jsx)(r,{className:`h-4 w-3/4`}),(0,i.jsx)(r,{className:`h-4 w-full`}),(0,i.jsx)(r,{className:`h-4 w-[95%]`}),(0,i.jsx)(r,{className:`h-4 w-[80%]`}),(0,i.jsx)(r,{className:`h-4 w-full`}),(0,i.jsx)(r,{className:`h-4 w-[70%]`}),(0,i.jsx)(r,{className:`h-4 w-[90%]`}),(0,i.jsx)(r,{className:`h-4 w-[60%]`})]})}export{a,o as i,d as n,u as r,l as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CQY2ECfR.js";var t={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};t.node;var n=e(t),r={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};r.node;var i=e(r),a={name:`sparkles`,size:24,node:[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]],aliases:[`stars`]};a.node;var o=e(a);export{i as n,n as r,o as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./utils-CFDGLzf6.js";import{t as n}from"./loader-circle-BmKYM_C4.js";var r=e();function i({className:e,...i}){return(0,r.jsx)(n,{"data-slot":`spinner`,role:`status`,"aria-label":`Loading`,className:t(`size-4 animate-spin`,e),...i})}export{i as t};
1
+ import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./utils-oBThwhjm.js";import{t as n}from"./loader-circle-BmKYM_C4.js";var r=e();function i({className:e,...i}){return(0,r.jsx)(n,{"data-slot":`spinner`,role:`status`,"aria-label":`Loading`,className:t(`size-4 animate-spin`,e),...i})}export{i as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./prompt-input-Dy-DSPqF.js";import{t as n}from"./subagent-transcript-Bx-rHni-.js";var r=e();function i({disabled:e,sending:n,onSend:i,onStop:a,placeholder:o=`Message this subagent… (Enter to steer)`}){return(0,r.jsx)(`div`,{className:`shrink-0 border-t border-border/60 bg-background/80 px-4 py-3 backdrop-blur`,children:(0,r.jsx)(`div`,{className:`mx-auto w-full max-w-3xl`,children:(0,r.jsx)(t,{"aria-label":`Message subagent`,disabled:e,loading:n,minRows:1,onSubmit:e=>i(e),onStop:a,placeholder:o})})})}function a({child:e,parentSessionId:t,state:a}){let o=a.error??(a.status===`error`?Error(e.error??`The subagent thread ended with an error.`):void 0),s=a.loading?`loading`:a.status===`error`||o?`error`:`ready`,c=t!==void 0&&!a.loading;return(0,r.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,r.jsx)(n,{child:e,fullWidth:!0,parentSessionId:t,status:a.status,transcript:{status:s,messages:a.messages,presentation:a.presentation,error:o},onRefresh:a.refresh}),(0,r.jsx)(i,{disabled:!c,sending:a.sending,onSend:e=>void a.sendMessage(e),onStop:a.stop})]})}export{a as SubagentChatPanel};
1
+ import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./prompt-input-CoV1gTUQ.js";import{t as n}from"./subagent-transcript-CNQ9wGk2.js";var r=e();function i({disabled:e,sending:n,onSend:i,onStop:a,placeholder:o=`Message this subagent… (Enter to steer)`}){return(0,r.jsx)(`div`,{className:`shrink-0 border-t border-border/60 bg-background/80 px-4 py-3 backdrop-blur`,children:(0,r.jsx)(`div`,{className:`mx-auto w-full max-w-3xl`,children:(0,r.jsx)(t,{"aria-label":`Message subagent`,disabled:e,loading:n,minRows:1,onSubmit:e=>i(e),onStop:a,placeholder:o})})})}function a({child:e,parentSessionId:t,state:a}){let o=a.error??(a.status===`error`?Error(e.error??`The subagent thread ended with an error.`):void 0),s=a.loading?`loading`:a.status===`error`||o?`error`:`ready`,c=t!==void 0&&!a.loading;return(0,r.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,r.jsx)(n,{child:e,fullWidth:!0,parentSessionId:t,status:a.status,transcript:{status:s,messages:a.messages,presentation:a.presentation,error:o},onRefresh:a.refresh}),(0,r.jsx)(i,{disabled:!c,sending:a.sending,onSend:e=>void a.sendMessage(e),onStop:a.stop})]})}export{a as SubagentChatPanel};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./utils-oBThwhjm.js";import{t as i}from"./bot-DETalD3q.js";import{a,c as o,d as s,f as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _}from"./tool-part-normalizer-CYK62WZM.js";import{t as v}from"./session-tool-renderer-C7mYeUOs.js";import{n as y}from"./file-text-cqOanUYv.js";import{t as b}from"./circle-check-DBhaebaM.js";import{t as x}from"./loader-circle-BmKYM_C4.js";import{t as S}from"./refresh-cw-CqPE3kNY.js";import{t as C}from"./button-CWYjn8Zk.js";import{t as w}from"./prime-agent-artifacts-C-g1VPiW.js";import{n as T}from"./reasoning-line-DGdPUMwT.js";import{a as E,c as D,i as O,n as k,o as A,r as j,s as M,t as N}from"./trace-IsV5RRvM.js";import{t as P}from"./tool-timeline-eNqH1zj7.js";var F=e(t(),1),I=n();function L({children:e,tree:t,className:n}){let i=(0,F.useMemo)(()=>s(e,t),[e,t]),a=i.some(e=>e.status===`queued`||e.status===`running`||e.status===`recovering`),[o,l]=(0,F.useState)(a);return i.length===0?null:(0,I.jsx)(N,{className:r(`mt-2`,n),"data-testid":`subagent-trace`,children:(0,I.jsxs)(k,{open:o||a,onOpenChange:l,children:[(0,I.jsx)(O,{"aria-label":a?`Subagents working`:`Subagents completed`,children:(0,I.jsxs)(M,{status:a?`running`:void 0,children:[(0,I.jsx)(A,{children:a?(0,I.jsx)(x,{className:`animate-spin`}):(0,I.jsx)(b,{})}),(0,I.jsx)(D,{children:a?`Subagents working`:`Subagents completed`}),(0,I.jsx)(E,{children:i.length})]})}),(0,I.jsx)(j,{children:(0,I.jsx)(N,{className:`gap-1`,children:i.map(e=>(0,I.jsxs)(M,{style:{paddingLeft:`${Math.max(0,e.depth??0)*12}px`},children:[(0,I.jsx)(A,{children:c(e.status)}),(0,I.jsx)(D,{children:e.label}),e.model?(0,I.jsx)(E,{children:e.model}):null,(0,I.jsx)(E,{className:`capitalize`,children:e.status}),e.error||e.answerPreview||e.progressNote||e.activity?.toolName?(0,I.jsx)(E,{className:`max-w-56 truncate`,children:e.error||e.answerPreview||e.progressNote||e.activity?.toolName}):null]},e.id))})})]})})}function R({turn:e,isLast:t,isStreaming:n,presentation:r,artifacts:i}){let s=(0,F.useMemo)(()=>e.assistants.flatMap((r,i)=>a(g((r.parts??[]).filter(e=>e.type!==`tool-FleetReasoning`&&e.type!==`tool-Thinking`)),{messageId:r.id,isLast:t&&i===e.assistants.length-1,isStreaming:n,suppressQuestionTool:!0,ToolRendererComponent:v,TextRendererComponent:u})),[t,n,e.assistants]);return(0,I.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[e.user?(0,I.jsx)(h,{from:`user`,children:(0,I.jsx)(_,{children:(0,I.jsx)(m,{message:e.user,enableImagePreview:!1})})}):null,e.assistants.length>0?(0,I.jsx)(h,{from:`assistant`,children:(0,I.jsx)(_,{children:(0,I.jsx)(o,{variant:`ghost`,children:(0,I.jsxs)(l,{children:[(0,I.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t&&i.length>0?(0,I.jsx)(P,{messages:[],artifacts:i,streaming:n}):null,t&&r?(0,I.jsx)(L,{tree:r.rlmTree,children:r.rlmChildren}):null]})})})}):null]})}function z(e,t){return e.user?.id??e.assistants[0]?.id??`subagent-turn-${t}`}function B({child:e,parentSessionId:t,transcript:n,onRefresh:a,fullWidth:o=!1,status:s}){let c=(0,F.useMemo)(()=>n?.status===`loading`?[]:T(n?.messages??[]),[n]),l=s??p(e),u=(0,F.useMemo)(()=>n?.status===`loading`?[]:w(n?.messages??[],n?.presentation,l),[l,n]),m=(0,F.useMemo)(()=>{let e=new Set((n?.messages??[]).flatMap(e=>e.parts.flatMap(e=>`toolCallId`in e&&e.toolCallId?[e.toolCallId]:[])));return u.flatMap(e=>e.artifacts).filter(t=>!t.sourceToolCallId||!e.has(t.sourceToolCallId))},[u,n]),h=n?.presentation,g=(0,F.useCallback)((e,t)=>{let n=t===c.length-1;return(0,I.jsx)(R,{turn:e,isLast:n,isStreaming:n&&l===`streaming`,presentation:n?h:void 0,artifacts:n?m:[]})},[m,l,h,c.length]),_=e.sessionName||e.label,[v,b]=(0,F.useState)(null);(0,F.useEffect)(()=>{b(e.lastHeardFrom?new Date(e.lastHeardFrom).toLocaleTimeString():null)},[e.lastHeardFrom]);let x=(0,F.useRef)(null);return(0,I.jsxs)(`section`,{"aria-label":`Subagent thread: ${e.label}`,className:r(o?`flex min-h-0 min-w-0 flex-1 flex-col`:`space-y-2`,`min-w-0`),"data-testid":o?`subagent-conversation-surface`:void 0,children:[(0,I.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2 rounded-md border border-border/60 bg-background px-2.5 py-2`,children:[(0,I.jsx)(i,{className:`mt-0.5 size-3.5 shrink-0 text-foreground/45`}),(0,I.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,I.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-foreground/80`,children:_}),(0,I.jsx)(`span`,{className:`shrink-0 text-micro capitalize text-foreground/45`,children:e.status})]}),e.model?(0,I.jsx)(`p`,{className:`truncate font-mono text-micro text-foreground/40`,children:e.model}):null,v?(0,I.jsxs)(`p`,{className:`truncate text-micro text-foreground/40`,children:[`Heartbeat: `,v]}):null,e.progressNote&&e.status===`running`?(0,I.jsxs)(`p`,{className:`truncate text-micro text-foreground/50`,title:e.progressNote,children:[`Progress: `,e.progressNote]}):null,e.answerPreview||e.recap?(0,I.jsx)(`p`,{className:`mt-1 line-clamp-3 whitespace-pre-wrap text-caption leading-4 text-foreground/55`,children:e.answerPreview??e.recap}):null]}),a?(0,I.jsx)(C,{"aria-label":`Refresh ${e.label} thread`,className:`shrink-0 text-foreground/40 hover:text-foreground/70`,onClick:a,size:`icon-compact`,title:`Refresh ${e.label} thread`,type:`button`,variant:`ghost`,children:(0,I.jsx)(S,{className:r(`size-3.5`,n?.status===`loading`&&`animate-spin`)})}):null]}),t?n?.status===`loading`?(0,I.jsx)(`div`,{className:r(`flex items-center justify-center rounded-md border border-dashed border-border/70 text-caption text-foreground/45`,o?`min-h-32 flex-1`:`min-h-32`),children:`Loading subagent thread…`}):n?.status===`error`&&c.length===0?(0,I.jsxs)(`div`,{role:`alert`,className:`flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-caption leading-4 text-destructive`,children:[(0,I.jsx)(y,{className:`mt-0.5 size-3.5 shrink-0`}),(0,I.jsx)(`span`,{children:n.error?.message??`Unable to load this subagent thread.`})]}):c.length===0?(0,I.jsx)(`p`,{className:`rounded-md border border-dashed border-border/70 p-3 text-caption leading-4 text-foreground/45`,children:`This subagent thread has no messages yet.`}):(0,I.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[n?.error?(0,I.jsxs)(`div`,{role:`alert`,className:`mx-4 mt-2 flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-caption leading-4 text-destructive sm:mx-6`,children:[(0,I.jsx)(y,{className:`mt-0.5 size-3.5 shrink-0`}),(0,I.jsx)(`span`,{children:n.error.message})]}):null,(0,I.jsx)(`div`,{className:r(`min-h-0 rounded-md border border-border/60 bg-background`,o?`flex min-h-0 flex-1 flex-col border-x-0 rounded-none border-b-0`:`h-96 max-h-[calc(100svh-18rem)]`),children:(0,I.jsx)(f,{busy:l===`streaming`,className:o?`min-h-0 flex-1`:void 0,followOutput:l===`streaming`,label:`Transcript for ${e.label}`,smooth:l!==`streaming`,viewportRef:x,viewportClassName:o?`px-0`:void 0,contentClassName:r(`flex flex-col gap-4`,o?`mx-auto w-full max-w-3xl px-4 py-6 sm:px-6`:`px-2.5 py-3`),children:(0,I.jsx)(d,{estimateSize:320,getItemKey:z,itemGap:16,items:c,renderItem:g,viewportRef:x})})})]}):(0,I.jsx)(`p`,{className:`rounded-md border border-dashed border-border/70 p-3 text-caption leading-4 text-foreground/45`,children:`This subagent thread is unavailable until the parent session is active.`})]})}export{B as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./utils-CFDGLzf6.js";import{t as i}from"./bot-DETalD3q.js";import{f as a,p as o}from"./tool-part-normalizer-NbPs9kd1.js";import{t as s}from"./chevron-right-BPCB1mOg.js";import{t as c}from"./button-BJZe4vNJ.js";import{t as l}from"./subagent-transcript-Bx-rHni-.js";var u=e(t(),1),d=n();function f({agents:e,loadSession:t,onOpenTab:n,parentSessionId:f,tree:p}){let m=(0,u.useMemo)(()=>a(e,p),[e,p]),[h,g]=(0,u.useState)(null),[_,v]=(0,u.useState)({}),y=(0,u.useRef)(new Map),b=m.find(e=>e.id===h)??m[0];(0,u.useEffect)(()=>{h&&m.some(e=>e.id===h)||g(m[0]?.id??null)},[m,h]);let x=(0,u.useCallback)(async(e,n=!1)=>{if(!f)return;let r=`${f}:${e.id}:${e.status}:${e.timestamp}:${e.activeSessionId??``}`,i=_[e.id];if(!n&&i?.requestKey===r)return;let a=(y.current.get(e.id)??0)+1;y.current.set(e.id,a),v(t=>({...t,[e.id]:{requestKey:r,status:`loading`,messages:[]}}));try{let n=await t(f,e.id);if(y.current.get(e.id)!==a)return;v(t=>({...t,[e.id]:{requestKey:r,status:`ready`,messages:n.messages,presentation:n.presentation}}))}catch(t){if(y.current.get(e.id)!==a)return;v(n=>({...n,[e.id]:{requestKey:r,status:`error`,messages:[],error:t instanceof Error?t:Error(String(t))}}))}},[t,f,_]);return(0,u.useEffect)(()=>{b&&x(b)},[x,b]),m.length===0?(0,d.jsx)(`section`,{"aria-label":`Subagents`,className:`flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45`,children:`Subagent threads will appear here when Prime delegates work.`}):(0,d.jsxs)(`section`,{"aria-label":`Subagents`,className:`space-y-2 pb-1`,children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-sm bg-foreground/5 px-2 py-1.5`,children:[(0,d.jsx)(i,{className:`size-3.5 shrink-0 text-foreground/45`}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-label font-medium text-foreground/70`,children:`Invoked subagents`}),(0,d.jsx)(`span`,{className:`shrink-0 text-micro text-foreground/40`,children:m.length})]}),(0,d.jsx)(`div`,{className:`space-y-0.5`,"data-testid":`subagent-thread-list`,children:m.map(e=>{let t=e.id===b?.id;return(0,d.jsxs)(c,{type:`button`,variant:`ghost`,size:`compact`,"aria-pressed":t,className:r(`flex w-full min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,t&&`bg-foreground/8`),style:{paddingLeft:`${8+Math.max(0,e.depth??0)*12}px`},onClick:()=>{g(e.id),n?.(e.id)},children:[(0,d.jsx)(`span`,{className:`shrink-0`,children:o(e.status)}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-foreground/80`,children:e.label}),(0,d.jsx)(s,{className:`size-3 shrink-0 text-foreground/30`}),(0,d.jsx)(`span`,{className:`shrink-0 text-micro capitalize text-foreground/45`,children:e.status})]},e.id)})}),b?(0,d.jsx)(l,{child:b,parentSessionId:f,transcript:_[b.id],onRefresh:()=>void x(b,!0)}):null]})}export{f as SubagentsPanelContent};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./utils-oBThwhjm.js";import{t as i}from"./bot-DETalD3q.js";import{d as a,f as o}from"./tool-part-normalizer-CYK62WZM.js";import{t as s}from"./chevron-right-BPCB1mOg.js";import{t as c}from"./button-CWYjn8Zk.js";import{t as l}from"./subagent-transcript-CNQ9wGk2.js";var u=e(t(),1),d=n();function f({agents:e,loadSession:t,onOpenTab:n,parentSessionId:f,tree:p}){let m=(0,u.useMemo)(()=>a(e,p),[e,p]),[h,g]=(0,u.useState)(null),[_,v]=(0,u.useState)({}),y=(0,u.useRef)(new Map),b=m.find(e=>e.id===h)??m[0];(0,u.useEffect)(()=>{h&&m.some(e=>e.id===h)||g(m[0]?.id??null)},[m,h]);let x=(0,u.useCallback)(async(e,n=!1)=>{if(!f)return;let r=`${f}:${e.id}:${e.status}:${e.timestamp}:${e.activeSessionId??``}`,i=_[e.id];if(!n&&i?.requestKey===r)return;let a=(y.current.get(e.id)??0)+1;y.current.set(e.id,a),v(t=>({...t,[e.id]:{requestKey:r,status:`loading`,messages:[]}}));try{let n=await t(f,e.id);if(y.current.get(e.id)!==a)return;v(t=>({...t,[e.id]:{requestKey:r,status:`ready`,messages:n.messages,presentation:n.presentation}}))}catch(t){if(y.current.get(e.id)!==a)return;v(n=>({...n,[e.id]:{requestKey:r,status:`error`,messages:[],error:t instanceof Error?t:Error(String(t))}}))}},[t,f,_]);return(0,u.useEffect)(()=>{b&&x(b)},[x,b]),m.length===0?(0,d.jsx)(`section`,{"aria-label":`Subagents`,className:`flex min-h-36 items-center rounded-md border border-dashed border-border/70 px-4 text-center text-label leading-5 text-foreground/45`,children:`Subagent threads will appear here when Prime delegates work.`}):(0,d.jsxs)(`section`,{"aria-label":`Subagents`,className:`space-y-2 pb-1`,children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-sm bg-foreground/5 px-2 py-1.5`,children:[(0,d.jsx)(i,{className:`size-3.5 shrink-0 text-foreground/45`}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-label font-medium text-foreground/70`,children:`Invoked subagents`}),(0,d.jsx)(`span`,{className:`shrink-0 text-micro text-foreground/40`,children:m.length})]}),(0,d.jsx)(`div`,{className:`space-y-0.5`,"data-testid":`subagent-thread-list`,children:m.map(e=>{let t=e.id===b?.id;return(0,d.jsxs)(c,{type:`button`,variant:`ghost`,size:`compact`,"aria-pressed":t,className:r(`flex w-full min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,t&&`bg-foreground/8`),style:{paddingLeft:`${8+Math.max(0,e.depth??0)*12}px`},onClick:()=>{g(e.id),n?.(e.id)},children:[(0,d.jsx)(`span`,{className:`shrink-0`,children:o(e.status)}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-foreground/80`,children:e.label}),(0,d.jsx)(s,{className:`size-3 shrink-0 text-foreground/30`}),(0,d.jsx)(`span`,{className:`shrink-0 text-micro capitalize text-foreground/45`,children:e.status})]},e.id)})}),b?(0,d.jsx)(l,{child:b,parentSessionId:f,transcript:_[b.id],onRefresh:()=>void x(b,!0)}):null]})}export{f as SubagentsPanelContent};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import"./utils-oBThwhjm.js";var r=e(t(),1),i=n(),a=(0,r.createContext)(1);function o(){return(0,r.useContext)(a)}function s({value:e,children:t}){return(0,i.jsx)(a.Provider,{value:Math.max(1,Math.min(8,e)),children:t})}var c={1:`bg-surface-1`,2:`bg-surface-2`,3:`bg-surface-3`,4:`bg-surface-4`,5:`bg-surface-5`,6:`bg-surface-6`,7:`bg-surface-7`,8:`bg-surface-8`},l={1:`shadow-surface-1`,2:`shadow-surface-2`,3:`shadow-surface-3`,4:`shadow-surface-4`,5:`shadow-surface-5`,6:`shadow-surface-6`,7:`shadow-surface-7`,8:`shadow-surface-8`};function u(e,t=e){let n=Math.round(Math.max(1,Math.min(8,e))),r=Math.round(Math.max(1,Math.min(8,t)));return`${c[n]} ${l[r]}`}var d=`bg-background shadow-[0_1px_2px_rgba(0,0,0,0.04),0_12px_32px_-16px_rgba(0,0,0,0.12)] dark:bg-popover dark:shadow-none`,f=`border border-border bg-popover text-popover-foreground shadow-lg`,p=`bg-background shadow-[0_2px_8px_rgba(0,0,0,0.05),0_20px_48px_-16px_rgba(0,0,0,0.18)] dark:bg-popover dark:shadow-[0_20px_48px_-16px_rgba(0,0,0,0.55)]`,m=`bg-foreground/[0.04] dark:bg-foreground/[0.06]`,h=`font-mono text-caption tracking-tight`;export{h as a,o as c,p as i,f as n,d as o,m as r,u as s,s as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{m as r,p as ee}from"./FloatingPortal-XC0MCNnD.js";import{t as i}from"./utils-oBThwhjm.js";import{F as a,M as o,a as s,c,j as l,n as te,t as ne}from"./useButton-CvcmqA2s.js";import{f as u,t as d}from"./createBaseUIEventDetails-DIxvaz-Y.js";import{d as f,f as p}from"./select-BhV4ikeN.js";import{t as re}from"./useBaseUiId-lKfDDIcw.js";import{t as m}from"./dist-BogNzeK9.js";import{a as ie,c as h,i as g,l as ae,n as oe,o as se,r as _}from"./input-7g8_nw-Z.js";import{t as v}from"./useControlled-CkQSkSv1.js";var y=n(),b=m(`group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current`}},defaultVariants:{variant:`default`}});function x({className:e,variant:t,...n}){return(0,y.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:i(b({variant:t}),e),...n})}function S({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`alert-title`,className:i(`font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,e),...t})}function C({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`alert-description`,className:i(`text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,e),...t})}function w({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`field-group`,className:i(`group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4`,e),...t})}var T=m(`group/field flex w-full gap-2 data-[invalid=true]:text-destructive`,{variants:{orientation:{vertical:`flex-col *:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center *:data-[slot=field-label]:flex-auto`,responsive:`flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto`}},defaultVariants:{orientation:`vertical`}});function E({className:e,orientation:t=`vertical`,...n}){return(0,y.jsx)(`div`,{role:`group`,"data-slot":`field`,"data-orientation":t,className:i(T({orientation:t}),e),...n})}function ce({className:e,...t}){return(0,y.jsx)(p,{"data-slot":`field-label`,className:i(`group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10`,`has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col`,e),...t})}function D({className:e,...t}){return(0,y.jsx)(`p`,{"data-slot":`field-description`,className:i(`text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance`,`last:mt-0 nth-last-2:-mt-1`,`[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,e),...t})}var O=e(t(),1),k=O.createContext(void 0);function A(){let e=O.useContext(k);if(e===void 0)throw Error(l(63));return e}var j=`data-checked`,M=`data-unchecked`,N={...h,checked(e){return e?{[j]:``}:{[M]:``}}},P=O.forwardRef(function(e,t){let{checked:n,className:i,defaultChecked:l,"aria-labelledby":p,form:m,id:h,inputRef:b,name:x,nativeButton:S=!1,onCheckedChange:C,readOnly:w=!1,required:T=!1,disabled:E=!1,render:ce,uncheckedValue:D,value:A,style:j,...M}=e,{clearErrors:P}=ie(),{state:F,setTouched:I,setDirty:L,validityData:R,setFilled:z,setFocused:B,validationMode:V,disabled:H,name:U,validation:W}=se(),{labelId:le}=g(),G=H||E,K=U??x,q=O.useRef(null),ue=c(q,b,W.inputRef),J=O.useRef(null),Y=re(),X=_({id:h}),Z=S?void 0:X,[Q,de]=v({controlled:n,default:!!l,name:`Switch`,state:`checked`});oe(J,Y,Q,void 0,!G,x),o(()=>{z(Q)},[Q,z]),ae(Q,()=>{P(K),L(Q!==R.initialValue),W.change(Q)});let{getButtonProps:fe,buttonRef:pe}=ne({disabled:G,native:S}),me=f(p,le,q,!S,Z),he={id:S?X:Y,role:`switch`,"aria-checked":Q,"aria-readonly":w||void 0,"aria-required":T||void 0,"aria-labelledby":me,onFocus(){G||B(!0)},onBlur(){let e=q.current;!e||G||(I(!0),B(!1),V===`onBlur`&&W.commit(e.checked))},onClick(e){if(w||G)return;e.preventDefault();let t=q.current;t&&te(t,e)}},ge={...W.getValidationProps(G),checked:Q,disabled:G,form:m,id:Z,name:K,required:T,style:K?r:ee,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,ref:ue,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(w){e.preventDefault();return}let t=e.currentTarget.checked,n=d(u,e.nativeEvent);C?.(t,n),!n.isCanceled&&de(t)},onClick(e){e.stopPropagation()},onFocus(){J.current?.focus()},...A===void 0?a:{value:A}},$=O.useMemo(()=>({...F,checked:Q,disabled:G,readOnly:w,required:T}),[F,Q,G,w,T]),_e=s(`span`,e,{state:$,ref:[t,J,pe],props:[he,M,fe,e=>W.getValidationProps(G,e)],stateAttributesMapping:N});return(0,y.jsxs)(k.Provider,{value:$,children:[_e,!Q&&K&&D!==void 0&&(0,y.jsx)(`input`,{type:`hidden`,form:m,name:K,value:D,disabled:G}),(0,y.jsx)(`input`,{...ge,suppressHydrationWarning:!0})]})}),F=O.forwardRef(function(e,t){let{render:n,className:r,style:ee,...i}=e,a=A();return s(`span`,e,{state:a,ref:t,stateAttributesMapping:N,props:i})});function I({className:e,...t}){return(0,y.jsx)(P,{"data-slot":`switch`,className:i(`inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input transition-colors outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 dark:bg-input/80 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...t,children:(0,y.jsx)(F,{"data-slot":`switch-thumb`,className:`pointer-events-none block size-4 translate-x-0.5 rounded-full bg-background shadow-sm transition-transform dark:bg-foreground data-checked:translate-x-4`})})}export{ce as a,S as c,w as i,E as n,x as o,D as r,C as s,I as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{t as n}from"./react-dom-B7th3XGm.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{$ as i,G as a,I as o,K as s,Q as c,W as l,Z as u,a as d,d as f,et as p,f as m,l as h,n as g,p as ee,tt as _}from"./FloatingPortal-XC0MCNnD.js";import{t as v}from"./utils-oBThwhjm.js";import{M as y,N as b,O as x,_ as S,a as C,j as w,t as T}from"./useButton-CvcmqA2s.js";import{D as te,E,_ as D,v as ne,x as O}from"./createBaseUIEventDetails-DIxvaz-Y.js";import{t as k}from"./createLucideIcon-CQY2ECfR.js";import{t as A}from"./circle-check-DBhaebaM.js";import{t as j}from"./loader-circle-BmKYM_C4.js";import{t as M}from"./triangle-alert-BuzmrrqI.js";import{t as N}from"./x-DEU6H3M-.js";import{t as P}from"./button-CWYjn8Zk.js";var F=e(t(),1),I=F.createContext(void 0);function L(){let e=F.useContext(I);if(!e)throw Error(w(73));return e}var R=0;function z(e){return R+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${R}`}function B(e,t){if(typeof e==`string`)return{description:e};if(typeof e==`function`){let n=e(t);return typeof n==`string`?{description:n}:n}return e}function V(e){let t=new Map,n=0,r=0;return e.forEach((e,i)=>{let a=e.transitionStatus===`ending`;t.set(e.id,{value:e,domIndex:i,visibleIndex:a?-1:n,offsetY:r}),r+=e.height||0,a||(n+=1)}),t}function H(e,t){let n=0;return e.map(e=>{if(e.transitionStatus===`ending`)return e;let r=n>=t;return n+=1,e.limited===r?e:{...e,limited:r}})}var U={toasts:e=>e.toasts,isEmpty:e=>e.toasts.length===0,toast:(e,t)=>e.toastMetadata.get(t)?.value,toastIndex:(e,t)=>e.toastMetadata.get(t)?.domIndex??-1,toastOffsetY:(e,t)=>e.toastMetadata.get(t)?.offsetY??0,toastVisibleIndex:(e,t)=>e.toastMetadata.get(t)?.visibleIndex??-1,focused:e=>e.focused,expanded:e=>e.hovering||e.focused,expandedOrOutOfFocus:e=>e.hovering||e.focused||!e.isWindowFocused,prevFocusElement:e=>e.prevFocusElement},W=class extends _{timers=new Map;areTimersPaused=!1;constructor(e){super({...e,toastMetadata:V(e.toasts)},{},U)}setViewport=e=>{this.set(`viewport`,e)};syncProviderProps(e,t){let n=this.state.limit!==t;if(this.state.timeout===e&&!n)return;let r={timeout:e,limit:t};if(n){let e=H(this.state.toasts,t);r.toasts=e,r.toastMetadata=V(e)}this.update(r)}disposeEffect=()=>()=>{this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear()};removeToast(e,t=!1){let n=U.toastIndex(this.state,e);if(n===-1)return;let r=this.state.toasts[n];t||r?.onRemove?.();let i=[...this.state.toasts];i.splice(n,1),this.setToasts(i)}addToast=e=>{let{timeout:t,limit:n}=this.state,r=e.id||z(`toast`);if(e.id){let t=U.toast(this.state,e.id);if(t){if(t.transitionStatus===`ending`)this.removeToast(e.id,!0);else{let{id:t,transitionStatus:n,...r}=e;return this.updateToastInternal(e.id,r,!0,!0),e.id}}}let i={...e,id:r,updateKey:0,transitionStatus:`starting`},a=[i,...this.state.toasts];this.setToasts(H(a,n));let o=i.timeout??t;return i.type!==`loading`&&o>0&&this.scheduleTimer(r,o,()=>this.closeToast(r)),U.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),r};updateToast=(e,t)=>{let n=U.toast(this.state,e);!n||n.transitionStatus===`ending`||this.updateToastInternal(e,typeof t==`function`?t(n):t,!1,!0)};updateToastInternal=(e,t,n=!1,r=!1)=>{let{timeout:i,toasts:a}=this.state,o=U.toast(this.state,e);if(!o||o.transitionStatus===`ending`)return;let s={...o,...t,...r&&{updateKey:o.updateKey+1}};this.setToasts(a.map(t=>t.id===e?s:t));let c=s.timeout??i,l=o.timeout??i,u=Object.hasOwn(t,`timeout`),d=s.transitionStatus!==`ending`&&s.type!==`loading`&&c>0,f=this.timers.has(e),p=l!==c,m=o.type===`loading`;if(!d&&f){this.clearTimer(e);return}d&&(!f||p||u||m||n)&&(this.clearTimer(e),this.scheduleTimer(e,c,()=>this.closeToast(e)),U.expandedOrOutOfFocus(this.state)&&this.pauseTimers())};closeToast=e=>{let t=e===void 0,{limit:n,toasts:r}=this.state,i;if(t)i=r,this.clearTimers();else{let t=U.toast(this.state,e);if(!t)return;i=[t],this.clearTimer(e)}let a=H(r.map(n=>t||n.id===e?{...n,transitionStatus:`ending`,height:0}:n),n);this.setToasts(a,!a.some(e=>e.transitionStatus!==`ending`)),i.forEach(e=>{e.transitionStatus!==`ending`&&e.onClose?.()}),this.handleFocusManagement(e)};promiseToast=(e,t)=>{let n=B(t.loading),r=this.addToast({...n,type:`loading`}),i=e.then(e=>{let n=B(t.success,e);return this.updateToast(r,{...n,type:`success`,timeout:n.timeout}),e}).catch(e=>{let n=B(t.error,e);return this.updateToast(r,{...n,type:`error`,timeout:n.timeout}),Promise.reject(e)});return{}.hasOwnProperty.call(t,`setPromise`)&&t.setPromise(i),i};pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(e=>{e.timeout&&(e.timeout.clear(),e.remaining=Math.max(e.remaining-(Date.now()-e.start),0))}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((e,t)=>{e.remaining=e.remaining>0?e.remaining:e.delay,e.timeout??=u.create(),e.timeout.start(e.remaining,()=>{this.handleTimerFired(t),e.callback()}),e.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}handleDocumentPointerDown=e=>{if(e.pointerType!==`touch`)return;let t=s(e);a(this.state.viewport,t)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))};scheduleTimer(e,t,n){let r=Date.now(),i=U.expandedOrOutOfFocus(this.state)?void 0:u.create();i?.start(t,()=>{this.handleTimerFired(e),n()}),this.timers.set(e,{timeout:i,start:r,delay:t,remaining:t,callback:n})}clearTimers(){this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(e){this.timers.get(e)?.timeout?.clear(),this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(e){this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){this.timers.size===0&&(this.areTimersPaused=!1)}setToasts(e,t=e.length===0){let n={toasts:e,toastMetadata:V(e)};t&&(n.hovering=!1,n.focused=!1),this.update(n)}handleFocusManagement(e){let t=l(i(this.state.viewport));if(!this.state.viewport||!a(this.state.viewport,t)||!o(t))return;if(e===void 0){this.restoreFocusToPrevElement();return}let n=U.toasts(this.state),r=U.toastIndex(this.state,e),s=(e,t)=>{for(let r=e;r>=0&&r<n.length;r+=t)if(n[r].transitionStatus!==`ending`)return n[r];return null},c=s(r+1,1)??s(r-1,-1);c?c.ref?.current?.focus():this.restoreFocusToPrevElement()}},G=r(),re=function(e){let{children:t,timeout:n=5e3,limit:r=3,toastManager:i}=e,a=b(()=>new W({timeout:n,limit:r,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return te(a.disposeEffect),F.useEffect(function(){if(i)return i[` subscribe`](({action:e,options:t})=>{let n=t.id;e===`promise`&&t.promise?a.promiseToast(t.promise,t):e===`update`&&n?a.updateToast(n,t.updates):e===`close`?a.closeToast(n):a.addToast(t)})},[a,i]),(0,G.jsxs)(I.Provider,{value:a,children:[(0,G.jsx)(ie,{store:a,timeout:n,limit:r}),t]})};function ie(e){let{store:t,timeout:n,limit:r}=e;return y(()=>{t.syncProviderProps(n,r)},[t,n,r]),null}var K=`--toast-frontmost-height`,q=F.forwardRef(function(e,t){let{render:n,className:r,style:u,children:d,...f}=e,h=L(),g=c(),_=F.useRef(!1),v=F.useRef(!1),y=F.useRef(!1),b=h.useState(`isEmpty`),x=h.useState(`toasts`),w=h.useState(`focused`),T=h.useState(`expanded`),te=h.useState(`prevFocusElement`),D=x[0]?.height,ne=x.some(e=>e.transitionStatus===`ending`),O=x.filter(e=>e.priority===`high`);F.useEffect(()=>{let e=h.state.viewport;if(!e||b)return;let t=S(e),n=i(e);function r(t){t.key===`F6`&&s(t)!==e&&(t.preventDefault(),h.set(`prevFocusElement`,l(n)),e?.focus({preventScroll:!0}),h.pauseTimers(),h.set(`focused`,!0))}function c(e){s(e)===t&&(h.set(`isWindowFocused`,!1),h.pauseTimers())}function u(n){if(n.relatedTarget)return;let r=s(n),c=l(i(e));(r===t||!a(e,r)||!o(c))&&h.resumeTimers(),g.start(0,()=>h.set(`isWindowFocused`,!0))}return p(E(t,`keydown`,r),E(t,`blur`,c,!0),E(t,`focus`,u,!0),E(n,`pointerdown`,h.handleDocumentPointerDown,!0))},[h,g,b]);function k(e){_.current=!0;let t=e.relatedTarget===h.state.viewport?x.find(e=>e.transitionStatus!==`ending`&&!e.limited):void 0;t?t.ref?.current?.focus():h.restoreFocusToPrevElement()}function A(e){e.key===`Tab`&&e.shiftKey&&s(e.nativeEvent)===h.state.viewport&&(e.preventDefault(),h.restoreFocusToPrevElement())}function j(){h.state.toasts.some(e=>e.transitionStatus===`ending`)||y.current||!v.current||(h.state.isWindowFocused&&h.resumeTimers(),h.set(`hovering`,!1),v.current=!1)}F.useEffect(j,[ne,h]);function M(){h.pauseTimers(),h.set(`hovering`,!0),v.current=!1}function N(){h.state.isWindowFocused&&h.resumeTimers()}function P(){v.current=!0,j()}function I(e){e.pointerType===`touch`&&(y.current=!0)}function R(e){e.pointerType===`touch`&&(y.current=!1,j())}function z(){if(_.current){_.current=!1;return}w||o(l(i(h.state.viewport)))&&(h.set(`focused`,!0),h.pauseTimers())}function B(e){!w||a(h.state.viewport,e.relatedTarget)||(h.set(`focused`,!1),N())}let V={tabIndex:-1,role:`region`,"aria-live":`polite`,"aria-atomic":!1,"aria-relevant":`additions text`,"aria-label":`Notifications`,onMouseEnter:M,onMouseMove:M,onMouseLeave:P,onFocus:z,onBlur:B,onKeyDown:A,onClick:z,onPointerDown:I,onPointerUp:R,onPointerCancel:R,style:{[K]:D?`${D}px`:void 0}},H={expanded:T},U=!b&&te&&(0,G.jsx)(m,{onFocus:k}),W=C(`div`,e,{ref:[t,h.setViewport],state:H,props:[V,f,{children:(0,G.jsxs)(F.Fragment,{children:[U,d,U]})}]});return(0,G.jsxs)(F.Fragment,{children:[U,W,!w&&O.length>0&&(0,G.jsx)(`div`,{style:ee,children:O.map(e=>(0,G.jsxs)(`div`,{role:`alert`,"aria-atomic":!0,children:[(0,G.jsx)(`div`,{children:e.title}),(0,G.jsx)(`div`,{children:e.description})]},e.id))})]})}),ae=e(n(),1),oe=F.createContext(void 0);function J(){let e=F.useContext(oe);if(!e)throw Error(w(66));return e}function se(e,t){let n=(t??S(e).getComputedStyle(e)).transform,r=0,i=0,a=1;if(n&&n!==`none`){let e=n.match(/matrix(?:3d)?\(([^)]+)\)/);if(e){let t=e[1].split(`, `).map(parseFloat);t.length===6?(r=t[4],i=t[5],a=Math.sqrt(t[0]*t[0]+t[1]*t[1])):t.length===16&&(r=t[12],i=t[13],a=t[0])}}return{x:r,y:i,scale:a}}function ce(e,t,n){switch(e){case`up`:return-n;case`down`:return n;case`left`:return-t;case`right`:return t;default:return 0}}var le=`--toast-index`,ue=`--toast-offset-y`,de=`--toast-height`,fe=`--toast-swipe-movement-x`,pe=`--toast-swipe-movement-y`,Y=`data-swipe-direction`,me={...O,swipeDirection(e){return e?{[Y]:e}:null}},he=40,ge=10,_e=.5,ve=1,ye=`${d},${h}`,be=F.forwardRef(function(e,t){let{toast:n,render:r,className:o,swipeDirection:c=[`down`,`right`],style:u,...d}=e,p=n.positionerProps?.anchor!==void 0,m=[];p||(m=Array.isArray(c)?c:[c]);let h=m.length>0,g=L(),[ee,_]=F.useState(void 0),[v,b]=F.useState(!1),[S,w]=F.useState(!1),[T,te]=F.useState({x:0,y:0}),[D,O]=F.useState({x:0,y:0,scale:1}),[k,A]=F.useState(),[j,M]=F.useState(),[N,P]=F.useState(null),I=F.useRef(null),R=F.useRef(void 0),z=F.useRef({x:0,y:0}),B=F.useRef({x:0,y:0,scale:1}),V=F.useRef(void 0),H=F.useRef(0),U=F.useRef(!1),W=F.useRef({x:0,y:0}),re=F.useRef(!1),ie=F.useRef({x:0,y:0}),K=F.useRef(null),q=F.useRef(null),J=g.useState(`toastIndex`,n.id),Y=g.useState(`toastVisibleIndex`,n.id),be=g.useState(`toastOffsetY`,n.id),xe=g.useState(`focused`),X=g.useState(`expanded`);ne({open:n.transitionStatus!==`ending`,ref:I,onComplete(){n.transitionStatus===`ending`&&g.removeToast(n.id)}});let Z=x((e=!1)=>{let t=I.current;if(!t)return;let r=t.style.height;t.style.height=`auto`;let i=t.offsetHeight;t.style.height=r;function a(){g.updateToastInternal(n.id,{ref:I,height:i,transitionStatus:void 0})}e?ae.flushSync(a):a()});y(()=>{let e=R.current;(n.transitionStatus===`starting`||e!==n.id)&&(e!==void 0&&(_(void 0),O({x:0,y:0,scale:1}),Q({x:0,y:0})),R.current=n.id,Z())},[Z,n.id,n.transitionStatus]);function Q(e){ie.current=e,te(e)}y(()=>()=>{q.current?.abort()},[]);function Se(e,t){let n=e=>e>0?e**_e:-(Math.abs(e)**_e),r=e>0&&!m.includes(`right`)||e<0&&!m.includes(`left`),i=t>0&&!m.includes(`down`)||t<0&&!m.includes(`up`);return{x:r?n(e):e,y:i?n(t):t}}let $=x(e=>{if(e.pointerId!==K.current)return;K.current=null,q.current?.abort(),q.current=null,b(!1),w(!1),P(null);let t=B.current;if(e.type===`pointercancel`||U.current){Q({x:t.x,y:t.y}),_(void 0);return}let r=ie.current,i=r.x-t.x,a=r.y-t.y,o;for(let e of m)if(ce(e,i,a)>he){o=e;break}o?(_(o),g.closeToast(n.id)):(Q({x:t.x,y:t.y}),_(void 0))});function Ce(e){if(e.button!==0||(e.pointerType===`touch`&&g.pauseTimers(),s(e.nativeEvent)?.closest(`button,a,input,textarea,[role="button"],${ye}`)))return;U.current=!1,V.current=void 0,H.current=0,K.current=e.pointerId,z.current={x:e.clientX,y:e.clientY},W.current=z.current;let t=e.currentTarget,n=se(t);B.current=n,O(n),Q({x:n.x,y:n.y}),g.set(`hovering`,!0),b(!0),w(!1),P(null),re.current=!0,q.current?.abort();let r=new AbortController;q.current=r;let a=i(t);a.addEventListener(`pointerup`,$,{signal:r.signal}),a.addEventListener(`pointercancel`,$,{signal:r.signal}),t.setPointerCapture?.(e.pointerId)}function we(e){if(e.pointerId!==K.current)return;e.preventDefault(),re.current&&=(z.current={x:e.clientX,y:e.clientY},!1);let{clientY:t,clientX:n,movementX:r,movementY:i}=e;(i<0&&t>W.current.y||i>0&&t<W.current.y)&&(W.current={x:W.current.x,y:t}),(r<0&&n>W.current.x||r>0&&n<W.current.x)&&(W.current={x:n,y:W.current.y});let a=n-z.current.x,o=t-z.current.y,s=t-W.current.y,c=n-W.current.x,l=N;if(!S&&Math.sqrt(a*a+o*o)>=ve){w(!0);let e=m.includes(`left`)||m.includes(`right`),t=m.includes(`up`)||m.includes(`down`);e&&t&&(l=Math.abs(a)>Math.abs(o)?`horizontal`:`vertical`,P(l))}let u;if(!V.current)l===`vertical`?o>0?u=`down`:o<0&&(u=`up`):l===`horizontal`?a>0?u=`right`:a<0&&(u=`left`):u=Math.abs(a)>=Math.abs(o)?a>0?`right`:`left`:o>0?`down`:`up`,u&&m.includes(u)&&(V.current=u,H.current=ce(u,a,o),_(u));else{let e=V.current,t=ce(e,c,s);t>he?(U.current=!1,_(e)):!(m.includes(`left`)&&m.includes(`right`))&&!(m.includes(`up`)&&m.includes(`down`))&&H.current-t>=ge&&(U.current=!0)}let d=Se(a,o),f=B.current.x,p=B.current.y,h=m.includes(`left`)||m.includes(`right`),g=m.includes(`up`)||m.includes(`down`);l!==`vertical`&&h&&(f+=d.x),l!==`horizontal`&&g&&(p+=d.y),Q({x:f,y:p})}function Te(e){if(e.key===`Escape`){if(!I.current||!a(I.current,l(i(I.current))))return;g.closeToast(n.id)}}F.useEffect(()=>{let e=I.current;if(!h||!e)return;function t(t){K.current===null||!a(e,s(t))||t.preventDefault()}return E(e,`touchmove`,t,{passive:!1})},[h]);function Ee(){let e=T.x-D.x,t=T.y-D.y;return{transition:v?`none`:void 0,transform:v?`translateX(${T.x}px) translateY(${T.y}px) scale(${D.scale})`:void 0,[fe]:`${e}px`,[pe]:`${t}px`}}let De=n.priority===`high`,Oe={role:De?`alertdialog`:`dialog`,tabIndex:0,"aria-modal":!1,"aria-labelledby":k,"aria-describedby":j,"aria-hidden":De&&!xe?!0:void 0,onPointerDown:h?Ce:void 0,onPointerMove:h?we:void 0,onPointerUp:h?$:void 0,onPointerCancel:h?$:void 0,onKeyDown:Te,inert:f(n.limited),style:{...Ee(),[le]:n.transitionStatus===`ending`?J:Y,[ue]:`${be}px`,[de]:n.height?`${n.height}px`:void 0}},ke=F.useMemo(()=>({toast:n,setTitleId:A,setDescriptionId:M,recalculateHeight:Z,visibleIndex:Y,expanded:X}),[n,A,M,Z,Y,X]),Ae={transitionStatus:n.transitionStatus,expanded:X,limited:n.limited||!1,type:n.type,swiping:v,swipeDirection:ee},je=C(`div`,e,{ref:[t,I],state:Ae,stateAttributesMapping:me,props:[Oe,d]});return(0,G.jsx)(oe.Provider,{value:ke,children:je})}),xe=F.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{visibleIndex:o,expanded:s,recalculateHeight:c}=J(),l=F.useRef(null);return y(()=>{c();let e=l.current;if(!e||typeof ResizeObserver!=`function`||typeof MutationObserver!=`function`)return;let t=new ResizeObserver(()=>c(!0)),n=new MutationObserver(()=>c(!0));return t.observe(e),n.observe(e,{childList:!0,subtree:!0,characterData:!0}),()=>{t.disconnect(),n.disconnect()}},[c]),C(`div`,e,{ref:[t,l],state:{expanded:s,behind:o>0},props:a})});function X(e){return e==null||typeof e==`boolean`||e===``?!1:!Array.isArray(e)||e.some(X)}function Z(e){return F.isValidElement(e)&&X(e.props.children)}function Q(e,t,n){let{toast:r,setTitleId:i,setDescriptionId:a}=J(),o=n===`title`?i:a,s=t??(n===`title`?r.title:r.description);return{id:D(e),children:s,type:r.type,setId:o}}function Se(e,t,n){let r=Z(e);return y(()=>{if(r)return n(t),()=>{n(e=>e===t?void 0:e)}},[r,t,n]),r?e:null}var $=F.forwardRef(function(e,t){let{render:n,className:r,style:i,id:a,children:o,...s}=e,{id:c,children:l,type:u,setId:d}=Q(a,o,`description`);return Se(C(`p`,e,{ref:t,state:{type:u},props:{...s,id:c,children:l}}),c,d)}),Ce=F.forwardRef(function(e,t){let{render:n,className:r,style:i,id:a,children:o,...s}=e,{id:c,children:l,type:u,setId:d}=Q(a,o,`title`);return Se(C(`h2`,e,{ref:t,state:{type:u},props:{...s,id:c,children:l}}),c,d)}),we=F.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:a,nativeButton:o=!0,...s}=e,c=L(),{toast:l,expanded:u}=J(),[d,f]=F.useState(!1),{getButtonProps:p,buttonRef:m}=T({disabled:a,native:o}),h={type:l.type};return C(`button`,e,{ref:[t,m],state:h,props:[{"aria-hidden":!u&&!d,onClick(){c.closeToast(l.id)},onFocus(){f(!0)},onBlur(){f(!1)}},s,p]})}),Te=F.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:a,nativeButton:o=!0,...s}=e,{toast:c}=J(),l=c.actionProps?.children??s.children,{getButtonProps:u,buttonRef:d}=T({disabled:a,native:o}),f={type:c.type},p=C(`button`,e,{ref:[t,d],state:f,props:[s,c.actionProps,u,{children:l}]});return Z(p)?p:null}),Ee=F.forwardRef(function(e,t){let{children:n,container:r,className:i,render:a,style:o,...s}=e,{node:c,subtree:l}=g({container:r,ref:t,componentProps:e,elementProps:s});return!l&&!c?null:(0,G.jsxs)(F.Fragment,{children:[l,c&&ae.createPortal(n,c)]})}),De=F.forwardRef(function(e,t){return(0,G.jsx)(Ee,{ref:t,...e})});function Oe(){let e=L(),t=e.useState(`toasts`);return F.useMemo(()=>({toasts:t,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[t,e])}function ke(){let e=new Set;function t(t){e.forEach(e=>e(t))}return{" subscribe":function(t){return e.add(t),()=>{e.delete(t)}},add(e){let n=e.id||z(`toast`);return t({action:`add`,options:{...e,id:n,transitionStatus:`starting`}}),n},close(e){t({action:`close`,options:{id:e}})},update(e,n){t({action:`update`,options:{id:e,updates:n}})},promise(e,n){let r=e;return t({action:`promise`,options:{...n,promise:e,setPromise(e){r=e}}}),r}}}var Ae={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};Ae.node;var je=k(Ae),Me={name:`octagon-x`,size:24,node:[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-octagon`]};Me.node;var Ne=k(Me),Pe=ke();function Fe({...e}){return(0,G.jsx)(re,{...e})}function Ie({...e}){return(0,G.jsx)(De,{"data-slot":`toast-portal`,...e})}function Le({className:e,...t}){return(0,G.jsx)(q,{"data-slot":`toast-viewport`,className:v(`pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full`,e),...t})}function Re({className:e,...t}){return(0,G.jsx)(be,{"data-slot":`toast`,className:v(`group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl text-popover-foreground will-change-transform outline-none select-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,`bg-surface-3 shadow-surface-3`,`[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]`,`h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]`,`after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']`,`data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]`,`data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]`,`[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]`,`data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]`,`data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]`,`data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]`,`data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]`,`data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]`,`data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]`,`data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]`,e),...t})}function ze({className:e,...t}){return(0,G.jsx)(xe,{"data-slot":`toast-content`,className:v(`flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100`,e),...t})}function Be({className:e,...t}){return(0,G.jsx)(Ce,{"data-slot":`toast-title`,className:v(`text-sm font-medium`,e),...t})}function Ve({className:e,...t}){return(0,G.jsx)($,{"data-slot":`toast-description`,className:v(`text-sm text-muted-foreground`,e),...t})}function He({className:e,render:t=(0,G.jsx)(P,{variant:`outline`,size:`compact`}),...n}){return(0,G.jsx)(Te,{"data-slot":`toast-action`,render:t,className:v(`shrink-0`,e),...n})}function Ue({className:e,children:t,render:n=(0,G.jsx)(P,{variant:`ghost`,size:`icon-compact`}),...r}){return(0,G.jsx)(we,{"data-slot":`toast-close`,"aria-label":`Close toast`,render:n,className:v(`relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground`,e),...r,children:t??(0,G.jsx)(N,{"aria-hidden":`true`})})}function We({type:e}){let t=null;return e===`success`&&(t=(0,G.jsx)(A,{"aria-hidden":`true`})),e===`info`&&(t=(0,G.jsx)(je,{"aria-hidden":`true`})),e===`warning`&&(t=(0,G.jsx)(M,{"aria-hidden":`true`})),e===`error`&&(t=(0,G.jsx)(Ne,{className:`text-destructive`,"aria-hidden":`true`})),e===`loading`&&(t=(0,G.jsx)(j,{className:`animate-spin`,"aria-hidden":`true`})),t?(0,G.jsx)(`span`,{"data-slot":`toast-icon`,className:`shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4`,children:t}):null}function Ge(){let{toasts:e}=Oe();return e.map(e=>(0,G.jsx)(Re,{toast:e,children:(0,G.jsxs)(ze,{children:[(0,G.jsx)(We,{type:e.type}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,G.jsx)(Be,{}),(0,G.jsx)(Ve,{})]}),(0,G.jsx)(He,{}),(0,G.jsx)(Ue,{})]})},e.id))}function Ke({children:e,toastManager:t=Pe,...n}){return(0,G.jsxs)(Fe,{toastManager:t,...n,children:[e,(0,G.jsx)(Ie,{children:(0,G.jsx)(Le,{children:(0,G.jsx)(Ge,{})})})]})}export{Pe as n,je as r,Ke as t};
@@ -0,0 +1,4 @@
1
+ import{t as e}from"./createLucideIcon-CQY2ECfR.js";import{t}from"./wrench-BXX_Ah2s.js";import{t as n}from"./search-Cb6fFWew.js";import{t as r}from"./shield-check-7HDd-2Fn.js";import{t as i}from"./safe-external-url-D3PJJIcM.js";var a={name:`earth`,size:24,node:[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`globe-2`]};a.node;var o=e(a),s={name:`file-pen-line`,size:24,node:[[`path`,{d:`M14.364 13.634a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506l4.013-4.009a1 1 0 0 0-3.004-3.004z`,key:`ukzhwg`}],[`path`,{d:`M14.487 7.858A1 1 0 0 1 14 7V2`,key:`1klhew`}],[`path`,{d:`M20 19.645V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l2.516 2.516`,key:`rxaxab`}],[`path`,{d:`M8 18h1`,key:`13wk12`}]],aliases:[`file-signature`]};s.node;var c=e(s),l={name:`file-search`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`11.5`,cy:`14.5`,r:`2.5`,key:`1bq0ko`}],[`path`,{d:`M13.3 16.3 15 18`,key:`2quom7`}]]};l.node;var u=e(l),d={name:`image`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]};d.node;var f=e(d),p={name:`list-todo`,size:24,node:[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]};p.node;var m=e(p),h={name:`message-circle-question-mark`,size:24,node:[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`message-circle-question`]};h.node;var g=e(h),_={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};_.node;var v=e(_),y={name:`users-round`,size:24,node:[[`path`,{d:`M18 21a8 8 0 0 0-16 0`,key:`3ypg7q`}],[`circle`,{cx:`10`,cy:`8`,r:`5`,key:`o932ke`}],[`path`,{d:`M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3`,key:`10s06x`}]],aliases:[`users-2`]};y.node;var b=e(y);function x(e){let i=e.toLowerCase();return i.includes(`plan`)||i.includes(`todo`)?m:i.includes(`approval`)||i.includes(`permission`)?r:i.includes(`question`)||i.includes(`ask`)?g:i.includes(`citation`)||i.includes(`source`)?o:i.includes(`agent`)||i.includes(`task`)||i.includes(`rlm`)?b:i.includes(`image`)||i.includes(`visual`)?f:i.includes(`edit`)||i.includes(`write`)||i.includes(`patch`)||i.includes(`diff`)?c:i.includes(`read`)||i.includes(`file`)?u:i.includes(`search`)||i.includes(`grep`)||i.includes(`glob`)?n:i.includes(`bash`)||i.includes(`shell`)||i.includes(`python`)||i.includes(`ipython`)?v:t}function S(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function C(e){let t=S(e);if(t)return t;if(typeof e==`string`)try{return S(JSON.parse(e))}catch{return}}function w(e,...t){for(let n of t){let t=e?.[n];if(typeof t==`string`&&t.trim())return t}}function T(e,...t){for(let n of t){let t=e?.[n];if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`&&t.trim()){let e=Number(t);if(Number.isFinite(e))return e}}}function E(e,...t){for(let n of t){let t=e?.[n];if(typeof t==`boolean`)return t}}function D(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function O(e){return e.output!==void 0&&e.output!==null?e.output:e.result}function k(e){let t=C(e),n=C(t?.details),r={...t??{},...n??{}},i=r.result,a=w(r,`stdout`,`standardOutput`,`standard_output`),o=w(r,`stderr`,`standardError`,`standard_error`),s=r.error??r.errorMessage??r.evalue,c=s===void 0?void 0:D(s),l=E(r,`isError`,`is_error`)===!0||!!c,u=T(r,`durationMs`,`duration_ms`,`duration`),d=E(r,`kernelRestarted`,`kernel_restarted`),f=new Set([`stdout`,`stderr`,`standardOutput`,`standard_output`,`standardError`,`standard_error`,`error`,`errorMessage`,`evalue`,`durationMs`,`duration_ms`,`duration`,`kernelRestarted`,`kernel_restarted`,`status`,`isError`]),p=Object.keys(r).some(e=>!f.has(e));return{record:t,details:n,stdout:a,stderr:o,result:i,error:c,isError:l,durationMs:u,kernelRestarted:d,structured:!a&&!o&&!c&&(typeof i==`object`&&!!i||p)}}function A(e,t){let n=[];if(e.stdout&&n.push({label:`stdout`,content:e.stdout,language:`text`}),e.stderr&&n.push({label:`stderr`,content:e.stderr,language:`text`}),e.result!==void 0&&n.push({label:`result`,content:D(e.result),language:typeof e.result==`object`&&e.result!==null?`json`:`text`}),e.error?n.push({label:`reported-error`,content:e.error,language:`text`}):e.isError&&n.push({label:`reported-error`,content:`The tool reported an error.`,language:`text`}),n.length>0)return n;let r=e.details??e.record;if(r){let e={...r};if(delete e.details,delete e.isError,Object.keys(e).length>0)return[{label:`result`,content:D(e),language:`json`}]}let i=D(t);return i.trim()?[{label:`output`,content:i,language:`text`}]:[]}function j(e,t){return A(e,t).map(e=>`${e.label}\n${e.content}`).join(`
2
+
3
+ `)}function M(e){return C(e.input)??C(e.args)}function N(e,...t){for(let n of t){let t=e?.[n];if(Array.isArray(t))return t}}function P(e,t){return w(t.details??t.record,`diff`,`patch`)??w(e,`diff`,`patch`)}function F(e,t){return w(e,`path`,`filePath`,`filename`,`file`)??w(t.details??t.record,`path`,`filePath`,`filename`,`file`)??`workspace file`}function I(e){return e.split(`
4
+ `).map((e,t)=>({id:`${t}-${e.slice(0,16)}`,type:e.startsWith(`+`)&&!e.startsWith(`+++`)?`added`:e.startsWith(`-`)&&!e.startsWith(`---`)?`removed`:`context`,content:e}))}function L(e,t){let n=t.details??t.record,r=C(e?.plan)??C(n?.plan),i=N(e,`todos`)??N(r,`todos`,`items`)??N(n,`todos`,`newTodos`,`items`);return i?i.flatMap((e,t)=>{let n=S(e);if(!n)return[];let r=w(n,`content`,`title`,`text`,`label`);if(!r)return[];let i=w(n,`status`),a=i===`in_progress`||i===`in-progress`?`in-progress`:i===`completed`?`completed`:i===`cancelled`?`cancelled`:`pending`;return[{id:`${t}-${r}`,title:r,status:a}]}):[]}function R(e){let t=N(e.details??e.record,`results`,`sources`,`citations`);return t?t.flatMap((e,t)=>{let n=S(e);if(!n)return[];let r=w(n,`title`,`name`,`snippet`);if(!r)return[];let a=w(n,`url`,`link`),o=a&&i(a)?a:void 0;return[{id:`${t}-${r}`,title:r,url:o,domain:w(n,`domain`,`source`)}]}):[]}function z(e){return w(e.details??e.record,`url`,`imageUrl`,`image_url`)}function B(e,t){return S(e?.approval)??S(t.details?.approval)??S(t.record?.approval)}function V(e){let t=typeof e.type==`string`?e.type:`Tool`;return t.startsWith(`tool-`)?t.slice(5):t}function H(e,t){let n=typeof e.state==`string`?e.state:void 0;return n===`output-error`||n===`error`?`error`:n===`output-available`||n===`complete`||n===`success`?`success`:n===`cancelled`||n===`canceled`||n===`aborted`||n===`interrupted`?`cancelled`:e.error===void 0?n===`input-streaming`||n===`streaming`?t===`streaming`?`running`:`cancelled`:e.output!==void 0||e.result!==void 0?`success`:t===`streaming`?`running`:`cancelled`:`error`}function U(e,t){return t||e.toLowerCase().includes(`json`)?`json`:e.toLowerCase().includes(`bash`)||e.toLowerCase().includes(`shell`)?`bash`:e.toLowerCase().includes(`python`)?`python`:`text`}function W(e,t){if(!t)return;let n=e.toLowerCase();return n.includes(`bash`)||n.includes(`shell`)?`bash`:n.includes(`python`)?/^\s*%%bash(?:\s|$)/im.test(t)?`bash`:`python`:`text`}function G(e,t){if(!t)return;let n=e.toLowerCase();return n.includes(`ipython`)?`IPython`:n.includes(`bash`)||n.includes(`shell`)?`Bash`:n.includes(`python`)?`Python`:t===`json`?`JSON`:t===`text`?`Text`:t.toUpperCase()}var K=new WeakMap;function q(e,t){if(e&&typeof e==`object`){let n=K.get(e);if(n&&n.chatStatus===t)return n.value;let r=Y(e,t);return K.set(e,{chatStatus:t,value:r}),r}return Y(e,t)}function J(e){if(!e)return;let t=e.replace(/\s+/g,` `).replace(/(\bauthorization\b\s*[:=]\s*)(?:"(?:\\.|[^"\\])*(?:"|$)|'(?:\\.|[^'\\])*(?:'|$)|[a-z]+\s+[^\s,;'"\\]+|[^\s,;'"\\]+)/gi,`$1[redacted]`).replace(/(\b[a-z][a-z0-9+.-]*:\/\/)[^/@\s]+@/gi,`$1[redacted]@`).replace(/(\b(?:[a-z0-9]+_)*(?:api[_ -]?key|access[_ -]?(?:token|key)|auth(?:orization)?|credential|password|secret|token)\b\s*[:=]\s*)(?:(?:Basic|Bearer)\s+)?(?:"(?:\\.|[^"\\])*(?:"|$)|'(?:\\.|[^'\\])*(?:'|$)|[^\s,;"']+)/gi,`$1[redacted]`).replace(/(--(?:api-key|access-token|password|secret|token)\s+)(?:"(?:\\.|[^"\\])*(?:"|$)|'(?:\\.|[^'\\])*(?:'|$)|\S+)/gi,`$1[redacted]`).replace(/(\b[a-z][a-z0-9+.-]*:\/\/)[^\s/@]+@/gi,`$1[redacted]@`).trim();if(t)return t.length>96?`${t.slice(0,93)}…`:t}function Y(e,t){let n=S(e);if(!n)return;let r=V(n),i=r.toLowerCase(),a=M(n),o=O(n),s=k(o),c=H(n,t),l=w(a,`command`,`cmd`,`code`,`script`),u=X(a,l),d=W(r,l),f=[];s.durationMs!==void 0&&f.push(Z(s.durationMs)),s.kernelRestarted&&f.push(`kernel restarted`);let p=P(a,s),m=i.includes(`todo`)||i.includes(`plan`)?L(a,s):[],h=i.includes(`search`)||i.includes(`web`)||i.includes(`source`)||i.includes(`citation`)?R(s):[],g=i.includes(`image`)||i.includes(`generat`)?z(s):void 0,_=B(a,s),v=j(s,o),y=!!v.trim(),b=typeof n.toolCallId==`string`&&n.toolCallId?n.toolCallId:`${r}-${JSON.stringify(a??{})}`,x;return m.length>0?x={kind:`todo`,title:i.includes(`plan`)?`Plan`:`Todo list`,items:m}:h.length>0?x={kind:`citations`,citations:h}:g?x={kind:`image`,url:g}:p&&(i.includes(`edit`)||i.includes(`write`)||i.includes(`patch`))?x={kind:`diff`,file:F(a,s),lines:I(p),copyText:p}:(l||y||_||f.length>0)&&(x={kind:`output`,content:v,language:U(r,s.structured),structured:s.structured,sections:A(s,o),sourceCode:l,sourceLanguage:d,sourceLabel:G(r,d)}),{id:b,name:r,lowerName:i,status:c,input:a,output:o,outputSummary:s,command:l,traceDescription:u,durationLabel:s.durationMs===void 0?void 0:Z(s.durationMs),metadata:f,approval:_,detail:x}}function X(e,t){return J(w(e,`path`,`filePath`,`filename`,`file`)??t??w(e,`query`,`pattern`,`url`,`description`,`task`,`prompt`))}function Z(e){if(e<1e3)return`${Math.round(e)} ms`;if(e<6e4)return`${(e/1e3).toFixed(+(e<1e4))} s`;let t=Math.floor(e/6e4),n=Math.round(e%6e4/1e3);return n===60?`${t+1} min`:n>0?`${t} min ${n} s`:`${t} min`}export{m as a,g as i,x as n,f as o,v as r,o as s,q as t};