@coffer-org/web 7.4.1 → 7.4.2
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/dist/assets/ChatWidget-CZFJNVBt.js +5 -0
- package/dist/assets/DiagnosticsPage-BRGLbMCb.js +1 -0
- package/dist/assets/{GeoMap-BQoT3_cw.js → GeoMap-B1DFGu6_.js} +1 -1
- package/dist/assets/{MarkdownEditor-BYwRzrYg.js → MarkdownEditor-DsKPqeIt.js} +2 -2
- package/dist/assets/NewRecordView-B1jdKkrr.js +1 -0
- package/dist/assets/PluginSettingsPage-Dasrpx47.js +1 -0
- package/dist/assets/ScanSummary-xxY2oZVM.js +1 -0
- package/dist/assets/SettingsForm-C-xB5cdD.js +1 -0
- package/dist/assets/{SettingsPage-CTxF2X4G.js → SettingsPage-DjRQ1bY5.js} +1 -1
- package/dist/assets/ThemeSwitcher-BJRcZMR7.js +1 -0
- package/dist/assets/auth-context-CoCE5oPD.js +1 -0
- package/dist/assets/{file-text-CTdt_-uv.js → file-text-BdYRF4MO.js} +1 -1
- package/dist/assets/{ilamy-view-CCdCZX7g.js → ilamy-view-D7DQZ577.js} +2 -2
- package/dist/assets/index-CpRTFlxk.js +22 -0
- package/dist/assets/index-Le8YFirR.css +2 -0
- package/dist/assets/{input-rjfudbd0.js → input-BFMNMo6y.js} +1 -1
- package/dist/assets/phone-input-3xV95mM6.js +1 -0
- package/dist/assets/{phone-input-u4b7_wtf.js → phone-input-8QtHMHO_.js} +2 -2
- package/dist/assets/popover-UkAmHo3Y.js +1 -0
- package/dist/assets/src-CheiTWox.js +7 -0
- package/dist/assets/src-CjPxrk6V.js +1 -0
- package/dist/assets/{src-CXEKm9OW.js → src-Co7xh07B.js} +1 -1
- package/dist/assets/src-CwyJPFKQ.js +1 -0
- package/dist/assets/src-G94LYhEo.js +1 -0
- package/dist/assets/ui-BLiPhfyz.js +2 -0
- package/dist/assets/ui-DL6R5B56.js +2 -0
- package/dist/assets/ui-jz6tZ6GD.js +2 -0
- package/dist/assets/ui-mefYc6et.js +2 -0
- package/dist/index.html +10 -10
- package/dist-vendor/web-ui.js +39 -36
- package/package.json +1 -1
- package/dist/assets/ChatWidget-BW8sd6S7.js +0 -5
- package/dist/assets/DiagnosticsPage-3Ci43gZY.js +0 -1
- package/dist/assets/NewRecordView-BMaNGbcK.js +0 -1
- package/dist/assets/PluginSettingsPage-DA7ghBJP.js +0 -1
- package/dist/assets/ScanSummary-TlkBfsiq.js +0 -1
- package/dist/assets/SettingsForm-DMvn412d.js +0 -1
- package/dist/assets/ThemeSwitcher-Dd8tYTor.js +0 -1
- package/dist/assets/auth-context-Bo2wqUzm.js +0 -1
- package/dist/assets/index-2id7xr9t.css +0 -2
- package/dist/assets/index-92nqE7hd.js +0 -22
- package/dist/assets/phone-input-Dbuvvup1.js +0 -1
- package/dist/assets/popover-DCXlclK7.js +0 -1
- package/dist/assets/src-B_6cwa-v.js +0 -1
- package/dist/assets/src-BpG7q6Ng.js +0 -1
- package/dist/assets/src-CbyyWbeT.js +0 -1
- package/dist/assets/src-DfQ6cuPE.js +0 -7
- package/dist/assets/ui-9Rp0TqUO.js +0 -2
- package/dist/assets/ui-ByltCpi4.js +0 -2
- package/dist/assets/ui-CFyjU_NB.js +0 -2
- package/dist/assets/ui-S_PopF4y.js +0 -2
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{l as r,t as i}from"./react-vendor-CzSUaSLk.js";import{Ar as a,Ct as o,Ir as s,Or as c,Pr as l,Rr as u,Tr as d,Vt as f,ai as p,ar as m,ii as h,jr as g,pi as _,rr as v,wr as y}from"./src-CheiTWox.js";import{n as b,r as x}from"./input-BFMNMo6y.js";import{n as S,r as C,t as w}from"./file-text-BdYRF4MO.js";import{f as T,l as E,p as D}from"./phone-input-8QtHMHO_.js";import{c as O}from"./popover-UkAmHo3Y.js";var k=x(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),A=x(`file-headphone`,[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]]),j=x(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),M=x(`file-play`,[[`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:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]]),N=x(`file-spreadsheet`,[[`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:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]),ee=x(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),P=x(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),te=x(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),F=x(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),I=x(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),L=e(t(),1);async function*ne(e){let t=e.getReader(),n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a;for(;(a=r.indexOf(`
|
|
2
|
+
|
|
3
|
+
`))!==-1;){let e=r.slice(0,a);r=r.slice(a+2);let t=`message`,n=[];for(let r of e.split(`
|
|
4
|
+
`))!r||r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trim():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));n.length&&(yield{event:t,data:n.join(`
|
|
5
|
+
`)})}}}var R=`/api/plugins/webchat/user`;async function z(e,t){let n=await fetch(`${R}/${e}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(e);return await n.json()}async function re(){return(await z(`threads`,{})).threads}async function B(e){return z(`history`,{convId:e})}async function V(e){let t=await z(`agents`,{convId:e});return{agents:t.agents??[],defaultAgentId:t.defaultAgentId??null,selection:t.selection??{agentId:null,presetId:null},starters:t.starters??[]}}async function ie(e,t){return(await z(`selectAgent`,{convId:e,...t})).selection}async function ae(e,t){return z(`setVisibility`,{convId:e,private:t})}async function oe(e){return z(`send`,{convId:e.convId,text:e.text,replyTo:e.replyTo,context:e.context,...e.attachments?.length?{attachments:e.attachments}:{}})}async function se(e){if(!(await fetch(`${R}/stop`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e})})).ok)throw Error(`stop`)}async function ce(e,t,n){let r=await fetch(`${R}/channel/stream`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e}),signal:n});if(!r.ok||!r.body)throw Error(`http ${r.status}`);for await(let e of ne(r.body))try{let n=JSON.parse(e.data);e.event===`user`?t.onUser({msgId:String(n.msgId??``),text:String(n.text??``),ts:typeof n.ts==`number`?n.ts:0,...Array.isArray(n.attachments)?{attachments:n.attachments}:{}}):e.event===`message`?t.onMessage({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`delta`?t.onDelta({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`reasoning`?t.onReasoning({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`done`?t.onDone({msgId:n.msgId??null,parentMsgId:String(n.parentMsgId??``),suggestions:Array.isArray(n.suggestions)?n.suggestions:null}):e.event===`refresh`?t.onRefresh({...typeof n.library==`string`?{library:n.library}:{},...typeof n.shelf==`string`?{shelf:n.shelf}:{},...typeof n.id==`string`?{id:n.id}:{},...n.gone===!0?{gone:!0}:{}}):e.event===`error`&&t.onError({message:n.message??null,parentMsgId:typeof n.parentMsgId==`string`?n.parentMsgId:null})}catch(e){t.onError({message:`malformed frame: ${String(e)}`,parentMsgId:null})}}function le(){return crypto.randomUUID()}function ue(e){switch(e.kind){case`user`:case`message`:case`delta`:case`reasoning`:return e.data.msgId;case`done`:return e.data.msgId;case`error`:return null}}var de=1e3,fe=3e4;function pe(){let[e,t]=(0,L.useState)([]),[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)([]),[o,s]=(0,L.useState)(null),[c,l]=(0,L.useState)(null),[u,d]=(0,L.useState)(null),[f,m]=(0,L.useState)([]),[g,_]=(0,L.useState)(null),[v,y]=(0,L.useState)({agentId:null,presetId:null}),[b,x]=(0,L.useState)([]),[S,C]=(0,L.useState)(null),w=(0,L.useRef)(null),T=(0,L.useRef)(!1),E=(0,L.useRef)(null),D=(0,L.useRef)(``),O=(0,L.useRef)(null),k=(0,L.useRef)(0),A=(0,L.useRef)(!0);(0,L.useEffect)(()=>(A.current=!0,()=>{A.current=!1,k.current++}),[]);let j=(0,L.useCallback)(()=>{re().then(e=>{A.current&&t(e)}).catch(()=>{})},[]);(0,L.useEffect)(()=>{if(!n)return;let e=!1;return V(n).then(t=>{e||(m(t.agents),_(t.defaultAgentId),y(t.selection),x(t.starters))}).catch(()=>{}),()=>{e=!0}},[n]);let M=(0,L.useCallback)((e,t)=>{let n=ue(e),r=t!==null&&n!==null&&t.has(n);switch(e.kind){case`user`:{if(r)break;let{msgId:t,text:n,ts:i,attachments:o}=e.data;a(e=>e.some(e=>e.msgId===t)?e:[...e,{msgId:t,role:`user`,text:n,ts:i,...o?.length?{attachments:o}:{}}]);break}case`message`:case`delta`:if(r)break;D.current=e.data.text,s(e.data.text);break;case`reasoning`:if(r)break;O.current=e.data.text,l(e.data.text);break;case`done`:{let{msgId:t,parentMsgId:n,suggestions:i}=e.data;if(w.current=t??n,C(i??null),!r&&t&&D.current){let e=D.current,n=O.current;a(r=>r.some(e=>e.msgId===t)?r:[...r,{msgId:t,role:`assistant`,text:e,ts:Math.floor(Date.now()/1e3),...n?{reasoning:n}:{}}])}D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===n&&(T.current=!1,E.current=null),j();break}case`error`:d(e.data.message??`error`),D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===e.data.parentMsgId&&(T.current=!1,E.current=null);break}},[j]);(0,L.useEffect)(()=>{if(!n)return;let e=n,t=!1,r=null,i=0,o=new AbortController;async function s(){if(t)return;let n=!0,c=!1,l=[],u=e=>{t||(c=!0,n?l.push(e):M(e,null))},f=ce(e,{onUser:e=>u({kind:`user`,data:e}),onMessage:e=>u({kind:`message`,data:e}),onDelta:e=>u({kind:`delta`,data:e}),onReasoning:e=>u({kind:`reasoning`,data:e}),onDone:e=>u({kind:`done`,data:e}),onRefresh:({gone:e,...n})=>{t||(e?h(n):p(n))},onError:e=>u({kind:`error`,data:e})},o.signal).then(()=>!0,()=>!1);try{let r=await B(e);if(t)return;w.current=r.headMsgId;let i=new Set(r.messages.map(e=>e.msgId));a(e=>{let t=E.current,n=e.filter(e=>!i.has(e.msgId)&&(e.msgId.startsWith(`local-`)||e.msgId===t));return n.length?[...r.messages,...n]:r.messages}),C(r.messages.at(-1)?.suggestions??null),n=!1;for(let e of l)M(e,i)}catch(e){if(t)return;d(e.message),n=!1;for(let e of l)M(e,null)}if(await f,t)return;c&&(i=0);let m=Math.min(de*2**i,fe);i++,r=setTimeout(()=>void s(),m)}return s(),()=>{t=!0,r&&clearTimeout(r),o.abort()}},[n,M]);let N=(0,L.useCallback)(e=>{let t=v;y(e),n&&ie(n,e).then(y).catch(e=>{y(t),d(e instanceof Error?e.message:String(e))})},[n,v]),ee=(0,L.useCallback)((n,r)=>{let i=e.find(e=>e.convId===n)?.private??!1;t(e=>e.map(e=>e.convId===n?{...e,private:r}:e)),ae(n,r).then(e=>{t(t=>t.map(t=>t.convId===n?{...t,private:e.visibility===`private`}:t))}).catch(()=>{t(e=>e.map(e=>e.convId===n?{...e,private:i}:e))})},[e]),P=(0,L.useMemo)(()=>{let e=f.find(e=>e.id===v.agentId)?.media;return!e||e.image.accepts.length>0||e.document.accepts.length>0},[f,v]),te=(0,L.useCallback)(()=>{k.current++,T.current=!1,E.current=null,w.current=null,r(le()),a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),F=(0,L.useCallback)(async e=>{k.current++,T.current=!1,E.current=null,r(e),w.current=null,a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),I=(0,L.useCallback)(()=>{n&&se(n).catch(()=>{})},[n]);return{threads:e,convId:n,messages:i,pending:o,pendingReasoning:c,error:u,agents:f,defaultAgentId:g,selection:v,starters:b,suggestions:S,attachmentsAllowed:P,chooseAgent:N,togglePrivate:ee,send:(0,L.useCallback)((e,t,i=[])=>{if(!e.trim()||T.current)return!1;T.current=!0;let o=k.current,c=n??le();n===null&&r(c),d(null),C(null);let u=`local-${le()}`;return a(t=>[...t,{msgId:u,role:`user`,text:e,ts:Math.floor(Date.now()/1e3),...i.length?{attachments:i}:{}}]),s(``),(async()=>{try{let{msgId:n}=await oe({convId:c,text:e,replyTo:w.current,context:t,attachments:i});if(k.current!==o)return;if(n===null){T.current=!1,s(null),l(null);return}a(e=>e.some(e=>e.msgId===n)?e.filter(e=>e.msgId!==u):e.map(e=>e.msgId===u?{...e,msgId:n}:e)),E.current=n}catch(e){k.current===o&&(T.current=!1,d(e.message),s(null),l(null))}})(),!0},[n]),open:F,newConversation:te,loadThreads:j,stop:I}}var me=`—`;function he(){if(typeof document>`u`)return;let e=document.querySelector(`[role="heading"][aria-level="1"]`)?.textContent?.trim();return e&&e!==me?e:void 0}function ge(e){let t=e.split(`/`).filter(Boolean),n=new Set([`settings`,`browse`,`plugins`,`login`,`setup`]);if(t.length<2||n.has(t[0]))return{path:e};let[r,i,a]=t,o=!!(a&&a!==`new`),s=o?he():void 0;return{path:e,library:r,type:i,...o?{id:a}:{},...s?{title:s}:{}}}function _e(){let{pathname:e}=r();return(0,L.useCallback)(()=>ge(e),[e])}var H=i(),ve=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-nav.tsx`,ye=(0,L.createContext)(()=>{});function be({onNavigate:e,children:t}){return(0,H.jsxDEV)(ye.Provider,{value:e,children:t},void 0,!1,{fileName:ve,lineNumber:9,columnNumber:10},this)}function xe(){return(0,L.useContext)(ye)}var Se=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-markdown.tsx`;function Ce({text:e,className:t}){let n=xe();return(0,H.jsxDEV)(f,{value:e,className:t??`md-static md-chat`,onNavigate:n},void 0,!1,{fileName:Se,lineNumber:21,columnNumber:10},this)}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatAttachments.tsx`,W=2,we=[[/\.(png|jpe?g|gif|webp|avif|svg|bmp|heic|heif)$/i,j],[/\.(mp3|wav|ogg|oga|flac|m4a|aac|opus)$/i,A],[/\.(mp4|mov|mkv|webm|avi|m4v)$/i,M],[/\.(zip|rar|7z|tar|gz|tgz|bz2|xz)$/i,k],[/\.(csv|tsv|xlsx?|ods|numbers)$/i,N],[/\.(json|xml|ya?ml|toml|ini|js|jsx|ts|tsx|css|html?|sh|py|sql)$/i,S]];function Te(e){let t=e.mime?.toLowerCase().split(`;`,1)[0]??``;if(t.startsWith(`image/`))return j;if(t.startsWith(`audio/`))return A;if(t.startsWith(`video/`))return M;if(t===`text/csv`||t.includes(`spreadsheet`)||t.includes(`excel`))return N;if(t===`application/json`||t===`application/xml`||t.startsWith(`text/x`))return S;if(t===`application/zip`||t.includes(`compressed`)||t.includes(`tar`))return k;let n=e.label??e.name;for(let[e,t]of we)if(e.test(n))return t;return w}function Ee(e){let t=e.lastIndexOf(`.`);return t<=0||e.length-t>11?{stem:e,ext:``}:{stem:e.slice(0,t),ext:e.slice(t)}}function De({a:e,onRemove:t}){let{t:r}=n(),i=e.label??e.name,{stem:a,ext:o}=Ee(i),s=C(e.size);return(0,H.jsxDEV)(`li`,{className:`flex min-w-0 items-center gap-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background py-1 pr-1.5 pl-2`,children:[(0,H.jsxDEV)(Te(e),{size:14,"aria-hidden":!0,className:`shrink-0 text-muted-foreground`},void 0,!1,{fileName:U,lineNumber:100,columnNumber:7},this),(0,H.jsxDEV)(`span`,{className:`flex min-w-0 flex-1 text-xs`,title:i,children:[(0,H.jsxDEV)(`span`,{className:`truncate`,children:a},void 0,!1,{fileName:U,lineNumber:102,columnNumber:9},this),o&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:o},void 0,!1,{fileName:U,lineNumber:103,columnNumber:17},this)]},void 0,!0,{fileName:U,lineNumber:101,columnNumber:7},this),s&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-[0.6875rem] tabular-nums text-muted-foreground`,children:s},void 0,!1,{fileName:U,lineNumber:105,columnNumber:16},this),t&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":r(`webchat.removeAttachment`,{name:i}),title:r(`webchat.removeAttachment`,{name:i}),className:`shrink-0 rounded p-0.5 text-muted-foreground hover:text-destructive focus-visible:outline-2 focus-visible:outline-ring`,onClick:t,children:(0,H.jsxDEV)(T,{size:13},void 0,!1,{fileName:U,lineNumber:114,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:99,columnNumber:5},this)}function Oe({items:e,onRemove:t,className:r=``}){let{t:i}=n(),[a,o]=(0,L.useState)(!1),s=(0,L.useId)();if(!e.length)return null;let c=a?0:Math.max(0,e.length-W),l=c?e.slice(0,W):e;return(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1 ${r}`,"data-chat-attachments":!0,children:[(0,H.jsxDEV)(`ul`,{id:s,"aria-label":i(`webchat.attachments`),className:`flex flex-col gap-1`,children:l.map((e,n)=>(0,H.jsxDEV)(De,{a:e,...t?{onRemove:()=>t(n)}:{}},`${e.name}-${n}`,!1,{fileName:U,lineNumber:141,columnNumber:11},this))},void 0,!1,{fileName:U,lineNumber:139,columnNumber:7},this),e.length>W&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-expanded":a,"aria-controls":s,className:`inline-flex items-center gap-1 self-start rounded px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>o(e=>!e),children:[(0,H.jsxDEV)(D,{size:12,"aria-hidden":!0,className:a?`rotate-180 transition-transform`:`transition-transform`},void 0,!1,{fileName:U,lineNumber:152,columnNumber:11},this),a?i(`webchat.fewerFiles`):i(`webchat.moreFiles`,{count:c})]},void 0,!0,{fileName:U,lineNumber:145,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:138,columnNumber:5},this)}var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatMessages.tsx`;function ke({messages:e,pending:t,pendingReasoning:r,trailing:i}){let{t:a}=n(),o=(0,L.useRef)(null);return(0,L.useEffect)(()=>{let e=o.current;e&&(e.scrollTop=e.scrollHeight)},[e.length,t]),(0,H.jsxDEV)(`div`,{ref:o,"data-chat-list":!0,className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2`,children:[!e.length&&t===null&&r===null?(0,H.jsxDEV)(`div`,{className:`grid flex-1 place-items-center px-6 text-center text-sm text-muted-foreground`,children:(0,H.jsxDEV)(`span`,{className:`flex flex-col items-center gap-2`,children:[(0,H.jsxDEV)(P,{size:28,"aria-hidden":!0,className:`text-faint`},void 0,!1,{fileName:G,lineNumber:43,columnNumber:13},this),a(`webchat.empty`)]},void 0,!0,{fileName:G,lineNumber:42,columnNumber:11},this)},void 0,!1,{fileName:G,lineNumber:41,columnNumber:9},this):(0,H.jsxDEV)(H.Fragment,{children:[e.map(e=>(0,H.jsxDEV)(Ae,{role:e.role,text:e.text,reasoning:e.reasoning,attachments:e.attachments},e.msgId,!1,{fileName:G,lineNumber:50,columnNumber:13},this)),t!==null&&(0,H.jsxDEV)(Ae,{role:`assistant`,text:t||a(`webchat.thinking`),reasoning:r},void 0,!1,{fileName:G,lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:G,lineNumber:48,columnNumber:9},this),i]},void 0,!0,{fileName:G,lineNumber:39,columnNumber:5},this)}var Ae=(0,L.memo)(function({role:e,text:t,reasoning:r,attachments:i}){let{t:a}=n();return e===`user`?(0,H.jsxDEV)(`div`,{className:`max-w-[85%] min-w-0 self-end rounded-2xl rounded-br-sm border border-border bg-accent px-3 py-2 text-[0.8125rem] break-words whitespace-pre-wrap`,children:[i?.length?(0,H.jsxDEV)(Oe,{items:i,className:`-mx-1 ${t?`mb-2`:``}`},void 0,!1,{fileName:G,lineNumber:90,columnNumber:32},this):null,t]},void 0,!0,{fileName:G,lineNumber:89,columnNumber:7},this):(0,H.jsxDEV)(`div`,{className:`max-w-[95%] min-w-0 self-start rounded-2xl rounded-bl-sm bg-muted px-3 py-2 text-sm break-words`,children:[r?(0,H.jsxDEV)(`details`,{className:`group/reason -mx-1 mb-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background px-2 py-1`,children:[(0,H.jsxDEV)(`summary`,{className:`flex cursor-pointer list-none items-center gap-1 select-none text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden`,children:[(0,H.jsxDEV)(u,{size:12,"aria-hidden":!0,className:`shrink-0 transition-transform group-open/reason:rotate-90`},void 0,!1,{fileName:G,lineNumber:114,columnNumber:13},this),a(`webchat.reasoning`)]},void 0,!0,{fileName:G,lineNumber:113,columnNumber:11},this),(0,H.jsxDEV)(Ce,{text:r,className:`md-static md-chat md-chat-sub mt-1 text-muted-foreground`},void 0,!1,{fileName:G,lineNumber:117,columnNumber:11},this)]},void 0,!0,{fileName:G,lineNumber:112,columnNumber:9},this):null,(0,H.jsxDEV)(Ce,{text:t,className:`md-static md-chat`},void 0,!1,{fileName:G,lineNumber:120,columnNumber:7},this)]},void 0,!0,{fileName:G,lineNumber:96,columnNumber:5},this)}),K=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/AgentPicker.tsx`;function je({agents:e,defaultAgentId:t,selection:r,onChange:i}){let{t:a}=n(),[o,s]=(0,L.useState)(!1),c=(0,L.useRef)(null),l=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(!o)return;function e(e){c.current&&!c.current.contains(e.target)&&s(!1)}function t(e){e.key===`Escape`&&(s(!1),l.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[o]);let u=e.length>1,d=e.flatMap(e=>e.presets.map(t=>({agentId:e.id,presetId:t.id,label:u?`${e.title} · ${t.title}`:t.title,hint:t.hint,isDefault:t.default===!0})));if(d.length===0)return null;let f=d.find(e=>e.agentId===r.agentId&&e.presetId===r.presetId)??d.find(e=>e.agentId===t&&e.isDefault)??d.find(e=>e.isDefault)??d[0];return(0,H.jsxDEV)(`div`,{className:`relative`,ref:c,children:[(0,H.jsxDEV)(`button`,{ref:l,type:`button`,"aria-haspopup":`menu`,"aria-expanded":o,className:`flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>s(e=>!e),children:[(0,H.jsxDEV)(`span`,{className:`max-w-40 truncate`,children:f.hint?`${f.label} · ${f.hint}`:f.label},void 0,!1,{fileName:K,lineNumber:103,columnNumber:9},this),(0,H.jsxDEV)(D,{size:12,className:`shrink-0`},void 0,!1,{fileName:K,lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:95,columnNumber:7},this),o&&(0,H.jsxDEV)(`ul`,{"aria-label":a(`webchat.agentPicker`),className:`absolute bottom-full left-0 z-10 mb-1 max-h-64 w-64 max-w-[calc(100vw-2rem)] overflow-y-auto rounded-md border border-border bg-muted py-1 shadow-lg`,children:d.map(e=>{let t=e===f;return(0,H.jsxDEV)(`li`,{children:(0,H.jsxDEV)(`button`,{type:`button`,...t?{"aria-current":!0}:{},className:`flex w-full items-center gap-2 px-2 py-1.5 text-left text-xs hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>{s(!1),i({agentId:e.agentId,presetId:e.presetId})},children:[(0,H.jsxDEV)(b,{size:12,className:t?`shrink-0 text-primary`:`shrink-0 opacity-0`},void 0,!1,{fileName:K,lineNumber:132,columnNumber:19},this),(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label},void 0,!1,{fileName:K,lineNumber:133,columnNumber:19},this),e.hint?(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.hint},void 0,!1,{fileName:K,lineNumber:134,columnNumber:29},this):null]},void 0,!0,{fileName:K,lineNumber:123,columnNumber:17},this)},`${e.agentId}/${e.presetId}`,!1,{fileName:K,lineNumber:122,columnNumber:15},this)})},void 0,!1,{fileName:K,lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:94,columnNumber:5},this)}var q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatComposer.tsx`;function Me({streaming:e,onSend:t,onStop:r,attachments:i,uploading:o,uploadError:l,uploadProgress:u,canRetryUpload:d,onRetryUpload:f,onPickFiles:p,onRemoveAttachment:m,agents:h,defaultAgentId:g,selection:_,onChooseAgent:v,attachmentsAllowed:y}){let{t:b}=n(),[x,S]=(0,L.useState)(``);function C(){!x.trim()||e||t(x.trim(),i)&&S(``)}return(0,H.jsxDEV)(`div`,{className:`flex shrink-0 flex-col gap-2 border-t border-border p-2`,children:[(i.length>0||o||l)&&(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1.5 px-1`,children:[(0,H.jsxDEV)(Oe,{items:i,onRemove:m},void 0,!1,{fileName:q,lineNumber:65,columnNumber:11},this),o&&(0,H.jsxDEV)(`div`,{className:`flex min-w-32 flex-1 items-center gap-2`,"aria-label":b(`webchat.uploading`),children:[(0,H.jsxDEV)(s,{size:14,className:`shrink-0 animate-spin text-muted-foreground`},void 0,!1,{fileName:q,lineNumber:68,columnNumber:15},this),(0,H.jsxDEV)(`div`,{role:`progressbar`,"aria-label":b(`webchat.uploadProgress`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":u,className:`h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-border`,children:(0,H.jsxDEV)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${u}%`}},void 0,!1,{fileName:q,lineNumber:77,columnNumber:17},this)},void 0,!1,{fileName:q,lineNumber:69,columnNumber:15},this),(0,H.jsxDEV)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[u,`%`]},void 0,!0,{fileName:q,lineNumber:82,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:67,columnNumber:13},this),l&&(0,H.jsxDEV)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 text-xs text-destructive`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1`,children:b(l)},void 0,!1,{fileName:q,lineNumber:87,columnNumber:15},this),d&&(0,H.jsxDEV)(`button`,{type:`button`,className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:outline-ring`,onClick:f,children:[(0,H.jsxDEV)(a,{size:12},void 0,!1,{fileName:q,lineNumber:94,columnNumber:19},this),` `,b(`webchat.retryUpload`)]},void 0,!0,{fileName:q,lineNumber:89,columnNumber:17},this)]},void 0,!0,{fileName:q,lineNumber:86,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:64,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsxDEV)(`textarea`,{className:`max-h-32 w-full resize-none rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors outline-none placeholder:text-faint focus:border-ring focus:ring-2 focus:ring-ring`,rows:1,value:x,placeholder:b(`webchat.placeholder`),onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),C())}},void 0,!1,{fileName:q,lineNumber:104,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1`,children:[y&&(0,H.jsxDEV)(`label`,{title:b(`webchat.attach`),className:`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-within:ring-2 focus-within:ring-ring ${o?`pointer-events-none opacity-60`:``}`,children:[(0,H.jsxDEV)(F,{size:18,"aria-hidden":!0},void 0,!1,{fileName:q,lineNumber:127,columnNumber:15},this),(0,H.jsxDEV)(`input`,{type:`file`,multiple:!0,"aria-label":b(`webchat.attach`),className:`sr-only`,disabled:o,onChange:e=>{e.target.files?.length&&p(e.target.files),e.currentTarget.value=``}},void 0,!1,{fileName:q,lineNumber:128,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:120,columnNumber:13},this),(0,H.jsxDEV)(je,{agents:h,defaultAgentId:g,selection:_,onChange:v},void 0,!1,{fileName:q,lineNumber:141,columnNumber:11},this),(0,H.jsxDEV)(`div`,{className:`flex-1`},void 0,!1,{fileName:q,lineNumber:142,columnNumber:11},this),e?(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.stop`),title:b(`webchat.stop`),className:`shrink-0`,onClick:r,children:(0,H.jsxDEV)(c,{size:18},void 0,!1,{fileName:q,lineNumber:153,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:144,columnNumber:13},this):(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.send`),title:b(`webchat.send`),disabled:!x.trim(),className:`shrink-0 hover:text-primary`,onClick:C,children:(0,H.jsxDEV)(I,{size:18},void 0,!1,{fileName:q,lineNumber:168,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:q,lineNumber:103,columnNumber:7},this)]},void 0,!0,{fileName:q,lineNumber:59,columnNumber:5},this)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatThreadList.tsx`;function Ne({threads:e,activeId:t,onOpen:r,onNew:i,onTogglePrivate:a,className:o=`w-[220px] shrink-0`}){let{t:s}=n();return(0,H.jsxDEV)(`aside`,{"aria-label":s(`webchat.threads`),className:`${o} flex flex-col border-r border-border`,children:[(0,H.jsxDEV)(`button`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 text-sm font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring`,onClick:i,children:[(0,H.jsxDEV)(g,{size:16,"aria-hidden":!0},void 0,!1,{fileName:J,lineNumber:32,columnNumber:9},this),` `,s(`webchat.newConversation`)]},void 0,!0,{fileName:J,lineNumber:28,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto`,children:e.map(e=>{let n=e.convId===t;return(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1 border-l-2 pr-2 pl-1 ${n?`border-ring bg-accent`:`border-transparent hover:bg-muted`}`,children:[(0,H.jsxDEV)(`button`,{onClick:()=>r(e.convId),className:`min-w-0 flex-1 rounded-sm py-2 pl-2 text-left text-sm focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring ${n?`font-medium`:``}`,children:[(0,H.jsxDEV)(`span`,{className:`block truncate`,children:e.title||s(`webchat.newConversation`)},void 0,!1,{fileName:J,lineNumber:52,columnNumber:17},this),(e.mine||e.ownerName)&&(0,H.jsxDEV)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.mine?s(`webchat.you`):e.ownerName},void 0,!1,{fileName:J,lineNumber:57,columnNumber:19},this)]},void 0,!0,{fileName:J,lineNumber:48,columnNumber:15},this),e.mine&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),title:e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),onClick:t=>{t.stopPropagation(),a(e.convId,!e.private)},className:`shrink-0 rounded p-1 text-muted-foreground hover:bg-card hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:(0,H.jsxDEV)(y,{name:e.private?`lucide:shield`:`lucide:globe`,size:14},void 0,!1,{fileName:J,lineNumber:73,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:63,columnNumber:17},this)]},e.convId,!0,{fileName:J,lineNumber:42,columnNumber:13},this)})},void 0,!1,{fileName:J,lineNumber:34,columnNumber:7},this)]},void 0,!0,{fileName:J,lineNumber:27,columnNumber:5},this)}var Pe=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/SuggestionChips.tsx`;function Fe({items:e,onPick:t}){let{t:r}=n();return e?.length?(0,H.jsxDEV)(`div`,{role:`group`,"aria-label":r(`webchat.suggestions`),className:`flex flex-wrap gap-1.5 px-2 pb-1.5`,children:e.map((e,n)=>(0,H.jsxDEV)(`button`,{type:`button`,title:e,className:`max-w-full truncate rounded-full border border-border bg-muted px-3 py-1 text-xs text-foreground hover:border-border2 hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>t(e),children:e},`${n}-${e}`,!1,{fileName:Pe,lineNumber:24,columnNumber:9},this))},void 0,!1,{fileName:Pe,lineNumber:22,columnNumber:5},this):null}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatWidget.tsx`,Ie=25*1024*1024;function X(e){return Array.from(e.dataTransfer.types).includes(`Files`)}function Le({children:e,onFiles:t,className:r}){let{t:i}=n(),[a,o]=(0,L.useState)(!1),s=(0,L.useRef)(0);function c(e){X(e)&&(e.preventDefault(),s.current+=1,o(!0))}function l(e){X(e)&&(e.preventDefault(),s.current=Math.max(0,s.current-1),s.current===0&&o(!1))}function u(e){X(e)&&(e.preventDefault(),s.current=0,o(!1),t(Array.from(e.dataTransfer.files)))}return(0,H.jsxDEV)(`div`,{className:r,onDragEnter:c,onDragLeave:l,onDragOver:e=>{X(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:u,children:[e,a&&(0,H.jsxDEV)(`div`,{"data-chat-drop-overlay":!0,"data-testid":`chat-drop-overlay`,className:`pointer-events-none absolute inset-0 z-50 grid place-items-center bg-card/95 p-6 text-center backdrop-blur-sm`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full w-full flex-col items-center justify-center rounded-2xl border-2 border-dashed border-ring text-primary`,children:[(0,H.jsxDEV)(d,{size:34},void 0,!1,{fileName:Y,lineNumber:83,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-3 text-base font-medium`,children:i(`webchat.dropFiles`)},void 0,!1,{fileName:Y,lineNumber:84,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-1 text-xs text-muted-foreground`,children:i(`webchat.dropFilesHint`)},void 0,!1,{fileName:Y,lineNumber:85,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:59,columnNumber:5},this)}function Z(e){return e?[`bubble`,`panel`,`modal`]:[`bubble`,`modal`]}function Q(e){return Z(e)[1]}function $(e,t,n){let r=Z(t),i=r.indexOf(e)+n;return r[Math.min(r.length-1,Math.max(0,i))]}function Re(){let{t:e}=n(),t=pe(),r=_e(),[i,a]=(0,L.useState)(`bubble`),[s,c]=(0,L.useState)(!1),[u,d]=(0,L.useState)([]),[f,p]=(0,L.useState)(!1),[h,y]=(0,L.useState)(0),[b,x]=(0,L.useState)(null),[S,C]=(0,L.useState)([]),w=o(`sm`,640),D=w&&i===`modal`,k=(0,L.useCallback)(()=>{a(Q(w))},[w]),A=(0,L.useRef)(null),j=(0,L.useRef)(`bubble`);(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=e=>{e.key===`Escape`&&a($(`modal`,w,-1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i,w]),(0,L.useEffect)(()=>{Z(w).includes(i)||a(Q(w))},[i,w]),(0,L.useEffect)(()=>{i===`panel`&&j.current===`modal`&&A.current?.focus(),j.current=i},[i]),(0,L.useEffect)(()=>{(i===`bubble`||D)&&c(!1)},[i,D]),(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[i]);let M=i!==`bubble`;(0,L.useEffect)(()=>{M&&t.loadThreads()},[M,t.loadThreads]);let{convId:N,newConversation:P}=t;(0,L.useEffect)(()=>{M&&N===null&&P()},[M,N,P]);function F(){t.newConversation(),d([]),x(null),C([]),c(!1)}let I=(0,L.useCallback)(async e=>{if(!e.length)return;x(null),C([]),p(!0),y(0);let t=[],n=[],r=null;for(let i of e){if(i.size>Ie){r??=`webchat.uploadTooLarge`;continue}try{y(0);let e=await _(i,y);e?t.push({...e,label:i.name}):(n.push(i),r??=`webchat.uploadFailed`)}catch{n.push(i),r??=`webchat.uploadFailed`}}t.length&&d(e=>[...e,...t]),p(!1),y(0),C(n),r&&x(r)},[]),ne=(0,L.useCallback)(()=>{S.length&&I(S)},[I,S]),R=(0,L.useCallback)((e,n)=>{let i=r(),a=n.length?t.send(e,i,n):t.send(e,i);return a&&(d([]),x(null),C([])),a},[t,r]),z=t.messages.length>0||t.pending!==null,re=t.threads.find(e=>e.convId===t.convId)?.title,B=(0,H.jsxDEV)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-border px-3 py-1.5`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:re||e(`webchat.title`)},void 0,!1,{fileName:Y,lineNumber:298,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`-mr-1 flex shrink-0 items-center gap-0.5`,children:[z&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.newConversation`),title:e(`webchat.newConversation`),onClick:F,children:(0,H.jsxDEV)(g,{size:16},void 0,!1,{fileName:Y,lineNumber:313,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:305,columnNumber:11},this),!D&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.threads`),title:e(`webchat.threads`),"aria-expanded":s,className:s?`bg-muted text-foreground`:``,onClick:()=>c(e=>!e),children:(0,H.jsxDEV)(O,{size:16},void 0,!1,{fileName:Y,lineNumber:330,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:320,columnNumber:11},this),Z(w).includes(`panel`)&&(0,H.jsxDEV)(E,{ref:A,type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(i===`modal`?`webchat.collapse`:`webchat.expand`),title:e(i===`modal`?`webchat.collapse`:`webchat.expand`),onClick:()=>a($(i,w,i===`modal`?-1:1)),children:i===`modal`?(0,H.jsxDEV)(te,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:33},this):(0,H.jsxDEV)(ee,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:59},this)},void 0,!1,{fileName:Y,lineNumber:336,columnNumber:11},this),(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.close`),title:e(`webchat.close`),onClick:()=>a(`bubble`),children:(0,H.jsxDEV)(T,{size:16},void 0,!1,{fileName:Y,lineNumber:356,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:348,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:299,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:297,columnNumber:5},this),V=(0,H.jsxDEV)(Ne,{threads:t.threads,activeId:t.convId,onOpen:e=>{t.open(e),d([]),x(null),C([]),c(!1)},onNew:F,onTogglePrivate:t.togglePrivate,className:D?`w-[220px] shrink-0`:`w-full`},void 0,!1,{fileName:Y,lineNumber:365,columnNumber:5},this),ie=(0,H.jsxDEV)(be,{onNavigate:k,children:(0,H.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[t.error&&(0,H.jsxDEV)(`div`,{className:`px-3 py-2 text-sm text-destructive`,children:e(`webchat.error`,{message:t.error})},void 0,!1,{fileName:Y,lineNumber:387,columnNumber:11},this),(0,H.jsxDEV)(ke,{messages:t.messages,pending:t.pending,pendingReasoning:t.pendingReasoning,trailing:t.messages.length===0?(0,H.jsxDEV)(Fe,{items:t.starters,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:395,columnNumber:15},this):(0,H.jsxDEV)(Fe,{items:t.suggestions,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:397,columnNumber:15},this)},void 0,!1,{fileName:Y,lineNumber:389,columnNumber:9},this),(0,H.jsxDEV)(Me,{streaming:t.pending!==null,attachments:u,uploading:f,uploadProgress:h,uploadError:b,canRetryUpload:S.length>0&&!f,onRetryUpload:ne,onPickFiles:e=>void I(Array.from(e)),onRemoveAttachment:e=>d(t=>t.filter((t,n)=>n!==e)),agents:t.agents,defaultAgentId:t.defaultAgentId,selection:t.selection,onChooseAgent:t.chooseAgent,attachmentsAllowed:t.attachmentsAllowed,onSend:R,onStop:t.stop},void 0,!1,{fileName:Y,lineNumber:401,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:385,columnNumber:7},this)},void 0,!1,{fileName:Y,lineNumber:382,columnNumber:5},this);return i===`bubble`?(0,H.jsxDEV)(`button`,{"aria-label":e(`webchat.open`),onClick:()=>a(Q(w)),className:`fixed bottom-4 right-4 z-40 grid h-14 w-14 place-items-center rounded-full bg-primary text-on-accent ring-1 ring-border2 shadow-lg`,children:(0,H.jsxDEV)(l,{size:24},void 0,!1,{fileName:Y,lineNumber:447,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:425,columnNumber:7},this):i===`panel`?(0,H.jsxDEV)(Le,{onFiles:I,className:`fixed bottom-4 right-4 z-40 flex h-[560px] max-h-[80dvh] w-[380px] max-w-[calc(100vw-2rem)] flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-xl`,children:[B,s?V:ie]},void 0,!0,{fileName:Y,lineNumber:454,columnNumber:7},this):(0,H.jsxDEV)(v,{open:!0,modal:!1,onOpenChange:e=>!e&&a($(`modal`,w,-1)),children:[(0,H.jsxDEV)(`div`,{"data-chat-backdrop":!0,"aria-hidden":`true`,className:`fixed inset-0 z-[45] bg-black/50 backdrop-blur-sm`},void 0,!1,{fileName:Y,lineNumber:476,columnNumber:7},this),(0,H.jsxDEV)(m,{hideClose:!0,className:`h-[85dvh] w-full p-0 md:h-[85dvh] md:w-[80vw] md:max-w-[1040px] md:overflow-y-hidden`,children:(0,H.jsxDEV)(Le,{onFiles:I,className:`h-full`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[B,(0,H.jsxDEV)(`div`,{className:`flex min-h-0 flex-1`,children:[(D||s)&&V,(D||!s)&&ie]},void 0,!0,{fileName:Y,lineNumber:489,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:487,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:486,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:482,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:473,columnNumber:5},this)}export{Re as ChatWidget,Re as default,Z as chatModes,Q as restingMode,$ as stepMode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Cr as i,Ht as a,Jn as o,hr as s,pr as c,wr as l}from"./src-CheiTWox.js";import{l as u}from"./phone-input-8QtHMHO_.js";import{h as d,m as f,y as p}from"./api-QNHQU9to.js";import{n as m}from"./auth-context-CoCE5oPD.js";import{n as h,t as g}from"./plugin-label-CfdhA4_L.js";var _=e(t(),1),v=r(),y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function b(){let{t:e}=n(),{role:t}=m(),[r,b]=(0,_.useState)(null),[S,C]=(0,_.useState)([]),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(`loading`),[O,k]=(0,_.useState)(!0),[A,j]=(0,_.useState)(!1),M=(0,_.useCallback)(async()=>{k(!0),j(!1),D(`loading`);let e=fetch(`/health`).then(e=>D(e.ok?`ok`:`error`)).catch(()=>D(`error`));try{let[e,t,n]=await Promise.all([f(),p(),d()]);b(e),C(t),T(n)}catch{j(!0)}finally{await e,k(!1)}},[]);if((0,_.useEffect)(()=>{t===`admin`&&M()},[M,t]),t!==`admin`)return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(a,{overline:e(`settings.title`),title:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:64,columnNumber:9},this),(0,v.jsxDEV)(i,{children:(0,v.jsxDEV)(`p`,{className:`text-sm text-destructive`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:y,lineNumber:66,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:65,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:63,columnNumber:7},this);let N=S.filter(e=>e.latestVersion&&h(e.latestVersion,e.installedVersion));return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(a,{overline:e(`settings.title`),title:e(`diagnostics.title`),actions:(0,v.jsxDEV)(u,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:O,onClick:()=>void M(),children:[(0,v.jsxDEV)(l,{name:`lucide:refresh-cw`,size:15,className:O?`animate-spin`:void 0},void 0,!1,{fileName:y,lineNumber:88,columnNumber:13},this),e(O?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:y,lineNumber:80,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:76,columnNumber:7},this),(0,v.jsxDEV)(i,{children:[(0,v.jsxDEV)(`p`,{className:`mb-6 text-sm text-muted-foreground`,children:e(`diagnostics.description`)},void 0,!1,{fileName:y,lineNumber:94,columnNumber:9},this),A&&(0,v.jsxDEV)(o,{tone:`danger`,className:`mb-5`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:y,lineNumber:97,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.server`)},void 0,!1,{fileName:y,lineNumber:104,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-foreground`,children:[(0,v.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${E===`ok`?`bg-success`:E===`error`?`bg-destructive`:`bg-muted`}`},void 0,!1,{fileName:y,lineNumber:106,columnNumber:15},this),e(E===`ok`?`diagnostics.healthy`:E===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:y,lineNumber:105,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:103,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:y,lineNumber:117,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.agents.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:120,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:123,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:118,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:116,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:y,lineNumber:127,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.connectors.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:130,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:133,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:102,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:y,lineNumber:139,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-hidden`,children:[(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted-foreground`,children:[(0,v.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:y,lineNumber:142,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:y,lineNumber:143,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:y,lineNumber:144,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:141,columnNumber:13},this),w?.installedVersion&&(0,v.jsxDEV)(x,{name:e(`plugins.runtimeLabel`),installed:w.installedVersion,latest:w.latestVersion},void 0,!1,{fileName:y,lineNumber:147,columnNumber:15},this),S.filter(e=>e.id!==`core`).map(t=>(0,v.jsxDEV)(x,{name:g(e,t),installed:t.installedVersion,latest:t.latestVersion},t.id,!1,{fileName:y,lineNumber:156,columnNumber:17},this)),!w?.installedVersion&&S.length===0&&(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:y,lineNumber:164,columnNumber:15},this),N.length>0&&(0,v.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-primary`,children:e(`diagnostics.outdated`,{count:N.length})},void 0,!1,{fileName:y,lineNumber:167,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:140,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:138,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:y,lineNumber:175,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-x-auto`,children:r?.recentMessages.length?(0,v.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,v.jsxDEV)(`thead`,{className:`border-b border-border text-muted-foreground`,children:(0,v.jsxDEV)(`tr`,{children:[(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:y,lineNumber:181,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:y,lineNumber:182,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:y,lineNumber:183,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:y,lineNumber:184,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:y,lineNumber:185,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:180,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:179,columnNumber:17},this),(0,v.jsxDEV)(`tbody`,{children:r.recentMessages.map(e=>(0,v.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:191,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.connector},void 0,!1,{fileName:y,lineNumber:192,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.role},void 0,!1,{fileName:y,lineNumber:193,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:y,lineNumber:194,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:y,lineNumber:197,columnNumber:23},this)]},e.id,!0,{fileName:y,lineNumber:190,columnNumber:21},this))},void 0,!1,{fileName:y,lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:y,lineNumber:178,columnNumber:15},this):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:y,lineNumber:207,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:176,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:174,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:y,lineNumber:213,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-hidden`,children:r?.recentErrors.length?r.recentErrors.map((e,t)=>(0,v.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,v.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,v.jsxDEV)(s,{variant:`destructive`,children:e.level},void 0,!1,{fileName:y,lineNumber:219,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`font-medium text-foreground`,children:e.source},void 0,!1,{fileName:y,lineNumber:220,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:221,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:218,columnNumber:19},this),(0,v.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-destructive`,children:e.message},void 0,!1,{fileName:y,lineNumber:223,columnNumber:19},this)]},`${e.ts}-${t}`,!0,{fileName:y,lineNumber:217,columnNumber:17},this)):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:y,lineNumber:227,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:214,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:212,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:93,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:75,columnNumber:5},this)}function x({name:e,installed:t,latest:n}){return(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,v.jsxDEV)(`span`,{className:`min-w-0 truncate text-foreground`,children:e},void 0,!1,{fileName:y,lineNumber:239,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:[`v`,t]},void 0,!0,{fileName:y,lineNumber:240,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:n&&h(n,t)?`text-primary`:`text-muted-foreground`,children:n?`v${n}`:`—`},void 0,!1,{fileName:y,lineNumber:241,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:238,columnNumber:5},this)}export{b as DiagnosticsPage};
|