@qredence/fleet 0.6.2 → 0.6.3
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.
- package/CHANGELOG.md +6 -0
- package/dist/web/client/assets/DialogTitle-DiAm7YNe.js +1 -0
- package/dist/web/client/assets/alert-dialog-CYE37KMM.js +1 -0
- package/dist/web/client/assets/{artifacts-panel-DmQghvw8.js → artifacts-panel-ClDpGWOU.js} +1 -1
- package/dist/web/client/assets/{chat-C24kD2SP.js → chat-BVMnC5Qh.js} +1 -1
- package/dist/web/client/assets/{chat-command-palette-BIwjhE6s.js → chat-command-palette-YuyaJNbi.js} +1 -1
- package/dist/web/client/assets/{citations-BUvM92nt.js → citations-DXqV2NLy.js} +1 -1
- package/dist/web/client/assets/command-Cw4X8Bpk.js +1 -0
- package/dist/web/client/assets/dialog-BzcIOvFC.js +1 -0
- package/dist/web/client/assets/{fork-picker-dialog-CpwEwsxA.js → fork-picker-dialog-BYRr-xTy.js} +1 -1
- package/dist/web/client/assets/git-branch-CTq9aACS.js +1 -0
- package/dist/web/client/assets/globals-BtCXZXL_.css +2 -0
- package/dist/web/client/assets/{index-BGnQeUYE.js → index-B9aXxpOv.js} +2 -2
- package/dist/web/client/assets/{model-selector-list-CRZCXeBf.js → model-selector-list-CHD8lMAl.js} +1 -1
- package/dist/web/client/assets/{openui-renderer-Bkkx5kmA.js → openui-renderer-C4e9FOVR.js} +8 -8
- package/dist/web/client/assets/provider-catalog-ClVvphe0.js +1 -0
- package/dist/web/client/assets/provider-label-CwZ-KDxk.js +1 -0
- package/dist/web/client/assets/right-panel-registry-BnYCffmM.js +2 -0
- package/dist/web/client/assets/routes-DUontXSG.js +16 -0
- package/dist/web/client/assets/{session-tool-renderer-3E3cv8D0.js → session-tool-renderer-Bd3dsE2D.js} +3 -3
- package/dist/web/client/assets/session-tree-panel-CM4_wwrM.js +1 -0
- package/dist/web/client/assets/settings-dialog-DMTD9m6z.js +2 -0
- package/dist/web/client/assets/sparkles-BY5MFyk6.js +1 -0
- package/dist/web/client/assets/{subagent-chat-panel-C5ukYiUx.js → subagent-chat-panel-BESrXxAR.js} +1 -1
- package/dist/web/client/assets/{subagent-transcript-lqNcSVbH.js → subagent-transcript-CAqFJfMj.js} +1 -1
- package/dist/web/client/assets/{subagents-panel-SJKhaVTr.js → subagents-panel-8aKOwWLs.js} +1 -1
- package/dist/web/client/assets/{virtualized-turn-list-BgUgX6tM.js → virtualized-turn-list-mL3ONUUA.js} +3 -3
- package/dist/web/client/bundle-budget.json +6 -6
- package/dist/web/server/{_tanstack-start-manifest_v-BDPifIFN-DTSNCHBX.js → _tanstack-start-manifest_v-Cm8xE-Rb-TMLYN3GY.js} +15 -13
- package/dist/web/server/{artifacts-panel-BN3DgqfV-N73J6N5Y.js → artifacts-panel-CwLVBqyi-CDORJY75.js} +21 -20
- package/dist/web/server/{chat-command-palette-G8awyZRw-2QE7FXGT.js → chat-command-palette-DUha04ia-5OV7WVJZ.js} +11 -9
- package/dist/web/server/{chunk-ZOVXMNJM.js → chunk-3Q3QKLHC.js} +5 -96
- package/dist/web/server/{chunk-6SOMNRAX.js → chunk-ADYZWC5L.js} +12 -12
- package/dist/web/server/{chunk-CW6KZUKT.js → chunk-B2LF64HM.js} +1 -1
- package/dist/web/server/{chunk-YMPJMHXZ.js → chunk-DP26GVWH.js} +3 -2
- package/dist/web/server/chunk-ETCO5KZK.js +113 -0
- package/dist/web/server/{chunk-ENGEUJIH.js → chunk-FMAYMBRS.js} +22 -20
- package/dist/web/server/{chunk-WB2LJC3R.js → chunk-FTLJ66KU.js} +4 -4
- package/dist/web/server/{chunk-OSMP55KI.js → chunk-H5D5DX3K.js} +1 -20
- package/dist/web/server/chunk-HGVJEUV4.js +102 -0
- package/dist/web/server/{chunk-FT74GAAH.js → chunk-KZ35W5M7.js} +27 -27
- package/dist/web/server/{chunk-CCYLHNZJ.js → chunk-O2IC376F.js} +46 -3
- package/dist/web/server/chunk-OMPXUTMX.js +33 -0
- package/dist/web/server/{chunk-BUXJSBE3.js → chunk-RJNGEU6C.js} +1 -1
- package/dist/web/server/{chunk-O2UYZT3Z.js → chunk-T2UTBHJ4.js} +48 -4
- package/dist/web/server/{chunk-NMBH57JT.js → chunk-TU2WNRAL.js} +6 -6
- package/dist/web/server/{chunk-JPDRUSUD.js → chunk-UM3RHJNZ.js} +1 -1
- package/dist/web/server/{chunk-4OTHKQMG.js → chunk-V5IFFLZQ.js} +4 -4
- package/dist/web/server/{chunk-EDAWH2MT.js → chunk-XEG4JTND.js} +2 -2
- package/dist/web/server/{chunk-NCK2FJAD.js → chunk-XSOUURPF.js} +2 -2
- package/dist/web/server/{chunk-ESM7OCRL.js → chunk-YCCF676T.js} +3 -3
- package/dist/web/server/{chunk-JVOW2NWC.js → chunk-YDDDSVNB.js} +7 -100
- package/dist/web/server/{fork-picker-dialog-YKlapaxN-DR5L74ST.js → fork-picker-dialog-DeMiLZtS-WTRTTP64.js} +4 -3
- package/dist/web/server/{message-queue-Demph1x4-RBJUC3AT.js → message-queue-Demph1x4-GGXJUUKO.js} +4 -4
- package/dist/web/server/{model-selector-list-BmzLiCx9-TK6JGGKU.js → model-selector-list-BeGQHwKV-UJYFO4KX.js} +9 -8
- package/dist/web/server/{openui-renderer-moJGf0LA-QCU3PI6H.js → openui-renderer-B4z18Brm-HSMKJ47D.js} +13 -12
- package/dist/web/server/{router-CPdFlpbe-LAD4MNZB.js → router-DfG45nTQ-3VXEUYG5.js} +278 -56
- package/dist/web/server/{routes-hkom6S6L-DUPPQHPY.js → routes-B9F9UfF1-UN2IVBMJ.js} +271 -117
- package/dist/web/server/server.js +2 -2
- package/dist/web/server/{session-tool-renderer-CglQ2ky7-2JVYNZG2.js → session-tool-renderer-CT65wuet-RQBMXHEZ.js} +11 -10
- package/dist/web/server/session-tree-panel-rS0t1wbf-HNA6AJBY.js +229 -0
- package/dist/web/server/{settings-dialog-BCEfmgtP-T3WQEZHB.js → settings-dialog-CqkrDSnm-LFEKSS7Y.js} +38 -34
- package/dist/web/server/{subagent-chat-panel-BTwI1kdB-LKBWA4GD.js → subagent-chat-panel-Cf7QdDqH-DPPSVLSY.js} +18 -17
- package/dist/web/server/{subagents-panel-8Z9_csoV-HYMEEBHB.js → subagents-panel-_JsUw-6t-MZWM5P45.js} +18 -17
- package/package.json +1 -1
- package/dist/web/client/assets/command-Dv96gATQ.js +0 -1
- package/dist/web/client/assets/dialog-BCb4rQh0.js +0 -1
- package/dist/web/client/assets/globals-DCtBkCSD.css +0 -2
- package/dist/web/client/assets/provider-catalog-C0XBIasJ.js +0 -1
- package/dist/web/client/assets/provider-label-Cka0ep0S.js +0 -1
- package/dist/web/client/assets/right-panel-registry-BCW7fQTG.js +0 -2
- package/dist/web/client/assets/routes-BWe5Iz-2.js +0 -16
- package/dist/web/client/assets/settings-dialog-B8lHq2tT.js +0 -2
- package/dist/web/client/assets/sparkles-D8XIY8pN.js +0 -1
- package/dist/web/server/{chunk-43S5N7SH.js → chunk-5RTGRTPD.js} +3 -3
- package/dist/web/server/{chunk-OMEDERPG.js → chunk-S2IBIJIG.js} +3 -3
- package/dist/web/server/{chunk-IXGLKAPN.js → chunk-TR2GA5OF.js} +3 -3
- package/dist/web/server/{workspace-panel-BHEB9nRM-TS62SYBA.js → workspace-panel-BHEB9nRM-Y6KGIVGP.js} +2 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{$ as r,K as i,Y as a,q as o,t as s}from"./button-Dl0ce3Y5.js";import{t as c}from"./utils-Brtgag-m.js";import{P as l,T as u,et as d,nt as f,rt as p}from"./createBaseUIEventDetails-B58Jldei.js";import{r as m}from"./toast-lnCWGgSE.js";import{A as h,a as g,c as _,i as v,o as y,p as b,r as x,u as S,y as C}from"./provider-catalog-ClVvphe0.js";import{t as w}from"./useBaseUiId-D9ZGPZ6f.js";import{t as T}from"./createLucideIcon-_dfI7Arx.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"./provider-label-CwZ-KDxk.js";import{t as P}from"./check-B3LlvM65.js";import{t as F}from"./chevron-right-NVqQIoiO.js";import{t as I}from"./loader-circle-B5GIZGxd.js";import{i as L,r as R,t as z}from"./sparkles-BY5MFyk6.js";import{t as B}from"./eye-CDHqtVoE.js";import{t as V}from"./hard-drive-BT7UxHQu.js";import{i as H,n as U,r as W,t as G}from"./sun-D0llhiMU.js";import{t as ee}from"./pencil-CdO6qfv3.js";import{t as te}from"./plug-BRROUIw-.js";import{a as K,n as ne,r as re}from"./right-panel-context-CS8tJMzE.js";import{t as ie}from"./refresh-cw-l9WPHRkq.js";import{t as ae}from"./rotate-ccw-CfGhzOv7.js";import{t as q}from"./search-BjcXAUrI.js";import{a as oe,n as se,r as ce}from"./ui-preferences-aG2U2jjW.js";import{t as J}from"./notify-DjVixft7.js";import{c as le,f as ue,l as de,o as fe}from"./tokens-Ch5WqXC_.js";import{t as pe}from"./input-CxZp56Im.js";import{a as me,i as he,n as ge,o as _e,r as ve,s as ye,t as be}from"./alert-dialog-CYE37KMM.js";import{a as xe,n as Se,o as Ce,r as we,t as Te}from"./dialog-BzcIOvFC.js";import{a as Y,c as Ee,i as De,n as X,r as Oe,s as ke,t as Ae}from"./switch-D3FhZU-S.js";import{a as je,i as Me,n as Ne,r as Pe,t as Fe}from"./input-group-D7lAfKHR.js";var Ie=T(`box`,[[`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`}]]),Le=T(`eye-off`,[[`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=T(`key-round`,[[`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`}]]),ze=T(`layers`,[[`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`}]]),Be=T(`lock`,[[`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`}]]),Ve=T(`message-square`,[[`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`}]]),He=T(`paintbrush`,[[`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`}]]),Ue=T(`save`,[[`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`}]]),We=T(`star`,[[`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`}]]),Ge=T(`tag`,[[`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`}]]),Ke=T(`users`,[[`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`}]]),Z=e(t(),1),Q=n(),qe=new Set([`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`]),Je=new Map,Ye=500;function Xe(e){let t=Je.get(e);if(t)return t;let n=RegExp(`^${e.split(``).map(e=>e===`*`?`.*`:e===`?`?`.`:tt(e)).join(``)}$`);return Je.size>=Ye&&Je.clear(),Je.set(e,n),n}function Ze(e,t){return t===void 0||t.length!==0&&t.some(t=>Qe(e,t))}function Qe(e,t){let n=$e(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(!et(n))return r.includes(n);let i=Xe(n);return r.some(e=>i.test(e))}function $e(e){let t=e.lastIndexOf(`:`);if(t===-1)return e;let n=e.slice(t+1);return qe.has(n)?e.slice(0,t):e}function et(e){return e.includes(`*`)||e.includes(`?`)}function tt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function nt(e,t){return`${e}/${t}`}function rt({className:e,...t}){return(0,Q.jsx)(`nav`,{"aria-label":`breadcrumb`,"data-slot":`breadcrumb`,className:c(e),...t})}function it({className:e,...t}){return(0,Q.jsx)(`ol`,{"data-slot":`breadcrumb-list`,className:c(`flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground`,e),...t})}function at({className:e,...t}){return(0,Q.jsx)(`li`,{"data-slot":`breadcrumb-item`,className:c(`inline-flex items-center gap-1`,e),...t})}function ot({className:e,...t}){return(0,Q.jsx)(`span`,{"data-slot":`breadcrumb-page`,"aria-current":`page`,className:c(`font-normal text-foreground`,e),...t})}function st({children:e,className:t,...n}){return(0,Q.jsx)(`li`,{"data-slot":`breadcrumb-separator`,role:`presentation`,"aria-hidden":`true`,className:c(`[&>svg]:size-3.5`,t),...n,children:e??(0,Q.jsx)(F,{})})}var ct=Z.createContext(void 0);function lt(){let e=Z.useContext(ct);if(e===void 0)throw Error(f(53));return e}function ut(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 dt=`data-has-overflow-x`,ft=`data-has-overflow-y`,pt=`data-overflow-x-start`,mt=`data-overflow-x-end`,ht=`data-overflow-y-start`,gt=`data-overflow-y-end`,_t=e=>t=>t?{[e]:``}:null,vt={hasOverflowX:_t(dt),hasOverflowY:_t(ft),overflowXStart:_t(pt),overflowXEnd:_t(mt),overflowYStart:_t(ht),overflowYEnd:_t(gt),cornerHidden:()=>null},yt=`--scroll-area-corner-height`,bt=`--scroll-area-corner-width`,xt=`data-orientation`,St={x:0,y:0},Ct={width:0,height:0},wt={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},Tt={x:!0,y:!0,corner:!0},Et=Z.forwardRef(function(e,t){let{render:n,className:a,overflowEdgeThreshold:o,style:s,...c}=e,{xStart:l,xEnd:f,yStart:p,yEnd:m}=Dt(o),h=w(),g=r(),v=r(),{nonce:y,disableStyleElements:b}=_(),[x,C]=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(Ct),[F,I]=Z.useState(Ct),[L,R]=Z.useState(wt),[z,B]=Z.useState(Tt),V=Z.useRef(null),H=Z.useRef(null),U=Z.useRef(null),W=Z.useRef(null),G=Z.useRef(null),ee=Z.useRef(null),te=Z.useRef(null),K=Z.useRef(null),ne=Z.useRef(0),re=Z.useRef(0),ie=Z.useRef(0),ae=Z.useRef(0),q=Z.useRef(`vertical`),oe=Z.useRef(St),se=Z.useRef(null);function ce(e){let t=e?O:E,n=e?g:v;t(!0),n.start(500,()=>{t(!1)})}let J=d(e=>{let t=e.x-oe.current.x,n=e.y-oe.current.y;oe.current=e,n!==0&&ce(!0),t!==0&&ce(!1)}),le=d(()=>{let e=H.current;e&&se.current===null&&(se.current=e.style.scrollSnapType,e.style.scrollSnapType=`none`)}),ue=d(e=>{if(e.button!==0||K.current!==null&&(q.current===`vertical`?G.current:ee.current)?.hasPointerCapture(K.current))return;K.current=e.pointerId,ne.current=e.clientY,re.current=e.clientX,q.current=e.currentTarget.getAttribute(xt);let t=H.current;t&&(ie.current=t.scrollTop,ae.current=t.scrollLeft,le()),(q.current===`vertical`?G.current:ee.current)?.setPointerCapture(e.pointerId)}),de=d(e=>{if(e.pointerId!==K.current)return;K.current=null,(q.current===`vertical`?O:E)(!1),se.current!==null&&(H.current&&(H.current.style.scrollSnapType=se.current),se.current=null);let t=q.current===`vertical`?G.current:ee.current;t?.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}),fe=d(e=>{if(e.pointerId!==K.current)return;if(e.buttons%2==0){de(e);return}let t=H.current;if(!t)return;let n=q.current===`vertical`,r=n?G.current:ee.current,i=n?U.current:W.current;if(!r||!i)return;let a=n?`y`:`x`,o=ut(i,`padding`,a),s=ut(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:ae.current)+d*(f-p);n?t.scrollTop=m:t.scrollLeft=m,e.preventDefault(),ce(n)});function pe(e){A(e.pointerType===`touch`)}function me(e){if(pe(e),e.pointerType!==`touch`){let t=i(V.current,e.target);C(t)}}let he=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]),ge={role:`presentation`,onPointerEnter:me,onPointerMove:me,onPointerDown:pe,onPointerLeave(){C(!1)},style:{position:`relative`,[yt]:`${N.height}px`,[bt]:`${N.width}px`}},_e=u(`div`,e,{state:he,ref:[t,V],props:[ge,c],stateAttributesMapping:vt}),ve=Z.useMemo(()=>({handlePointerDown:ue,handlePointerMove:fe,handlePointerUp:de,handleScroll:J,disableViewportSnap:le,cornerSize:N,setCornerSize:P,thumbSize:F,setThumbSize:I,hasMeasuredScrollbar:j,setHasMeasuredScrollbar:M,touchModality:k,cornerRef:te,scrollingX:T,scrollingY:D,hovering:x,setHovering:C,viewportRef:H,scrollbarYRef:U,scrollbarXRef:W,thumbYRef:G,thumbXRef:ee,rootId:h,hiddenState:z,setHiddenState:B,overflowEdges:L,setOverflowEdges:R,viewportState:he,overflowEdgeThreshold:{xStart:l,xEnd:f,yStart:p,yEnd:m}}),[ue,fe,de,J,le,N,F,j,k,T,D,x,h,z,L,he,l,f,p,m]);return(0,Q.jsxs)(ct.Provider,{value:ve,children:[!b&&S.getElement(y),_e]})});function Dt(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 Ot=Z.createContext(void 0),kt=`--scroll-area-overflow-x-start`,At=`--scroll-area-overflow-x-end`,jt=`--scroll-area-overflow-y-start`,Mt=`--scroll-area-overflow-y-end`,Nt=`--scroll-area-thumb-height`,Pt=`--scroll-area-thumb-width`,Ft=[kt,At,jt,Mt],It=!1;function Lt(){It||a||(typeof CSS<`u`&&`registerProperty`in CSS&&Ft.forEach(e=>{try{CSS.registerProperty({name:e,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),It=!0)}var Rt=Z.forwardRef(function(e,t){let{render:n,className:i,style:a,...o}=e,{viewportRef:s,scrollbarYRef:c,scrollbarXRef:l,thumbYRef:f,thumbXRef:m,cornerRef:h,cornerSize:g,setCornerSize:_,setThumbSize:v,rootId:y,setHiddenState:x,hiddenState:w,setHasMeasuredScrollbar:T,handleScroll:E,touchModality:D,setHovering:O,setOverflowEdges:k,overflowEdgeThreshold:A,viewportState:j}=lt(),M=C(),N=Z.useRef(!0),P=Z.useRef([NaN,NaN,NaN,NaN]),F=r(),I=r(),L=d(()=>{let e=s.current,t=c.current,n=l.current,r=f.current,i=m.current,a=h.current;if(!e)return;let o=e.scrollHeight,u=e.scrollWidth,d=e.clientHeight,p=e.clientWidth,y=e.scrollTop,S=e.scrollLeft,C=P.current,w=Number.isNaN(C[0]);if(C[0]=d,C[1]=o,C[2]=p,C[3]=u,w&&T(!0),o===0||u===0)return;let E=zt(e),D=E.y,O=E.x,j=p/u,N=d/o,F=Math.max(0,u-p),I=Math.max(0,o-d),L=0,R=0;O||(L=b(M===`rtl`?-S:S,F),R=F-L);let z=D?0:b(y,I),B=D?0:I-z,V=O?0:p,H=D?0:d,U=0,W=0;!O&&!D&&(U=t?.offsetWidth||0,W=n?.offsetHeight||0);let G=g.width===0&&g.height===0,ee=G?U:0,te=G?W:0,K=ut(n,`padding`,`x`),ne=ut(t,`padding`,`y`),re=ut(i,`margin`,`x`),ie=ut(r,`margin`,`y`),ae=V-K-re,q=H-ne-ie,oe=n?Math.min(n.offsetWidth-ee,ae):ae,se=t?Math.min(t.offsetHeight-te,q):q,ce=Math.max(16,oe*j),J=Math.max(16,se*N);if(v(e=>Bt(e,{width:ce,height:J})),t&&r){let e=Vt(r,Nt,y,I,o,J,t.offsetHeight-J-ne-ie);r.style.transform=`translate3d(0,${e}px,0)`}if(n&&i){let e=n.offsetWidth-ce-K-re,t=Vt(i,Pt,M===`rtl`?-S:S,F,u,ce,e);i.style.transform=`translate3d(${M===`rtl`?-t:t}px,0,0)`}let le=[L,R,z,B];Ft.forEach((t,n)=>{e.style.setProperty(t,`${le[n]}px`)}),a&&_(e=>Bt(e,{width:U,height:W})),x(e=>Bt(e,E));let ue={xStart:!O&&L>A.xStart,xEnd:!O&&R>A.xEnd,yStart:!D&&z>A.yStart,yEnd:!D&&B>A.yEnd};k(e=>Bt(e,ue))});p(()=>{Lt()},[]),p(()=>{queueMicrotask(L)},[L,w,M,A.xStart,A.xEnd,A.yStart,A.yEnd]),p(()=>{s.current?.matches(`:hover`)&&O(!0)},[s,O]),p(()=>{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`,...y&&{"data-id":`${y}-viewport`},tabIndex:w.x&&w.y?-1:0,className:S.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,o],stateAttributesMapping:vt}),V=Z.useMemo(()=>({computeThumbPosition:L}),[L]);return(0,Q.jsx)(Ot.Provider,{value:V,children:B})});function zt(e){let t=e.clientHeight>=e.scrollHeight,n=e.clientWidth>=e.scrollWidth;return{y:t,x:n,corner:t||n}}function Bt(e,t){for(let n in t)if(e[n]!==t[n])return t;return e}function Vt(e,t,n,r,i,a,o){let s=h(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 Ht=Z.createContext(void 0);function Ut(){let e=Z.useContext(Ht);if(e===void 0)throw Error(f(54));return e}var Wt=Z.forwardRef(function(e,t){let{render:n,className:r,orientation:a=`vertical`,keepMounted:s=!1,style:c,...d}=e,{hovering:f,scrollingX:p,scrollingY:m,hiddenState:h,scrollbarYRef:g,scrollbarXRef:_,viewportRef:v,thumbYRef:y,thumbXRef:b,handlePointerDown:x,handlePointerUp:S,handleScroll:w,disableViewportSnap:T,rootId:E,thumbSize:D,hasMeasuredScrollbar:O,viewportState:k}=lt(),A=a===`vertical`,j={...k,hovering:f,scrolling:A?m:p,orientation:a},M=C(),N=!O&&!s,P=A?h.y:h.x,F=s||!P;Z.useEffect(()=>{if(!F)return;let e=v.current,t=A?g.current:_.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 l(t,`wheel`,n,{passive:!1})},[M,w,A,_,g,F,v]);let I={...E&&{"data-id":`${E}-scrollbar`},"aria-hidden":!0,onPointerDown(e){if(e.button!==0)return;let t=o(e.nativeEvent),n=A?y.current:b.current;if(n&&i(n,t))return;let r=v.current;if(!r)return;let a=A?g.current:_.current;if(!n||!a)return;let s=A?`y`:`x`,c=ut(n,`margin`,s),l=ut(a,`padding`,s),u=A?n.offsetHeight:n.offsetWidth,d=a.getBoundingClientRect(),f=A?e.clientY-d.top-u/2-l+c/2:e.clientX-d.left-u/2-l+c/2,p=A?r.scrollHeight:r.scrollWidth,m=A?r.clientHeight:r.clientWidth,h=(A?a.offsetHeight:a.offsetWidth)-u-l-c;if(h<=0)return;let S=f/h,C=p-m;T(),A?r.scrollTop=S*C:r.scrollLeft=M===`rtl`?-(1-S)*C:S*C,w({x:r.scrollLeft,y:r.scrollTop}),x(e)},onMouseDown(e){e.preventDefault()},onPointerUp:S,onPointerCancel:S,style:{position:`absolute`,touchAction:`none`,WebkitUserSelect:`none`,userSelect:`none`,visibility:N?`hidden`:void 0,...A?{top:0,bottom:`var(${yt})`,insetInlineEnd:0,[Nt]:`${D.height}px`}:{insetInlineStart:0,insetInlineEnd:`var(${bt})`,bottom:0,[Pt]:`${D.width}px`}}},L=u(`div`,e,{ref:[t,A?g:_],state:j,props:[I,d],stateAttributesMapping:vt});return F?(0,Q.jsx)(Ht.Provider,{value:a,children:L}):null}),Gt=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}=lt(),h=Ut(),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]})}),Kt=Z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{cornerRef:o,cornerSize:s,hiddenState:c}=lt(),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 qt({className:e,children:t,...n}){return(0,Q.jsxs)(Et,{"data-slot":`scroll-area`,className:c(`relative`,e),...n,children:[(0,Q.jsx)(Rt,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`,children:t}),(0,Q.jsx)(Jt,{}),(0,Q.jsx)(Kt,{})]})}function Jt({className:e,orientation:t=`vertical`,...n}){return(0,Q.jsx)(Wt,{"data-slot":`scroll-area-scrollbar`,"data-orientation":t,orientation:t,className:c(`flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent`,e),...n,children:(0,Q.jsx)(Gt,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function Yt({className:e,interactive:t,padding:n,tone:r,...i}){return(0,Q.jsx)(`div`,{className:c(ue({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`}){return(0,Q.jsxs)(Yt,{tone:o,padding:`md`,interactive:a,className:c(`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:`truncate text-sm font-medium text-foreground`,children:t}),n?(0,Q.jsx)(`div`,{className:`mt-0.5 truncate text-xs text-muted-foreground`,children:n}):null]}),r?(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:r}):null]})}function Xt({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 Zt({dirty:e,disabled:t,onRevert:n,onSave:r,saving:i}){return(0,Q.jsxs)(Q.Fragment,{children:[e?(0,Q.jsx)(s,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground transition-transform active:scale-[0.96]`,disabled:t||i,onClick:n,"aria-label":`Revert changes`,children:(0,Q.jsx)(ae,{})}):null,(0,Q.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,className:c(fe,`transition-transform active:scale-[0.96]`,e&&`border-primary/30 text-primary`),disabled:!e||t||i,onClick:r,children:[i?(0,Q.jsx)(I,{className:`animate-spin`,"data-icon":`inline-start`}):(0,Q.jsx)(Ue,{"data-icon":`inline-start`}),`Commit`]})]})}var Qt=1500,$t=`Unknown or expired OAuth login`;function en(e){return new Promise(t=>{setTimeout(t,e)})}function tn({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),J.success(`Provider credentials applied to your active sessions.`),p.current?.();return}if(e.status===`error`){if(e.error===$t&&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;J.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 en(Qt),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 nn({onConfigured:e,onOAuthLogin:t,provider:n}){let{busy:r,cancel:i,canStart:a,login:o,promptAnswer:c,setPromptAnswer:l,start:u,submitPrompt:d}=tn({onConfigured:e,onOAuthLogin:t,providerId:n.id}),f=o?.status===`waiting`,p=o?.status===`error`?o.error:void 0,m=f?o?.authUrl:void 0,h=f?o?.userCode:void 0,g=f?o?.instructions:void 0,_=f?o?.prompt:void 0,v=n.authType===`oauth`;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[n.isConfigured&&v&&!f?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Q.jsx)(P,{className:`size-3.5 text-muted-foreground`}),(0,Q.jsx)(`span`,{children:`Connected`})]}):null,f?(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.`]}),h?(0,Q.jsxs)(`p`,{className:`text-sm`,children:[`Enter this code: `,(0,Q.jsx)(`span`,{className:`font-mono text-foreground`,children:h})]}):null,g&&!h?(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:g}):null,m?(0,Q.jsxs)(s,{type:`button`,size:`sm`,onClick:()=>{window.open(m,`_blank`,`noopener,noreferrer`)},children:[(0,Q.jsx)(L,{"data-icon":`inline-start`}),`Open sign-in page`]}):_?null:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(O,{className:`size-3`}),`Waiting for sign-in…`]}),_?(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:_.message}),(0,Q.jsx)(pe,{value:c,placeholder:_.placeholder,onChange:e=>l(e.target.value),"aria-label":_.message}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(s,{type:`button`,size:`sm`,disabled:r||!_.allowEmpty&&!c.trim(),onClick:()=>{d()},children:[r?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Continue`]})})]}):null,(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsx)(s,{type:`button`,variant:`ghost`,size:`sm`,disabled:r,onClick:()=>{i()},children:`Cancel sign-in`})})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[p?(0,Q.jsx)(ke,{className:`px-3 py-2`,children:(0,Q.jsx)(Ee,{className:`text-xs text-pretty`,children:p})}):(0,Q.jsx)(`p`,{className:`text-xs text-pretty text-muted-foreground`,children:v&&n.isConfigured?`Sign in again with ${n.name} to refresh OAuth credentials.`:v?`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)(s,{type:`button`,size:`sm`,disabled:r||!a,onClick:()=>{u()},children:[r?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Sign in with `,n.name]})})]})]})}function rn(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 an(e){let t=e.transport===`http`?e.url:e.commandPreview;return[e.source===`builtin`?`Built-in`:`User`,e.transport===`http`?`HTTP`:`stdio`,rn(e),t].filter(e=>!!e).join(` · `)}function on({connections:e,isLoading:t,isPending:n,onOAuth:r,onRemove:i,onUpsert:a}){let[o,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(`http`),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(!0),[_,v]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(``),[S,C]=(0,Z.useState)(``),[w,T]=(0,Z.useState)(``),[D,k]=(0,Z.useState)(``),[A,j]=(0,Z.useState)(null),M=()=>{f(``),m(``),g(!0),v(``),x(``),C(``),T(``),k(``),u(`http`),c(!1)},N=async()=>{if(!a)return;let e=d.trim();try{if(l===`http`)await a({name:e,transport:`http`,url:p.trim(),...h?{oauth:!0}:{},..._.trim()?{bearerTokenEnvVar:_.trim()}:{},force:!0});else{let t=S.split(/\s+/).map(e=>e.trim()).filter(Boolean),n=D.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:b.trim(),...t.length>0?{args:t}:{},...w.trim()?{cwd:w.trim()}:{},...n.length>0?{env:n}:{},force:!0})}J.success(`MCP connection saved`),M()}catch(e){J.error(e instanceof Error?e.message:`Could not save MCP connection`)}},P=async e=>{if(i)try{await i({name:e}),J.success(`Removed ${e}`),j(null)}catch(e){J.error(e instanceof Error?e.message:`Could not remove MCP connection`)}},F=async e=>{if(r)try{await r({name:e,action:`logout`}),J.success(`Signed out of ${e}`)}catch(e){J.error(e instanceof Error?e.message:`Could not sign out`)}},I=(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)(Xt,{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)(s,{type:`button`,size:`sm`,variant:`outline`,disabled:n||o,onClick:()=>c(!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)(O,{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)(X,{children:[(0,Q.jsx)(Y,{children:`Name`}),(0,Q.jsx)(pe,{value:d,onChange:e=>f(e.target.value),"aria-label":`MCP server name`})]}),(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Transport`}),(0,Q.jsx)(y,{value:l,onValueChange:e=>u(e),options:[{label:`HTTP`,value:`http`},{label:`stdio`,value:`stdio`}]})]}),l===`http`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`URL`}),(0,Q.jsx)(pe,{value:p,onChange:e=>m(e.target.value),"aria-label":`MCP server URL`})]}),(0,Q.jsxs)(X,{orientation:`horizontal`,className:`items-center justify-between`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Y,{children:`OAuth`}),(0,Q.jsx)(Oe,{children:`Use the browser sign-in flow for this server.`})]}),(0,Q.jsx)(Ae,{checked:h,onCheckedChange:e=>g(e),"aria-label":`Use OAuth`})]}),h?null:(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Bearer token environment variable`}),(0,Q.jsx)(pe,{value:_,onChange:e=>v(e.target.value),"aria-label":`Bearer token environment variable`,placeholder:`MCP_BEARER_TOKEN`})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Command`}),(0,Q.jsx)(pe,{value:b,onChange:e=>x(e.target.value),"aria-label":`MCP command`})]}),(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Arguments`}),(0,Q.jsx)(pe,{value:S,onChange:e=>C(e.target.value),"aria-label":`MCP command arguments`})]}),(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Working directory`}),(0,Q.jsx)(pe,{value:w,onChange:e=>T(e.target.value),"aria-label":`MCP working directory`}),(0,Q.jsx)(Oe,{children:`Must stay inside the current workspace.`})]}),(0,Q.jsxs)(X,{children:[(0,Q.jsx)(Y,{children:`Environment mappings`}),(0,Q.jsx)(je,{value:D,onChange:e=>k(e.target.value),"aria-label":`MCP environment mappings`,placeholder:`CHILD=SOURCE`}),(0,Q.jsx)(Oe,{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)(s,{type:`button`,size:`sm`,variant:`ghost`,onClick:M,children:`Cancel`}),(0,Q.jsxs)(s,{type:`button`,size:`sm`,disabled:n||!d.trim(),onClick:()=>void N(),children:[n?(0,Q.jsx)(O,{"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)(te,{className:`size-4`}),title:e.label,subtitle:an(e),trailing:(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.usesOAuth&&e.status!==`needs_auth`?(0,Q.jsx)(s,{type:`button`,size:`sm`,variant:`ghost`,disabled:n||!r,onClick:()=>{F(e.name)},children:`Sign out`}):null,e.source===`user`?A===e.name?(0,Q.jsx)(s,{type:`button`,size:`sm`,variant:`destructive`,disabled:n,onClick:()=>{P(e.name)},children:`Confirm remove`}):(0,Q.jsx)(s,{type:`button`,size:`sm`,variant:`ghost`,disabled:n||!i,"aria-label":`Remove ${e.name}`,onClick:()=>j(e.name),children:(0,Q.jsx)(E,{className:`size-3.5`})}):null]})}),e.error?(0,Q.jsx)(ke,{className:`px-3 py-2`,children:(0,Q.jsx)(Ee,{className:`text-xs text-pretty`,children:e.error})}):null,e.usesOAuth&&I?(0,Q.jsx)(nn,{provider:{id:e.name,name:e.label,isConfigured:e.status===`connected`,envVarName:``,authType:`oauth`,supportsOAuth:!0},onOAuthLogin:I(e)}):null]},`${e.source}:${e.name}`))})]})}function sn(e,t){return`${e}/${t}`}function cn(e,t){return Ze({id:e.id,name:e.name,provider:e.provider,modelId:e.modelId},t)}function ln({currentPatterns:e,enabled:t,model:n,models:r}){if(e===void 0&&t)return;let i=e??[],a=new Set(r.map(e=>un(e))),o=new Set;for(let t of r)cn(t,e)&&o.add(un(t));return t?o.add(un(n)):o.delete(un(n)),[...i.filter(e=>a.has(e)?!1:t||!Qe(n,e)),...o]}function un(e){return nt(e.provider,e.modelId)}function dn(e){return[e.name,e.modelId,e.provider,e.id].join(` `).toLowerCase()}function fn({configuredProviderIds:e,discoverableProviderIds:t,discoveringProviderId:n,enabledModels:r,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onOpenChange:l,open:u,providerLabel:d=N}){let[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(new Set),g=f.trim().toLowerCase(),_=(0,Z.useMemo)(()=>i.filter(t=>!e.has(t.provider)||cn(t,r)?!1:!g||dn(t).includes(g)),[e,r,i,g]),v=(0,Z.useMemo)(()=>{let e=new Map;for(let t of _){let n=e.get(t.provider);n?n.push(t):e.set(t.provider,[t])}return[...e.entries()]},[_]),y=(0,Z.useMemo)(()=>{let n=t??e;return Array.from(n).filter(t=>e.has(t)).sort((e,t)=>d(e).localeCompare(d(t)))},[e,t,d]),b=(0,Z.useMemo)(()=>{let e=new Map;for(let t of i)cn(t,r)&&e.set(t.provider,(e.get(t.provider)??0)+1);return e},[r,i]),x=e=>{h(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n})};return(0,Q.jsx)(Te,{open:u,onOpenChange:l,children:(0,Q.jsxs)(Se,{className:`max-w-lg`,children:[(0,Q.jsxs)(xe,{children:[(0,Q.jsx)(Ce,{children:`Add models`}),(0,Q.jsxs)(we,{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:y.map(e=>{let t=n===e,r=b.get(e)??0;return(0,Q.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,disabled:n!==null,onClick:()=>{o(e)},children:[t?(0,Q.jsx)(O,{"data-icon":`inline-start`}):(0,Q.jsx)(ie,{"data-icon":`inline-start`}),d(e),r>0?(0,Q.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[`· `,r,` active`]}):null]},e)})}),(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(q,{})}),(0,Q.jsx)(Me,{"aria-label":`Search discovered models`,value:f,onChange:e=>p(e.target.value),placeholder:`Search discovered models…`})]}),(0,Q.jsx)(`div`,{className:`max-h-72 overflow-y-auto`,children:v.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-center text-xs text-pretty text-muted-foreground`,children:_.length===0&&!g?`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:v.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:[d(e),(b.get(e)??0)>0?(0,Q.jsxs)(`span`,{className:`ml-1 font-normal normal-case tabular-nums`,children:[`· `,b.get(e),` active`]}):null]}),t.map(e=>{let t=m.has(e.id);return(0,Q.jsxs)(`button`,{type:`button`,className:c(`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:()=>x(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)(k,{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:c(`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)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>l(!1),children:`Cancel`}),(0,Q.jsxs)(s,{type:`button`,size:`sm`,disabled:m.size===0,onClick:()=>{let e=_.filter(e=>m.has(e.id));e.length>0&&a(e),l(!1)},children:[`Add `,m.size>0?(0,Q.jsxs)(`span`,{className:`tabular-nums`,children:[`(`,m.size,`)`]}):null]})]})]})})}function pn({draft:e,discoveringProviderId:t,modelDirty:n,modelFilter:r,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onModelFilterChange:l,onRemoveModel:u,onSetDefaultModel:d,onRevert:f,onSave:p,providers:m,saving:h,settingsLoading:g}){let[_,v]=(0,Z.useState)(!1),y=!e||g,b=r.trim().toLowerCase(),x=(0,Z.useMemo)(()=>{let t=new Set;for(let e of m)e.isConfigured&&t.add(e.id);for(let n of i)cn(n,e?.enabledModels)&&t.add(n.provider);return t},[e?.enabledModels,i,m]),S=(0,Z.useMemo)(()=>{let e=new Set;for(let t of m)t.discoverable===!0&&x.has(t.id)&&e.add(t.id);return e},[x,m]),C=(0,Z.useMemo)(()=>t=>!!e?.defaultProvider&&!!e?.defaultModel&&t.provider===e.defaultProvider&&t.modelId===e.defaultModel,[e?.defaultModel,e?.defaultProvider]),w=(0,Z.useMemo)(()=>{let e=new Map;for(let t of m)(t.displayName||t.name)&&e.set(t.id,t.displayName??t.name??t.id);return t=>e.get(t)??N(t)},[m]),T=(0,Z.useMemo)(()=>i.filter(t=>cn(t,e?.enabledModels)?!b||[t.name,t.modelId,t.provider,t.id].join(` `).toLowerCase().includes(b):!1),[e?.enabledModels,i,b]),D=(0,Z.useMemo)(()=>{let e=new Map;for(let t of T){let n=e.get(t.provider);n?n.push(t):e.set(t.provider,[t])}return[...e.entries()]},[T]),O=i.length===0?`No models discovered yet. Configure a provider, then add models.`:T.length===0&&!b?`Add models from your configured providers to make them available in chat.`:T.length===0?`No models match your search.`:null,A=()=>{v(!0)};return(0,Q.jsxs)(Xt,{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:T.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)(Zt,{dirty:n,disabled:y,onRevert:f,onSave:p,saving:h}),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(Fe,{className:`flex-1`,children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(q,{})}),(0,Q.jsx)(Me,{"aria-label":`Search listed models`,value:r,onChange:e=>l(e.target.value),placeholder:`Search listed models…`,disabled:y||T.length===0})]}),(0,Q.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,disabled:y,onClick:A,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}),b?null:(0,Q.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,disabled:y,onClick:A,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add models`]})]}):D.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:w(e)}),t.map(e=>(0,Q.jsx)($,{icon:(0,Q.jsx)(k,{provider:e.provider}),title:e.name,subtitle:`${w(e.provider)} · ${e.modelId}`,trailing:(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[C(e)?(0,Q.jsx)(`span`,{className:`px-2 text-xs font-medium text-muted-foreground`,children:`Default`}):d?(0,Q.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,className:c(de,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 active:scale-[0.96]`),disabled:y,"aria-label":`Set ${e.name} as default`,onClick:()=>d(e),children:[(0,Q.jsx)(We,{"data-icon":`inline-start`}),`Set default`]}):null,(0,Q.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,className:c(de,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]`),disabled:y,"aria-label":`Remove ${e.name}`,onClick:()=>u(e),children:[(0,Q.jsx)(E,{"data-icon":`inline-start`}),`Remove`]})]})},e.id))]},e))}),(0,Q.jsx)(fn,{open:_,configuredProviderIds:x,discoverableProviderIds:S,discoveringProviderId:t,enabledModels:e?.enabledModels,modelOptions:i,onAddModels:a,onDiscoverProvider:o,onOpenChange:v,providerLabel:w})]})}var mn=[{value:`system`,label:`System`,icon:W},{value:`light`,label:`Light`,icon:G},{value:`dark`,label:`Dark`,icon:U}];function hn({onThemePreferenceChange:e,themePreference:t}){return(0,Q.jsxs)(X,{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)(Y,{children:`Theme`}),(0,Q.jsx)(Oe,{children:`Match the system theme or pick light or dark.`})]}),(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(y,{"aria-label":`Theme`,className:`w-[160px]`,onValueChange:t=>e(t),options:[...mn],value:t})})]})}function gn(e,t,n=!0){return t&&n&&e.trim().length===0}function _n({attemptedSave:e,label:t,onChange:n,onToggleVisibility:r,placeholder:i,required:a=!0,showPassword:o,value:s}){let l=(0,Z.useId)(),u=gn(s,e,a);return(0,Q.jsxs)(X,{"data-invalid":u||void 0,children:[(0,Q.jsx)(Y,{htmlFor:l,children:t}),(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(Be,{})}),(0,Q.jsx)(Me,{id:l,type:o?`text`:`password`,placeholder:i,value:s,onChange:e=>n(e.target.value),"aria-label":t,"aria-invalid":u||void 0}),(0,Q.jsx)(Ne,{align:`inline-end`,children:(0,Q.jsx)(Pe,{size:`icon-xs`,className:c(le,`transition-[background-color,transform] duration-150 active:scale-[0.96]`),"aria-label":o?`Hide value`:`Show value`,onClick:r,children:o?(0,Q.jsx)(Le,{}):(0,Q.jsx)(B,{})})})]})]})}function vn({attemptedSave:e,icon:t,inputType:n=`text`,label:r,onChange:i,placeholder:a,required:o=!0,value:s}){let c=(0,Z.useId)(),l=gn(s,e,o);return(0,Q.jsxs)(X,{"data-invalid":l||void 0,children:[(0,Q.jsx)(Y,{htmlFor:c,children:r}),(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(t,{})}),(0,Q.jsx)(Me,{id:c,type:n,placeholder:a,value:s,onChange:e=>i(e.target.value),"aria-label":r,"aria-invalid":l||void 0})]})]})}var yn=`https://opencode.ai/zen/v1`,bn=`qwen35-122b-a10b`,xn=`e.g. OpenCode Zen, Nebius, Groq…`,Sn=`model-a, model-b (comma-separated)`,Cn=[{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 wn({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)(De,{className:`gap-2`,children:[(h||s)&&p?(0,Q.jsx)(vn,{attemptedSave:e,icon:Ge,label:`Provider name`,placeholder:xn,value:o??``,onChange:p}):null,v?(0,Q.jsx)(Tn,{value:n??`openai-completions`,onChange:l}):null,(0,Q.jsx)(_n,{attemptedSave:e,label:`API key`,placeholder:g,value:t,showPassword:_,onChange:c,onToggleVisibility:m}),h||s?(0,Q.jsx)(vn,{attemptedSave:e,icon:R,inputType:`url`,label:`Base URL`,placeholder:yn,value:r,onChange:u}):null,y?(0,Q.jsx)(vn,{attemptedSave:e,icon:ze,label:`Model ids`,placeholder:Sn,value:a??``,onChange:f}):null,h&&!y?(0,Q.jsx)(vn,{attemptedSave:e,icon:Ie,label:`Model name`,placeholder:bn,value:i,onChange:d}):null]})}function Tn({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)(y,{"aria-label":`API family`,value:e,options:Cn,placeholder:`Select API family`,onValueChange:e=>t(e)})]})}function En(e){return e.authType===`oauth`}function Dn(e){return e.supportsOAuth===!0}var On={id:`custom`,name:`Custom provider`,isConfigured:!1,envVarName:`CUSTOM_PROVIDER_API_KEY`,displayName:`Custom provider`};function kn(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function An({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`),[y,b]=(0,Z.useState)(``),[S,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!==On.id),On],[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=>jn(t,e)):F},[F,E]),R=(0,Z.useMemo)(()=>{let e=A.trim().toLowerCase();return I.filter(t=>jn(t,e))},[A,I]),z=(0,Z.useMemo)(()=>{let e=A.trim().toLowerCase();return F.filter(t=>jn(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??(x(e)?r?.name??``:``)),_(r?.api??`openai-completions`),m((r?.modelIds??[]).join(`, `)),f(r?.modelIds?.[0]??``)},G=()=>{U(),j(``),k(!0)},ee=()=>{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`||x(r)?l.trim().length===0||kn(p).length===0?!1:y.trim().length>0:g(r)?l.trim().length===0||d.trim().length===0?!1:v(r)||a?y.trim().length>0:!0:!0:!0,[s,l,d,p,y,r,a]),closeAddPicker:ee,closeEditor:U,confirmRemoveProvider:M,credentialProviders:P,displayName:y,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(),J.success(`${t.name} removed from your configured providers.`),N(null)}catch(e){J.error(e instanceof Error?e.message:`Failed to remove provider`)}},handleSave:async e=>{if(!t)return;T(!0);let n=e===`custom`||x(e),r=g(e);if(n){let n=kn(p);if(!s.trim()||!l.trim()||!y.trim()||n.length===0)return;try{await t({providerId:e,apiKey:s.trim(),baseUrl:l.trim(),displayName:y.trim(),api:h,models:n,...e===`custom`?{createOccInstance:!0}:{}}),J.success(`Provider credentials applied to your active sessions.`),U(),ee()}catch(e){J.error(e instanceof Error?e.message:`Failed to update provider`)}return}let i=r&&v(e),o=r&&(i||a);if(s.trim()&&!(r&&(!l.trim()||!d.trim()))&&!(o&&!y.trim()))try{await t({providerId:e,apiKey:s.trim(),...r?{baseUrl:l.trim(),modelId:d.trim(),...o?{displayName:y.trim()}:{},...a?{createOccInstance:!0}:{}}:{}}),J.success(`Provider credentials applied to your active sessions.`),U(),ee()}catch(e){J.error(e instanceof Error?e.message:`Failed to update provider`)}},modelId:d,models:p,openAddPicker:G,openEditor:W,pickerHasResults:B,resetEditor:H,searchQuery:E,selectProviderFromPicker:e=>{W(e,{newOccInstance:g(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:S,unconfiguredProviders:I}}function jn(e,t){if(!t)return!0;let n=Dn(e)?En(e)?`oauth sign-in login`:`api key oauth sign-in login`:e.id===`custom`||x(e.id)?`custom provider endpoint openai anthropic google compatible`:g(e.id)?`api key base url model name chat completions`:``;return[e.name,e.envVarName,e.id,n].join(` `).toLowerCase().includes(t)}function Mn({addPickerQuery:e,credentialProvidersLength:t,filteredPickerAvailable:n,filteredPickerConfigured:r,pickerHasResults:i,onClose:a,onQueryChange:o,onSelect:c}){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)(s,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Back to providers`,onClick:a,children:(0,Q.jsx)(D,{})}),(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)(Fe,{children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(q,{})}),(0,Q.jsx)(Me,{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,50vh)] overflow-y-auto`,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)(In,{provider:e,configured:!1,onSelect:()=>c(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)(In,{provider:e,configured:!0,onSelect:()=>c(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 Nn({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)(s,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Back to provider list`,onClick:e,children:(0,Q.jsx)(D,{})}),(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)(nn,{provider:r,onConfigured:t,onOAuthLogin:n},r.id)]})}function Pn({provider:e,api:t,apiKey:n,baseUrl:r,modelId:i,models:a,displayName:o,showPassword:c,attemptedSave:l,isPending:u,canSave:d,onApiKeyChange:f,onApiChange:p,onBaseUrlChange:h,onModelIdChange:_,onModelsChange:v,onDisplayNameChange:y,onTogglePassword:b,onBack:S,onCancel:C,onConfigured:w,onOAuthLogin:T,onSave:E}){let k=e.id===`custom`||x(e.id),A=j[e.id]??(k?j.custom:{placeholder:`Enter credentials…`,help:`Stored securely in your local environment overrides.`}),M=g(e.id)&&!k,N=Dn(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)(s,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Back to provider list`,onClick:S,children:(0,Q.jsx)(D,{})}),(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:k?`Name this custom provider, pick its API family, then enter its API key, https base URL, and model ids.`:M?`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)(wn,{attemptedSave:l,api:t,apiKey:n,baseUrl:r,modelId:i,models:a,displayName:o,isCustom:k,openAiChat:M,placeholder:A.placeholder,showPassword:c,onApiKeyChange:f,onApiChange:p,onBaseUrlChange:h,onModelIdChange:_,onModelsChange:v,onDisplayNameChange:y,onTogglePassword:b}),(0,Q.jsxs)(ke,{className:`px-3 py-2`,children:[(0,Q.jsx)(m,{}),(0,Q.jsx)(Ee,{className:`text-xs text-pretty`,children:A.help})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[(0,Q.jsx)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:C,children:`Cancel`}),(0,Q.jsxs)(s,{type:`button`,size:`sm`,disabled:u||!d,onClick:E,children:[u?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Save`]})]}),N?(0,Q.jsx)(nn,{provider:e,onConfigured:w??C,onOAuthLogin:T},`${e.id}-oauth`):null]})}function Fn({confirmRemoveProvider:e,isPending:t,onClose:n,onConfirm:r}){return(0,Q.jsx)(be,{open:e!==null,onOpenChange:e=>{e||n()},children:(0,Q.jsxs)(he,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsxs)(ye,{children:[`Remove `,e?.name??`provider`,`?`]}),(0,Q.jsx)(me,{children:`This clears stored credentials for this provider from your workspace settings. Active sessions will stop using it immediately.`})]}),(0,Q.jsxs)(_e,{children:[(0,Q.jsx)(ve,{disabled:t,children:`Cancel`}),(0,Q.jsxs)(ge,{disabled:t||!e,onClick:()=>{e&&r(e)},children:[t?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Remove provider`]})]})]})})}function In({configured:e,onSelect:t,provider:n}){let r=g(n.id),i=n.id===`custom`||x(n.id),a=En(n),o=Dn(n);return(0,Q.jsxs)(`button`,{type:`button`,className:c(`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)(k,{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 Ln({providers:e,editingProvider:t,form:n,operation:r,actions:i,onEdit:a,onCancelEdit:o,onSave:l,onRemove:u,onOAuthLogin:d,onConfigured:f}){let{api:p,apiKey:h,baseUrl:_,modelId:v,models:y,displayName:b,showPassword:S,attemptedSave:C,canSave:w}=n,{isPending:T,canRemove:D}=r,{onApiKeyChange:A,onApiChange:M,onBaseUrlChange:N,onModelIdChange:P,onModelsChange:F,onDisplayNameChange:I,onTogglePassword:L}=i;return(0,Q.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.map(e=>{let n=t===e.id,r=x(e.id),i=j[e.id]??j[r?`custom`:`openai-chat-completions`],R=g(e.id),z=En(e),B=Dn(e);return(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)($,{interactive:!1,icon:(0,Q.jsx)(k,{provider:e.id,api:e.api,className:`text-foreground/80`}),title:e.name,subtitle:z?`OAuth sign-in`:B?`API key or OAuth`:r?`Custom provider · API key + base URL + models`:R?`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)(s,{type:`button`,variant:`ghost`,size:`sm`,className:c(de,`h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]`),disabled:T||!D,"aria-label":`Remove ${e.name}`,onClick:()=>u(e),children:[(0,Q.jsx)(E,{"data-icon":`inline-start`}),`Remove`]}),(0,Q.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,className:c(de,`h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]`),disabled:T,onClick:()=>{if(n){o();return}a(e.id)},children:[n?null:(0,Q.jsx)(ee,{"data-icon":`inline-start`}),n?`Cancel`:`Update`]})]})}),n?(0,Q.jsx)(Yt,{tone:`inset`,padding:`md`,className:`flex flex-col gap-2 border-t border-border/30`,children:z?(0,Q.jsx)(nn,{provider:e,onConfigured:f,onOAuthLogin:d},e.id):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(wn,{attemptedSave:C,api:e.api??p,apiKey:h,baseUrl:_,modelId:v,models:y,displayName:b,isCustom:r,openAiChat:R,placeholder:i.placeholder,showPassword:S,onApiKeyChange:A,onApiChange:M,onBaseUrlChange:N,onModelIdChange:P,onModelsChange:F,onDisplayNameChange:r||e.providerFamily!==void 0?I:void 0,onTogglePassword:L}),(0,Q.jsxs)(ke,{className:`px-3 py-2`,children:[(0,Q.jsx)(m,{}),(0,Q.jsx)(Ee,{className:`text-xs text-pretty`,children:i.help})]}),(0,Q.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,Q.jsxs)(s,{type:`button`,size:`sm`,disabled:T||!w,onClick:()=>l(e.id),children:[T?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Save`]})}),B?(0,Q.jsx)(nn,{provider:e,onConfigured:f,onOAuthLogin:d},`${e.id}-oauth`):null]})}):null]},e.id)})})}function Rn({isLoading:e,isPending:t,onOAuthLogin:n,onRemoveProvider:r,onUpdateProvider:i,providers:a}){let{activeProviders:o,addPickerOpen:c,addPickerQuery:l,api:u,apiKey:d,attemptedSave:f,baseUrl:p,canSave:m,closeAddPicker:h,closeEditor:g,confirmRemoveProvider:_,credentialProviders:v,displayName:y,editingProvider:b,editingUnconfiguredProvider:x,filteredActiveProviders:S,filteredPickerAvailable:C,filteredPickerConfigured:w,handleRemove:T,handleSave:E,modelId:D,models:k,openAddPicker:A,openEditor:j,pickerHasResults:M,searchQuery:N,selectProviderFromPicker:P,setAddPickerQuery:F,setApi:I,setApiKey:L,setBaseUrl:R,setConfirmRemoveProvider:z,setDisplayName:B,setModelId:V,setModels:H,setSearchQuery:U,setShowPassword:W,showPassword:G}=An({onRemoveProvider:r,onUpdateProvider:i,providers:a}),ee={api:u,apiKey:d,baseUrl:p,modelId:D,models:k,displayName:y,showPassword:G,attemptedSave:f,canSave:m},te={isPending:t,canRemove:!!r},ne={onApiKeyChange:L,onApiChange:I,onBaseUrlChange:R,onModelIdChange:V,onModelsChange:H,onDisplayNameChange:B,onTogglePassword:()=>W(e=>!e)};return(0,Q.jsxs)(Xt,{title:`Providers`,description:"Locally, API keys are stored in `.env.local`. When deployed, they are stored encrypted in your account.",children:[c?(0,Q.jsx)(Mn,{addPickerQuery:l,credentialProvidersLength:v.length,filteredPickerAvailable:C,filteredPickerConfigured:w,pickerHasResults:M,onClose:h,onQueryChange:F,onSelect:P}):x&&En(x)?(0,Q.jsx)(Nn,{provider:x,onBack:A,onConfigured:g,onOAuthLogin:n},x.id):x?(0,Q.jsx)(Pn,{provider:x,api:u,apiKey:d,baseUrl:p,modelId:D,models:k,displayName:y,showPassword:G,attemptedSave:f,isPending:t,canSave:m,onApiKeyChange:L,onApiChange:I,onBaseUrlChange:R,onModelIdChange:V,onModelsChange:H,onDisplayNameChange:B,onTogglePassword:()=>W(e=>!e),onBack:A,onCancel:g,onConfigured:g,onOAuthLogin:n,onSave:()=>{b&&E(b)}}):(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)(Fe,{className:`flex-1`,children:[(0,Q.jsx)(Ne,{align:`inline-start`,children:(0,Q.jsx)(q,{})}),(0,Q.jsx)(Me,{type:`text`,placeholder:`Search credentials…`,value:N,onChange:e=>U(e.target.value),"aria-label":`Search credentials`,disabled:e||o.length===0})]}),(0,Q.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,disabled:e||v.length===0,onClick:A,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)(O,{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)(s,{type:`button`,variant:`outline`,size:`sm`,disabled:v.length===0,onClick:A,children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add provider`]})]}):S.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)(Ln,{providers:S,editingProvider:b,form:ee,operation:te,actions:ne,onEdit:j,onCancelEdit:g,onSave:e=>void E(e),onRemove:z,onOAuthLogin:n,onConfigured:g})]}),(0,Q.jsx)(Fn,{confirmRemoveProvider:_,isPending:t,onClose:()=>z(null),onConfirm:e=>{T(e)}})]})}var zn=new Set([`auto`,`global`,`local`,`project`,`workspace`]);function Bn(e){let t=e.source?.trim();if(t&&!zn.has(t))return t;let n=(e.workspacePath??e.path??``).trim();return n?Vn(n):e.name.trim()}function Vn(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/`)?Hn(`../${t}`):t.startsWith(`../agent-workspace/.pi/`)?Hn(t.replace(`../agent-workspace/.pi/`,`../agent-workspace/pi/`)):Hn(t);let n=t.match(/\/(agent-workspace\/.+)$/);if(n?.[1])return Hn(`../${n[1].replace(/^agent-workspace\/\.pi\//,`agent-workspace/pi/`)}`);let r=t.match(/\/\.pi\/(extensions\/.+|skills\/.+|prompts\/.+|themes\/.+)$/);return r?.[1]?Hn(r[1]):``}function Hn(e){return e.replace(/\/SKILL\.md$/i,``).replace(/\/index\.(ts|tsx|js|jsx|mjs|cjs)$/i,``)}function Un(e,t){let n=Vn(t);return e.some(e=>Vn(e)===n)}function Wn(e,t){let n=t.trim();if(!n)return e;let r=Vn(n);return!r||Un(e,r)?e:[...e,r]}function Gn({addLabel:e,catalog:t,onChange:n,placeholder:r,values:i}){let[a,o]=(0,Z.useState)(``),c=new Set,l=[];for(let e of t){let t=Bn(e);t.length===0||c.has(t)||(c.add(t),l.push({value:t,label:e.name||t}))}let u=new Map(l.map(e=>[e.value,e.label])),d=e=>u.get(e)??u.get(Vn(e)),f=l.filter(e=>!Un(i,e.value)),p=()=>{let e=a.trim();e&&(n(Wn(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=d(e);return(0,Q.jsx)($,{interactive:!1,title:t??e,subtitle:t&&t!==e?e:void 0,trailing:(0,Q.jsx)(s,{type:`button`,variant:`ghost`,size:`icon-xs`,"aria-label":`Remove ${e}`,onClick:()=>n(i.filter(t=>t!==e)),children:(0,Q.jsx)(E,{})})},e)}),f.length>0?(0,Q.jsx)(y,{"aria-label":e,value:null,placeholder:e,options:f,onValueChange:e=>{e&&n(Wn(i,e))}}):(0,Q.jsxs)(Fe,{children:[(0,Q.jsx)(Me,{"aria-label":e,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),p())},placeholder:r}),(0,Q.jsx)(Ne,{align:`inline-end`,children:(0,Q.jsxs)(Pe,{onClick:p,disabled:!a.trim(),children:[(0,Q.jsx)(K,{"data-icon":`inline-start`}),`Add`]})})]})]})}var Kn=[{value:`auto`,label:`Auto`},{value:`sse`,label:`SSE`},{value:`websocket`,label:`WebSocket`}],qn=[{value:`all`,label:`All`},{value:`one-at-a-time`,label:`One at a time`}];function Jn({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)(Ae,{"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)(Ae,{"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)(y,{"aria-label":`Transport`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,transport:e})),options:[...Kn],value:e?.transport??`auto`})}),(0,Q.jsx)($,{title:`Steering`,subtitle:`How queued steers are delivered mid-turn`,trailing:(0,Q.jsx)(y,{"aria-label":`Steering`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,steeringMode:e})),options:[...qn],value:e?.steeringMode??`all`})}),(0,Q.jsx)($,{title:`Follow-up`,subtitle:`How queued follow-ups run after the turn`,trailing:(0,Q.jsx)(y,{"aria-label":`Follow-up`,className:`w-[160px]`,disabled:n,onValueChange:e=>t(t=>({...t,followUpMode:e})),options:[...qn],value:e?.followUpMode??`all`})})]})}function Yn({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)(Xt,{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)(Zt,{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)(Ae,{"aria-label":`Skill slash commands`,checked:e?.enableSkillCommands??!0,disabled:!e,onCheckedChange:t})}),(0,Q.jsx)(Xn,{label:`Skills`,count:e?.skills.length??0,children:(0,Q.jsx)(Gn,{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)(Jn,{draft:e,updateDraft:_}),(0,Q.jsx)($,{interactive:!1,title:`Catalog`,subtitle:(0,Q.jsx)(`span`,{className:`tabular-nums`,children:y})}),(0,Q.jsxs)(Xn,{label:`Packages`,count:u.length,children:[(0,Q.jsx)(Gn,{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)(Xn,{label:`Extensions`,count:e?.extensions.length??0,children:(0,Q.jsx)(Gn,{addLabel:`Add extension`,catalog:f?.extensions??[],placeholder:`../agent-workspace/pi/extensions`,values:e?.extensions??[],onChange:n})}),(0,Q.jsx)(Xn,{label:`Prompts`,count:e?.prompts.length??0,children:(0,Q.jsx)(Gn,{addLabel:`Add prompt`,catalog:f?.prompts??[],placeholder:`../agent-workspace/pi/prompts`,values:e?.prompts??[],onChange:i})}),(0,Q.jsx)(Xn,{label:`Themes`,count:e?.themes.length??0,children:(0,Q.jsx)(Gn,{addLabel:`Add theme`,catalog:f?.themes??[],placeholder:`../agent-workspace/pi/themes`,values:e?.themes??[],onChange:c})})]})})}function Xn({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 Zn({isLoading:e,isPending:t,onUpdateProvider:n,providers:r}){let[i,a]=(0,Z.useState)(!1),[o,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),_=(0,Z.useMemo)(()=>r.find(e=>e.id===`daytona`),[r]),v=(0,Z.useMemo)(()=>r.find(e=>e.id===`daytona-target`),[r]),y=!!(_?.isConfigured&&v?.isConfigured),b=()=>{l(``),d(``),p(!1),g(!1)},x=()=>{a(!1),b()},S=async()=>{if(n&&(g(!0),!(!o.trim()&&!u.trim())))try{o.trim()&&await n({providerId:`daytona`,apiKey:o.trim()}),u.trim()&&await n({providerId:`daytona-target`,apiKey:u.trim()}),J.success(`Sandbox Provider updated successfully`),x()}catch(e){J.error(e instanceof Error?e.message:`Failed to update provider`)}},C=o.trim().length>0||u.trim().length>0;return(0,Q.jsx)(Xt,{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)(O,{}),(0,Q.jsx)(`span`,{children:`Loading…`})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)($,{interactive:!1,icon:(0,Q.jsx)(V,{className:`size-4 text-foreground/80`}),title:`Daytona`,subtitle:`DAYTONA_API_KEY · DAYTONA_TARGET`,trailing:(0,Q.jsx)(s,{type:`button`,variant:`ghost`,size:`sm`,className:c(de,`h-7 px-2 text-xs transition-[background-color,transform] duration-150 active:scale-[0.96]`),onClick:()=>{if(i){x();return}a(!0),b()},children:i?`Cancel`:y?`Update`:`Configure`})}),i?(0,Q.jsxs)(Yt,{tone:`inset`,padding:`md`,className:`flex flex-col gap-2 border-t border-border/30`,children:[(0,Q.jsxs)(De,{className:`gap-2`,children:[(0,Q.jsx)(_n,{attemptedSave:h,label:`Daytona API key`,placeholder:`Enter Daytona API Key…`,value:o,showPassword:f,required:!1,onChange:l,onToggleVisibility:()=>p(e=>!e)}),(0,Q.jsx)(vn,{attemptedSave:h,icon:R,label:`Region / target`,placeholder:`e.g. us-east`,value:u,required:!1,onChange:d})]}),(0,Q.jsxs)(ke,{className:`px-3 py-2`,children:[(0,Q.jsx)(m,{}),(0,Q.jsx)(Ee,{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)(s,{type:`button`,size:`sm`,disabled:t||!C,onClick:()=>void S(),children:[t?(0,Q.jsx)(O,{"data-icon":`inline-start`}):null,`Save`]})})]}):null]})})}function Qn(e){return{defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,defaultThinkingLevel:e.defaultThinkingLevel,enabledModels:e.enabledModels===void 0?null:or(e.enabledModels)}}function $n(e){let t=e.enabledModels,n=t==null?null:or(t).toSorted();return{defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,defaultThinkingLevel:e.defaultThinkingLevel,enabledModels:n}}function er(e){return{packages:e.packages,extensions:or(e.extensions),skills:or(e.skills),prompts:or(e.prompts),themes:or(e.themes),enableSkillCommands:e.enableSkillCommands}}function tr(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 nr(e,t){return JSON.stringify(e)===JSON.stringify(t)}function rr(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 ir(e){return e.map(e=>typeof e==`string`?e:JSON.stringify(e))}function ar(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 or(e){return e.flatMap(e=>{let t=e.trim();return t?[t]:[]})}function sr({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 t=new Map;for(let e of v)_.has(e.provider)&&t.set(e.id,e);for(let e of f)_.has(e.provider)&&t.set(e.id,e);let n=[...t.values()];return!e?.defaultProvider||!e.defaultModel||n.some(t=>t.provider===e.defaultProvider&&t.modelId===e.defaultModel)||!_.has(e.defaultProvider)?n:[{id:sn(e.defaultProvider,e.defaultModel),name:e.defaultModel,provider:e.defaultProvider,modelId:e.defaultModel,available:!1},...n]},[v,_,f,e]),b=g.current??(r?$n(r.effective):null),x=!!e&&!!b&&!nr($n(e),b),S=(0,Z.useCallback)(()=>{g.current=null},[]),C=async(e,n)=>{t(e),l(`models`);try{let r=await c(Qn(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=$n(i),t(i),n?.silent||J.success(`Pi settings saved`),!0}catch(e){return J.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:ln({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=ln({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}}function cr({draft:e,settings:t,updateDraft:n}){let[r,i]=(0,Z.useState)(null),[a,o]=(0,Z.useState)(),s=(0,Z.useMemo)(()=>ir(t?.effective.packages??[]),[t?.effective.packages]),c=r??s;return{packageRows:c,packageError:a,resourceDirty:!!e&&!!t&&(!nr(er(e),er(t.effective))||!nr(tr(e),tr(t.effective))||!nr(c.filter(e=>e.trim()),ir(t.effective.packages))),handlePackageRowsChange:e=>{i(e);try{let t=ar(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))}}}var lr={appearance:{id:`appearance`,order:10,title:`Appearance`,ariaLabel:`Appearance settings`,icon:He,group:`workspace`},chat:{id:`chat`,order:20,title:`Chat`,ariaLabel:`Chat settings`,icon:Ve,group:`workspace`},mcp:{id:`mcp`,order:25,title:`MCP`,ariaLabel:`MCP connection settings`,icon:te,group:`workspace`},sandbox:{id:`sandbox`,order:30,title:`Sandbox`,ariaLabel:`Sandbox settings`,icon:V,group:`advanced`},providers:{id:`providers`,order:40,title:`Providers`,ariaLabel:`Provider settings`,icon:Re,group:`models`},"llm-models":{id:`llm-models`,order:50,title:`LLM Models`,ariaLabel:`LLM model settings`,icon:M,group:`models`},skills:{id:`skills`,order:60,title:`Skills`,ariaLabel:`Skill settings`,icon:z,group:`advanced`},"pi-harness":{id:`pi-harness`,order:70,title:`Pi Harness`,ariaLabel:`Pi harness settings`,icon:A,group:`advanced`},keybindings:{id:`keybindings`,order:80,title:`Keybindings`,ariaLabel:`Keybinding settings`,icon:H,group:`advanced`},sessions:{id:`sessions`,order:90,title:`Sessions`,ariaLabel:`Session settings`,icon:Ke,group:`workspace`}},ur=[{id:`workspace`,label:`Workspace`},{id:`models`,label:`Models`},{id:`advanced`,label:`Advanced`}],dr=Object.values(lr).sort((e,t)=>e.order-t.order);function fr(e){return dr.some(t=>t.id===e)}function pr({children:e,description:t,label:n}){return(0,Q.jsxs)(X,{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)(Y,{children:n}),(0,Q.jsx)(Oe,{children:t})]}),(0,Q.jsx)(`div`,{className:`shrink-0`,children:e})]})}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}=re(),{models:y,resources:b}=ne(),[x,S]=(0,Z.useState)(null),[C,w]=(0,Z.useState)(null),T=rr(b),E=e=>{S(t=>t&&e(t))},{packageRows:D,packageError:O,resourceDirty:k,handlePackageRowsChange:A,revertResourceDraft:j}=cr({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}=sr({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&&nr(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),J.success(`Pi settings saved`)}catch(e){throw J.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 hr({active:e,onClick:t,icon:n,label:r}){return(0,Q.jsxs)(`button`,{type:`button`,onClick:t,className:c(`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 gr({open:e,onOpenChange:t,initialTab:n}){return(0,Z.useEffect)(()=>{se(ce())},[]),(0,Q.jsx)(_r,{initialTab:n,onOpenChange:t,open:e})}function _r({initialTab:e,onOpenChange:t,open:n}){let r=(0,Z.useRef)(()=>{t(!1)});return(0,Q.jsx)(Te,{open:n,onOpenChange:(e,n)=>{if(e){t(!0);return}r.current(n)},children:n?(0,Q.jsx)(yr,{initialTab:e,onCloseAttemptRef:r,onOpenChange:t}):null})}function vr({activeTab:e,form:t,preferences:n,updatePreference:r}){let{isLoadingMcp:i,isLoadingProviders:a,isUpdatingMcp:o,isUpdatingProvider:s,mcpConnections:c,onMcpOAuth:l,onOAuthLogin:u,onRemoveMcp:d,onRemoveProvider:f,onThemePreferenceChange:p,onUpdateMcp:m,onUpdateProvider:h,providers:g,resources:_,settingsLoading:v,themePreference:b,draft:x,savingSection:S,packageRows:C,packageError:w,modelFilter:T,setModelFilter:E,resourceSummary:D,modelOptions:O,modelDirty:k,resourceDirty:A,revertResourceDraft:j,revertModelDraft:M,updateDraft:N,handlePackageRowsChange:P,addModels:F,removeModel:I,setDefaultModel:L,discoverProvider:R,discoveringProviderId:z,saveSection:B}=t,V=e=>(0,Q.jsx)(Yn,{scope:e,draft:x,updateDraft:N,onEnableSkillCommandsChange:e=>N(t=>({...t,enableSkillCommands:e})),onExtensionsChange:e=>N(t=>({...t,extensions:e})),onPackageRowsChange:P,onPromptsChange:e=>N(t=>({...t,prompts:e})),onRevert:j,onSave:()=>x&&B(`resources`,{...er(x),...e===`harness`?tr(x):{}}),onSkillsChange:e=>N(t=>({...t,skills:e})),onThemesChange:e=>N(t=>({...t,themes:e})),packageError:w,packageRows:C,resourceDirty:A,resources:_,resourceSummary:D,saving:S===`resources`,settingsLoading:v});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)(hn,{onThemePreferenceChange:p,themePreference:b}),(0,Q.jsx)(pr,{label:`Density`,description:`Adjust spacing across chat and panels.`,children:(0,Q.jsx)(y,{"aria-label":`Density`,value:n.density,onValueChange:e=>r(`density`,e),options:[{label:`Comfortable`,value:`comfortable`},{label:`Compact`,value:`compact`}]})}),(0,Q.jsx)(pr,{label:`Motion`,description:`Respect the system setting or reduce UI motion.`,children:(0,Q.jsx)(y,{"aria-label":`Motion`,value:n.motion,onValueChange:e=>r(`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)(pr,{label:`Streaming transcript`,description:`Follow new output or preserve the reading position.`,children:(0,Q.jsx)(y,{"aria-label":`Streaming transcript`,value:n.transcript,onValueChange:e=>r(`transcript`,e),options:[{label:`Follow output`,value:`follow`},{label:`Manual`,value:`manual`}]})})]}),mcp:()=>(0,Q.jsx)(on,{connections:c,isLoading:i??!1,isPending:o??!1,onOAuth:l,onRemove:d,onUpsert:m}),sandbox:()=>(0,Q.jsx)(Zn,{isLoading:a??!1,isPending:s??!1,providers:g,onUpdateProvider:h}),providers:()=>(0,Q.jsx)(Rn,{isLoading:a??!1,isPending:s??!1,providers:g,onOAuthLogin:u,onRemoveProvider:f,onUpdateProvider:h}),"llm-models":()=>(0,Q.jsx)(pn,{draft:x,discoveringProviderId:z,modelDirty:k,modelFilter:T,modelOptions:O,onAddModels:F,onDiscoverProvider:R,onModelFilterChange:E,onRemoveModel:I,onSetDefaultModel:L,providers:g,onRevert:M,onSave:()=>x&&B(`models`,Qn(x)),saving:S===`models`,settingsLoading:v}),skills:()=>V(`skills`),"pi-harness":()=>V(`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)(pr,{label:`Confirm session deletion`,description:`Require confirmation before deleting a saved conversation.`,children:(0,Q.jsx)(Ae,{checked:n.confirmSessionDelete,onCheckedChange:e=>r(`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 yr({initialTab:e,onCloseAttemptRef:t,onOpenChange:n}){let r=mr(),{resourceDirty:i,revertResourceDraft:a,resetDraft:o,requestCloseSettings:s,resetCommittedModelBaseline:c}=r,[l,u]=(0,Z.useState)(()=>e??`appearance`),[d,f]=(0,Z.useState)(ce);(0,Z.useEffect)(()=>{oe(d)},[d]);let p=(e,t)=>{f(n=>({...n,[e]:t}))},[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(`resource`),v=dr.find(e=>e.id===l)??dr[0],b=(e,t)=>{if(e){n(!0);return}t?.cancel(),(async()=>{let e=await s();if(e===`close`){n(!1);return}if(e===`wait`){J.message(`Saving model list…`);return}_(i?`resource`:`model`),h(!0)})()};t.current=e=>{b(!1,e)};let x=()=>{a(),o(),c(),h(!1),n(!1)};(0,Z.useEffect)(()=>{c()},[c]);let S=(0,Q.jsx)(vr,{activeTab:l,form:r,preferences:d,updatePreference:p});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(Se,{className:`flex h-[min(640px,calc(100dvh-4rem))] w-full max-w-[calc(100%-2rem)] overflow-hidden p-0 sm:max-w-[min(860px,calc(100%-2rem))]`,children:[(0,Q.jsx)(Ce,{className:`sr-only`,children:`Settings`}),(0,Q.jsx)(we,{className:`sr-only`,children:`Customize your settings here.`}),(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0`,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-4 pt-5 pb-2 text-label font-semibold`,children:`Settings`}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2 pb-4`,children:ur.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:dr.filter(t=>t.group===e.id).map(e=>(0,Q.jsx)(hr,{active:l===e.id,onClick:()=>u(e.id),icon:e.icon,label:e.title},e.id))})]},e.id))})]}),(0,Q.jsxs)(`main`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,Q.jsx)(`header`,{className:`flex h-14 shrink-0 items-center gap-2 border-b border-border/10 px-6`,children:(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-between`,children:(0,Q.jsx)(rt,{children:(0,Q.jsxs)(it,{children:[(0,Q.jsx)(at,{className:`hidden sm:block`,children:`Settings`}),(0,Q.jsx)(st,{className:`hidden sm:block`}),(0,Q.jsx)(at,{children:(0,Q.jsx)(ot,{children:v.title})})]})})})}),(0,Q.jsx)(`div`,{className:`shrink-0 border-b border-border/10 bg-muted/5 px-4 py-2.5 sm:hidden`,children:(0,Q.jsx)(y,{"aria-label":`Settings sections`,value:l,onValueChange:e=>{fr(e)&&u(e)},options:dr.map(e=>({label:e.title,value:e.id}))})}),(0,Q.jsx)(qt,{className:`min-h-0 flex-1`,children:(0,Q.jsx)(`div`,{id:`panel-${l}`,role:`tabpanel`,"aria-label":v.title,tabIndex:0,className:`p-6 outline-none`,children:S})})]})]})]}),(0,Q.jsx)(be,{open:m,onOpenChange:h,children:(0,Q.jsxs)(he,{children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsx)(ye,{children:`Discard unsaved changes?`}),(0,Q.jsx)(me,{children:g===`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)(_e,{children:[(0,Q.jsx)(ve,{children:`Keep editing`}),(0,Q.jsx)(ge,{onClick:x,children:`Discard changes`})]})]})})]})}export{gr as SettingsDialog};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-_dfI7Arx.js";var t=e(`external-link`,[[`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`}]]),n=e(`globe`,[[`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`}]]),r=e(`shield-check`,[[`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`}]]),i=e(`sparkles`,[[`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`}]]);export{t as i,r as n,n as r,i as t};
|
package/dist/web/client/assets/{subagent-chat-panel-C5ukYiUx.js → subagent-chat-panel-BESrXxAR.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./prompt-input-WaGSKZCU.js";import{t as n}from"./subagent-transcript-
|
|
1
|
+
import{t as e}from"./jsx-runtime-NZYk81nU.js";import{t}from"./prompt-input-WaGSKZCU.js";import{t as n}from"./subagent-transcript-CAqFJfMj.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};
|
package/dist/web/client/assets/{subagent-transcript-lqNcSVbH.js → subagent-transcript-CAqFJfMj.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./button-Dl0ce3Y5.js";import{t as i}from"./utils-Brtgag-m.js";import{t as a}from"./bot-DbB9BKL0.js";import{t as o}from"./chevron-down-DUUprRP5.js";import{a as s,c,d as l,f as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,t as v,u as y}from"./virtualized-turn-list-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./button-Dl0ce3Y5.js";import{t as i}from"./utils-Brtgag-m.js";import{t as a}from"./bot-DbB9BKL0.js";import{t as o}from"./chevron-down-DUUprRP5.js";import{a as s,c,d as l,f as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,t as v,u as y}from"./virtualized-turn-list-mL3ONUUA.js";import{t as b}from"./session-tool-renderer-Bd3dsE2D.js";import{n as x}from"./file-text-TmalmYrb.js";import{n as S,t as C}from"./loader-circle-B5GIZGxd.js";import{t as w}from"./tool-timeline-VnMRQoLS.js";import{t as T}from"./refresh-cw-l9WPHRkq.js";import{t as E}from"./prime-agent-artifacts-C-g1VPiW.js";var D=e(t(),1),O=n();function k({children:e,tree:t,className:n}){let r=(0,D.useMemo)(()=>d(e,t),[e,t]),a=r.some(e=>e.status===`queued`||e.status===`running`||e.status===`recovering`),[c,l]=(0,D.useState)(a);return r.length===0?null:(0,O.jsxs)(`section`,{className:i(`mt-2 rounded-xl border border-border/60 bg-muted/20`,n),children:[(0,O.jsxs)(`button`,{type:`button`,"aria-expanded":c||a,onClick:()=>l(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:[a?(0,O.jsx)(C,{className:`size-3.5 animate-spin text-primary`}):(0,O.jsx)(S,{className:`size-3.5 text-emerald-600 dark:text-emerald-400`}),(0,O.jsx)(`span`,{className:`flex-1 font-medium`,children:a?`Subagents working`:`Subagents completed`}),(0,O.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r.length}),(0,O.jsx)(o,{className:i(`size-3.5 text-muted-foreground transition-transform`,(c||a)&&`rotate-180`)})]}),c||a?(0,O.jsx)(`div`,{className:`space-y-1 border-t border-border/50 px-3 py-2`,children:r.map(e=>(0,O.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2`,style:{paddingLeft:`${Math.max(0,e.depth??0)*12}px`},children:[(0,O.jsx)(`span`,{className:`mt-0.5 shrink-0`,children:s(e.status)}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,O.jsx)(`span`,{className:`truncate text-sm text-foreground/85`,children:e.label}),e.model?(0,O.jsx)(`span`,{className:`truncate font-mono text-micro text-muted-foreground`,children:e.model}):null]}),e.answerPreview||e.activity?.toolName||e.error?(0,O.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:e.error??e.answerPreview??e.activity?.toolName}):null]}),(0,O.jsx)(`span`,{className:`shrink-0 text-micro capitalize text-muted-foreground`,children:e.status})]},e.id))}):null]})}function A(e){return e.status===`running`||e.status===`recovering`?`streaming`:e.status===`error`||e.status===`failed`?`error`:`ready`}function j({turn:e,isLast:t,isStreaming:n,artifacts:r,presentation:i}){let a=(0,D.useMemo)(()=>e.assistants.flatMap((r,i)=>c(f(r.parts??[]),{messageId:r.id,isLast:t&&i===e.assistants.length-1,isStreaming:n,suppressQuestionTool:!0,ToolRendererComponent:b,TextRendererComponent:m})),[t,n,e.assistants]);return(0,O.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[e.user?(0,O.jsx)(y,{from:`user`,children:(0,O.jsx)(l,{children:(0,O.jsx)(h,{message:e.user,enableImagePreview:!1})})}):null,e.assistants.length>0?(0,O.jsx)(y,{from:`assistant`,children:(0,O.jsx)(l,{children:(0,O.jsx)(g,{variant:`ghost`,children:(0,O.jsxs)(p,{children:[t?(0,O.jsx)(w,{messages:e.assistants,artifacts:r,streaming:n}):null,(0,O.jsx)(`div`,{className:`flex flex-col gap-3`,children:a}),t&&i?(0,O.jsx)(k,{tree:i.rlmTree,children:i.rlmChildren}):null]})})})}):null]})}function M(e,t){return e.user?.id??e.assistants[0]?.id??`subagent-turn-${t}`}function N({child:e,parentSessionId:t,transcript:n,onRefresh:o,fullWidth:s=!1,status:c}){let l=(0,D.useMemo)(()=>n?.status===`loading`?[]:_(n?.messages??[]),[n]),d=c??A(e),f=(0,D.useMemo)(()=>n?.status===`loading`?[]:E(n?.messages??[],n?.presentation,d),[d,n]),p=(0,D.useMemo)(()=>f.flatMap(e=>e.artifacts),[f]),m=n?.presentation,h=(0,D.useCallback)((e,t)=>{let n=t===l.length-1;return(0,O.jsx)(j,{turn:e,isLast:n,isStreaming:n&&d===`streaming`,artifacts:n?p:[],presentation:n?m:void 0})},[p,d,m,l.length]),g=e.sessionName||e.label,[y,b]=(0,D.useState)(null);(0,D.useEffect)(()=>{b(e.lastHeardFrom?new Date(e.lastHeardFrom).toLocaleTimeString():null)},[e.lastHeardFrom]);let S=(0,D.useRef)(null);return(0,O.jsxs)(`section`,{"aria-label":`Subagent thread: ${e.label}`,className:i(s?`flex min-h-0 min-w-0 flex-1 flex-col`:`space-y-2`,`min-w-0`),"data-testid":s?`subagent-conversation-surface`:void 0,children:[(0,O.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,O.jsx)(a,{className:`mt-0.5 size-3.5 shrink-0 text-foreground/45`}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,O.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-foreground/80`,children:g}),(0,O.jsx)(`span`,{className:`shrink-0 text-micro capitalize text-foreground/45`,children:e.status})]}),e.model?(0,O.jsx)(`p`,{className:`truncate font-mono text-micro text-foreground/40`,children:e.model}):null,y?(0,O.jsxs)(`p`,{className:`truncate text-micro text-foreground/40`,children:[`Heartbeat: `,y]}):null,e.answerPreview||e.recap?(0,O.jsx)(`p`,{className:`mt-1 line-clamp-3 whitespace-pre-wrap text-caption leading-4 text-foreground/55`,children:e.answerPreview??e.recap}):null]}),o?(0,O.jsx)(r,{"aria-label":`Refresh ${e.label} thread`,className:`shrink-0 text-foreground/40 hover:text-foreground/70`,onClick:o,size:`icon-sm`,title:`Refresh ${e.label} thread`,type:`button`,variant:`ghost`,children:(0,O.jsx)(T,{className:i(`size-3.5`,n?.status===`loading`&&`animate-spin`)})}):null]}),t?n?.status===`loading`?(0,O.jsx)(`div`,{className:i(`flex items-center justify-center rounded-md border border-dashed border-border/70 text-caption text-foreground/45`,s?`min-h-32 flex-1`:`min-h-32`),children:`Loading subagent thread…`}):n?.status===`error`&&l.length===0?(0,O.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,O.jsx)(x,{className:`mt-0.5 size-3.5 shrink-0`}),(0,O.jsx)(`span`,{children:n.error?.message??`Unable to load this subagent thread.`})]}):l.length===0?(0,O.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,O.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[n?.error?(0,O.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,O.jsx)(x,{className:`mt-0.5 size-3.5 shrink-0`}),(0,O.jsx)(`span`,{children:n.error.message})]}):null,(0,O.jsx)(`div`,{className:i(`min-h-0 rounded-md border border-border/60 bg-background`,s?`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,O.jsx)(u,{busy:d===`streaming`,className:s?`min-h-0 flex-1`:void 0,followOutput:d===`streaming`,label:`Transcript for ${e.label}`,smooth:d!==`streaming`,viewportRef:S,viewportClassName:s?`px-0`:void 0,contentClassName:i(`flex flex-col gap-4`,s?`mx-auto w-full max-w-3xl px-4 py-6 sm:px-6`:`px-2.5 py-3`),children:(0,O.jsx)(v,{estimateSize:320,getItemKey:M,itemGap:16,items:l,renderItem:h,viewportRef:S})})})]}):(0,O.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{N as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./button-Dl0ce3Y5.js";import{t as i}from"./utils-Brtgag-m.js";import{t as a}from"./bot-DbB9BKL0.js";import{a as o,i as s}from"./virtualized-turn-list-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{t as r}from"./button-Dl0ce3Y5.js";import{t as i}from"./utils-Brtgag-m.js";import{t as a}from"./bot-DbB9BKL0.js";import{a as o,i as s}from"./virtualized-turn-list-mL3ONUUA.js";import{t as c}from"./chevron-right-NVqQIoiO.js";import{t as l}from"./subagent-transcript-CAqFJfMj.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)(()=>s(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)(a,{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)(r,{type:`button`,variant:`ghost`,size:`sm`,"aria-pressed":t,className:i(`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)(c,{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,6 +1,6 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openui-renderer-
|
|
2
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./react-dom-DX3XddaT.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{t as i}from"./utils-Brtgag-m.js";import{f as a,o,r as s}from"./ease-CMumuPlX.js";import{n as c,t as l}from"./use-reduced-motion-BOcG709U.js";import{t as u}from"./createLucideIcon-_dfI7Arx.js";import{i as d}from"./citations-BUvM92nt.js";import{t as f}from"./check-B3LlvM65.js";import{t as p}from"./chevron-right-NVqQIoiO.js";import{n as m,t as h}from"./file-text-TmalmYrb.js";import{n as g,t as _}from"./loader-circle-B5GIZGxd.js";import{a as v,i as y}from"./agent-disclosure-CMrxF7L-.js";import{t as b}from"./x-BGsDD848.js";import{t as x}from"./preload-helper-Czpn1I53.js";import{t as S}from"./notify-DjVixft7.js";import{i as C}from"./workspace-path-nav-DqPbETfJ.js";import{t as w}from"./openui-utils-DawGoQNp.js";var T=u(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),E=u(`file-braces`,[[`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`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),D=u(`file-code`,[[`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`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),O=u(`image`,[[`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`}]]),k=u(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),A=e(t(),1),j=(0,A.createContext)(void 0),M=r(),N=(0,A.createContext)({animateIn:!0,variant:`soft`}),P=(0,A.createContext)(()=>{});function F(...e){return t=>{for(let n of e)typeof n==`function`?n(t):n&&(n.current=t)}}var I={duration:.12,ease:s,delay:.04},L={type:`spring`,stiffness:520,damping:27,mass:.52};function R({variant:e=`soft`,align:t,animateIn:n=!1,className:r,children:s,initial:c,animate:u,exit:d,transition:f,layout:p,...m}){let h=l()??!1,g=(0,A.useContext)(j),_=t??g??`start`,v=(0,A.useMemo)(()=>({align:_,animateIn:n,variant:e}),[n,_,e]);return(0,M.jsx)(N.Provider,{value:v,children:(0,M.jsx)(a.div,{"data-slot":`message-bubble`,"data-align":_,"data-variant":e,layout:p,initial:c??!1,animate:u,exit:d??(h?{opacity:0}:{opacity:0,y:-3,scale:.99}),transition:f??(h?{duration:.12}:o),className:i(`group/bubble flex w-full flex-col`,_===`end`?`items-end`:`items-start`,r),...m,children:s})})}function z(e,t){return i(`relative z-0 min-w-9 max-w-[82%] rounded-2xl px-3.5 py-2.5 text-sm leading-6 text-foreground`,`[&_a]:font-medium [&_a]:underline [&_a]:underline-offset-4 [&_code]:rounded [&_code]:bg-background/60 [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[90%] [&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5 [&_p+p]:mt-2 [&_pre]:my-2 [&_pre]:overflow-x-auto [&_pre]:rounded-xl [&_pre]:bg-background/60 [&_pre]:p-3 [&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5`,e===`solid`&&`text-background`,e===`ghost`&&`w-full max-w-none rounded-none px-0 py-0`,e===`danger`&&`text-destructive`,t&&`cursor-pointer text-left outline-none transition-[background-color,color,transform] duration-150 hover:brightness-[0.98] focus-visible:ring-2 focus-visible:ring-ring active:scale-[0.99]`)}function B(e,t){return i(`pointer-events-none absolute inset-0 -z-10 rounded-[inherit]`,t===`end`?`origin-bottom-right`:`origin-bottom-left`,e===`solid`&&`bg-foreground`,e===`soft`&&`bg-muted`,e===`tint`&&`bg-primary/10`,e===`outline`&&`border border-border/70 bg-background`,e===`danger`&&`bg-destructive/10`)}function V({render:e,className:t,children:n,ref:r,...c}){let u=l()??!1,{align:d=`start`,animateIn:f,variant:p}=(0,A.useContext)(N),[m,h]=(0,A.useState)(0),g=(0,A.useCallback)(()=>h(e=>e+1),[]),_=e?.type===`button`||e?.type===`a`,v=i(z(p,_),t),y=(0,M.jsxs)(M.Fragment,{children:[p===`ghost`?null:(0,M.jsx)(a.span,{"aria-hidden":`true`,layout:!1,layoutDependency:m,initial:f&&!u?{opacity:0,scale:.92}:!1,animate:{opacity:1,scale:1},transition:u?{duration:0}:{opacity:{duration:.12,ease:s},scale:L,layout:o},className:B(p,d)}),(0,M.jsx)(P.Provider,{value:g,children:(0,M.jsx)(a.div,{initial:f?{opacity:0}:!1,animate:{opacity:1},transition:u?{duration:.12,ease:s}:I,className:`relative`,children:n})})]});if(e){let t=e;return(0,A.cloneElement)(t,{...c,ref:F(t.props.ref,r),className:i(v,t.props.className),children:y,"data-slot":`message-bubble-content`})}return(0,M.jsx)(`div`,{ref:r,"data-slot":`message-bubble-content`,className:v,...c,children:y})}function H({item:e}){return(0,M.jsxs)(`div`,{"data-slot":`preview-rail-card`,className:`rounded-2xl border border-border bg-card p-4 shadow-sm`,children:[(0,M.jsx)(`p`,{"data-slot":`preview-rail-title`,className:`font-medium text-card-foreground`,children:e.label}),e.description?(0,M.jsx)(`div`,{"data-slot":`preview-rail-description`,className:`mt-1 text-sm leading-6 text-muted-foreground`,children:e.description}):null]})}function U({items:e,label:t=`Section navigation`,orientation:n=`vertical`,activeId:r,defaultActiveId:u,onActiveChange:f,onItemSelect:p,renderPreview:m,showPreview:h=!0,previewSide:g=`after`,highlightActive:_=!1,itemSize:v=24,children:y,className:b,railClassName:x,previewContainerClassName:S,previewClassName:C}){let w=(0,A.useId)(),T=l(),E=d(),[D,O]=(0,A.useState)(u??e[0]?.id??``),[k,j]=(0,A.useState)(null),[N,P]=(0,A.useState)(null),F=r??D,I=e.some(e=>e.id===F)?F:e[0]?.id??``,L=k??N??``,R=L||(_?I:``),z=e.findIndex(e=>e.id===R),B=e.length?`repeat(${e.length}, ${v}px)`:void 0,V=n===`horizontal`,U=e=>{r===void 0&&O(e),f?.(e)};return(0,M.jsxs)(a.div,{layoutRoot:!0,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||P(null)},className:i(`isolate relative flex w-full overflow-visible`,V?`min-h-64 flex-col items-center justify-center`:`min-h-80`,b),children:[(0,M.jsx)(`nav`,{"aria-label":t,onPointerLeave:()=>j(null),style:V?{gridTemplateColumns:B}:{gridTemplateRows:B},className:i(`relative z-10 grid shrink-0`,V?`h-12 w-fit max-w-full self-center justify-center`:`w-12 content-center`,x),children:e.map((e,t)=>{let n=e.id===I,r=e.id===R,s=z<0?1/0:Math.abs(t-z),c=r?1:s===1?.68:s===2?.44:.25,l=(0,M.jsx)(M.Fragment,{children:(0,M.jsx)(a.span,{"data-slot":`preview-rail-tick`,"aria-hidden":`true`,animate:V?{scaleY:c}:{scaleX:c},transition:T?{duration:0}:o,className:i(`block bg-current`,V?`h-12 w-0.5 origin-bottom`:`h-0.5 w-12 origin-left`,r?`text-foreground`:void 0)})}),u=i(`relative flex text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,V?`h-12 w-6 items-end justify-center`:`h-6 w-12 items-center`),d=V?{width:v}:{height:v},f=()=>{E&&j(e.id)},m=t=>{t.matches(`:focus-visible`)&&P(e.id)},h=()=>{U(e.id),p?.(e)};return e.href?(0,M.jsx)(`a`,{"data-slot":`preview-rail-item`,href:e.href,target:e.target,rel:e.rel??(e.target===`_blank`?`noreferrer noopener`:void 0),"aria-label":e.ariaLabel??e.label,"aria-current":n?`page`:void 0,onPointerEnter:f,onMouseEnter:f,onPointerDown:()=>P(null),onFocus:e=>m(e.currentTarget),onClick:h,style:d,className:u,children:l},e.id):(0,M.jsx)(`button`,{"data-slot":`preview-rail-item`,type:`button`,"aria-label":e.ariaLabel??e.label,"aria-current":n?`location`:void 0,onPointerEnter:f,onMouseEnter:f,onPointerDown:()=>P(null),onFocus:e=>m(e.currentTarget),onClick:h,style:d,className:u,children:l},e.id)})}),h?(0,M.jsx)(`div`,{"aria-hidden":`true`,style:V?{gridTemplateColumns:B}:{gridTemplateRows:B},className:i(`pointer-events-none absolute z-50 grid`,V?`top-1/2 left-1/2 h-5 w-fit max-w-full -translate-x-1/2 -translate-y-1/2 justify-center`:g===`before`?`inset-y-0 right-16 left-4 content-center`:`inset-y-0 right-4 left-16 content-center`,S),children:e.map(e=>(0,M.jsx)(`div`,{style:V?{width:v}:{height:v},className:i(`relative flex items-center`,V?`justify-center`:void 0),children:(0,M.jsx)(c,{mode:`wait`,initial:!1,children:e.id===L?(0,M.jsx)(a.div,{initial:T?{opacity:0}:{opacity:0,y:4,filter:`blur(6px)`},animate:T?{opacity:1}:{opacity:1,y:0,filter:`blur(0px)`},exit:T?{opacity:0}:{opacity:0,y:-2,filter:`blur(4px)`,transition:{duration:.12,ease:s}},transition:{duration:T?0:.18,ease:s},className:i(V?`absolute bottom-12 left-1/2 w-72 -translate-x-1/2`:i(`w-full max-w-sm`,g===`before`&&`ml-auto`),C),children:(0,M.jsx)(a.div,{layoutId:`preview-rail-card-${w}`,transition:T?{duration:0}:o,children:m?m(e):(0,M.jsx)(H,{item:e})})},e.id):null})},e.id))}):null,y?(0,M.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1`,children:y}):null]})}var W=56,G=88;function K(e,t){if(e.length<=t)return e;let n=e.slice(0,t),r=n.lastIndexOf(` `);return`${n.slice(0,r>t*.65?r:t).trim()}…`}function q(e){return((e.querySelector(`[data-slot="message-bubble-content"]`)??e.querySelector(`[data-slot="message-content"]`)??e).textContent??``).replace(/\s+/g,` `).trim()}function ee(e,t){let n=q(e);if(!n)return{label:`Message`,description:void 0};if(n.length<=W){let e=t?q(t):``;return{label:n,description:e?K(e,G):void 0}}let r=n.slice(0,W).lastIndexOf(` `),i=r>W*.65?r:W,a=`${n.slice(0,i).trim()}…`,o=t?q(t):n.slice(i).trim();return{label:a,description:o?K(o,G):void 0}}function te({navigation:e,followThreshold:t,contentRef:n,viewportRef:r,reduce:i,smooth:a,scrollToEnd:o,setFollowing:s,markProgrammaticScroll:c}){let l=(0,A.useRef)(void 0),u=(0,A.useRef)(new WeakMap),d=(0,A.useRef)(0),f=(0,A.useRef)(new Map),[p,m]=(0,A.useState)([]),[h,g]=(0,A.useState)(``),[_,v]=(0,A.useState)(!1),y=(0,A.useCallback)(()=>{if(e!==`rail`)return;let n=r.current,i=[...f.current.entries()];if(!n||i.length===0)return;let a=n.getBoundingClientRect();if(n.scrollTop<=t){let e=i[0]?.[0]??``;g(t=>t===e?t:e);return}if(n.scrollHeight-n.scrollTop-n.clientHeight<=t){let e=i.at(-1)?.[0]??``;g(t=>t===e?t:e);return}let o=a.top+a.height/2,s=i[0]?.[0]??``,c=1/0;for(let[e,t]of i){let n=t.getBoundingClientRect(),r=Math.abs(n.top+n.height/2-o);r<c&&(c=r,s=e)}g(e=>e===s?e:s)},[t,e,r]),b=(0,A.useCallback)(()=>{if(e!==`rail`)return;let t=n.current,i=r.current;if(!t||!i)return;let a=Array.from(t.querySelectorAll(`[data-slot="message"]`)),o=new Map,s=a.map((e,t)=>{let n=u.current.get(e);n||(d.current+=1,n=`message-rail-${d.current}`,u.current.set(e,n)),o.set(n,e);let r=e.dataset.from??`conversation`,i=ee(e,r===`user`?a.slice(t+1).find(e=>e.dataset.from===`assistant`):void 0);return{id:n,label:i.label,description:i.description,ariaLabel:`Go to ${r} message ${t+1} of ${a.length}`}});f.current=o,m(e=>e.length===s.length&&e.every((e,t)=>e.id===s[t]?.id&&e.label===s[t]?.label&&e.description===s[t]?.description&&e.ariaLabel===s[t]?.ariaLabel)?e:s),v(i.scrollHeight>i.clientHeight+1&&a.length>1)},[n,e,r]),x=(0,A.useCallback)(()=>{e===`rail`&&(l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(()=>{b(),y()}))},[e,b,y]);return(0,A.useEffect)(()=>{if(e!==`rail`){f.current.clear(),m([]),v(!1);return}let t=n.current,i=r.current;if(!t||!i)return;x();let a=typeof MutationObserver>`u`?null:new MutationObserver(x);a?.observe(t,{childList:!0,characterData:!0,subtree:!0});let o=typeof ResizeObserver>`u`?null:new ResizeObserver(x);return o?.observe(t),o?.observe(i),()=>{a?.disconnect(),o?.disconnect()}},[n,e,x,r]),(0,A.useEffect)(()=>()=>{l.current&&cancelAnimationFrame(l.current)},[]),{activeRailId:h,railItems:p,railOverflowing:_,scheduleRailSync:x,scrollToRailItem:(0,A.useCallback)(e=>{let t=r.current,n=f.current.get(e.id);if(!t||!n)return;let l=p.at(-1)?.id===e.id;if(g(e.id),l){s(!0),o(i||!a?`auto`:`smooth`);return}s(!1),c(i||!a?`auto`:`smooth`);let u=t.getBoundingClientRect(),d=n.getBoundingClientRect(),m=t.scrollTop+d.top-u.top-(t.clientHeight-d.height)/2,h=i||!a?`auto`:`smooth`;typeof t.scrollTo==`function`?t.scrollTo({top:m,behavior:h}):t.scrollTop=m},[c,p,i,o,s,a,r])}}function ne({followOutput:e=!0,followThreshold:t=56,smooth:n=!0,onFollowChange:r,label:a=`Conversation`,busy:o,navigation:s,navigationLabel:c=`Message navigation`,viewportClassName:u,contentClassName:d,railClassName:f,viewportRef:p,viewportProps:m,contentProps:h,className:g,children:_,...v}){let y=l()??!1,b=(0,A.useRef)(null),x=(0,A.useRef)(null),S=(0,A.useRef)(e),C=(0,A.useRef)(!1),w=(0,A.useRef)(void 0),T=(0,A.useRef)(void 0),{onScroll:E,onWheel:D,onTouchStart:O,onKeyDown:k,...j}=m??{},N=(0,A.useCallback)(e=>{b.current=e,typeof p==`function`?p(e):p&&(p.current=e)},[p]),P=(0,A.useCallback)(e=>{S.current!==e&&(S.current=e,r?.(e))},[r]),F=(0,A.useCallback)(e=>{C.current=!0,w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{C.current=!1},e===`smooth`?320:0)},[]),I=(0,A.useCallback)(e=>{let t=b.current;t&&(F(e),typeof t.scrollTo==`function`?t.scrollTo({top:t.scrollHeight,behavior:e}):t.scrollTop=t.scrollHeight)},[F]),{activeRailId:L,railItems:R,railOverflowing:z,scheduleRailSync:B,scrollToRailItem:V}=te({navigation:s,followThreshold:t,contentRef:x,viewportRef:b,reduce:y,smooth:n,scrollToEnd:I,setFollowing:P,markProgrammaticScroll:F}),H=(0,A.useEffectEvent)(B),W=(0,A.useEffectEvent)(I),G=(0,A.useCallback)(()=>{let e=b.current;if(!e||C.current)return;let n=e.scrollHeight-e.scrollTop-e.clientHeight;P(n<=t),B()},[t,B,P]),K=(0,A.useCallback)(()=>{C.current=!1},[]);(0,A.useLayoutEffect)(()=>{if(S.current=e,e)return T.current=requestAnimationFrame(()=>W(`auto`)),()=>{T.current&&cancelAnimationFrame(T.current)}},[e]),(0,A.useEffect)(()=>{let t=x.current;if(!t||typeof ResizeObserver>`u`)return;let r=new ResizeObserver(()=>{H(),!(!e||!S.current)&&W(y||!n?`auto`:`smooth`)});return r.observe(t),()=>r.disconnect()},[e,y,n]),(0,A.useEffect)(()=>()=>{w.current&&window.clearTimeout(w.current),T.current&&cancelAnimationFrame(T.current)},[]);let q=(0,M.jsx)(`section`,{ref:N,"aria-label":a,...j,onScroll:e=>{G(),E?.(e)},onWheel:e=>{K(),D?.(e)},onTouchStart:e=>{K(),O?.(e)},onKeyDown:e=>{[`ArrowUp`,`PageUp`,`Home`].includes(e.key)&&K(),k?.(e)},className:i(`h-full overflow-y-auto overscroll-contain outline-none [overflow-anchor:none] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring`,s===`rail`?`[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`:`[scrollbar-gutter:stable]`,u,s===`rail`&&z&&`pr-10`),children:(0,M.jsx)(`div`,{ref:x,role:`log`,"aria-live":o?`off`:`polite`,"aria-relevant":`additions text`,"aria-busy":o,className:d,...h,children:_})});return(0,M.jsx)(`div`,{"data-slot":`message-scroller`,className:i(`min-h-0`,g),...v,children:s===`rail`?(0,M.jsx)(U,{items:z?R:[],label:c,activeId:L,onItemSelect:V,previewSide:`before`,highlightActive:!0,itemSize:14,className:`h-full min-h-0 overflow-hidden`,previewContainerClassName:`right-8 left-3`,previewClassName:`mr-1 w-64 max-w-full [&_[data-slot=preview-rail-card]]:h-20 [&_[data-slot=preview-rail-card]]:overflow-hidden [&_[data-slot=preview-rail-card]]:p-3 [&_[data-slot=preview-rail-title]]:line-clamp-1 [&_[data-slot=preview-rail-title]]:text-xs [&_[data-slot=preview-rail-title]]:leading-4 [&_[data-slot=preview-rail-description]]:line-clamp-2 [&_[data-slot=preview-rail-description]]:text-xs [&_[data-slot=preview-rail-description]]:leading-4`,railClassName:i(`absolute inset-y-3 right-1 w-7 content-center py-1 [&_[data-slot=preview-rail-item]]:w-7 [&_[data-slot=preview-rail-item]]:justify-end [&_[data-slot=preview-rail-tick]]:h-px [&_[data-slot=preview-rail-tick]]:w-4 [&_[data-slot=preview-rail-tick]]:origin-right`,z?`pointer-events-auto opacity-100`:`pointer-events-none opacity-0`,f),children:q}):q})}var re=(0,A.createContext)({from:`assistant`}),ie={type:`spring`,stiffness:480,damping:32,mass:.62};function ae({from:e,animateIn:t=!1,children:n,className:r,initial:o,animate:s,transition:c,exit:u,style:d,...f}){let p=l()??!1,m=(0,A.useMemo)(()=>({from:e}),[e]);return(0,M.jsx)(j.Provider,{value:e===`user`?`end`:`start`,children:(0,M.jsx)(re.Provider,{value:m,children:(0,M.jsx)(a.article,{"data-slot":`message`,"data-from":e,"aria-label":f[`aria-label`]??`${e} message`,initial:o??(t&&!p?{opacity:0,transform:`translateY(8px) scale(0.95)`}:!1),animate:s??(t&&!p?{opacity:1,transform:`translateY(0px) scale(1)`}:{opacity:1}),exit:u??(p?{opacity:0}:{opacity:0,transform:`translateY(-3px) scale(0.99)`}),transition:c??(p?{duration:.12}:ie),style:{transformOrigin:e===`user`?`100% 100%`:`0% 100%`,...d},className:i(`group/message flex w-full items-start gap-2`,e===`user`?`flex-row-reverse`:`flex-row`,r),...f,children:n})})})}function oe({className:e,...t}){let{from:n}=(0,A.useContext)(re);return(0,M.jsx)(`div`,{"data-slot":`message-content`,className:i(`flex min-w-0 flex-1 flex-col gap-1.5`,n===`user`?`items-end`:`items-start`,e),...t})}function se(e){return typeof e==`object`&&!!e}function J(e){if(typeof e!=`string`)return e;let t=e.trim();if(!t)return e;try{let n=JSON.parse(t);return se(n)||Array.isArray(n)?n:e}catch{return e}}function ce(e){if(!se(e)||typeof e.type!=`string`||!e.type.startsWith(`tool-`))return e;let t=J(e.input),n=J(e.output),r=J(e.result),i=t!==e.input,a=n!==e.output,o=r!==e.result;if(!i&&!a&&!o)return e;let s={...e};return i&&(s.input=t),a&&(s.output=n),o&&(s.result=r),s}function le(e){let t=!1,n=e.map(e=>{let n=ce(e);return n!==e&&(t=!0),n});return t?n:e}var ue=(0,A.memo)(function({title:e=`Something went wrong`,message:t,className:n}){return(0,M.jsx)(`div`,{className:i(`flex justify-start`,n),children:(0,M.jsxs)(`div`,{className:`rounded-[8px] border border-red-500/30 bg-red-500/10 px-4 py-2.5 text-sm text-foreground`,children:[(0,M.jsx)(`div`,{className:`font-medium text-foreground`,children:e}),(0,M.jsx)(`div`,{className:`mt-0.5 text-muted-foreground`,children:t})]})})}),de=new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,minute:`2-digit`,hour12:!0}),fe=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`numeric`});function pe(e){let t=new Date;return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()?de.format(e):fe.format(e)}function me({text:e,onCopied:t}){let[n,r]=(0,A.useState)(!1),a=(0,A.useRef)(null);return(0,A.useEffect)(()=>()=>{a.current&&window.clearTimeout(a.current)},[]),(0,M.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-label":n?`Copied`:`Copy message`,onClick:async()=>{try{await navigator.clipboard.writeText(e),r(!0),a.current&&window.clearTimeout(a.current),a.current=window.setTimeout(()=>{r(!1),a.current=null},2e3),S.success(`Copied to clipboard`),t?.()}catch{S.error(`Failed to copy to clipboard`)}},onPointerDown:e=>{e.stopPropagation()},onMouseDown:e=>e.stopPropagation(),className:i(`flex size-6 items-center justify-center rounded-md transition-[background-color,opacity,transform] duration-150 ease-out active:scale-[0.97]`,`bg-transparent opacity-50 hover:bg-foreground/10 hover:opacity-100`),children:(0,M.jsxs)(`div`,{className:`relative size-3.5`,children:[(0,M.jsx)(y,{className:i(`absolute inset-0 h-3.5 w-3.5 text-muted-foreground transition-[opacity,transform] duration-150 ease-out`,n?`scale-50 opacity-0`:`scale-100 opacity-100`)}),(0,M.jsx)(f,{className:i(`absolute inset-0 h-3.5 w-3.5 text-muted-foreground transition-[opacity,transform] duration-150 ease-out`,n?`scale-100 opacity-100`:`scale-50 opacity-0`)})]})})}function he({text:e,timestamp:t,heightClass:n,hoverClass:r,isVisible:a,alignClass:o,onCopied:s}){return(0,M.jsxs)(`div`,{className:i(`pointer-events-none flex items-center gap-1 pt-1 text-xs text-muted-foreground/70 opacity-0 transition-opacity duration-100`,n,o,r,a&&`pointer-events-auto opacity-100`),onMouseDown:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[t&&(0,M.jsx)(`span`,{children:t}),e&&(0,M.jsx)(me,{text:e,onCopied:s})]})}function ge(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function _e({part:e}){let t=ge(e.payload);return(0,M.jsxs)(`section`,{"data-payload-kind":e.kind,className:`w-full min-w-0 overflow-hidden rounded-xl border border-border/60 bg-muted/40 text-sm`,children:[(0,M.jsx)(`div`,{className:`border-b border-border/50 px-3 py-2 text-xs font-medium text-muted-foreground`,children:e.title}),e.text?(0,M.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap break-words p-3 font-mono text-xs leading-5 text-foreground/80`,children:e.text}):null,t?(0,M.jsxs)(`details`,{open:!0,className:`border-t border-border/50 px-3 py-2`,children:[(0,M.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium text-muted-foreground`,children:`Payload`}),(0,M.jsx)(`pre`,{className:`m-0 mt-2 max-w-full whitespace-pre-wrap break-words font-mono text-xs leading-5 text-foreground/70`,children:t})]}):null]})}function Y(e){return typeof e==`object`&&!!e}function X(e){return Y(e)&&e.type===`text`&&typeof e.text==`string`}function ve(e){return Y(e)&&e.type===`error`&&typeof e.message==`string`}function ye(e){return Y(e)&&e.type===`payload`&&typeof e.kind==`string`&&typeof e.title==`string`}function Z(e){if(!Y(e))return!1;let t=e.type;return t===`dynamic-tool`||typeof t==`string`&&t.startsWith(`tool-`)}function be(e,t){let n=[];for(let t of e)X(t)&&n.push(t.text);return n.join(t)}(0,A.memo)(function(e){let{message:t,UserMessageComponent:n,userMessageClassName:r,onCopied:i,display:a}=e,{enableImagePreview:o,showCopyToolbar:s,isMounted:c,isCopyVisible:l}=a,u=be(t.parts??[],``),d=(t.parts??[]).length>0;if(!u&&!d)return null;let f=t?.createdAt,p=`user-${t.id}`,m=c&&f?pe(new Date(f)):void 0;return(0,M.jsxs)(`div`,{className:`group/user-message`,children:[(0,M.jsx)(n,{message:t,className:r,enableImagePreview:o}),(s&&!!u||!!m)&&(0,M.jsx)(he,{text:s?u:``,timestamp:m,heightClass:`h-[28px]`,hoverClass:`group-hover/user-message:opacity-100 group-hover/user-message:pointer-events-auto`,isVisible:l,alignClass:`justify-end`,onCopied:()=>i(p)})]})}),(0,A.memo)(function(e){let{assistantMsgs:t,turnKey:n,ToolRendererComponent:r,TextRendererComponent:i,toolRenderers:a,onOpenUIAction:o,onOpenUIArtifactReady:s,onOpenArtifact:c,onCopied:l,stream:u,copy:d,display:f}=e,{isLast:p,isStreaming:m}=u,{enabled:h,isVisible:g}=d,{suppressQuestionTool:_}=f,v=be(t.flatMap(e=>e.parts??[]),`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openui-renderer-C4e9FOVR.js","assets/rolldown-runtime-hePW80VL.js","assets/react-CwJFpaho.js","assets/react-dom-DX3XddaT.js","assets/jsx-runtime-NZYk81nU.js","assets/button-Dl0ce3Y5.js","assets/utils-Brtgag-m.js","assets/bundle-mjs-cJTHqqzI.js","assets/createBaseUIEventDetails-B58Jldei.js","assets/dist-52wg4XPY.js","assets/card-DCEnYd2G.js","assets/provider-catalog-ClVvphe0.js","assets/DialogTitle-DiAm7YNe.js","assets/useBaseUiId-D9ZGPZ6f.js","assets/check-B3LlvM65.js","assets/createLucideIcon-_dfI7Arx.js","assets/chevron-down-DUUprRP5.js","assets/useControlled-CgAAWIy9.js","assets/input-CxZp56Im.js","assets/safe-external-url-BbAom7Bm.js","assets/chunk-YOKDWASO-Bte3iwlH.js","assets/preload-helper-Czpn1I53.js","assets/lib-ChrQ49PO.js","assets/character-entities-legacy-Wut6vMuj.js","assets/openui-utils-DawGoQNp.js","assets/chat-BVMnC5Qh.js","assets/dialog-BzcIOvFC.js","assets/x-BGsDD848.js","assets/switch-D3FhZU-S.js","assets/markdown-BHkByC9K.js","assets/dist-DbHxXSgQ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./react-dom-DX3XddaT.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{t as i}from"./utils-Brtgag-m.js";import{f as a,o,r as s}from"./ease-CMumuPlX.js";import{n as c,t as l}from"./use-reduced-motion-BOcG709U.js";import{t as u}from"./createLucideIcon-_dfI7Arx.js";import{i as d}from"./citations-DXqV2NLy.js";import{t as f}from"./check-B3LlvM65.js";import{t as p}from"./chevron-right-NVqQIoiO.js";import{n as m,t as h}from"./file-text-TmalmYrb.js";import{n as g,t as _}from"./loader-circle-B5GIZGxd.js";import{a as v,i as y}from"./agent-disclosure-CMrxF7L-.js";import{t as b}from"./x-BGsDD848.js";import{t as x}from"./preload-helper-Czpn1I53.js";import{t as S}from"./notify-DjVixft7.js";import{i as C}from"./workspace-path-nav-DqPbETfJ.js";import{t as w}from"./openui-utils-DawGoQNp.js";var T=u(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),E=u(`file-braces`,[[`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`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),D=u(`file-code`,[[`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`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),O=u(`image`,[[`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`}]]),k=u(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),A=e(t(),1),j=(0,A.createContext)(void 0),M=r(),N=(0,A.createContext)({animateIn:!0,variant:`soft`}),P=(0,A.createContext)(()=>{});function F(...e){return t=>{for(let n of e)typeof n==`function`?n(t):n&&(n.current=t)}}var I={duration:.12,ease:s,delay:.04},L={type:`spring`,stiffness:520,damping:27,mass:.52};function R({variant:e=`soft`,align:t,animateIn:n=!1,className:r,children:s,initial:c,animate:u,exit:d,transition:f,layout:p,...m}){let h=l()??!1,g=(0,A.useContext)(j),_=t??g??`start`,v=(0,A.useMemo)(()=>({align:_,animateIn:n,variant:e}),[n,_,e]);return(0,M.jsx)(N.Provider,{value:v,children:(0,M.jsx)(a.div,{"data-slot":`message-bubble`,"data-align":_,"data-variant":e,layout:p,initial:c??!1,animate:u,exit:d??(h?{opacity:0}:{opacity:0,y:-3,scale:.99}),transition:f??(h?{duration:.12}:o),className:i(`group/bubble flex w-full flex-col`,_===`end`?`items-end`:`items-start`,r),...m,children:s})})}function z(e,t){return i(`relative z-0 min-w-9 max-w-[82%] rounded-2xl px-3.5 py-2.5 text-sm leading-6 text-foreground`,`[&_a]:font-medium [&_a]:underline [&_a]:underline-offset-4 [&_code]:rounded [&_code]:bg-background/60 [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[90%] [&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5 [&_p+p]:mt-2 [&_pre]:my-2 [&_pre]:overflow-x-auto [&_pre]:rounded-xl [&_pre]:bg-background/60 [&_pre]:p-3 [&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5`,e===`solid`&&`text-background`,e===`ghost`&&`w-full max-w-none rounded-none px-0 py-0`,e===`danger`&&`text-destructive`,t&&`cursor-pointer text-left outline-none transition-[background-color,color,transform] duration-150 hover:brightness-[0.98] focus-visible:ring-2 focus-visible:ring-ring active:scale-[0.99]`)}function B(e,t){return i(`pointer-events-none absolute inset-0 -z-10 rounded-[inherit]`,t===`end`?`origin-bottom-right`:`origin-bottom-left`,e===`solid`&&`bg-foreground`,e===`soft`&&`bg-muted`,e===`tint`&&`bg-primary/10`,e===`outline`&&`border border-border/70 bg-background`,e===`danger`&&`bg-destructive/10`)}function V({render:e,className:t,children:n,ref:r,...c}){let u=l()??!1,{align:d=`start`,animateIn:f,variant:p}=(0,A.useContext)(N),[m,h]=(0,A.useState)(0),g=(0,A.useCallback)(()=>h(e=>e+1),[]),_=e?.type===`button`||e?.type===`a`,v=i(z(p,_),t),y=(0,M.jsxs)(M.Fragment,{children:[p===`ghost`?null:(0,M.jsx)(a.span,{"aria-hidden":`true`,layout:!1,layoutDependency:m,initial:f&&!u?{opacity:0,scale:.92}:!1,animate:{opacity:1,scale:1},transition:u?{duration:0}:{opacity:{duration:.12,ease:s},scale:L,layout:o},className:B(p,d)}),(0,M.jsx)(P.Provider,{value:g,children:(0,M.jsx)(a.div,{initial:f?{opacity:0}:!1,animate:{opacity:1},transition:u?{duration:.12,ease:s}:I,className:`relative`,children:n})})]});if(e){let t=e;return(0,A.cloneElement)(t,{...c,ref:F(t.props.ref,r),className:i(v,t.props.className),children:y,"data-slot":`message-bubble-content`})}return(0,M.jsx)(`div`,{ref:r,"data-slot":`message-bubble-content`,className:v,...c,children:y})}function H({item:e}){return(0,M.jsxs)(`div`,{"data-slot":`preview-rail-card`,className:`rounded-2xl border border-border bg-card p-4 shadow-sm`,children:[(0,M.jsx)(`p`,{"data-slot":`preview-rail-title`,className:`font-medium text-card-foreground`,children:e.label}),e.description?(0,M.jsx)(`div`,{"data-slot":`preview-rail-description`,className:`mt-1 text-sm leading-6 text-muted-foreground`,children:e.description}):null]})}function U({items:e,label:t=`Section navigation`,orientation:n=`vertical`,activeId:r,defaultActiveId:u,onActiveChange:f,onItemSelect:p,renderPreview:m,showPreview:h=!0,previewSide:g=`after`,highlightActive:_=!1,itemSize:v=24,children:y,className:b,railClassName:x,previewContainerClassName:S,previewClassName:C}){let w=(0,A.useId)(),T=l(),E=d(),[D,O]=(0,A.useState)(u??e[0]?.id??``),[k,j]=(0,A.useState)(null),[N,P]=(0,A.useState)(null),F=r??D,I=e.some(e=>e.id===F)?F:e[0]?.id??``,L=k??N??``,R=L||(_?I:``),z=e.findIndex(e=>e.id===R),B=e.length?`repeat(${e.length}, ${v}px)`:void 0,V=n===`horizontal`,U=e=>{r===void 0&&O(e),f?.(e)};return(0,M.jsxs)(a.div,{layoutRoot:!0,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||P(null)},className:i(`isolate relative flex w-full overflow-visible`,V?`min-h-64 flex-col items-center justify-center`:`min-h-80`,b),children:[(0,M.jsx)(`nav`,{"aria-label":t,onPointerLeave:()=>j(null),style:V?{gridTemplateColumns:B}:{gridTemplateRows:B},className:i(`relative z-10 grid shrink-0`,V?`h-12 w-fit max-w-full self-center justify-center`:`w-12 content-center`,x),children:e.map((e,t)=>{let n=e.id===I,r=e.id===R,s=z<0?1/0:Math.abs(t-z),c=r?1:s===1?.68:s===2?.44:.25,l=(0,M.jsx)(M.Fragment,{children:(0,M.jsx)(a.span,{"data-slot":`preview-rail-tick`,"aria-hidden":`true`,animate:V?{scaleY:c}:{scaleX:c},transition:T?{duration:0}:o,className:i(`block bg-current`,V?`h-12 w-0.5 origin-bottom`:`h-0.5 w-12 origin-left`,r?`text-foreground`:void 0)})}),u=i(`relative flex text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,V?`h-12 w-6 items-end justify-center`:`h-6 w-12 items-center`),d=V?{width:v}:{height:v},f=()=>{E&&j(e.id)},m=t=>{t.matches(`:focus-visible`)&&P(e.id)},h=()=>{U(e.id),p?.(e)};return e.href?(0,M.jsx)(`a`,{"data-slot":`preview-rail-item`,href:e.href,target:e.target,rel:e.rel??(e.target===`_blank`?`noreferrer noopener`:void 0),"aria-label":e.ariaLabel??e.label,"aria-current":n?`page`:void 0,onPointerEnter:f,onMouseEnter:f,onPointerDown:()=>P(null),onFocus:e=>m(e.currentTarget),onClick:h,style:d,className:u,children:l},e.id):(0,M.jsx)(`button`,{"data-slot":`preview-rail-item`,type:`button`,"aria-label":e.ariaLabel??e.label,"aria-current":n?`location`:void 0,onPointerEnter:f,onMouseEnter:f,onPointerDown:()=>P(null),onFocus:e=>m(e.currentTarget),onClick:h,style:d,className:u,children:l},e.id)})}),h?(0,M.jsx)(`div`,{"aria-hidden":`true`,style:V?{gridTemplateColumns:B}:{gridTemplateRows:B},className:i(`pointer-events-none absolute z-50 grid`,V?`top-1/2 left-1/2 h-5 w-fit max-w-full -translate-x-1/2 -translate-y-1/2 justify-center`:g===`before`?`inset-y-0 right-16 left-4 content-center`:`inset-y-0 right-4 left-16 content-center`,S),children:e.map(e=>(0,M.jsx)(`div`,{style:V?{width:v}:{height:v},className:i(`relative flex items-center`,V?`justify-center`:void 0),children:(0,M.jsx)(c,{mode:`wait`,initial:!1,children:e.id===L?(0,M.jsx)(a.div,{initial:T?{opacity:0}:{opacity:0,y:4,filter:`blur(6px)`},animate:T?{opacity:1}:{opacity:1,y:0,filter:`blur(0px)`},exit:T?{opacity:0}:{opacity:0,y:-2,filter:`blur(4px)`,transition:{duration:.12,ease:s}},transition:{duration:T?0:.18,ease:s},className:i(V?`absolute bottom-12 left-1/2 w-72 -translate-x-1/2`:i(`w-full max-w-sm`,g===`before`&&`ml-auto`),C),children:(0,M.jsx)(a.div,{layoutId:`preview-rail-card-${w}`,transition:T?{duration:0}:o,children:m?m(e):(0,M.jsx)(H,{item:e})})},e.id):null})},e.id))}):null,y?(0,M.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1`,children:y}):null]})}var W=56,G=88;function K(e,t){if(e.length<=t)return e;let n=e.slice(0,t),r=n.lastIndexOf(` `);return`${n.slice(0,r>t*.65?r:t).trim()}…`}function q(e){return((e.querySelector(`[data-slot="message-bubble-content"]`)??e.querySelector(`[data-slot="message-content"]`)??e).textContent??``).replace(/\s+/g,` `).trim()}function ee(e,t){let n=q(e);if(!n)return{label:`Message`,description:void 0};if(n.length<=W){let e=t?q(t):``;return{label:n,description:e?K(e,G):void 0}}let r=n.slice(0,W).lastIndexOf(` `),i=r>W*.65?r:W,a=`${n.slice(0,i).trim()}…`,o=t?q(t):n.slice(i).trim();return{label:a,description:o?K(o,G):void 0}}function te({navigation:e,followThreshold:t,contentRef:n,viewportRef:r,reduce:i,smooth:a,scrollToEnd:o,setFollowing:s,markProgrammaticScroll:c}){let l=(0,A.useRef)(void 0),u=(0,A.useRef)(new WeakMap),d=(0,A.useRef)(0),f=(0,A.useRef)(new Map),[p,m]=(0,A.useState)([]),[h,g]=(0,A.useState)(``),[_,v]=(0,A.useState)(!1),y=(0,A.useCallback)(()=>{if(e!==`rail`)return;let n=r.current,i=[...f.current.entries()];if(!n||i.length===0)return;let a=n.getBoundingClientRect();if(n.scrollTop<=t){let e=i[0]?.[0]??``;g(t=>t===e?t:e);return}if(n.scrollHeight-n.scrollTop-n.clientHeight<=t){let e=i.at(-1)?.[0]??``;g(t=>t===e?t:e);return}let o=a.top+a.height/2,s=i[0]?.[0]??``,c=1/0;for(let[e,t]of i){let n=t.getBoundingClientRect(),r=Math.abs(n.top+n.height/2-o);r<c&&(c=r,s=e)}g(e=>e===s?e:s)},[t,e,r]),b=(0,A.useCallback)(()=>{if(e!==`rail`)return;let t=n.current,i=r.current;if(!t||!i)return;let a=Array.from(t.querySelectorAll(`[data-slot="message"]`)),o=new Map,s=a.map((e,t)=>{let n=u.current.get(e);n||(d.current+=1,n=`message-rail-${d.current}`,u.current.set(e,n)),o.set(n,e);let r=e.dataset.from??`conversation`,i=ee(e,r===`user`?a.slice(t+1).find(e=>e.dataset.from===`assistant`):void 0);return{id:n,label:i.label,description:i.description,ariaLabel:`Go to ${r} message ${t+1} of ${a.length}`}});f.current=o,m(e=>e.length===s.length&&e.every((e,t)=>e.id===s[t]?.id&&e.label===s[t]?.label&&e.description===s[t]?.description&&e.ariaLabel===s[t]?.ariaLabel)?e:s),v(i.scrollHeight>i.clientHeight+1&&a.length>1)},[n,e,r]),x=(0,A.useCallback)(()=>{e===`rail`&&(l.current&&cancelAnimationFrame(l.current),l.current=requestAnimationFrame(()=>{b(),y()}))},[e,b,y]);return(0,A.useEffect)(()=>{if(e!==`rail`){f.current.clear(),m([]),v(!1);return}let t=n.current,i=r.current;if(!t||!i)return;x();let a=typeof MutationObserver>`u`?null:new MutationObserver(x);a?.observe(t,{childList:!0,characterData:!0,subtree:!0});let o=typeof ResizeObserver>`u`?null:new ResizeObserver(x);return o?.observe(t),o?.observe(i),()=>{a?.disconnect(),o?.disconnect()}},[n,e,x,r]),(0,A.useEffect)(()=>()=>{l.current&&cancelAnimationFrame(l.current)},[]),{activeRailId:h,railItems:p,railOverflowing:_,scheduleRailSync:x,scrollToRailItem:(0,A.useCallback)(e=>{let t=r.current,n=f.current.get(e.id);if(!t||!n)return;let l=p.at(-1)?.id===e.id;if(g(e.id),l){s(!0),o(i||!a?`auto`:`smooth`);return}s(!1),c(i||!a?`auto`:`smooth`);let u=t.getBoundingClientRect(),d=n.getBoundingClientRect(),m=t.scrollTop+d.top-u.top-(t.clientHeight-d.height)/2,h=i||!a?`auto`:`smooth`;typeof t.scrollTo==`function`?t.scrollTo({top:m,behavior:h}):t.scrollTop=m},[c,p,i,o,s,a,r])}}function ne({followOutput:e=!0,followThreshold:t=56,smooth:n=!0,onFollowChange:r,label:a=`Conversation`,busy:o,navigation:s,navigationLabel:c=`Message navigation`,viewportClassName:u,contentClassName:d,railClassName:f,viewportRef:p,viewportProps:m,contentProps:h,className:g,children:_,...v}){let y=l()??!1,b=(0,A.useRef)(null),x=(0,A.useRef)(null),S=(0,A.useRef)(e),C=(0,A.useRef)(!1),w=(0,A.useRef)(void 0),T=(0,A.useRef)(void 0),{onScroll:E,onWheel:D,onTouchStart:O,onKeyDown:k,...j}=m??{},N=(0,A.useCallback)(e=>{b.current=e,typeof p==`function`?p(e):p&&(p.current=e)},[p]),P=(0,A.useCallback)(e=>{S.current!==e&&(S.current=e,r?.(e))},[r]),F=(0,A.useCallback)(e=>{C.current=!0,w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{C.current=!1},e===`smooth`?320:0)},[]),I=(0,A.useCallback)(e=>{let t=b.current;t&&(F(e),typeof t.scrollTo==`function`?t.scrollTo({top:t.scrollHeight,behavior:e}):t.scrollTop=t.scrollHeight)},[F]),{activeRailId:L,railItems:R,railOverflowing:z,scheduleRailSync:B,scrollToRailItem:V}=te({navigation:s,followThreshold:t,contentRef:x,viewportRef:b,reduce:y,smooth:n,scrollToEnd:I,setFollowing:P,markProgrammaticScroll:F}),H=(0,A.useEffectEvent)(B),W=(0,A.useEffectEvent)(I),G=(0,A.useCallback)(()=>{let e=b.current;if(!e||C.current)return;let n=e.scrollHeight-e.scrollTop-e.clientHeight;P(n<=t),B()},[t,B,P]),K=(0,A.useCallback)(()=>{C.current=!1},[]);(0,A.useLayoutEffect)(()=>{if(S.current=e,e)return T.current=requestAnimationFrame(()=>W(`auto`)),()=>{T.current&&cancelAnimationFrame(T.current)}},[e]),(0,A.useEffect)(()=>{let t=x.current;if(!t||typeof ResizeObserver>`u`)return;let r=new ResizeObserver(()=>{H(),!(!e||!S.current)&&W(y||!n?`auto`:`smooth`)});return r.observe(t),()=>r.disconnect()},[e,y,n]),(0,A.useEffect)(()=>()=>{w.current&&window.clearTimeout(w.current),T.current&&cancelAnimationFrame(T.current)},[]);let q=(0,M.jsx)(`section`,{ref:N,"aria-label":a,...j,onScroll:e=>{G(),E?.(e)},onWheel:e=>{K(),D?.(e)},onTouchStart:e=>{K(),O?.(e)},onKeyDown:e=>{[`ArrowUp`,`PageUp`,`Home`].includes(e.key)&&K(),k?.(e)},className:i(`h-full overflow-y-auto overscroll-contain outline-none [overflow-anchor:none] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring`,s===`rail`?`[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`:`[scrollbar-gutter:stable]`,u,s===`rail`&&z&&`pr-10`),children:(0,M.jsx)(`div`,{ref:x,role:`log`,"aria-live":o?`off`:`polite`,"aria-relevant":`additions text`,"aria-busy":o,className:d,...h,children:_})});return(0,M.jsx)(`div`,{"data-slot":`message-scroller`,className:i(`min-h-0`,g),...v,children:s===`rail`?(0,M.jsx)(U,{items:z?R:[],label:c,activeId:L,onItemSelect:V,previewSide:`before`,highlightActive:!0,itemSize:14,className:`h-full min-h-0 overflow-hidden`,previewContainerClassName:`right-8 left-3`,previewClassName:`mr-1 w-64 max-w-full [&_[data-slot=preview-rail-card]]:h-20 [&_[data-slot=preview-rail-card]]:overflow-hidden [&_[data-slot=preview-rail-card]]:p-3 [&_[data-slot=preview-rail-title]]:line-clamp-1 [&_[data-slot=preview-rail-title]]:text-xs [&_[data-slot=preview-rail-title]]:leading-4 [&_[data-slot=preview-rail-description]]:line-clamp-2 [&_[data-slot=preview-rail-description]]:text-xs [&_[data-slot=preview-rail-description]]:leading-4`,railClassName:i(`absolute inset-y-3 right-1 w-7 content-center py-1 [&_[data-slot=preview-rail-item]]:w-7 [&_[data-slot=preview-rail-item]]:justify-end [&_[data-slot=preview-rail-tick]]:h-px [&_[data-slot=preview-rail-tick]]:w-4 [&_[data-slot=preview-rail-tick]]:origin-right`,z?`pointer-events-auto opacity-100`:`pointer-events-none opacity-0`,f),children:q}):q})}var re=(0,A.createContext)({from:`assistant`}),ie={type:`spring`,stiffness:480,damping:32,mass:.62};function ae({from:e,animateIn:t=!1,children:n,className:r,initial:o,animate:s,transition:c,exit:u,style:d,...f}){let p=l()??!1,m=(0,A.useMemo)(()=>({from:e}),[e]);return(0,M.jsx)(j.Provider,{value:e===`user`?`end`:`start`,children:(0,M.jsx)(re.Provider,{value:m,children:(0,M.jsx)(a.article,{"data-slot":`message`,"data-from":e,"aria-label":f[`aria-label`]??`${e} message`,initial:o??(t&&!p?{opacity:0,transform:`translateY(8px) scale(0.95)`}:!1),animate:s??(t&&!p?{opacity:1,transform:`translateY(0px) scale(1)`}:{opacity:1}),exit:u??(p?{opacity:0}:{opacity:0,transform:`translateY(-3px) scale(0.99)`}),transition:c??(p?{duration:.12}:ie),style:{transformOrigin:e===`user`?`100% 100%`:`0% 100%`,...d},className:i(`group/message flex w-full items-start gap-2`,e===`user`?`flex-row-reverse`:`flex-row`,r),...f,children:n})})})}function oe({className:e,...t}){let{from:n}=(0,A.useContext)(re);return(0,M.jsx)(`div`,{"data-slot":`message-content`,className:i(`flex min-w-0 flex-1 flex-col gap-1.5`,n===`user`?`items-end`:`items-start`,e),...t})}function se(e){return typeof e==`object`&&!!e}function J(e){if(typeof e!=`string`)return e;let t=e.trim();if(!t)return e;try{let n=JSON.parse(t);return se(n)||Array.isArray(n)?n:e}catch{return e}}function ce(e){if(!se(e)||typeof e.type!=`string`||!e.type.startsWith(`tool-`))return e;let t=J(e.input),n=J(e.output),r=J(e.result),i=t!==e.input,a=n!==e.output,o=r!==e.result;if(!i&&!a&&!o)return e;let s={...e};return i&&(s.input=t),a&&(s.output=n),o&&(s.result=r),s}function le(e){let t=!1,n=e.map(e=>{let n=ce(e);return n!==e&&(t=!0),n});return t?n:e}var ue=(0,A.memo)(function({title:e=`Something went wrong`,message:t,className:n}){return(0,M.jsx)(`div`,{className:i(`flex justify-start`,n),children:(0,M.jsxs)(`div`,{className:`rounded-[8px] border border-red-500/30 bg-red-500/10 px-4 py-2.5 text-sm text-foreground`,children:[(0,M.jsx)(`div`,{className:`font-medium text-foreground`,children:e}),(0,M.jsx)(`div`,{className:`mt-0.5 text-muted-foreground`,children:t})]})})}),de=new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,minute:`2-digit`,hour12:!0}),fe=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`numeric`});function pe(e){let t=new Date;return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()?de.format(e):fe.format(e)}function me({text:e,onCopied:t}){let[n,r]=(0,A.useState)(!1),a=(0,A.useRef)(null);return(0,A.useEffect)(()=>()=>{a.current&&window.clearTimeout(a.current)},[]),(0,M.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-label":n?`Copied`:`Copy message`,onClick:async()=>{try{await navigator.clipboard.writeText(e),r(!0),a.current&&window.clearTimeout(a.current),a.current=window.setTimeout(()=>{r(!1),a.current=null},2e3),S.success(`Copied to clipboard`),t?.()}catch{S.error(`Failed to copy to clipboard`)}},onPointerDown:e=>{e.stopPropagation()},onMouseDown:e=>e.stopPropagation(),className:i(`flex size-6 items-center justify-center rounded-md transition-[background-color,opacity,transform] duration-150 ease-out active:scale-[0.97]`,`bg-transparent opacity-50 hover:bg-foreground/10 hover:opacity-100`),children:(0,M.jsxs)(`div`,{className:`relative size-3.5`,children:[(0,M.jsx)(y,{className:i(`absolute inset-0 h-3.5 w-3.5 text-muted-foreground transition-[opacity,transform] duration-150 ease-out`,n?`scale-50 opacity-0`:`scale-100 opacity-100`)}),(0,M.jsx)(f,{className:i(`absolute inset-0 h-3.5 w-3.5 text-muted-foreground transition-[opacity,transform] duration-150 ease-out`,n?`scale-100 opacity-100`:`scale-50 opacity-0`)})]})})}function he({text:e,timestamp:t,heightClass:n,hoverClass:r,isVisible:a,alignClass:o,onCopied:s}){return(0,M.jsxs)(`div`,{className:i(`pointer-events-none flex items-center gap-1 pt-1 text-xs text-muted-foreground/70 opacity-0 transition-opacity duration-100`,n,o,r,a&&`pointer-events-auto opacity-100`),onMouseDown:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[t&&(0,M.jsx)(`span`,{children:t}),e&&(0,M.jsx)(me,{text:e,onCopied:s})]})}function ge(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function _e({part:e}){let t=ge(e.payload);return(0,M.jsxs)(`section`,{"data-payload-kind":e.kind,className:`w-full min-w-0 overflow-hidden rounded-xl border border-border/60 bg-muted/40 text-sm`,children:[(0,M.jsx)(`div`,{className:`border-b border-border/50 px-3 py-2 text-xs font-medium text-muted-foreground`,children:e.title}),e.text?(0,M.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap break-words p-3 font-mono text-xs leading-5 text-foreground/80`,children:e.text}):null,t?(0,M.jsxs)(`details`,{open:!0,className:`border-t border-border/50 px-3 py-2`,children:[(0,M.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium text-muted-foreground`,children:`Payload`}),(0,M.jsx)(`pre`,{className:`m-0 mt-2 max-w-full whitespace-pre-wrap break-words font-mono text-xs leading-5 text-foreground/70`,children:t})]}):null]})}function Y(e){return typeof e==`object`&&!!e}function X(e){return Y(e)&&e.type===`text`&&typeof e.text==`string`}function ve(e){return Y(e)&&e.type===`error`&&typeof e.message==`string`}function ye(e){return Y(e)&&e.type===`payload`&&typeof e.kind==`string`&&typeof e.title==`string`}function Z(e){if(!Y(e))return!1;let t=e.type;return t===`dynamic-tool`||typeof t==`string`&&t.startsWith(`tool-`)}function be(e,t){let n=[];for(let t of e)X(t)&&n.push(t.text);return n.join(t)}(0,A.memo)(function(e){let{message:t,UserMessageComponent:n,userMessageClassName:r,onCopied:i,display:a}=e,{enableImagePreview:o,showCopyToolbar:s,isMounted:c,isCopyVisible:l}=a,u=be(t.parts??[],``),d=(t.parts??[]).length>0;if(!u&&!d)return null;let f=t?.createdAt,p=`user-${t.id}`,m=c&&f?pe(new Date(f)):void 0;return(0,M.jsxs)(`div`,{className:`group/user-message`,children:[(0,M.jsx)(n,{message:t,className:r,enableImagePreview:o}),(s&&!!u||!!m)&&(0,M.jsx)(he,{text:s?u:``,timestamp:m,heightClass:`h-[28px]`,hoverClass:`group-hover/user-message:opacity-100 group-hover/user-message:pointer-events-auto`,isVisible:l,alignClass:`justify-end`,onCopied:()=>i(p)})]})}),(0,A.memo)(function(e){let{assistantMsgs:t,turnKey:n,ToolRendererComponent:r,TextRendererComponent:i,toolRenderers:a,onOpenUIAction:o,onOpenUIArtifactReady:s,onOpenArtifact:c,onCopied:l,stream:u,copy:d,display:f}=e,{isLast:p,isStreaming:m}=u,{enabled:h,isVisible:g}=d,{suppressQuestionTool:_}=f,v=be(t.flatMap(e=>e.parts??[]),`
|
|
3
3
|
|
|
4
4
|
`),y=m&&p,b=h&&!!v.trim()&&!y,x=`assistant-${n}-all`,S=h?v:``;return(0,M.jsxs)(`div`,{className:`group/assistant-turn`,children:[(0,M.jsx)(`div`,{className:`flex flex-col gap-3`,children:t.map((e,n)=>{let l=p&&n===t.length-1;return(0,M.jsx)(Te,{msg:e,isLast:l,isStreaming:m,suppressQuestionTool:_,ToolRendererComponent:r,TextRendererComponent:i,toolRenderers:a,onOpenUIAction:o,onOpenUIArtifactReady:s,onOpenArtifact:c},e.id)})}),(b||g)&&(0,M.jsx)(he,{text:S,heightClass:`h-[48px] flex items-start w-full`,hoverClass:`group-hover/assistant-turn:opacity-100 group-hover/assistant-turn:pointer-events-auto`,isVisible:g,alignClass:`justify-start`,onCopied:()=>l(x)})]})});var xe=`tool-call:`,Se=`unkeyed-tool:`;function Ce(e,t,n){return t.toolCallId?`${xe}${t.toolCallId}`:`${Se}${e}:${t.type}:${n}`}function we(e,t){let{messageId:n,isLast:r,isStreaming:i,suppressQuestionTool:a,suppressTextWhenPlanWrite:o=!1,ToolRendererComponent:s,TextRendererComponent:c,toolRenderers:l,onOpenUIAction:u,onOpenUIArtifactReady:d,onOpenArtifact:f}=t,p=[],m=[],h=o&&e.some(e=>Z(e)&&e.type===`tool-PlanWrite`),g=new Set(e.filter(e=>Z(e)&&(e.type===`tool-Task`||e.type===`tool-Agent`)&&typeof e.toolCallId==`string`).map(e=>e.toolCallId)),_=new Map,v=new Set,y=new Map;for(let t of e){if(!Z(t)||t.type===`tool-TaskOutput`||!t.toolCallId||!t.toolCallId.includes(`:`))continue;let e=t.toolCallId.split(`:`)[0];g.has(e)&&(_.has(e)||_.set(e,[]),_.get(e).push(t),v.add(t.toolCallId))}let b=0;for(;b<e.length;){let t=e[b];if(Z(t)&&t.type===`tool-TaskOutput`){b++;continue}if(X(t)){let e=t.text;e&&!h&&m.push(e),b++;continue}if(ve(t)){p.push((0,M.jsx)(ue,{title:t.title,message:t.message},`${n}-error-${t.title}-${t.message}`)),b++;continue}if(ye(t)){p.push((0,M.jsx)(_e,{part:t},`${n}-payload-${b}`)),b++;continue}if(Z(t)){if(a&&t.type===`tool-Question`){b++;continue}if(t.toolCallId&&v.has(t.toolCallId)){b++;continue}let e=r&&i?`streaming`:void 0,o=t.toolCallId,c=(t.type===`tool-Task`||t.type===`tool-Agent`)&&o?_.get(o)||[]:void 0,u=t.toolCallId?0:y.get(t.type)??0;t.toolCallId||y.set(t.type,u+1),p.push((0,M.jsx)(s,{part:t,nestedTools:c,chatStatus:e,toolRenderers:l},Ce(n,t,u))),b++;continue}b++}let x=m.join(`
|
|
5
5
|
|
|
6
|
-
`);return x&&p.push((0,M.jsx)(`div`,{className:`group/assistant-text text-body`,children:(0,M.jsx)(c,{content:x,isStreaming:i,messageId:n,onOpenUIAction:u,onOpenUIArtifactReady:d,onOpenArtifact:f,className:`leading-relaxed [&_p]:leading-relaxed`})},`${n}-text-final`)),p}function Te({msg:e,isLast:t,isStreaming:n,suppressQuestionTool:r,ToolRendererComponent:i,TextRendererComponent:a,toolRenderers:o,onOpenUIAction:s,onOpenUIArtifactReady:c,onOpenArtifact:l}){let u=(0,A.useMemo)(()=>le(e.parts??[]),[e.parts]),d=(0,A.useMemo)(()=>we(u,{messageId:e.id,isLast:t,isStreaming:n,suppressQuestionTool:r,ToolRendererComponent:i,TextRendererComponent:a,toolRenderers:o,onOpenUIAction:s,onOpenUIArtifactReady:c,onOpenArtifact:l}),[u,e.id,t,n,r,i,a,o,s,c,l]);return d.length>1?(0,M.jsx)(`div`,{className:`group/assistant-turn flex flex-col gap-3`,children:d}):(0,M.jsx)(`div`,{className:`group/assistant-turn`,children:d})}var Ee=e(n(),1);function De({open:e,onClose:t,images:n,initialIndex:r=0}){let[a,o]=(0,A.useState)(r),s=n.length>1;(0,A.useEffect)(()=>{e&&o(r)},[e,r]);let c=(0,A.useCallback)(e=>{e?.stopPropagation(),o(e=>e>0?e-1:n.length-1)},[n.length]),l=(0,A.useCallback)(e=>{e?.stopPropagation(),o(e=>e<n.length-1?e+1:0)},[n.length]),u=(0,A.useEffectEvent)(e=>{switch(e.key){case`ArrowLeft`:e.preventDefault(),s&&c();break;case`ArrowRight`:e.preventDefault(),s&&l()}});(0,A.useEffect)(()=>{if(!e)return;let t=e=>u(e);return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[e]),(0,A.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]);let d=(0,A.useRef)(null),f=(0,A.useEffectEvent)(e=>{d.current&&e.target===d.current&&t()});if((0,A.useEffect)(()=>{if(!e)return;let t=d.current;if(!t)return;t.open||t.showModal();let n=e=>f(e);return t.addEventListener(`click`,n),()=>{t.removeEventListener(`click`,n),t.open&&t.close()}},[e]),typeof document>`u`||!e)return null;let m=n[a]??n[0];return m?.url?(0,Ee.createPortal)((0,M.jsxs)(`dialog`,{ref:d,"aria-label":`Image viewer`,onClose:()=>t(),className:`fixed inset-0 z-50 m-0 flex h-full max-h-none w-full max-w-none items-center justify-center border-0 bg-black/90 p-0 backdrop:bg-transparent`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Close fullscreen (Esc)`,className:`absolute top-4 right-4 z-10 inline-flex size-9 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(b,{className:`size-5`})}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`Previous image (←)`,className:`absolute top-1/2 left-4 z-10 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(T,{className:`size-6`})}),(0,M.jsx)(`img`,{src:m.url,alt:m.filename??`Image preview`,className:`max-h-[85vh] max-w-[90vw] object-contain select-none`,onClick:e=>e.stopPropagation(),draggable:!1}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:l,"aria-label":`Next image (→)`,className:`absolute top-1/2 right-4 z-10 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(p,{className:`size-6`})}),s&&(0,M.jsxs)(`div`,{className:`absolute bottom-6 left-1/2 flex -translate-x-1/2 flex-col items-center gap-3`,children:[(0,M.jsx)(`div`,{className:`flex gap-2`,children:n.map((e,t)=>(0,M.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o(t)},"aria-label":`Go to image ${t+1}`,className:i(`size-2 rounded-full transition-all`,t===a?`scale-125 bg-white`:`bg-white/40 hover:bg-white/60`)},e.url))}),(0,M.jsxs)(`span`,{className:`text-sm text-white/70`,children:[a+1,` / `,n.length]})]})]}),document.body):null}function Oe(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ke(e,t){if(t)return`image`;let n=e.split(`.`).pop()?.toLowerCase();return[`js`,`ts`,`jsx`,`tsx`,`py`,`rb`,`go`,`rs`,`java`,`kt`,`swift`,`c`,`cpp`,`h`,`hpp`,`cs`,`php`].includes(n||``)?`code`:[`json`,`yaml`,`yml`,`xml`].includes(n||``)?`data`:`text`}function Ae(e){switch(e){case`image`:return(0,M.jsx)(O,{className:`size-4 text-muted-foreground`});case`code`:return(0,M.jsx)(D,{className:`size-4 text-muted-foreground`});case`data`:return(0,M.jsx)(E,{className:`size-4 text-muted-foreground`});default:return(0,M.jsx)(h,{className:`size-4 text-muted-foreground`})}}function je({id:e,filename:t,size:n,isImage:r,url:a,onRemove:o,className:s,display:c=`chip`,enableImagePreview:l=!0}){let[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1),m=ke(t,r),h=c===`image-only`&&r&&!!a,g=!!(l&&r&&a),_=e=>{e?.stopPropagation(),p(!0)};return(0,M.jsxs)(`div`,{className:i(`relative rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding))] bg-muted/50`,h?`flex size-10 items-center justify-center`:`flex max-w-[200px] min-w-[120px] items-center gap-2 py-1 pr-2 pl-1`,s),onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[h?(0,M.jsx)(`div`,{className:i(`size-8 shrink-0 overflow-hidden rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)]`,g&&`cursor-pointer`),onClick:g?_:void 0,role:g?`button`:void 0,tabIndex:g?0:void 0,"aria-label":g?`Preview ${t}`:void 0,onKeyDown:g?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}:void 0,children:(0,M.jsx)(`img`,{src:a,alt:t,className:`h-full w-full object-cover`})}):(0,M.jsxs)(M.Fragment,{children:[r&&a?(0,M.jsx)(`div`,{className:i(`w-8 shrink-0 self-stretch overflow-hidden rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)]`,g&&`cursor-pointer`),onClick:g?_:void 0,role:g?`button`:void 0,tabIndex:g?0:void 0,"aria-label":g?`Preview ${t}`:void 0,onKeyDown:g?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}:void 0,children:(0,M.jsx)(`img`,{src:a,alt:t,className:`aspect-square h-full w-full object-cover`})}):(0,M.jsx)(`div`,{className:`flex w-8 shrink-0 items-center justify-center self-stretch rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)] bg-muted`,children:Ae(m)}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,M.jsx)(`span`,{className:`truncate text-sm font-medium text-foreground`,title:t,children:t}),n!==void 0&&(0,M.jsx)(`span`,{className:`text-micro text-muted-foreground`,children:Oe(n)})]})]}),o&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),o()},"aria-label":`Remove ${t}`,className:`absolute -top-1.5 -right-1.5 z-10 flex size-4 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-[opacity,transform] duration-150 ease-out hover:text-foreground active:scale-[0.97] ${u?`opacity-100`:`opacity-0`}`,type:`button`,children:(0,M.jsx)(b,{className:`size-3`})}),g&&a&&(0,M.jsx)(De,{open:f,onClose:()=>p(!1),images:[{id:e,url:a,filename:t}]})]})}function Q(e){return typeof e==`object`&&!!e}function Me(e){if(!Q(e))return null;let t=e.type;if(typeof t!=`string`)return null;if(t===`image`){let t=e;return t.url??t.image??null}if(t===`data-image`)return e.data?.url??null;if(t===`file`){let t=e;if(t.mimeType?.startsWith(`image/`)){if(t.url)return t.url;if(t.data)return`data:${t.mimeType};base64,${t.data}`}}return null}function Ne(e){if(!Q(e)||e.type!==`file`)return null;let t=e,n=t.filename||t.name||t.fileName||`Attachment`;return t.mimeType?.startsWith(`image/`)??!1?null:{filename:n,size:t.size}}var Pe=(0,A.memo)(function({message:e,className:t,enableImagePreview:n=!0}){let[r,a]=(0,A.useState)(null),o=(e.parts?.filter(X)??[]).map(e=>e.text).join(``),s=[],c=[];for(let t of e.parts??[]){let e=Me(t);e&&s.push(e);let n=Ne(t);n&&c.push(n)}if(Q(e)&&Array.isArray(e.experimental_attachments))for(let t of e.experimental_attachments)t.contentType?.startsWith(`image/`)&&t.url&&s.push(t.url);if(!o&&s.length===0&&c.length===0)return null;let l=s.map((t,n)=>({id:`${e.id}-img-${n}`,url:t,filename:`image-${n+1}`}));return(0,M.jsxs)(`div`,{className:i(`flex flex-col items-end gap-1`,t),children:[s.length>0&&s.map((e,t)=>(0,M.jsx)(`div`,{className:i(`max-w-[200px] rounded-chat-message bg-foreground/4 p-1.5`,n&&`cursor-pointer`),onClick:n?()=>a(t):void 0,role:n?`button`:void 0,tabIndex:n?0:void 0,onKeyDown:n?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a(t))}:void 0,children:(0,M.jsx)(`img`,{src:e,alt:`attachment`,width:184,height:120,className:`block max-h-[120px] max-w-[184px] rounded-chat-message-inner object-cover`})},e)),n&&l.length>0&&(0,M.jsx)(De,{open:r!==null,onClose:()=>a(null),images:l,initialIndex:r??0}),c.length>0&&(0,M.jsx)(`div`,{className:`flex flex-col items-end gap-2`,children:c.map((e,t)=>(0,M.jsx)(je,{id:`${e.filename}-${t}`,filename:e.filename,size:e.size},`${e.filename}-${e.size}`))}),o&&(0,M.jsx)(`div`,{className:`ms-[70px] max-w-[calc(95%-40px)]`,children:(0,M.jsx)(`div`,{className:`rounded-chat-message bg-muted px-3.5 py-1.5 text-sm text-foreground transition-colors`,children:(0,M.jsx)(`p`,{className:`leading-5 wrap-break-word whitespace-pre-wrap text-pretty`,children:o})})})]})});function Fe(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Set,i=[],a=e=>{if(r.has(e))return;r.add(e);let o=n.get(e);o&&i.push(o);for(let n of t?.nodes[e]?.childrenIds??[])a(n)};for(let e of t?.rootChildrenIds??[])a(e);for(let t of e)a(t.id);return i}function Ie(e){return e===`done`?(0,M.jsx)(g,{className:`size-3.5 text-emerald-600 dark:text-emerald-400`}):e===`error`||e===`failed`?(0,M.jsx)(m,{className:`size-3.5 text-destructive`}):e===`cancelled`?(0,M.jsx)(v,{className:`size-3.5 text-muted-foreground`}):e===`recovering`?(0,M.jsx)(k,{className:`size-3.5 animate-spin text-amber-500 dark:text-amber-400`}):(0,M.jsx)(_,{className:`size-3.5 animate-spin text-primary`})}function Le(e){let t=[],n;for(let r of e){if(r.role===`user`){n&&t.push(n),n={user:r,assistants:[]};continue}if(r.role===`assistant`){if(!n||r.source===`local`){n&&t.push(n),n={assistants:[r]};continue}n.assistants.push(r)}}return n&&t.push(n),t}var Re=(0,A.lazy)(()=>x(async()=>{let{GenerativeTextRenderer:e}=await import(`./openui-renderer-Bkkx5kmA.js`).then(e=>e.n);return{GenerativeTextRenderer:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])).then(({GenerativeTextRenderer:e})=>({default:e})));function ze({className:e,content:t}){return(0,M.jsx)(`div`,{className:e?`${e} whitespace-pre-wrap`:`whitespace-pre-wrap`,children:t})}function Be(e){return(0,A.useMemo)(()=>w(e.content).some(e=>e.type===`openui`),[e.content])?(0,M.jsx)(A.Suspense,{fallback:(0,M.jsx)(ze,{className:e.className,content:e.content}),children:(0,M.jsx)(Re,{...e})}):(0,M.jsx)(C,{className:e.className,content:e.content,isStreaming:e.isStreaming})}function $(e,t,n){if(n===0)return 0;let r=0,i=n;for(;r<i;){let n=Math.floor((r+i)/2);e[n]<=t?r=n+1:i=n}return Math.max(0,Math.min(n-1,r-1))}function Ve(e,t,n,r){let i=[0];for(let[a,o]of e.entries())i.push(i[i.length-1]+(t.get(o)??n)+(a<e.length-1?r:0));return i}function He({estimateSize:e,getItemKey:t,itemGap:n=0,items:r,overscan:i=1.5,renderItem:a,viewportRef:o}){let s=(0,A.useMemo)(()=>r.map((e,n)=>t(e,n)),[t,r]),c=r.length>=16,[l,u]=(0,A.useState)(()=>new Map),[d,f]=(0,A.useState)({height:0,scrollTop:0}),p=(0,A.useRef)(s),m=(0,A.useRef)(l),h=(0,A.useRef)(e),g=(0,A.useRef)(n),_=(0,A.useRef)([0]),v=(0,A.useRef)(0),y=(0,A.useRef)(new Map),b=(0,A.useRef)(new WeakMap),x=(0,A.useRef)(null),S=(0,A.useRef)(null),C=(0,A.useCallback)(()=>{let e=o.current;if(!e)return;let t={height:e.clientHeight,scrollTop:e.scrollTop};f(e=>e.height===t.height&&e.scrollTop===t.scrollTop?e:t)},[o]),w=(0,A.useCallback)(()=>{S.current??=window.requestAnimationFrame(()=>{S.current=null,C()})},[C]),T=(0,A.useCallback)((e,t)=>{let n=y.current.get(e);n&&n!==t&&(x.current?.unobserve(n),y.current.delete(e)),t&&(y.current.set(e,t),b.current.set(t,e),x.current?.observe(t))},[]),E=(0,A.useMemo)(()=>Ve(s,l,e,n),[e,n,s,l]);(0,A.useLayoutEffect)(()=>{C()},[r.length,C]),(0,A.useLayoutEffect)(()=>{p.current=s,m.current=l,h.current=e,g.current=n,_.current=E},[e,n,s,l,E]),(0,A.useEffect)(()=>{let e=o.current;if(!e)return;e.addEventListener(`scroll`,w,{passive:!0}),window.addEventListener(`resize`,w),C();let t;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(w),t.observe(e)),()=>{e.removeEventListener(`scroll`,w),window.removeEventListener(`resize`,w),t?.disconnect(),S.current!=null&&(window.cancelAnimationFrame(S.current),S.current=null)}},[w,C,o]);let D=(0,A.useCallback)(e=>{let t=m.current,n=t;for(let r of e){let e=b.current.get(r.target),i=r.contentRect.height;!e||i<=0||t.get(e)===i||(n===t&&(n=new Map(t)),n.set(e,i))}if(n===t)return;let r=o.current,i=p.current,a=Ve(i,n,h.current,g.current);if(r&&i.length>0){let e=_.current,t=$(e,Math.max(0,r.scrollTop),i.length),n=i[t];if(n&&t>0){let r=(a[i.indexOf(n)]??0)-(e[t]??0);r!==0&&(v.current+=r)}}m.current=n,_.current=a,u(n)},[o]);if((0,A.useLayoutEffect)(()=>{if(!c||typeof ResizeObserver>`u`)return;let e=new ResizeObserver(e=>D(e));x.current=e;for(let t of y.current.values())e.observe(t);return()=>{e.disconnect(),x.current===e&&(x.current=null)}},[c,D]),(0,A.useEffect)(()=>{let e=m.current;if(e.size===0)return;let t=new Set(s),n=new Map([...e].filter(([e])=>t.has(e)));n.size!==e.size&&(m.current=n,u(n))},[s]),(0,A.useLayoutEffect)(()=>{let e=v.current,t=o.current;!t||e===0||(t.scrollTop+=e,v.current=0,C())},[l,C,o]),!c)return(0,M.jsx)(M.Fragment,{children:r.map((e,t)=>(0,M.jsx)(A.Fragment,{children:a(e,t)},s[t]))});let O=E[E.length-1]??0,k=Math.max(e,d.height*i),j=$(E,Math.max(0,d.scrollTop-k),r.length),N=Math.min(r.length-1,$(E,d.scrollTop+d.height+k,r.length)+1);return(0,M.jsx)(`div`,{"data-rendered-turn-count":N-j+1,"data-total-turn-count":r.length,"data-virtualized-transcript":`true`,style:{height:O,position:`relative`,width:`100%`},children:r.slice(j,N+1).map((e,t)=>{let n=j+t,r=s[n];return(0,M.jsx)(`div`,{ref:e=>T(r,e),"data-virtualized-turn-index":n,style:{left:0,position:`absolute`,right:0,top:E[n]},children:a(e,n)},r)})})}export{Ie as a,we as c,oe as d,ne as f,T as h,Fe as i,le as l,V as m,Be as n,Pe as o,R as p,Le as r,je as s,He as t,ae as u};
|
|
6
|
+
`);return x&&p.push((0,M.jsx)(`div`,{className:`group/assistant-text text-body`,children:(0,M.jsx)(c,{content:x,isStreaming:i,messageId:n,onOpenUIAction:u,onOpenUIArtifactReady:d,onOpenArtifact:f,className:`leading-relaxed [&_p]:leading-relaxed`})},`${n}-text-final`)),p}function Te({msg:e,isLast:t,isStreaming:n,suppressQuestionTool:r,ToolRendererComponent:i,TextRendererComponent:a,toolRenderers:o,onOpenUIAction:s,onOpenUIArtifactReady:c,onOpenArtifact:l}){let u=(0,A.useMemo)(()=>le(e.parts??[]),[e.parts]),d=(0,A.useMemo)(()=>we(u,{messageId:e.id,isLast:t,isStreaming:n,suppressQuestionTool:r,ToolRendererComponent:i,TextRendererComponent:a,toolRenderers:o,onOpenUIAction:s,onOpenUIArtifactReady:c,onOpenArtifact:l}),[u,e.id,t,n,r,i,a,o,s,c,l]);return d.length>1?(0,M.jsx)(`div`,{className:`group/assistant-turn flex flex-col gap-3`,children:d}):(0,M.jsx)(`div`,{className:`group/assistant-turn`,children:d})}var Ee=e(n(),1);function De({open:e,onClose:t,images:n,initialIndex:r=0}){let[a,o]=(0,A.useState)(r),s=n.length>1;(0,A.useEffect)(()=>{e&&o(r)},[e,r]);let c=(0,A.useCallback)(e=>{e?.stopPropagation(),o(e=>e>0?e-1:n.length-1)},[n.length]),l=(0,A.useCallback)(e=>{e?.stopPropagation(),o(e=>e<n.length-1?e+1:0)},[n.length]),u=(0,A.useEffectEvent)(e=>{switch(e.key){case`ArrowLeft`:e.preventDefault(),s&&c();break;case`ArrowRight`:e.preventDefault(),s&&l()}});(0,A.useEffect)(()=>{if(!e)return;let t=e=>u(e);return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[e]),(0,A.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]);let d=(0,A.useRef)(null),f=(0,A.useEffectEvent)(e=>{d.current&&e.target===d.current&&t()});if((0,A.useEffect)(()=>{if(!e)return;let t=d.current;if(!t)return;t.open||t.showModal();let n=e=>f(e);return t.addEventListener(`click`,n),()=>{t.removeEventListener(`click`,n),t.open&&t.close()}},[e]),typeof document>`u`||!e)return null;let m=n[a]??n[0];return m?.url?(0,Ee.createPortal)((0,M.jsxs)(`dialog`,{ref:d,"aria-label":`Image viewer`,onClose:()=>t(),className:`fixed inset-0 z-50 m-0 flex h-full max-h-none w-full max-w-none items-center justify-center border-0 bg-black/90 p-0 backdrop:bg-transparent`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Close fullscreen (Esc)`,className:`absolute top-4 right-4 z-10 inline-flex size-9 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(b,{className:`size-5`})}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`Previous image (←)`,className:`absolute top-1/2 left-4 z-10 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(T,{className:`size-6`})}),(0,M.jsx)(`img`,{src:m.url,alt:m.filename??`Image preview`,className:`max-h-[85vh] max-w-[90vw] object-contain select-none`,onClick:e=>e.stopPropagation(),draggable:!1}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:l,"aria-label":`Next image (→)`,className:`absolute top-1/2 right-4 z-10 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-full bg-black/50 text-white transition-colors hover:bg-black/70`,children:(0,M.jsx)(p,{className:`size-6`})}),s&&(0,M.jsxs)(`div`,{className:`absolute bottom-6 left-1/2 flex -translate-x-1/2 flex-col items-center gap-3`,children:[(0,M.jsx)(`div`,{className:`flex gap-2`,children:n.map((e,t)=>(0,M.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o(t)},"aria-label":`Go to image ${t+1}`,className:i(`size-2 rounded-full transition-all`,t===a?`scale-125 bg-white`:`bg-white/40 hover:bg-white/60`)},e.url))}),(0,M.jsxs)(`span`,{className:`text-sm text-white/70`,children:[a+1,` / `,n.length]})]})]}),document.body):null}function Oe(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ke(e,t){if(t)return`image`;let n=e.split(`.`).pop()?.toLowerCase();return[`js`,`ts`,`jsx`,`tsx`,`py`,`rb`,`go`,`rs`,`java`,`kt`,`swift`,`c`,`cpp`,`h`,`hpp`,`cs`,`php`].includes(n||``)?`code`:[`json`,`yaml`,`yml`,`xml`].includes(n||``)?`data`:`text`}function Ae(e){switch(e){case`image`:return(0,M.jsx)(O,{className:`size-4 text-muted-foreground`});case`code`:return(0,M.jsx)(D,{className:`size-4 text-muted-foreground`});case`data`:return(0,M.jsx)(E,{className:`size-4 text-muted-foreground`});default:return(0,M.jsx)(h,{className:`size-4 text-muted-foreground`})}}function je({id:e,filename:t,size:n,isImage:r,url:a,onRemove:o,className:s,display:c=`chip`,enableImagePreview:l=!0}){let[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1),m=ke(t,r),h=c===`image-only`&&r&&!!a,g=!!(l&&r&&a),_=e=>{e?.stopPropagation(),p(!0)};return(0,M.jsxs)(`div`,{className:i(`relative rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding))] bg-muted/50`,h?`flex size-10 items-center justify-center`:`flex max-w-[200px] min-w-[120px] items-center gap-2 py-1 pr-2 pl-1`,s),onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[h?(0,M.jsx)(`div`,{className:i(`size-8 shrink-0 overflow-hidden rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)]`,g&&`cursor-pointer`),onClick:g?_:void 0,role:g?`button`:void 0,tabIndex:g?0:void 0,"aria-label":g?`Preview ${t}`:void 0,onKeyDown:g?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}:void 0,children:(0,M.jsx)(`img`,{src:a,alt:t,className:`h-full w-full object-cover`})}):(0,M.jsxs)(M.Fragment,{children:[r&&a?(0,M.jsx)(`div`,{className:i(`w-8 shrink-0 self-stretch overflow-hidden rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)]`,g&&`cursor-pointer`),onClick:g?_:void 0,role:g?`button`:void 0,tabIndex:g?0:void 0,"aria-label":g?`Preview ${t}`:void 0,onKeyDown:g?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}:void 0,children:(0,M.jsx)(`img`,{src:a,alt:t,className:`aspect-square h-full w-full object-cover`})}):(0,M.jsx)(`div`,{className:`flex w-8 shrink-0 items-center justify-center self-stretch rounded-[calc(var(--chat-input-radius)-var(--chat-context-padding)-2px)] bg-muted`,children:Ae(m)}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,M.jsx)(`span`,{className:`truncate text-sm font-medium text-foreground`,title:t,children:t}),n!==void 0&&(0,M.jsx)(`span`,{className:`text-micro text-muted-foreground`,children:Oe(n)})]})]}),o&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),o()},"aria-label":`Remove ${t}`,className:`absolute -top-1.5 -right-1.5 z-10 flex size-4 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-[opacity,transform] duration-150 ease-out hover:text-foreground active:scale-[0.97] ${u?`opacity-100`:`opacity-0`}`,type:`button`,children:(0,M.jsx)(b,{className:`size-3`})}),g&&a&&(0,M.jsx)(De,{open:f,onClose:()=>p(!1),images:[{id:e,url:a,filename:t}]})]})}function Q(e){return typeof e==`object`&&!!e}function Me(e){if(!Q(e))return null;let t=e.type;if(typeof t!=`string`)return null;if(t===`image`){let t=e;return t.url??t.image??null}if(t===`data-image`)return e.data?.url??null;if(t===`file`){let t=e;if(t.mimeType?.startsWith(`image/`)){if(t.url)return t.url;if(t.data)return`data:${t.mimeType};base64,${t.data}`}}return null}function Ne(e){if(!Q(e)||e.type!==`file`)return null;let t=e,n=t.filename||t.name||t.fileName||`Attachment`;return t.mimeType?.startsWith(`image/`)??!1?null:{filename:n,size:t.size}}var Pe=(0,A.memo)(function({message:e,className:t,enableImagePreview:n=!0}){let[r,a]=(0,A.useState)(null),o=(e.parts?.filter(X)??[]).map(e=>e.text).join(``),s=[],c=[];for(let t of e.parts??[]){let e=Me(t);e&&s.push(e);let n=Ne(t);n&&c.push(n)}if(Q(e)&&Array.isArray(e.experimental_attachments))for(let t of e.experimental_attachments)t.contentType?.startsWith(`image/`)&&t.url&&s.push(t.url);if(!o&&s.length===0&&c.length===0)return null;let l=s.map((t,n)=>({id:`${e.id}-img-${n}`,url:t,filename:`image-${n+1}`}));return(0,M.jsxs)(`div`,{className:i(`flex flex-col items-end gap-1`,t),children:[s.length>0&&s.map((e,t)=>(0,M.jsx)(`div`,{className:i(`max-w-[200px] rounded-chat-message bg-foreground/4 p-1.5`,n&&`cursor-pointer`),onClick:n?()=>a(t):void 0,role:n?`button`:void 0,tabIndex:n?0:void 0,onKeyDown:n?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a(t))}:void 0,children:(0,M.jsx)(`img`,{src:e,alt:`attachment`,width:184,height:120,className:`block max-h-[120px] max-w-[184px] rounded-chat-message-inner object-cover`})},e)),n&&l.length>0&&(0,M.jsx)(De,{open:r!==null,onClose:()=>a(null),images:l,initialIndex:r??0}),c.length>0&&(0,M.jsx)(`div`,{className:`flex flex-col items-end gap-2`,children:c.map((e,t)=>(0,M.jsx)(je,{id:`${e.filename}-${t}`,filename:e.filename,size:e.size},`${e.filename}-${e.size}`))}),o&&(0,M.jsx)(`div`,{className:`ms-[70px] max-w-[calc(95%-40px)]`,children:(0,M.jsx)(`div`,{className:`rounded-chat-message bg-muted px-3.5 py-1.5 text-sm text-foreground transition-colors`,children:(0,M.jsx)(`p`,{className:`leading-5 wrap-break-word whitespace-pre-wrap text-pretty`,children:o})})})]})});function Fe(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Set,i=[],a=e=>{if(r.has(e))return;r.add(e);let o=n.get(e);o&&i.push(o);for(let n of t?.nodes[e]?.childrenIds??[])a(n)};for(let e of t?.rootChildrenIds??[])a(e);for(let t of e)a(t.id);return i}function Ie(e){return e===`done`?(0,M.jsx)(g,{className:`size-3.5 text-emerald-600 dark:text-emerald-400`}):e===`error`||e===`failed`?(0,M.jsx)(m,{className:`size-3.5 text-destructive`}):e===`cancelled`?(0,M.jsx)(v,{className:`size-3.5 text-muted-foreground`}):e===`recovering`?(0,M.jsx)(k,{className:`size-3.5 animate-spin text-amber-500 dark:text-amber-400`}):(0,M.jsx)(_,{className:`size-3.5 animate-spin text-primary`})}function Le(e){let t=[],n;for(let r of e){if(r.role===`user`){n&&t.push(n),n={user:r,assistants:[]};continue}if(r.role===`assistant`){if(!n||r.source===`local`){n&&t.push(n),n={assistants:[r]};continue}n.assistants.push(r)}}return n&&t.push(n),t}var Re=(0,A.lazy)(()=>x(async()=>{let{GenerativeTextRenderer:e}=await import(`./openui-renderer-C4e9FOVR.js`).then(e=>e.n);return{GenerativeTextRenderer:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])).then(({GenerativeTextRenderer:e})=>({default:e})));function ze({className:e,content:t}){return(0,M.jsx)(`div`,{className:e?`${e} whitespace-pre-wrap`:`whitespace-pre-wrap`,children:t})}function Be(e){return(0,A.useMemo)(()=>w(e.content).some(e=>e.type===`openui`),[e.content])?(0,M.jsx)(A.Suspense,{fallback:(0,M.jsx)(ze,{className:e.className,content:e.content}),children:(0,M.jsx)(Re,{...e})}):(0,M.jsx)(C,{className:e.className,content:e.content,isStreaming:e.isStreaming})}function $(e,t,n){if(n===0)return 0;let r=0,i=n;for(;r<i;){let n=Math.floor((r+i)/2);e[n]<=t?r=n+1:i=n}return Math.max(0,Math.min(n-1,r-1))}function Ve(e,t,n,r){let i=[0];for(let[a,o]of e.entries())i.push(i[i.length-1]+(t.get(o)??n)+(a<e.length-1?r:0));return i}function He({estimateSize:e,getItemKey:t,itemGap:n=0,items:r,overscan:i=1.5,renderItem:a,viewportRef:o}){let s=(0,A.useMemo)(()=>r.map((e,n)=>t(e,n)),[t,r]),c=r.length>=16,[l,u]=(0,A.useState)(()=>new Map),[d,f]=(0,A.useState)({height:0,scrollTop:0}),p=(0,A.useRef)(s),m=(0,A.useRef)(l),h=(0,A.useRef)(e),g=(0,A.useRef)(n),_=(0,A.useRef)([0]),v=(0,A.useRef)(0),y=(0,A.useRef)(new Map),b=(0,A.useRef)(new WeakMap),x=(0,A.useRef)(null),S=(0,A.useRef)(null),C=(0,A.useCallback)(()=>{let e=o.current;if(!e)return;let t={height:e.clientHeight,scrollTop:e.scrollTop};f(e=>e.height===t.height&&e.scrollTop===t.scrollTop?e:t)},[o]),w=(0,A.useCallback)(()=>{S.current??=window.requestAnimationFrame(()=>{S.current=null,C()})},[C]),T=(0,A.useCallback)((e,t)=>{let n=y.current.get(e);n&&n!==t&&(x.current?.unobserve(n),y.current.delete(e)),t&&(y.current.set(e,t),b.current.set(t,e),x.current?.observe(t))},[]),E=(0,A.useMemo)(()=>Ve(s,l,e,n),[e,n,s,l]);(0,A.useLayoutEffect)(()=>{C()},[r.length,C]),(0,A.useLayoutEffect)(()=>{p.current=s,m.current=l,h.current=e,g.current=n,_.current=E},[e,n,s,l,E]),(0,A.useEffect)(()=>{let e=o.current;if(!e)return;e.addEventListener(`scroll`,w,{passive:!0}),window.addEventListener(`resize`,w),C();let t;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(w),t.observe(e)),()=>{e.removeEventListener(`scroll`,w),window.removeEventListener(`resize`,w),t?.disconnect(),S.current!=null&&(window.cancelAnimationFrame(S.current),S.current=null)}},[w,C,o]);let D=(0,A.useCallback)(e=>{let t=m.current,n=t;for(let r of e){let e=b.current.get(r.target),i=r.contentRect.height;!e||i<=0||t.get(e)===i||(n===t&&(n=new Map(t)),n.set(e,i))}if(n===t)return;let r=o.current,i=p.current,a=Ve(i,n,h.current,g.current);if(r&&i.length>0){let e=_.current,t=$(e,Math.max(0,r.scrollTop),i.length),n=i[t];if(n&&t>0){let r=(a[i.indexOf(n)]??0)-(e[t]??0);r!==0&&(v.current+=r)}}m.current=n,_.current=a,u(n)},[o]);if((0,A.useLayoutEffect)(()=>{if(!c||typeof ResizeObserver>`u`)return;let e=new ResizeObserver(e=>D(e));x.current=e;for(let t of y.current.values())e.observe(t);return()=>{e.disconnect(),x.current===e&&(x.current=null)}},[c,D]),(0,A.useEffect)(()=>{let e=m.current;if(e.size===0)return;let t=new Set(s),n=new Map([...e].filter(([e])=>t.has(e)));n.size!==e.size&&(m.current=n,u(n))},[s]),(0,A.useLayoutEffect)(()=>{let e=v.current,t=o.current;!t||e===0||(t.scrollTop+=e,v.current=0,C())},[l,C,o]),!c)return(0,M.jsx)(M.Fragment,{children:r.map((e,t)=>(0,M.jsx)(A.Fragment,{children:a(e,t)},s[t]))});let O=E[E.length-1]??0,k=Math.max(e,d.height*i),j=$(E,Math.max(0,d.scrollTop-k),r.length),N=Math.min(r.length-1,$(E,d.scrollTop+d.height+k,r.length)+1);return(0,M.jsx)(`div`,{"data-rendered-turn-count":N-j+1,"data-total-turn-count":r.length,"data-virtualized-transcript":`true`,style:{height:O,position:`relative`,width:`100%`},children:r.slice(j,N+1).map((e,t)=>{let n=j+t,r=s[n];return(0,M.jsx)(`div`,{ref:e=>T(r,e),"data-virtualized-turn-index":n,style:{left:0,position:`absolute`,right:0,top:E[n]},children:a(e,n)},r)})})}export{Ie as a,we as c,oe as d,ne as f,T as h,Fe as i,le as l,V as m,Be as n,Pe as o,R as p,Le as r,je as s,He as t,ae as u};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-09-
|
|
3
|
-
"routeEntry": "routes-
|
|
4
|
-
"routeEntryGzipBytes":
|
|
5
|
-
"routeEntryReduction": 0.
|
|
6
|
-
"eagerFiles":
|
|
7
|
-
"eagerGzipBytes":
|
|
2
|
+
"timestamp": "2026-09-16T05:00:19.310Z",
|
|
3
|
+
"routeEntry": "routes-DUontXSG.js",
|
|
4
|
+
"routeEntryGzipBytes": 103517,
|
|
5
|
+
"routeEntryReduction": 0.9022072035475478,
|
|
6
|
+
"eagerFiles": 65,
|
|
7
|
+
"eagerGzipBytes": 350414,
|
|
8
8
|
"passed": true,
|
|
9
9
|
"violations": []
|
|
10
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk-MLKGABMK.js";
|
|
2
2
|
|
|
3
|
-
// web/app/dist/server/assets/_tanstack-start-manifest_v-
|
|
3
|
+
// web/app/dist/server/assets/_tanstack-start-manifest_v-Cm8xE-Rb.js
|
|
4
4
|
var tsrStartManifest = () => ({ routes: {
|
|
5
5
|
__root__: {
|
|
6
6
|
filePath: "/home/circleci/prime-agent/web/app/src/routes/__root.tsx",
|
|
@@ -13,7 +13,7 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
13
13
|
"/api/workspace/tree"
|
|
14
14
|
],
|
|
15
15
|
preloads: [
|
|
16
|
-
"/assets/index-
|
|
16
|
+
"/assets/index-B9aXxpOv.js",
|
|
17
17
|
"/assets/rolldown-runtime-hePW80VL.js",
|
|
18
18
|
"/assets/react-CwJFpaho.js",
|
|
19
19
|
"/assets/react-dom-DX3XddaT.js",
|
|
@@ -30,38 +30,38 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
30
30
|
scripts: [{ attrs: {
|
|
31
31
|
type: "module",
|
|
32
32
|
async: true,
|
|
33
|
-
src: "/assets/index-
|
|
33
|
+
src: "/assets/index-B9aXxpOv.js"
|
|
34
34
|
} }]
|
|
35
35
|
},
|
|
36
36
|
"/": {
|
|
37
37
|
filePath: "/home/circleci/prime-agent/web/app/src/routes/index.tsx",
|
|
38
38
|
children: void 0,
|
|
39
39
|
preloads: [
|
|
40
|
-
"/assets/routes-
|
|
40
|
+
"/assets/routes-DUontXSG.js",
|
|
41
41
|
"/assets/utils-Brtgag-m.js",
|
|
42
42
|
"/assets/ease-CMumuPlX.js",
|
|
43
43
|
"/assets/use-reduced-motion-BOcG709U.js",
|
|
44
44
|
"/assets/createBaseUIEventDetails-B58Jldei.js",
|
|
45
|
-
"/assets/
|
|
46
|
-
"/assets/provider-catalog-
|
|
45
|
+
"/assets/DialogTitle-DiAm7YNe.js",
|
|
46
|
+
"/assets/provider-catalog-ClVvphe0.js",
|
|
47
47
|
"/assets/useBaseUiId-D9ZGPZ6f.js",
|
|
48
48
|
"/assets/dist-52wg4XPY.js",
|
|
49
49
|
"/assets/createLucideIcon-_dfI7Arx.js",
|
|
50
|
-
"/assets/right-panel-registry-
|
|
51
|
-
"/assets/provider-label-
|
|
50
|
+
"/assets/right-panel-registry-BnYCffmM.js",
|
|
51
|
+
"/assets/provider-label-CwZ-KDxk.js",
|
|
52
52
|
"/assets/prompt-input-WaGSKZCU.js",
|
|
53
|
-
"/assets/citations-
|
|
53
|
+
"/assets/citations-DXqV2NLy.js",
|
|
54
54
|
"/assets/resource-helpers-BuWybA8l.js",
|
|
55
55
|
"/assets/bot-DbB9BKL0.js",
|
|
56
56
|
"/assets/check-B3LlvM65.js",
|
|
57
57
|
"/assets/chevron-down-DUUprRP5.js",
|
|
58
|
-
"/assets/virtualized-turn-list-
|
|
58
|
+
"/assets/virtualized-turn-list-mL3ONUUA.js",
|
|
59
59
|
"/assets/chevron-right-NVqQIoiO.js",
|
|
60
60
|
"/assets/safe-external-url-BbAom7Bm.js",
|
|
61
61
|
"/assets/file-text-TmalmYrb.js",
|
|
62
62
|
"/assets/loader-circle-B5GIZGxd.js",
|
|
63
63
|
"/assets/agent-disclosure-CMrxF7L-.js",
|
|
64
|
-
"/assets/sparkles-
|
|
64
|
+
"/assets/sparkles-BY5MFyk6.js",
|
|
65
65
|
"/assets/horizontal-resize-VLjLByUV.js",
|
|
66
66
|
"/assets/folder-vuNT4shY.js",
|
|
67
67
|
"/assets/gauge-BsDqNM1A.js",
|
|
@@ -80,9 +80,11 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
80
80
|
"/assets/useControlled-CgAAWIy9.js",
|
|
81
81
|
"/assets/surfaces-CpfsGAIA.js",
|
|
82
82
|
"/assets/prime-agent-artifacts-C-g1VPiW.js",
|
|
83
|
-
"/assets/chat-
|
|
83
|
+
"/assets/chat-BVMnC5Qh.js",
|
|
84
84
|
"/assets/tokens-Ch5WqXC_.js",
|
|
85
|
-
"/assets/input-CxZp56Im.js"
|
|
85
|
+
"/assets/input-CxZp56Im.js",
|
|
86
|
+
"/assets/alert-dialog-CYE37KMM.js",
|
|
87
|
+
"/assets/dialog-BzcIOvFC.js"
|
|
86
88
|
]
|
|
87
89
|
}
|
|
88
90
|
} });
|