efficient-shell 8.15.0 → 8.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/{Browser-XELHJME5.js → Browser-QBOH7J6X.js} +10 -10
  2. package/dist/{Calculator-NPBOUICN.js → Calculator-KKB7EFVO.js} +22 -22
  3. package/dist/{CurrencyConverter-NTJJAE7V.js → CurrencyConverter-QTFV2RSB.js} +5 -5
  4. package/dist/{Documents-AVAYAW4T.js → Documents-7TUZDRPO.js} +9 -9
  5. package/dist/{Files-KZWWBH6Q.js → Files-4KRJX4CJ.js} +5 -5
  6. package/dist/{Notepad-FJELN7GD.js → Notepad-GBSYEVOZ.js} +10 -10
  7. package/dist/{PomodoroTimer-LBB7U6QS.js → PomodoroTimer-23O2CBIZ.js} +5 -5
  8. package/dist/{Preview-ILPASIEM.js → Preview-WEWO3FSN.js} +22 -22
  9. package/dist/{Spreadsheet-J62PVFXA.js → Spreadsheet-SDDJ3EBT.js} +13 -13
  10. package/dist/{Stock-NBXKAAIF.js → Stock-AQ2SJRU6.js} +3 -3
  11. package/dist/{Weather-M7NGMQFP.js → Weather-UHCDMFZE.js} +14 -14
  12. package/dist/{WorldClock-YQQJXAUG.js → WorldClock-TB3HCUIH.js} +5 -5
  13. package/dist/ai/index.d.ts +57 -2
  14. package/dist/ai/index.js +20 -19
  15. package/dist/ai.css +1 -1
  16. package/dist/apps/index.js +1 -1
  17. package/dist/bin/media-host-check.js +1 -1
  18. package/dist/bin/ui-check.js +1 -1
  19. package/dist/charts/BoxPlotChart.js +1 -1
  20. package/dist/charts/CandlestickChart.js +1 -1
  21. package/dist/charts/CartesianPlot.js +1 -1
  22. package/dist/charts/ChordChart.js +1 -1
  23. package/dist/charts/ColumnChart.js +1 -1
  24. package/dist/charts/HeatmapChart.js +1 -1
  25. package/dist/charts/HistogramChart.js +1 -1
  26. package/dist/charts/RadarChart.js +1 -1
  27. package/dist/charts/RangeChart.js +1 -1
  28. package/dist/charts/SankeyChart.js +1 -1
  29. package/dist/charts/ScatterChart.js +1 -1
  30. package/dist/charts/SunburstChart.js +1 -1
  31. package/dist/charts/TimeSeriesChart.js +1 -1
  32. package/dist/charts/TreemapChart.js +1 -1
  33. package/dist/charts/WaterfallChart.js +1 -1
  34. package/dist/{chunk-ZKVWQY4V.js → chunk-2HLS7AGL.js} +1 -1
  35. package/dist/chunk-3WV3CMSU.js +1 -0
  36. package/dist/{chunk-5PYRVXWN.js → chunk-4MHHPESC.js} +1 -1
  37. package/dist/{chunk-FEIVDR4M.js → chunk-7GU3LUMW.js} +6 -6
  38. package/dist/{chunk-3VCAQ72C.js → chunk-B4LK7WL6.js} +2 -2
  39. package/dist/{chunk-RPAKTBQT.js → chunk-BGVN7HOZ.js} +2 -2
  40. package/dist/{chunk-LATFMUX6.js → chunk-CXDJXNPZ.js} +1 -1
  41. package/dist/{chunk-OFXGSEYD.js → chunk-EDYCBXWD.js} +4 -4
  42. package/dist/{chunk-UCMPHYBP.js → chunk-LPYFS4RV.js} +14 -14
  43. package/dist/{chunk-VQUMEECM.js → chunk-LRM5XTDF.js} +2 -2
  44. package/dist/{chunk-XNIMCECI.js → chunk-MNWYPP3F.js} +1 -1
  45. package/dist/{chunk-FPI7WBMU.js → chunk-PPSIMRJM.js} +4 -4
  46. package/dist/{chunk-3MZTDNAW.js → chunk-QQVLFDX6.js} +4 -4
  47. package/dist/{chunk-VCEARTZR.js → chunk-UWHGJTAL.js} +5 -5
  48. package/dist/{chunk-3WUR24KP.js → chunk-VR5GVM3A.js} +26 -26
  49. package/dist/{chunk-JM2XJJRB.js → chunk-XMGXVMVS.js} +5 -5
  50. package/dist/chunk-YEY6YPTM.js +2 -0
  51. package/dist/index.js +87 -87
  52. package/dist/telemetry/index.js +1 -1
  53. package/dist/templates/DashboardTemplate.js +1 -1
  54. package/dist/ui/index.js +1 -1
  55. package/dist/version.js +1 -1
  56. package/package.json +1 -1
  57. package/dist/chunk-ES4HIX3L.js +0 -2
  58. package/dist/chunk-YHYL2WSG.js +0 -1
@@ -1,4 +1,4 @@
1
- import{fetchCityWeather as e,getCondition as t,AVAILABLE_CITIES as a,toFahrenheit as r}from"./chunk-FBDZGO3V.js";import{loadAppearance as n,WidgetSettingsModal as i}from"./chunk-XNIMCECI.js";import{useWidgetSettings as s}from"./chunk-3WUR24KP.js";import"./chunk-TPDOOCFS.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-LR2X6MKB.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-JF45HC5H.js";import"./chunk-5GHLKEJQ.js";import"./chunk-LT2MMSHH.js";import"./chunk-ARC3R4I2.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import{useShellPrefs as o}from"./chunk-KC3EX26K.js";import"./chunk-7IF3RZF3.js";import"./chunk-GZCAFWWB.js";import"./chunk-UGTRSRIW.js";import"./chunk-QR4RM7PO.js";import"./chunk-BOGBLZKS.js";import"./chunk-CDAJKLGL.js";import"./chunk-QMQVOUIV.js";import"./chunk-FSP63GKK.js";import"./chunk-K7U4RWXJ.js";import"./chunk-ABJ4LWOW.js";import"./chunk-VJPJNCB4.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as l}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-Z3WKHMVB.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-T53TXXOC.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-OVNRVFWS.js";import"./chunk-C3QOHMR6.js";import{useState as c,useEffect as d,useCallback as m}from"react";import{jsx as h,jsxs as p,Fragment as u}from"react/jsx-runtime";var f="weather_city",y="weather_appearance",g={useFahrenheit:!1,showLocalTime:!0,use24Hour:!1};function x(){const e="undefined"!=typeof localStorage?localStorage.getItem(f):null;if(e&&a[e])return e;try{const e=JSON.parse(localStorage.getItem("weather_cities")||"");if(Array.isArray(e)&&e[0]&&a[e[0]])return localStorage.setItem(f,e[0]),e[0]}catch{}return function(){try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone;for(const[t,r]of Object.entries(a))if(r.tz===e)return t}catch{}return"London"}()}var b=r;function w(e,t=!1){try{if(t){const t=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!1}).formatToParts(/* @__PURE__ */new Date),a=parseInt(t.find(e=>"hour"===e.type)?.value||"0"),r=parseInt(t.find(e=>"minute"===e.type)?.value||"0");return`${String(a).padStart(2,"0")}:${String(r).padStart(2,"0")}`}const a=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(/* @__PURE__ */new Date),r=parseInt(a.find(e=>"hour"===e.type)?.value||"12"),n=parseInt(a.find(e=>"minute"===e.type)?.value||"0"),i=a.find(e=>"dayPeriod"===e.type)?.value||"";return`${r}:${String(n).padStart(2,"0")} ${i}`}catch{return""}}function v(){/* @__PURE__ */
1
+ import{fetchCityWeather as e,getCondition as t,AVAILABLE_CITIES as a,toFahrenheit as r}from"./chunk-FBDZGO3V.js";import{loadAppearance as n,WidgetSettingsModal as i}from"./chunk-MNWYPP3F.js";import{useWidgetSettings as s}from"./chunk-VR5GVM3A.js";import"./chunk-TPDOOCFS.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-LR2X6MKB.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-JF45HC5H.js";import"./chunk-5GHLKEJQ.js";import"./chunk-LT2MMSHH.js";import"./chunk-ARC3R4I2.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import{useShellPrefs as o}from"./chunk-KC3EX26K.js";import"./chunk-7IF3RZF3.js";import"./chunk-GZCAFWWB.js";import"./chunk-UGTRSRIW.js";import"./chunk-QR4RM7PO.js";import"./chunk-BOGBLZKS.js";import"./chunk-CDAJKLGL.js";import"./chunk-QMQVOUIV.js";import"./chunk-FSP63GKK.js";import"./chunk-K7U4RWXJ.js";import"./chunk-ABJ4LWOW.js";import"./chunk-VJPJNCB4.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as l}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-Z3WKHMVB.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-T53TXXOC.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-OVNRVFWS.js";import"./chunk-C3QOHMR6.js";import{useState as c,useEffect as d,useCallback as m}from"react";import{jsx as h,jsxs as p,Fragment as u}from"react/jsx-runtime";var f="weather_city",y="weather_appearance",g={useFahrenheit:!1,showLocalTime:!0,use24Hour:!1};function x(){const e="undefined"!=typeof localStorage?localStorage.getItem(f):null;if(e&&a[e])return e;try{const e=JSON.parse(localStorage.getItem("weather_cities")||"");if(Array.isArray(e)&&e[0]&&a[e[0]])return localStorage.setItem(f,e[0]),e[0]}catch{}return function(){try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone;for(const[t,r]of Object.entries(a))if(r.tz===e)return t}catch{}return"London"}()}var b=r;function w(e,t=!1){try{if(t){const t=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!1}).formatToParts(/* @__PURE__ */new Date),a=parseInt(t.find(e=>"hour"===e.type)?.value||"0"),r=parseInt(t.find(e=>"minute"===e.type)?.value||"0");return`${String(a).padStart(2,"0")}:${String(r).padStart(2,"0")}`}const a=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(/* @__PURE__ */new Date),r=parseInt(a.find(e=>"hour"===e.type)?.value||"12"),n=parseInt(a.find(e=>"minute"===e.type)?.value||"0"),i=a.find(e=>"dayPeriod"===e.type)?.value||"";return`${r}:${String(n).padStart(2,"0")} ${i}`}catch{return""}}function v(){/* @__PURE__ */
2
2
  return p("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[
3
3
  /* @__PURE__ */h("div",{className:"absolute -top-5 -right-5 w-24 h-24",style:{animation:"wx-sun-rays 70s linear infinite"},children:/* @__PURE__ */h("svg",{viewBox:"0 0 100 100",className:"w-full h-full",children:Array.from({length:12}).map((e,t)=>/* @__PURE__ */h("rect",{x:49,y:3,width:2,height:14,rx:1,fill:"rgba(255, 232, 130, 0.55)",transform:`rotate(${30*t} 50 50)`},t))})}),
4
4
  /* @__PURE__ */h("div",{className:"absolute top-1 right-1 w-10 h-10 rounded-full",style:{background:"radial-gradient(circle at 35% 35%, #fff8cc 0%, #ffd84a 55%, #ff9e2a 100%)",boxShadow:"0 0 18px 5px rgba(255, 200, 80, 0.55)",animation:"wx-sun-pulse 4.5s ease-in-out infinite"}})]})}function k(){const e=Array.from({length:16}).map((e,t)=>({left:(53*t+11)%95+"%",top:(37*t+9)%78+"%",size:1+13*t%3,delay:.41*t%4+"s",duration:2.5+7*t%5*.6+"s"}));/* @__PURE__ */
@@ -25,36 +25,36 @@ return p("div",{className:"absolute inset-0 overflow-hidden pointer-events-none"
25
25
  /* @__PURE__ */h("div",{className:"absolute inset-0 bg-white",style:{animation:"wx-flash 6s ease-out infinite"}}),
26
26
  /* @__PURE__ */h("div",{className:"absolute inset-y-0 right-1/3 flex items-center justify-center pointer-events-none",style:{animation:"wx-bolt 6s ease-out infinite"},children:/* @__PURE__ */h("svg",{viewBox:"0 0 18 60",className:"h-4/5",style:{filter:"drop-shadow(0 0 6px rgba(255, 240, 150, 0.95)) drop-shadow(0 0 14px rgba(255, 220, 90, 0.7))"},children:/* @__PURE__ */h("path",{d:"M11 0 L2 28 L8 30 L4 60 L16 24 L9 22 Z",fill:"rgba(255, 250, 200, 0.98)",stroke:"rgba(255, 255, 255, 0.9)",strokeWidth:.3})})})]})}function T(){/* @__PURE__ */
27
27
  return h("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:Array.from({length:4}).map((e,t)=>/* @__PURE__ */h("div",{className:"absolute left-0 right-0",style:{top:10+22*t+"%",height:"14px",background:"linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.55) 50%, rgba(255,255,255,0) 100%)",filter:"blur(2px)",animation:`wx-fog-drift ${10+3*t}s ease-in-out ${.7*t}s infinite alternate`}},t))})}function $({code:e,isDay:t}){return 0===e||1===e?/* @__PURE__ */h(t?v:k,{}):2===e?/* @__PURE__ */p(u,{children:[/* @__PURE__ */h(t?v:k,{}),
28
- /* @__PURE__ */h(N,{tone:t?"light":"dark"})]}):3===e?/* @__PURE__ */h(N,{tone:t?"light":"dark"}):45===e||48===e?/* @__PURE__ */h(T,{}):[51,53,61,80,81].includes(e)?/* @__PURE__ */h(j,{}):[55,63,65,82].includes(e)?/* @__PURE__ */h(j,{heavy:!0}):[71,73,75].includes(e)?/* @__PURE__ */h(S,{}):[95,96,99].includes(e)?/* @__PURE__ */h(C,{}):null}function I(){const[r,v]=c(x),[k,N]=c(()=>n(y)),[j,S]=c(null),[C,T]=c(!0),[,I]=c(0);d(()=>{const e=setInterval(()=>I(e=>e+1),6e4);return()=>clearInterval(e)},[]);const[L,F]=c(!1),[W,D]=c(r),[O,A]=c(k),{prefs:H,save:R}=o(),B={...g,...H.weather_prefs??{}},[J,K]=c(B);s(m(()=>{D(r),A({...k}),K({...B}),F(!0)},[r,k,B])),d(()=>{let t=!1;return T(!0),e(r).then(e=>{t||(S(e),T(!1))}),()=>{t=!0}},[r]);const M=e=>B.useFahrenheit?`${b(e)}°F`:`${e}°`;if(C&&!j)/* @__PURE__ */
28
+ /* @__PURE__ */h(N,{tone:t?"light":"dark"})]}):3===e?/* @__PURE__ */h(N,{tone:t?"light":"dark"}):45===e||48===e?/* @__PURE__ */h(T,{}):[51,53,61,80,81].includes(e)?/* @__PURE__ */h(j,{}):[55,63,65,82].includes(e)?/* @__PURE__ */h(j,{heavy:!0}):[71,73,75].includes(e)?/* @__PURE__ */h(S,{}):[95,96,99].includes(e)?/* @__PURE__ */h(C,{}):null}function F(){const[r,v]=c(x),[k,N]=c(()=>n(y)),[j,S]=c(null),[C,T]=c(!0),[,F]=c(0);d(()=>{const e=setInterval(()=>F(e=>e+1),6e4);return()=>clearInterval(e)},[]);const[L,W]=c(!1),[D,I]=c(r),[A,O]=c(k),{prefs:H,save:M}=o(),R={...g,...H.weather_prefs??{}},[B,J]=c(R);s(m(()=>{I(r),O({...k}),J({...R}),W(!0)},[r,k,R])),d(()=>{let t=!1;return T(!0),e(r).then(e=>{t||(S(e),T(!1))}),()=>{t=!0}},[r]);const K=e=>R.useFahrenheit?`${b(e)}°F`:`${e}°`;if(C&&!j)/* @__PURE__ */
29
29
  return h("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-sky-400 to-blue-500 rounded-lg text-white/80 text-xs",style:{minHeight:110},children:/* @__PURE__ */h(l,{size:"sm",padding:"",label:"Loading"})});if(!j)/* @__PURE__ */
30
- return h("div",{className:"flex items-center justify-center h-full bg-slate-700 rounded-lg text-white/80 text-xs",style:{minHeight:110},children:"Couldn't load weather"});const[X,G,V]=t(j.code,j.isDay);/* @__PURE__ */
30
+ return h("div",{className:"flex items-center justify-center h-full bg-slate-700 rounded-lg text-white/80 text-xs",style:{minHeight:110},children:"Couldn't load weather"});const[V,G,P]=t(j.code,j.isDay);/* @__PURE__ */
31
31
  return p(u,{children:[
32
32
  /* @__PURE__ */h("style",{children:"\n@keyframes wx-rain-a { 0% { transform: translate(0,-20px); opacity: 0; } 10% { opacity: 0.95; } 100% { transform: translate(8px,140px); opacity: 0; } }\n@keyframes wx-rain-b { 0% { transform: translate(0,-20px); opacity: 0; } 12% { opacity: 0.85; } 100% { transform: translate(12px,140px); opacity: 0; } }\n@keyframes wx-rain-c { 0% { transform: translate(0,-20px); opacity: 0; } 10% { opacity: 1; } 100% { transform: translate(5px,140px); opacity: 0; } }\n@keyframes wx-snow-a { 0% { transform: translate(0,-12px) rotate(0deg); opacity: 0; } 10% { opacity: 0.9; } 50% { transform: translate(10px,55px) rotate(180deg); } 100% { transform: translate(-4px,140px) rotate(360deg); opacity: 0; } }\n@keyframes wx-snow-b { 0% { transform: translate(0,-12px) rotate(0deg); opacity: 0; } 10% { opacity: 0.85; } 50% { transform: translate(-12px,55px) rotate(-180deg); } 100% { transform: translate(6px,140px) rotate(-360deg); opacity: 0; } }\n@keyframes wx-snow-c { 0% { transform: translate(0,-12px); opacity: 0; } 10% { opacity: 0.7; } 100% { transform: translate(2px,140px); opacity: 0; } }\n@keyframes wx-drift-cloud { 0% { transform: translateX(-40%); } 100% { transform: translateX(140%); } }\n@keyframes wx-twinkle { 0%, 100% { opacity: 0.25; transform: scale(1); } 50% { opacity: 1; transform: scale(1.6); } }\n@keyframes wx-flash { 0%, 86%, 100% { opacity: 0; } 87% { opacity: 0.95; } 88% { opacity: 0.15; } 89% { opacity: 0.85; } 90% { opacity: 0; } }\n@keyframes wx-bolt { 0%, 86%, 90%, 100% { opacity: 0; } 87% { opacity: 1; } 89% { opacity: 0.85; } }\n@keyframes wx-sun-pulse { 0%, 100% { transform: scale(1); opacity: 0.65; } 50% { transform: scale(1.12); opacity: 0.95; } }\n@keyframes wx-sun-rays { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n@keyframes wx-fog-drift { 0% { transform: translateX(-25%); opacity: 0.3; } 50% { opacity: 0.65; } 100% { transform: translateX(25%); opacity: 0.3; } }\n@keyframes wx-shooting-star { 0%, 95% { opacity: 0; transform: translate(0,0) scale(0); } 96% { opacity: 1; transform: translate(0,0) scale(1); } 100% { opacity: 0; transform: translate(40px,30px) scale(1); } }\n"}),
33
- /* @__PURE__ */h("div",{className:"rounded-lg overflow-hidden",style:{backgroundColor:`rgba(15, 23, 42, ${k.activeOpacity/100})`,backdropFilter:k.activeBlur>0?`blur(${k.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:`relative rounded-lg overflow-hidden text-white bg-gradient-to-br ${V}`,style:{height:110},children:[
33
+ /* @__PURE__ */h("div",{className:"rounded-lg overflow-hidden",style:{backgroundColor:`rgba(15, 23, 42, ${k.activeOpacity/100})`,backdropFilter:k.activeBlur>0?`blur(${k.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:`relative rounded-lg overflow-hidden text-white bg-gradient-to-br ${P}`,style:{height:110},children:[
34
34
  /* @__PURE__ */h($,{code:j.code,isDay:j.isDay}),
35
35
  /* @__PURE__ */p("div",{className:"relative z-10 px-3 py-3 flex flex-col h-full justify-between",children:[
36
36
  /* @__PURE__ */p("div",{className:"flex items-start justify-between gap-2",children:[
37
37
  /* @__PURE__ */p("div",{className:"min-w-0 flex-1",children:[
38
- /* @__PURE__ */h("div",{className:"text-base font-semibold leading-tight truncate drop-shadow-sm",children:j.city}),B.showLocalTime&&/* @__PURE__ */h("div",{className:"text-2xs opacity-90 leading-tight tabular-nums drop-shadow-sm",children:w(j.timezone,B.use24Hour)})]}),
39
- /* @__PURE__ */h("div",{className:"text-3xl font-extralight leading-none tracking-tight tabular-nums shrink-0 drop-shadow-sm",children:M(j.temp)})]}),
38
+ /* @__PURE__ */h("div",{className:"text-base font-semibold leading-tight truncate drop-shadow-sm",children:j.city}),R.showLocalTime&&/* @__PURE__ */h("div",{className:"text-2xs opacity-90 leading-tight tabular-nums drop-shadow-sm",children:w(j.timezone,R.use24Hour)})]}),
39
+ /* @__PURE__ */h("div",{className:"text-3xl font-extralight leading-none tracking-tight tabular-nums shrink-0 drop-shadow-sm",children:K(j.temp)})]}),
40
40
  /* @__PURE__ */p("div",{className:"flex items-end justify-between gap-2",children:[
41
41
  /* @__PURE__ */p("div",{className:"flex items-center gap-2 min-w-0",children:[
42
42
  /* @__PURE__ */h("span",{className:"text-lg leading-none drop-shadow-sm",children:G}),
43
- /* @__PURE__ */h("span",{className:"text-2xs font-medium drop-shadow-sm truncate",children:X})]}),
44
- /* @__PURE__ */p("span",{className:"text-2xs opacity-90 tabular-nums drop-shadow-sm shrink-0",children:["H:",M(j.high)," L:",M(j.low)]})]})]})]})}),
45
- /* @__PURE__ */p(i,{open:L,onClose:()=>F(!1),title:"Weather Settings",appearance:O,onAppearanceChange:A,onSave:()=>{v(W),N(O),R({weather_prefs:J}),localStorage.setItem(f,W),localStorage.setItem(y,JSON.stringify(O)),F(!1)},children:[
43
+ /* @__PURE__ */h("span",{className:"text-2xs font-medium drop-shadow-sm truncate",children:V})]}),
44
+ /* @__PURE__ */p("span",{className:"text-2xs opacity-90 tabular-nums drop-shadow-sm shrink-0",children:["H:",K(j.high)," L:",K(j.low)]})]})]})]})}),
45
+ /* @__PURE__ */p(i,{open:L,onClose:()=>W(!1),title:"Weather Settings",appearance:A,onAppearanceChange:O,onSave:()=>{v(D),N(A),M({weather_prefs:B}),localStorage.setItem(f,D),localStorage.setItem(y,JSON.stringify(A)),W(!1)},children:[
46
46
  /* @__PURE__ */h("div",{className:"space-y-3",children:/* @__PURE__ */p("div",{children:[
47
47
  /* @__PURE__ */h("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"Display"}),
48
48
  /* @__PURE__ */p("div",{className:"flex items-center gap-3 mb-2",children:[
49
49
  /* @__PURE__ */h("span",{className:"text-sm text-gray-600 w-24",children:"Temperature"}),
50
- /* @__PURE__ */h("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */h("button",{onClick:()=>K(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(J.useFahrenheit===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
50
+ /* @__PURE__ */h("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */h("button",{onClick:()=>J(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(B.useFahrenheit===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
51
51
  /* @__PURE__ */p("div",{className:"flex items-center gap-3 mb-2",children:[
52
52
  /* @__PURE__ */h("span",{className:"text-sm text-gray-600 w-24",children:"Time Format"}),
53
- /* @__PURE__ */h("div",{className:"flex gap-1",children:[{key:!1,label:"AM/PM"},{key:!0,label:"24H"}].map(e=>/* @__PURE__ */h("button",{onClick:()=>K(t=>({...t,use24Hour:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(J.use24Hour===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
53
+ /* @__PURE__ */h("div",{className:"flex gap-1",children:[{key:!1,label:"AM/PM"},{key:!0,label:"24H"}].map(e=>/* @__PURE__ */h("button",{onClick:()=>J(t=>({...t,use24Hour:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(B.use24Hour===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
54
54
  /* @__PURE__ */p("label",{className:"flex items-center gap-2 cursor-pointer",children:[
55
- /* @__PURE__ */h("input",{type:"checkbox",checked:J.showLocalTime,onChange:e=>K(t=>({...t,showLocalTime:e.target.checked})),className:"rounded border-gray-300 text-blue-600 h-3.5 w-3.5"}),
55
+ /* @__PURE__ */h("input",{type:"checkbox",checked:B.showLocalTime,onChange:e=>J(t=>({...t,showLocalTime:e.target.checked})),className:"rounded border-gray-300 text-blue-600 h-3.5 w-3.5"}),
56
56
  /* @__PURE__ */h("span",{className:"text-sm text-gray-600",children:"Show local time"})]})]})}),
57
57
  /* @__PURE__ */p("div",{children:[
58
58
  /* @__PURE__ */h("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"City"}),
59
- /* @__PURE__ */h("select",{value:W,onChange:e=>D(e.target.value),className:"w-full bg-gray-50 border border-gray-200 rounded px-2 h-8 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500",children:Object.keys(a).map(e=>/* @__PURE__ */h("option",{value:e,children:e},e))}),
60
- /* @__PURE__ */h("p",{className:"mt-1 text-2xs text-gray-400",children:"Auto-detected from your timezone; change if needed."})]})]})]})}export{I as default};
59
+ /* @__PURE__ */h("select",{value:D,onChange:e=>I(e.target.value),className:"w-full bg-gray-50 border border-gray-200 rounded px-2 h-8 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500",children:Object.keys(a).map(e=>/* @__PURE__ */h("option",{value:e,children:e},e))}),
60
+ /* @__PURE__ */h("p",{className:"mt-1 text-2xs text-gray-400",children:"Auto-detected from your timezone; change if needed."})]})]})]})}export{F as default};
@@ -1,6 +1,6 @@
1
- import{AVAILABLE_CITIES as e,fetchCityWeather as t,getCondition as r,toFahrenheit as n}from"./chunk-FBDZGO3V.js";import{loadAppearance as a,WidgetSettingsModal as s}from"./chunk-XNIMCECI.js";import{useWidgetSettings as i}from"./chunk-3WUR24KP.js";import"./chunk-TPDOOCFS.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-LR2X6MKB.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-JF45HC5H.js";import"./chunk-5GHLKEJQ.js";import"./chunk-LT2MMSHH.js";import"./chunk-ARC3R4I2.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import{useShellPrefs as c}from"./chunk-KC3EX26K.js";import"./chunk-7IF3RZF3.js";import"./chunk-GZCAFWWB.js";import"./chunk-UGTRSRIW.js";import"./chunk-QR4RM7PO.js";import"./chunk-BOGBLZKS.js";import"./chunk-CDAJKLGL.js";import"./chunk-QMQVOUIV.js";import"./chunk-FSP63GKK.js";import"./chunk-K7U4RWXJ.js";import"./chunk-ABJ4LWOW.js";import"./chunk-VJPJNCB4.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as o}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-Z3WKHMVB.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-T53TXXOC.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-OVNRVFWS.js";import"./chunk-C3QOHMR6.js";import{useState as l,useEffect as m,useCallback as h}from"react";import{jsxs as p,Fragment as u,jsx as d}from"react/jsx-runtime";var k="world_clock_appearance",g=["London","Shanghai","New York"];function x(){const{prefs:x,save:y}=c(),[b,j]=l(()=>a(k)),[f,N]=l(!1),[v,w]=l([]),[C,F]=l(b),W={useFahrenheit:!!x.weather_prefs?.useFahrenheit},[R,K]=l(W),[O,J]=l(()=>/* @__PURE__ */new Date);m(()=>{const e=setInterval(()=>J(/* @__PURE__ */new Date),3e4);return()=>clearInterval(e)},[]);const T=Object.fromEntries(Object.entries(e).map(([e,t])=>[t.tz,e])),D=x.world_clocks,S=(()=>{if(!Array.isArray(D)||0===D.length)return g;const t=[];for(const r of D){const n=e[r]?r:T[r];n&&!t.includes(n)&&t.push(n)}return t.length?t:g})(),[L,M]=l({}),[B,U]=l(!0);m(()=>{let e=!1;return U(!0),(async()=>{const r={};await Promise.all(S.map(async e=>{const n=await t(e);n&&(r[e]=n)})),e||(M(r),U(!1))})(),()=>{e=!0}},[S.join(",")]),i(h(()=>{w([...S]),F({...b}),K({...W}),N(!0)},[S.join(","),b,W.useFahrenheit]));const V=e=>W.useFahrenheit?`${n(e)}°`:`${e}°`;/* @__PURE__ */
1
+ import{AVAILABLE_CITIES as e,fetchCityWeather as t,getCondition as r,toFahrenheit as n}from"./chunk-FBDZGO3V.js";import{loadAppearance as a,WidgetSettingsModal as s}from"./chunk-MNWYPP3F.js";import{useWidgetSettings as i}from"./chunk-VR5GVM3A.js";import"./chunk-TPDOOCFS.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-LR2X6MKB.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-JF45HC5H.js";import"./chunk-5GHLKEJQ.js";import"./chunk-LT2MMSHH.js";import"./chunk-ARC3R4I2.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import{useShellPrefs as c}from"./chunk-KC3EX26K.js";import"./chunk-7IF3RZF3.js";import"./chunk-GZCAFWWB.js";import"./chunk-UGTRSRIW.js";import"./chunk-QR4RM7PO.js";import"./chunk-BOGBLZKS.js";import"./chunk-CDAJKLGL.js";import"./chunk-QMQVOUIV.js";import"./chunk-FSP63GKK.js";import"./chunk-K7U4RWXJ.js";import"./chunk-ABJ4LWOW.js";import"./chunk-VJPJNCB4.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as o}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-Z3WKHMVB.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-T53TXXOC.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-OVNRVFWS.js";import"./chunk-C3QOHMR6.js";import{useState as l,useEffect as m,useCallback as h}from"react";import{jsxs as p,Fragment as u,jsx as d}from"react/jsx-runtime";var k="world_clock_appearance",g=["London","Shanghai","New York"];function x(){const{prefs:x,save:y}=c(),[b,j]=l(()=>a(k)),[f,N]=l(!1),[v,w]=l([]),[C,F]=l(b),W={useFahrenheit:!!x.weather_prefs?.useFahrenheit},[R,O]=l(W),[J,K]=l(()=>/* @__PURE__ */new Date);m(()=>{const e=setInterval(()=>K(/* @__PURE__ */new Date),3e4);return()=>clearInterval(e)},[]);const T=Object.fromEntries(Object.entries(e).map(([e,t])=>[t.tz,e])),D=x.world_clocks,M=(()=>{if(!Array.isArray(D)||0===D.length)return g;const t=[];for(const r of D){const n=e[r]?r:T[r];n&&!t.includes(n)&&t.push(n)}return t.length?t:g})(),[S,V]=l({}),[L,B]=l(!0);m(()=>{let e=!1;return B(!0),(async()=>{const r={};await Promise.all(M.map(async e=>{const n=await t(e);n&&(r[e]=n)})),e||(V(r),B(!1))})(),()=>{e=!0}},[M.join(",")]),i(h(()=>{w([...M]),F({...b}),O({...W}),N(!0)},[M.join(","),b,W.useFahrenheit]));const G=e=>W.useFahrenheit?`${n(e)}°`:`${e}°`;/* @__PURE__ */
2
2
  return p(u,{children:[
3
- /* @__PURE__ */d("div",{style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${b.activeOpacity/100})`,backdropFilter:b.activeBlur>0?`blur(${b.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:"divide-y divide-gray-200",children:[B&&S.every(e=>!L[e])&&/* @__PURE__ */d(o,{size:"sm",padding:"py-6",label:"Loading"}),S.map(t=>{const n=L[t],a=e[t]?.tz??"UTC",{time:s,ampm:i}=function(e,t){try{const r=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(t),n=r.find(e=>"hour"===e.type)?.value||"12";return{time:`${n}:${r.find(e=>"minute"===e.type)?.value||"00"}`,ampm:(r.find(e=>"dayPeriod"===e.type)?.value||"").toUpperCase()}}catch{return{time:"",ampm:""}}}(a,O);if(!n)/* @__PURE__ */
3
+ /* @__PURE__ */d("div",{style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${b.activeOpacity/100})`,backdropFilter:b.activeBlur>0?`blur(${b.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:"divide-y divide-gray-200",children:[L&&M.every(e=>!S[e])&&/* @__PURE__ */d(o,{size:"sm",padding:"py-6",label:"Loading"}),M.map(t=>{const n=S[t],a=e[t]?.tz??"UTC",{time:s,ampm:i}=function(e,t){try{const r=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(t),n=r.find(e=>"hour"===e.type)?.value||"12";return{time:`${n}:${r.find(e=>"minute"===e.type)?.value||"00"}`,ampm:(r.find(e=>"dayPeriod"===e.type)?.value||"").toUpperCase()}}catch{return{time:"",ampm:""}}}(a,J);if(!n)/* @__PURE__ */
4
4
  return p("div",{className:"px-4 py-3",children:[
5
5
  /* @__PURE__ */p("div",{className:"flex items-baseline justify-between gap-2",children:[
6
6
  /* @__PURE__ */d("span",{className:"text-base font-semibold tracking-tight text-gray-900 truncate",children:t}),
@@ -10,7 +10,7 @@ return p("div",{className:"px-4 py-3",children:[
10
10
  return p("div",{className:"px-4 py-3",children:[
11
11
  /* @__PURE__ */p("div",{className:"flex items-baseline justify-between gap-2",children:[
12
12
  /* @__PURE__ */d("span",{className:"text-base font-semibold tracking-tight text-gray-900 truncate",children:t}),
13
- /* @__PURE__ */d("span",{className:"text-2xl font-extralight leading-none tabular-nums tracking-tight text-gray-900 shrink-0",children:V(n.temp)})]}),
13
+ /* @__PURE__ */d("span",{className:"text-2xl font-extralight leading-none tabular-nums tracking-tight text-gray-900 shrink-0",children:G(n.temp)})]}),
14
14
  /* @__PURE__ */p("div",{className:"flex items-center justify-between gap-2 mt-2 text-2xs",children:[
15
15
  /* @__PURE__ */p("div",{className:"flex items-center gap-2 min-w-0 text-gray-500",children:[
16
16
  /* @__PURE__ */d("span",{className:"text-base leading-none shrink-0",children:l}),
@@ -18,13 +18,13 @@ return p("div",{className:"px-4 py-3",children:[
18
18
  /* @__PURE__ */d("span",{className:"text-3xs font-medium ml-0.5 opacity-70",children:i})]}),
19
19
  /* @__PURE__ */d("span",{className:"text-gray-300 shrink-0",children:"·"}),
20
20
  /* @__PURE__ */d("span",{className:"truncate",children:c})]}),
21
- /* @__PURE__ */p("span",{className:"tabular-nums text-gray-500 shrink-0",children:["H:",V(n.high)," L:",V(n.low)]})]})]},t)})]})}),
21
+ /* @__PURE__ */p("span",{className:"tabular-nums text-gray-500 shrink-0",children:["H:",G(n.high)," L:",G(n.low)]})]})]},t)})]})}),
22
22
  /* @__PURE__ */p(s,{open:f,onClose:()=>N(!1),title:"World Clock Settings",appearance:C,onAppearanceChange:F,onSave:()=>{0!==v.length&&(y({world_clocks:v,weather_prefs:{...x.weather_prefs??{},useFahrenheit:R.useFahrenheit}}),j(C),localStorage.setItem(k,JSON.stringify(C)),N(!1))},children:[
23
23
  /* @__PURE__ */p("div",{children:[
24
24
  /* @__PURE__ */d("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"Display"}),
25
25
  /* @__PURE__ */p("div",{className:"flex items-center gap-3 mb-2",children:[
26
26
  /* @__PURE__ */d("span",{className:"text-sm text-gray-600 w-24",children:"Temperature"}),
27
- /* @__PURE__ */d("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */d("button",{onClick:()=>K(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(R.useFahrenheit===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
27
+ /* @__PURE__ */d("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */d("button",{onClick:()=>O(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(R.useFahrenheit===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
28
28
  /* @__PURE__ */d("p",{className:"text-2xs text-gray-400 mt-1",children:"Shared with the Weather widget."})]}),
29
29
  /* @__PURE__ */p("div",{children:[
30
30
  /* @__PURE__ */d("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"Cities"}),
@@ -15,8 +15,18 @@ interface ConversationDataPart {
15
15
  /** Who wrote a restored message. `staff` is a teammate who took the thread over;
16
16
  * `system` is a notice the server wrote. Streamed messages carry no source. */
17
17
  type MessageSource = 'user' | 'assistant' | 'staff' | 'system';
18
+ /** What one turn cost, sent on the stream's `finish`. `generation_ms` is the
19
+ * model's writing time only (no wait for the first token, no tool calls), so
20
+ * `output_tokens / generation_ms` is its writing speed. */
21
+ interface AssistantTurnUsage {
22
+ input_tokens: number;
23
+ output_tokens: number;
24
+ generation_ms: number;
25
+ }
18
26
  interface AssistantMessageMetadata {
19
27
  source?: MessageSource;
28
+ /** Set on a reply streamed in this window; a restored thread has none. */
29
+ usage?: AssistantTurnUsage;
20
30
  }
21
31
  /** A step of a server-run plan. `status` is the server's record of what ran. */
22
32
  interface PlanStepData {
@@ -103,6 +113,14 @@ interface AssistantChatLabels {
103
113
  /** The plan approval card's heading; "{count}" is the number of steps. */
104
114
  planApprovalHeading: string;
105
115
  approvePlan: string;
116
+ /** Under a finished reply: "{tokens}", "{seconds}" and "{rate}" are filled in. */
117
+ replyStats: string;
118
+ /** Under a finished reply too short to time: "{tokens}" is filled in. */
119
+ replyTokens: string;
120
+ /** Under a reply being written, before there is a rate to show. */
121
+ streaming: string;
122
+ /** Under a reply being written: "{rate}" is an estimate, filled in. */
123
+ streamingRate: string;
106
124
  }
107
125
  type AssistantChatVariant = 'panel' | 'window' | 'bubble';
108
126
  interface AssistantChatProps {
@@ -134,6 +152,15 @@ interface AssistantChatProps {
134
152
  /** Show the model's reasoning as a collapsed step in the chain. Only `window`
135
153
  * (staff) ever honours it; `panel` and `bubble` never show reasoning. */
136
154
  showReasoning?: boolean;
155
+ /** Show tokens and tokens per second under each reply. Like
156
+ * `showReasoning`, only `window` (staff) ever honours it. */
157
+ showUsage?: boolean;
158
+ /** Without the header, "New chat" sits beside the composer. A host that
159
+ * offers its own (a session list) turns it off. Default: shown. */
160
+ showNewChat?: boolean;
161
+ /** Told when a turn starts and when it ends, so a host keeping several
162
+ * chats open can show which are still being written. */
163
+ onBusyChange?: (busy: boolean) => void;
137
164
  /** Bubble only: start open. */
138
165
  defaultOpen?: boolean;
139
166
  /** Bubble only: told when the panel opens or closes. */
@@ -159,13 +186,15 @@ interface MessageProps {
159
186
  labels: AssistantChatLabels;
160
187
  showReasoning: boolean;
161
188
  showToolOutput: boolean;
189
+ /** Tokens and tokens per second under the reply (staff only). */
190
+ showUsage?: boolean;
162
191
  /** This message is the one being written right now. */
163
192
  live: boolean;
164
193
  onApprove: (approvalId: string, approved: boolean) => void;
165
194
  /** Plans by approval id, for a plan's approval card. */
166
195
  plans?: Map<string, PlanDataPart>;
167
196
  }
168
- declare function Message({ message, toolLabels, labels, showReasoning, showToolOutput, live, onApprove, plans }: MessageProps): react_jsx_runtime.JSX.Element | null;
197
+ declare function Message({ message, toolLabels, labels, showReasoning, showToolOutput, showUsage, live, onApprove, plans }: MessageProps): react_jsx_runtime.JSX.Element | null;
169
198
 
170
199
  interface ApprovalDecision {
171
200
  approval_id: string;
@@ -268,4 +297,30 @@ declare function PlanApprovalCard({ approvalId, plan, input, labels, toolLabels,
268
297
  /** The chat's own words, English. Hosts translate through the `labels` prop. */
269
298
  declare const DEFAULT_ASSISTANT_CHAT_LABELS: AssistantChatLabels;
270
299
 
271
- export { ApprovalCard, type ApprovalDecision, AssistantChat, type AssistantChatLabels, type AssistantChatProps, type AssistantChatRequestBody, type AssistantChatVariant, type AssistantConversation, Message as AssistantMessage, type AssistantMessageMetadata, type AssistantUIMessage, type ConversationHistory, DEFAULT_ASSISTANT_CHAT_LABELS, type MessageSource, PlanApprovalCard, PlanChecklist, type PlanDataPart, type PlanStatus, type PlanStepData, type ToolLabel, type ToolLabelSpec, type ToolLabels, ToolStep, buildRequestBody, messagesFromHistory, pinnedPlan, plansOf };
300
+ /**
301
+ * Tokens per second for a reply, as pure functions.
302
+ *
303
+ * A finished reply has the server's counts (`AssistantTurnUsage`, on the
304
+ * stream's `finish`). While it is still being written there are none yet, so
305
+ * the rate is an ESTIMATE from the text so far, at four characters a token,
306
+ * the usual rule of thumb for English, over the time since the reply began
307
+ * (so it includes the wait for the first token, and reads a little low until
308
+ * the exact figure replaces it). The server releases text a sentence at a
309
+ * time, so it arrives in bursts; the estimate waits a second before it says
310
+ * anything.
311
+ */
312
+
313
+ declare function tokensPerSecond(tokens: number, ms: number): number | null;
314
+ declare function estimateTokens(text: string): number;
315
+ interface StatsLabels {
316
+ replyStats: string;
317
+ replyTokens: string;
318
+ streaming: string;
319
+ streamingRate: string;
320
+ }
321
+ /** The line under a finished reply. */
322
+ declare function finishedStats(usage: AssistantTurnUsage, labels: StatsLabels): string;
323
+ /** The line under a reply being written: `elapsedMs` since the reply began. */
324
+ declare function liveStats(text: string, elapsedMs: number, labels: StatsLabels): string;
325
+
326
+ export { ApprovalCard, type ApprovalDecision, AssistantChat, type AssistantChatLabels, type AssistantChatProps, type AssistantChatRequestBody, type AssistantChatVariant, type AssistantConversation, Message as AssistantMessage, type AssistantMessageMetadata, type AssistantTurnUsage, type AssistantUIMessage, type ConversationHistory, DEFAULT_ASSISTANT_CHAT_LABELS, type MessageSource, PlanApprovalCard, PlanChecklist, type PlanDataPart, type PlanStatus, type PlanStepData, type ToolLabel, type ToolLabelSpec, type ToolLabels, ToolStep, buildRequestBody, estimateTokens, finishedStats, liveStats, messagesFromHistory, pinnedPlan, plansOf, tokensPerSecond };
package/dist/ai/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import{StepChain as e,StepChainItem as t}from"../chunk-ZEDYXP2J.js";import{Markdown as n}from"../chunk-76YDO3KA.js";import{Banner as r}from"../chunk-UWNL4FO2.js";import{Textarea_default as a}from"../chunk-AWY3F6PV.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{IconButton_default as o}from"../chunk-JHDWTYZ4.js";import"../chunk-JFSYWEHD.js";import{Button_default as s}from"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import{Icon as l}from"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import{SpinnerRing as i}from"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{useState as c,useId as d,useRef as p,useEffect as u,useCallback as m,useMemo as h}from"react";import{jsx as g,jsxs as f}from"react/jsx-runtime";import{isToolUIPart as v,getToolName as b,DefaultChatTransport as y,lastAssistantMessageIsCompleteWithApprovalResponses as x}from"ai";import{useChat as w}from"@ai-sdk/react";function N({labels:e,placeholder:t,busy:n,focusWhen:r,onSend:i,onStop:d,onNewChat:m}){const[h,v]=c(""),b=p(null);u(()=>{r&&b.current?.focus()},[r]);const y=()=>{!n&&h.trim()&&(i(h),v(""))};/* @__PURE__ */
2
+ import{StepChain as e,StepChainItem as t}from"../chunk-ZEDYXP2J.js";import{Markdown as n}from"../chunk-76YDO3KA.js";import{Banner as r}from"../chunk-UWNL4FO2.js";import{Textarea_default as a}from"../chunk-AWY3F6PV.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{IconButton_default as o}from"../chunk-JHDWTYZ4.js";import"../chunk-JFSYWEHD.js";import{Button_default as s}from"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import{Icon as l}from"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import{SpinnerRing as i}from"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{useRef as c,useState as p,useEffect as d,useId as u,useCallback as m,useMemo as h}from"react";import{jsx as g,jsxs as f}from"react/jsx-runtime";import{isToolUIPart as v,getToolName as b,DefaultChatTransport as y,lastAssistantMessageIsCompleteWithApprovalResponses as x}from"ai";import{useChat as w}from"@ai-sdk/react";function k({labels:e,placeholder:t,busy:n,focusWhen:r,onSend:i,onStop:u,onNewChat:m}){const[h,v]=p(""),b=c(null);d(()=>{r&&b.current?.focus()},[r]);const y=()=>{!n&&h.trim()&&(i(h),v(""))};/* @__PURE__ */
3
3
  return f("form",{className:"flex items-end gap-2 border-t border-gray-200 p-3",onSubmit:e=>{e.preventDefault(),y()},children:[m&&/* @__PURE__ */g(o,{type:"button",variant:"ghost","aria-label":e.newChat,title:e.newChat,onClick:m,children:/* @__PURE__ */g(l,{name:"add"})}),
4
- /* @__PURE__ */g("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */g(a,{ref:b,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:h,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),y())},className:"max-h-32"})}),/* @__PURE__ */g(s,n?{type:"button",variant:"secondary",onClick:d,children:e.stop}:{type:"submit",disabled:!h.trim(),children:e.send})]})}function k(e){if(!v(e))return null;const t=e;return{toolName:b(e),toolCallId:t.toolCallId,state:t.state,input:t.input,output:t.output,errorText:t.errorText,approvalId:t.approval?.id,approved:t.approval?.approved}}function C(e){return e.parts.map(e=>"text"===e.type?e.text:"").join("")}function j(e,t){const n=e[e.length-1];if(!n)throw new Error("assistant chat: no message to send");if("user"===n.role){const e=C(n).trim();if(!e)throw new Error("assistant chat: empty message");return{conversation_id:t,text:e,approvals:[]}}const r=function(e){const t=[];for(const n of e.parts){if(!v(n))continue;const e=n;if("approval-responded"!==e.state||!e.approval||"boolean"!=typeof e.approval.approved)continue;const r={approval_id:e.approval.id,approved:e.approval.approved};e.approval.reason&&(r.reason=e.approval.reason),t.push(r)}return t}(n);if(0===r.length)throw new Error("assistant chat: no approval decision to send");return{conversation_id:t,text:null,approvals:r}}var A=/* @__PURE__ */new Set(["proposed","approved","running"]);function $(e){return A.has(e.status)}function S(e){const t=[];for(const n of e.parts)"data-plan"===n.type&&t.push(n.data);return t}function T(e){const t=/* @__PURE__ */new Map;for(const n of e)for(const e of S(n))t.delete(e.id),t.set(e.id,e);return t}function _(e){const t=[...T(e).values()],n=t[t.length-1];if(!n)return null;if($(n))return n;const r=e[e.length-1];return r&&"assistant"===r.role&&S(r).some(e=>e.id===n.id)?n:null}function O(e){const t=e.messages.filter(e=>e.text).map(e=>({id:e.id,role:e.role,parts:[{type:"text",text:e.text}],...e.source&&e.source!==e.role?{metadata:{source:e.source}}:{}})),n=(e.plans??[]).filter($);return(e.pending_approvals.length>0||n.length>0)&&t.push({id:`pending-approvals-${e.id}`,role:"assistant",parts:[...n.map(e=>({type:"data-plan",id:e.id,data:e})),...e.pending_approvals.map(e=>({type:`tool-${e.tool_name}`,toolCallId:e.tool_call_id??e.approval_id,state:"approval-requested",input:e.input,approval:{id:e.approval_id}}))]}),t}function D(e,t){const n=e?.message?.trim();if(!n)return t;if(n.startsWith("{")){try{const e=JSON.parse(n);for(const t of["detail","errorText","message","title","error"]){const n=e[t];if("string"==typeof n&&n.trim())return n.trim()}}catch{return t}return t}return n.startsWith("<")||n.length>400?t:n}function I(e){const t=e.replace(/^tool-/,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_\-.]+/g," ").trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):e}var J={propose_plan:{label:"Plan the changes",running:"Planning the changes",done:"Planned the changes"}};function W(e,t){const n=t?.[e]??J[e];return"string"==typeof n?{label:n}:n??{label:I(e)}}function L(e,t){return W(e,t).label}function E(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function P(e,t,n){const r=W(e,n).describe;if(!r)return"";try{return r(E(t))?.trim()??""}catch{return""}}function R(e,t){return null==e?"":"boolean"==typeof e?e?"Yes":"No":"object"!=typeof e?String(e):Array.isArray(e)?e.map(e=>R(e,t+1)).filter(Boolean).join(", "):t>=3?"…":Object.entries(e).map(([e,n])=>{const r=R(n,t+1);return r?`${I(e)}: ${r}`:""}).filter(Boolean).join("; ")}function H(e){const t=E(e),n=[];for(const[e,r]of Object.entries(t)){const t=R(r,0);t&&n.push({label:I(e),value:t})}return 0===n.length&&null!=e&&"object"!=typeof e&&n.push({label:"Value",value:R(e,0)}),n}var z={proposed:"planProposed",approved:"planApproved",running:"planRunning",completed:"planCompleted",failed:"planFailed",denied:"planDenied",expired:"planExpired"},M={pending:"pending",running:"active",done:"complete",failed:"failed",skipped:"skipped"};function F(e,t){const n=P(e.tool_name,e.input,t);return`${L(e.tool_name,t)}${n?` ${n}`:""}`}function B(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}function K(e,t){const n=e.steps.filter(e=>"done"===e.status).length;return`${B(t.planSummary,{done:n,total:e.steps.length})} · ${t[z[e.status]]}`}function U({plan:n,labels:r}){/* @__PURE__ */
5
- return g("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */g(e,{summary:K(n,r),busy:$(n),label:r.plan,children:n.steps.map(e=>/* @__PURE__ */g(t,{label:e.title,status:M[e.status],description:"done"!==e.status&&e.result_summary?e.result_summary:void 0},e.id))})})}function V({approvalId:e,plan:t,input:n,labels:r,toolLabels:a,onApprove:o}){const l=function(e,t){if(e)return e.steps.map(e=>({key:e.id,title:e.title,tool_name:e.tool_name,input:e.input}));const n=t?.steps;return Array.isArray(n)?n.map((e,t)=>{const n=e??{};return{key:String(t),title:"string"==typeof n.title?n.title:"",tool_name:"string"==typeof n.tool?n.tool:"",input:n.args}}):[]}(t,n),i=B(r.planApprovalHeading,{count:l.length});/* @__PURE__ */
4
+ /* @__PURE__ */g("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */g(a,{ref:b,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:h,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),y())},className:"max-h-32"})}),/* @__PURE__ */g(s,n?{type:"button",variant:"secondary",onClick:u,children:e.stop}:{type:"submit",disabled:!h.trim(),children:e.send})]})}function N(e){if(!v(e))return null;const t=e;return{toolName:b(e),toolCallId:t.toolCallId,state:t.state,input:t.input,output:t.output,errorText:t.errorText,approvalId:t.approval?.id,approved:t.approval?.approved}}function C(e){return e.parts.map(e=>"text"===e.type?e.text:"").join("")}function j(e,t){const n=e[e.length-1];if(!n)throw new Error("assistant chat: no message to send");if("user"===n.role){const e=C(n).trim();if(!e)throw new Error("assistant chat: empty message");return{conversation_id:t,text:e,approvals:[]}}const r=function(e){const t=[];for(const n of e.parts){if(!v(n))continue;const e=n;if("approval-responded"!==e.state||!e.approval||"boolean"!=typeof e.approval.approved)continue;const r={approval_id:e.approval.id,approved:e.approval.approved};e.approval.reason&&(r.reason=e.approval.reason),t.push(r)}return t}(n);if(0===r.length)throw new Error("assistant chat: no approval decision to send");return{conversation_id:t,text:null,approvals:r}}var A=/* @__PURE__ */new Set(["proposed","approved","running"]);function $(e){return A.has(e.status)}function S(e){const t=[];for(const n of e.parts)"data-plan"===n.type&&t.push(n.data);return t}function _(e){const t=/* @__PURE__ */new Map;for(const n of e)for(const e of S(n))t.delete(e.id),t.set(e.id,e);return t}function T(e){const t=[..._(e).values()],n=t[t.length-1];if(!n)return null;if($(n))return n;const r=e[e.length-1];return r&&"assistant"===r.role&&S(r).some(e=>e.id===n.id)?n:null}function O(e){const t=e.messages.filter(e=>e.text).map(e=>({id:e.id,role:e.role,parts:[{type:"text",text:e.text}],...e.source&&e.source!==e.role?{metadata:{source:e.source}}:{}})),n=(e.plans??[]).filter($);return(e.pending_approvals.length>0||n.length>0)&&t.push({id:`pending-approvals-${e.id}`,role:"assistant",parts:[...n.map(e=>({type:"data-plan",id:e.id,data:e})),...e.pending_approvals.map(e=>({type:`tool-${e.tool_name}`,toolCallId:e.tool_call_id??e.approval_id,state:"approval-requested",input:e.input,approval:{id:e.approval_id}}))]}),t}function I(e,t){const n=e?.message?.trim();if(!n)return t;if(n.startsWith("{")){try{const e=JSON.parse(n);for(const t of["detail","errorText","message","title","error"]){const n=e[t];if("string"==typeof n&&n.trim())return n.trim()}}catch{return t}return t}return n.startsWith("<")||n.length>400?t:n}function D(e){const t=e.replace(/^tool-/,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_\-.]+/g," ").trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):e}var J={propose_plan:{label:"Plan the changes",running:"Planning the changes",done:"Planned the changes"}};function L(e,t){const n=t?.[e]??J[e];return"string"==typeof n?{label:n}:n??{label:D(e)}}function W(e,t){return L(e,t).label}function R(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function E(e,t,n){const r=L(e,n).describe;if(!r)return"";try{return r(R(t))?.trim()??""}catch{return""}}function P(e,t){return null==e?"":"boolean"==typeof e?e?"Yes":"No":"object"!=typeof e?String(e):Array.isArray(e)?e.map(e=>P(e,t+1)).filter(Boolean).join(", "):t>=3?"…":Object.entries(e).map(([e,n])=>{const r=P(n,t+1);return r?`${D(e)}: ${r}`:""}).filter(Boolean).join("; ")}function M(e){const t=R(e),n=[];for(const[e,r]of Object.entries(t)){const t=P(r,0);t&&n.push({label:D(e),value:t})}return 0===n.length&&null!=e&&"object"!=typeof e&&n.push({label:"Value",value:P(e,0)}),n}var H={proposed:"planProposed",approved:"planApproved",running:"planRunning",completed:"planCompleted",failed:"planFailed",denied:"planDenied",expired:"planExpired"},U={pending:"pending",running:"active",done:"complete",failed:"failed",skipped:"skipped"};function z(e,t){const n=E(e.tool_name,e.input,t);return`${W(e.tool_name,t)}${n?` ${n}`:""}`}function F(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}function B(e,t){const n=e.steps.filter(e=>"done"===e.status).length;return`${F(t.planSummary,{done:n,total:e.steps.length})} · ${t[H[e.status]]}`}function K({plan:n,labels:r}){/* @__PURE__ */
5
+ return g("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */g(e,{summary:B(n,r),busy:$(n),label:r.plan,children:n.steps.map(e=>/* @__PURE__ */g(t,{label:e.title,status:U[e.status],description:"done"!==e.status&&e.result_summary?e.result_summary:void 0},e.id))})})}function V({approvalId:e,plan:t,input:n,labels:r,toolLabels:a,onApprove:o}){const l=function(e,t){if(e)return e.steps.map(e=>({key:e.id,title:e.title,tool_name:e.tool_name,input:e.input}));const n=t?.steps;return Array.isArray(n)?n.map((e,t)=>{const n=e??{};return{key:String(t),title:"string"==typeof n.title?n.title:"",tool_name:"string"==typeof n.tool?n.tool:"",input:n.args}}):[]}(t,n),i=F(r.planApprovalHeading,{count:l.length});/* @__PURE__ */
6
6
  return f("div",{role:"group","aria-label":i,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
7
7
  /* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:i}),
8
- /* @__PURE__ */g("ol",{className:"mt-2 list-decimal space-y-2 pl-5",children:l.map(e=>{const t=H(e.input);/* @__PURE__ */
8
+ /* @__PURE__ */g("ol",{className:"mt-2 list-decimal space-y-2 pl-5",children:l.map(e=>{const t=M(e.input);/* @__PURE__ */
9
9
  return f("li",{children:[
10
- /* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:F(e,a)}),e.title&&/* @__PURE__ */g("div",{className:"text-xs text-gray-600",children:e.title}),t.length>0&&/* @__PURE__ */g("dl",{className:"mt-1 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:t.map(e=>/* @__PURE__ */f("div",{className:"contents",children:[
10
+ /* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:z(e,a)}),e.title&&/* @__PURE__ */g("div",{className:"text-xs text-gray-600",children:e.title}),t.length>0&&/* @__PURE__ */g("dl",{className:"mt-1 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:t.map(e=>/* @__PURE__ */f("div",{className:"contents",children:[
11
11
  /* @__PURE__ */g("dt",{className:"text-gray-500",children:e.label}),
12
12
  /* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})]},e.key)})}),
13
13
  /* @__PURE__ */f("div",{className:"mt-3 flex gap-2",children:[
@@ -15,23 +15,24 @@ return f("li",{children:[
15
15
  /* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>o(e,!1),children:r.deny})]})]})}function q({rows:e}){/* @__PURE__ */
16
16
  return g("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:e.map(e=>/* @__PURE__ */f("div",{className:"contents",children:[
17
17
  /* @__PURE__ */g("dt",{className:"text-gray-500",children:e.label}),
18
- /* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})}function Y({tool:e,toolLabels:t,labels:n,onApprove:r}){const a=P(e.toolName,e.input,t),o=H(e.input),l=e.approvalId,i=`${n.approvalNeeded}: ${L(e.toolName,t)}${a?` ${a}`:""}`;/* @__PURE__ */
18
+ /* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})}function Y({tool:e,toolLabels:t,labels:n,onApprove:r}){const a=E(e.toolName,e.input,t),o=M(e.input),l=e.approvalId,i=`${n.approvalNeeded}: ${W(e.toolName,t)}${a?` ${a}`:""}`;/* @__PURE__ */
19
19
  return f("div",{role:"group","aria-label":i,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
20
20
  /* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:i}),o.length>0&&/* @__PURE__ */g("div",{className:"mt-2",children:/* @__PURE__ */g(q,{rows:o})}),
21
21
  /* @__PURE__ */f("div",{className:"mt-3 flex gap-2",children:[
22
22
  /* @__PURE__ */g(s,{size:"sm",onClick:()=>r(l,!0),children:n.approve}),
23
- /* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>r(l,!1),children:n.deny})]})]})}var Z={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function G(e,t,n){return function(e,t,n,r,a,o){const s=W(n,a),l=P(n,r,a),i=(e,t)=>({kind:e,base:t,subject:l,text:l?`${t} ${l}`:t});switch(e){case"output-available":return i("done",s.done??s.label);case"output-error":return i("failed",`${s.label} ${o.toolFailed}`);case"output-denied":return i("declined",`${s.label} ${o.toolDeclined}`);case"approval-requested":return i("waiting",`${o.approvalNeeded}: ${s.label}`);case"approval-responded":return!1===t?i("declined",`${s.label} — ${o.declined}`):i("running",`${o.approved}: ${s.running??s.label}`);default:return i("running",s.running??s.label)}}(e.state,e.approved,e.toolName,e.input,t,n)}function X({tool:e,toolLabels:n,labels:r,showOutput:a}){const o=G(e,n,r),s=H(e.input),l=a&&"output-available"===e.state?H(e.output):[],i=a&&"output-error"===e.state&&e.errorText?e.errorText:"";let c=null;return(s.length>0||l.length>0||i)&&(c=/* @__PURE__ */f("details",{children:[
23
+ /* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>r(l,!1),children:n.deny})]})]})}var Z={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function G(e,t,n){return function(e,t,n,r,a,o){const s=L(n,a),l=E(n,r,a),i=(e,t)=>({kind:e,base:t,subject:l,text:l?`${t} ${l}`:t});switch(e){case"output-available":return i("done",s.done??s.label);case"output-error":return i("failed",`${s.label} ${o.toolFailed}`);case"output-denied":return i("declined",`${s.label} ${o.toolDeclined}`);case"approval-requested":return i("waiting",`${o.approvalNeeded}: ${s.label}`);case"approval-responded":return!1===t?i("declined",`${s.label} — ${o.declined}`):i("running",`${o.approved}: ${s.running??s.label}`);default:return i("running",s.running??s.label)}}(e.state,e.approved,e.toolName,e.input,t,n)}function X({tool:e,toolLabels:n,labels:r,showOutput:a}){const o=G(e,n,r),s=M(e.input),l=a&&"output-available"===e.state?M(e.output):[],i=a&&"output-error"===e.state&&e.errorText?e.errorText:"";let c=null;return(s.length>0||l.length>0||i)&&(c=/* @__PURE__ */f("details",{children:[
24
24
  /* @__PURE__ */g("summary",{className:"cursor-pointer select-none",children:r.details}),
25
- /* @__PURE__ */f("div",{className:"mt-1 space-y-2",children:[s.length>0&&/* @__PURE__ */g(q,{rows:s}),l.length>0&&/* @__PURE__ */g(q,{rows:l}),i&&/* @__PURE__ */g("div",{className:"text-red-600",children:i})]})]})),/* @__PURE__ */g(t,{label:o.base,description:o.subject||void 0,status:Z[o.kind],children:c})}function Q(e,t){return"approval-responded"===e.state&&t.some(t=>{return t.toolName===e.toolName&&"approval-requested"!==t.state&&(t.toolCallId===e.toolCallId||(n=t.input,r=e.input,JSON.stringify(n)===JSON.stringify(r)));var n,r})}function ee(e,t,n,r){const a=e.flatMap(e=>"tool"===e.kind?[G(e.tool,n,r)]:[]);if(t){const e=a.find(e=>"running"===e.kind);return e?e.base:r.working}const o=[...new Set(a.map(e=>e.base))];return o.length>0?o.join(" · "):r.reasoning}function te({message:r,toolLabels:a,labels:o,showReasoning:s,showToolOutput:l,live:i,onApprove:c,plans:d}){const p=r.metadata?.source;if("system"===p){const e=C(r);return e?/* @__PURE__ */g("div",{className:"text-center text-xs text-gray-500",children:e}):null}if("user"===r.role){const e=C(r);return e?/* @__PURE__ */g("div",{className:"flex justify-end",children:/* @__PURE__ */g("div",{className:"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl bg-blue-600 px-3 py-2 text-sm text-white",children:e})}):null}const u=r.parts.map(k),m=[],h=[];let v=-1;const b=e=>{v<0&&(v=m.push(null)-1),h.push(e)};return r.parts.forEach((e,t)=>{if("text"===e.type)return void(e.text.trim()&&m.push(/* @__PURE__ */g(n,{children:e.text},t)));if("reasoning"===e.type)return void(s&&e.text.trim()&&b({kind:"reasoning",key:`r${t}`,text:e.text}));const r=u[t];r&&(Q(r,u.slice(t+1).filter(e=>null!==e))||("approval-requested"===r.state&&r.approvalId&&"propose_plan"===r.toolName?m.push(
26
- /* @__PURE__ */g(V,{approvalId:r.approvalId,plan:d?.get(r.approvalId),input:r.input,labels:o,toolLabels:a,onApprove:c},r.toolCallId)):"approval-requested"===r.state&&r.approvalId?m.push(
27
- /* @__PURE__ */g(Y,{tool:r,toolLabels:a,labels:o,onApprove:c},r.toolCallId)):b({kind:"tool",key:r.toolCallId,tool:r})))}),v>=0&&(m[v]=/* @__PURE__ */g(e,{summary:ee(h,i,a,o),busy:i,label:o.steps,children:h.map(e=>"tool"===e.kind?/* @__PURE__ */g(X,{tool:e.tool,toolLabels:a,labels:o,showOutput:l},e.key):/* @__PURE__ */g(t,{status:"complete",label:/* @__PURE__ */f("details",{children:[
25
+ /* @__PURE__ */f("div",{className:"mt-1 space-y-2",children:[s.length>0&&/* @__PURE__ */g(q,{rows:s}),l.length>0&&/* @__PURE__ */g(q,{rows:l}),i&&/* @__PURE__ */g("div",{className:"text-red-600",children:i})]})]})),/* @__PURE__ */g(t,{label:o.base,description:o.subject||void 0,status:Z[o.kind],children:c})}function Q(e,t){return e>0&&t>=100?e/(t/1e3):null}function ee(e){return Math.ceil(e.length/4)}var te=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),ne=e=>Math.round(e).toLocaleString();function re(e,t){const n=Q(e.output_tokens,e.generation_ms);return null===n?te(t.replyTokens,{tokens:ne(e.output_tokens)}):te(t.replyStats,{tokens:ne(e.output_tokens),seconds:(e.generation_ms/1e3).toFixed(1),rate:ne(n)})}function ae(e,t,n){const r=t>=1e3?Q(ee(e),t):null;return null===r?n.streaming:te(n.streamingRate,{rate:ne(r)})}function oe(e,t){return"approval-responded"===e.state&&t.some(t=>{return t.toolName===e.toolName&&"approval-requested"!==t.state&&(t.toolCallId===e.toolCallId||(n=t.input,r=e.input,JSON.stringify(n)===JSON.stringify(r)));var n,r})}function se(e,t,n,r){const a=e.flatMap(e=>"tool"===e.kind?[G(e.tool,n,r)]:[]);if(t){const e=a.find(e=>"running"===e.kind);return e?e.base:r.working}const o=[...new Set(a.map(e=>e.base))];return o.length>0?o.join(" · "):r.reasoning}function le({message:e,live:t,labels:n}){const r=C(e),a=r.length>0,o=c(null),[s,l]=p(0);d(()=>{if(!t)return;null===o.current&&(o.current=performance.now());const e=setInterval(()=>l(performance.now()-(o.current??performance.now())),500);return()=>clearInterval(e)},[t]);const i=e.metadata?.usage;let u=null;return t?u=a?ae(r,s,n):null:i&&(u=re(i,n)),u?/* @__PURE__ */g("div",{className:"px-1 text-xs tabular-nums text-gray-500",children:u}):null}function ie({message:r,toolLabels:a,labels:o,showReasoning:s,showToolOutput:l,showUsage:i,live:c,onApprove:p,plans:d}){const u=r.metadata?.source;if("system"===u){const e=C(r);return e?/* @__PURE__ */g("div",{className:"text-center text-xs text-gray-500",children:e}):null}if("user"===r.role){const e=C(r);return e?/* @__PURE__ */g("div",{className:"flex justify-end",children:/* @__PURE__ */g("div",{className:"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl bg-blue-600 px-3 py-2 text-sm text-white",children:e})}):null}const m=r.parts.map(N),h=[],v=[];let b=-1;const y=e=>{b<0&&(b=h.push(null)-1),v.push(e)};if(r.parts.forEach((e,t)=>{if("text"===e.type)return void(e.text.trim()&&h.push(/* @__PURE__ */g(n,{children:e.text},t)));if("reasoning"===e.type)return void(s&&e.text.trim()&&y({kind:"reasoning",key:`r${t}`,text:e.text}));const r=m[t];r&&(oe(r,m.slice(t+1).filter(e=>null!==e))||("approval-requested"===r.state&&r.approvalId&&"propose_plan"===r.toolName?h.push(
26
+ /* @__PURE__ */g(V,{approvalId:r.approvalId,plan:d?.get(r.approvalId),input:r.input,labels:o,toolLabels:a,onApprove:p},r.toolCallId)):"approval-requested"===r.state&&r.approvalId?h.push(
27
+ /* @__PURE__ */g(Y,{tool:r,toolLabels:a,labels:o,onApprove:p},r.toolCallId)):y({kind:"tool",key:r.toolCallId,tool:r})))}),b>=0&&(h[b]=/* @__PURE__ */g(e,{summary:se(v,c,a,o),busy:c,label:o.steps,children:v.map(e=>"tool"===e.kind?/* @__PURE__ */g(X,{tool:e.tool,toolLabels:a,labels:o,showOutput:l},e.key):/* @__PURE__ */g(t,{status:"complete",label:/* @__PURE__ */f("details",{children:[
28
28
  /* @__PURE__ */g("summary",{className:"cursor-pointer select-none",children:o.reasoning}),
29
- /* @__PURE__ */g("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===m.length?null:/* @__PURE__ */g("div",{className:"flex justify-start",children:/* @__PURE__ */f("div",{className:"max-w-[92%] min-w-0 space-y-2 rounded-2xl bg-white px-3 py-2 text-gray-800 shadow-sm",children:["staff"===p&&/* @__PURE__ */g("div",{className:"text-xs font-medium text-blue-600",children:o.teamName}),m]})})}function ne(e){const{messages:t,status:n,error:a,history:o,labels:s}=e,l=p(null),c=h(()=>function(e){const t=/* @__PURE__ */new Map;for(const n of T(e).values())t.set(n.approval_id,n);return t}(t),[t]);return u(()=>{const e=l.current;e&&(e.scrollTop=e.scrollHeight)},[t,n]),/* @__PURE__ */f("div",{ref:l,role:"log","aria-label":e.title,"aria-live":"polite","aria-busy":"submitted"===n||"streaming"===n,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-auto bg-gray-50 p-3",children:["loading"===o&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
30
- /* @__PURE__ */g(i,{className:"h-3 w-3"}),s.loadingHistory]}),"failed"===o&&/* @__PURE__ */g(r,{tone:"warning",children:s.historyFailed}),0===t.length&&"idle"===o&&/* @__PURE__ */g("p",{className:"m-auto text-center text-sm text-gray-500",children:s.emptyState}),t.map((r,a)=>/* @__PURE__ */g(te,{live:a===t.length-1&&("submitted"===n||"streaming"===n),message:r,toolLabels:e.toolLabels,labels:s,showReasoning:e.showReasoning,showToolOutput:e.showToolOutput,onApprove:e.onApprove,plans:c},r.id)),e.handedOver&&/* @__PURE__ */g("div",{role:"status",className:"text-center text-xs text-gray-500",children:s.teamJoined}),"submitted"===n&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
31
- /* @__PURE__ */g(i,{className:"h-3 w-3"}),s.thinking]}),a&&/* @__PURE__ */g("div",{role:"alert",children:/* @__PURE__ */g(r,{tone:"danger",children:D(a,s.genericError)})})]})}var re={title:"Assistant",placeholder:"Ask a question…",inputLabel:"Message to the assistant",send:"Send",stop:"Stop",newChat:"New chat",open:"Open assistant",close:"Close assistant",thinking:"Thinking",loadingHistory:"Loading the conversation",historyFailed:"The earlier conversation could not be loaded.",emptyState:"Ask me anything to get started.",approvalNeeded:"Approval needed",approve:"Approve",deny:"Deny",approved:"Approved",declined:"Declined",toolFailed:"did not complete",toolDeclined:"was not approved",details:"Details",reasoning:"Reasoning",genericError:"Something went wrong. Please try again.",working:"Working",steps:"Steps",teamName:"Team",teamJoined:"A team member has joined",plan:"Plan",planSummary:"Plan: {done} of {total} done",planProposed:"waiting for your approval",planApproved:"approved, starting",planRunning:"in progress",planCompleted:"finished",planFailed:"stopped — not every step ran",planDenied:"not approved — nothing was changed",planExpired:"expired — nothing was changed",planApprovalHeading:"Approve this plan of {count} steps",approvePlan:"Approve plan"},ae=(e,t)=>`${e.replace(/\/+$/,"")}/${t}`;function oe(e){return ae(e,"assistant/chat/")}function se(e,t){return ae(e,`assistant/chat/${encodeURIComponent(t)}/`)}function le(e){const t={...re,...e.labels},n=e.variant??"panel",r=function(e){const t=p(e);t.current=e;const n=p(e.conversationId?{id:e.conversationId}:null),[r,a]=c("idle"),[o,s]=c(!1),[l,i]=c(n.current),d=m(e=>{n.current=e,i(e)},[]),g=m((e,n)=>(t.current.fetch??fetch)(e,n),[]),f=h(()=>new y({api:oe(e.apiBase),fetch:g,prepareSendMessagesRequest:async({messages:e})=>{const{apiBase:r,getHeaders:a,credentials:o}=t.current;return{api:oe(r),body:j(e,n.current?.id??null),headers:await(a?.())??{},...o?{credentials:o}:{}}}}),[g]),v=w({transport:f,sendAutomaticallyWhen:x,onData:e=>{if("data-conversation"!==e.type)return;const{id:r,guest_token:a}=e.data,o=n.current,s=a??(o?.id===r?o.guestToken:void 0);o&&o.id===r&&o.guestToken===s||(d(s?{id:r,guestToken:s}:{id:r}),t.current.onConversation?.(n.current))}}),{setMessages:b,stop:N}=v,k=m(async(e,n)=>{const{apiBase:r,getHeaders:o,credentials:l,onConversation:i}=t.current;a("loading");try{const t=await g(se(r,e),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},signal:n});if(n.aborted)return;if(404===t.status)return d(null),i?.(null),void a("idle");if(!t.ok)throw new Error(`history ${t.status}`);const c=await t.json();if(n.aborted)return;s(!0===c.handed_over),b(e=>e.length>0?e:O(c)),a("idle")}catch{n.aborted||a("failed")}},[g,b,d]),C=e.conversationId??null;u(()=>{if(C===(n.current?.id??null)&&v.messages.length>0)return;if(null===C)return n.current&&(d(null),N(),b([])),void a("idle");n.current?.id===C||d({id:C});const e=new AbortController;return k(C,e.signal),()=>e.abort()},[C,k,b,N,d]);const A=m(async e=>{const r=n.current?.id;if(r)try{const{apiBase:a,getHeaders:o,credentials:l}=t.current,i=await g(se(a,r),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},...e?{signal:e}:{}});if(!i.ok||e?.aborted||n.current?.id!==r)return;const c=await i.json();s(!0===c.handed_over);const d=O(c).filter(e=>e.metadata?.source);if(0===d.length)return;b(e=>{const t=new Set(e.map(e=>e.id)),n=d.filter(e=>!t.has(e.id));return n.length>0?[...e,...n]:e})}catch{}},[g,b]),$=p(A);$.current=A;const{status:S}=v,T="submitted"===S||"streaming"===S,_=p(!1),D=p(!1),I=!!e.subscribe;u(()=>{const e=_.current&&!T;if(_.current=T,!e)return;if(I&&!D.current)return;D.current=!1;const t=new AbortController;return $.current(t.signal),()=>t.abort()},[T,I]);const J=p(T);J.current=T;const W=l?.id,L=l?.guestToken;u(()=>{const e=n.current,r=t.current.subscribe;if(e&&r)return r(e,()=>{J.current?D.current=!0:$.current()})??void 0},[W,L]);const E=m(e=>{const t=e.trim();t&&v.sendMessage({text:t})},[v]),P=m((e,t)=>{v.addToolApprovalResponse({id:e,approved:t})},[v]),R=m(()=>{N(),d(null),b([]),a("idle"),s(!1),t.current.onConversation?.(null)},[b,N,d]);return{messages:v.messages,status:v.status,error:v.error,historyState:r,handedOver:o,send:E,stop:N,approve:P,reset:R}}(e),a="submitted"===r.status||"streaming"===r.status,i="window"===n,d=e.showHeader??"window"!==n,v=e.title??t.title,b=_(r.messages);/* @__PURE__ */
32
- return f("section",{"aria-label":v,className:`flex h-full min-h-0 flex-col bg-white text-gray-900 ${e.className??""}`.trim(),children:[d&&/* @__PURE__ */f("header",{className:"flex items-center gap-2 border-b border-gray-200 px-3 py-2",children:[
33
- /* @__PURE__ */g("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:v}),r.messages.length>0&&/* @__PURE__ */g(s,{size:"sm",variant:"ghost",onClick:r.reset,children:t.newChat}),e.onClose&&/* @__PURE__ */g(o,{size:"sm","aria-label":t.close,onClick:e.onClose,children:/* @__PURE__ */g(l,{name:"close"})})]}),
34
- /* @__PURE__ */g(ne,{messages:r.messages,status:r.status,error:r.error,history:r.historyState,handedOver:r.handedOver,labels:t,title:v,toolLabels:e.toolLabels,showReasoning:i&&!0===e.showReasoning,showToolOutput:i,onApprove:r.approve}),b&&/* @__PURE__ */g(U,{plan:b,labels:t},b.id),
35
- /* @__PURE__ */g(N,{labels:t,placeholder:e.placeholder??t.placeholder,busy:a,focusWhen:e.focusComposer,onSend:r.send,onStop:r.stop,onNewChat:!d&&r.messages.length>0?r.reset:void 0})]})}function ie(e){const t={...re,...e.labels},[n,r]=c(e.defaultOpen??!1),a=d(),o=p(null),s=p(n),i=t=>{r(t),e.onOpenChange?.(t)};return u(()=>{s.current&&!n&&o.current?.focus(),s.current=n},[n]),/* @__PURE__ */f("div",{className:"rosh-assistant",style:{display:"contents"},children:[n&&/* @__PURE__ */g("div",{id:a,role:"dialog","aria-label":e.title??t.title,onKeyDown:e=>{"Escape"===e.key&&i(!1)},className:"fixed inset-x-2 bottom-20 z-[var(--z-window,1000)] h-[min(34rem,calc(100dvh-6rem))] overflow-hidden rounded-xl border border-gray-200 shadow-xl sm:inset-x-auto sm:right-4 sm:w-96",children:/* @__PURE__ */g(le,{...e,onClose:()=>i(!1),focusComposer:!0})}),
36
- /* @__PURE__ */g("button",{ref:o,type:"button","aria-expanded":n,"aria-controls":n?a:void 0,"aria-label":n?t.close:t.open,onClick:()=>i(!n),className:"fixed bottom-4 right-4 z-[var(--z-window,1000)] flex h-12 w-12 items-center justify-center rounded-full shadow-lg bg-[var(--assistant-launcher-bg,var(--color-blue-600))] text-[var(--assistant-launcher-ink,var(--color-white))] hover:bg-[var(--assistant-launcher-bg-hover,var(--color-blue-700))] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--assistant-launcher-bg,var(--color-blue-600))]",children:/* @__PURE__ */g(l,n?{name:"close",size:20}:{name:"chat-bubble-left-right",size:22})})]})}function ce(e){if("bubble"===e.variant)/* @__PURE__ */return g(ie,{...e});const t="window"!==e.variant;/* @__PURE__ */
37
- return g(le,{...e,className:`${t?"border-l border-gray-200":""} ${e.className??""}`.trim()})}export{Y as ApprovalCard,ce as AssistantChat,te as AssistantMessage,re as DEFAULT_ASSISTANT_CHAT_LABELS,V as PlanApprovalCard,U as PlanChecklist,X as ToolStep,j as buildRequestBody,O as messagesFromHistory,_ as pinnedPlan,T as plansOf};
29
+ /* @__PURE__ */g("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===h.length)return null;const x=/* @__PURE__ */f("div",{className:"max-w-[92%] min-w-0 space-y-2 rounded-2xl bg-white px-3 py-2 text-gray-800 shadow-sm",children:["staff"===u&&/* @__PURE__ */g("div",{className:"text-xs font-medium text-blue-600",children:o.teamName}),h]});return!i||u?/* @__PURE__ */g("div",{className:"flex justify-start",children:x}):/* @__PURE__ */f("div",{className:"flex flex-col items-start gap-1",children:[x,
30
+ /* @__PURE__ */g(le,{message:r,live:c,labels:o})]})}function ce(e){const{messages:t,status:n,error:a,history:o,labels:s}=e,l=c(null),p=h(()=>function(e){const t=/* @__PURE__ */new Map;for(const n of _(e).values())t.set(n.approval_id,n);return t}(t),[t]);return d(()=>{const e=l.current;e&&(e.scrollTop=e.scrollHeight)},[t,n]),/* @__PURE__ */f("div",{ref:l,role:"log","aria-label":e.title,"aria-live":"polite","aria-busy":"submitted"===n||"streaming"===n,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-auto bg-gray-50 p-3",children:["loading"===o&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
31
+ /* @__PURE__ */g(i,{className:"h-3 w-3"}),s.loadingHistory]}),"failed"===o&&/* @__PURE__ */g(r,{tone:"warning",children:s.historyFailed}),0===t.length&&"idle"===o&&/* @__PURE__ */g("p",{className:"m-auto text-center text-sm text-gray-500",children:s.emptyState}),t.map((r,a)=>/* @__PURE__ */g(ie,{live:a===t.length-1&&("submitted"===n||"streaming"===n),message:r,toolLabels:e.toolLabels,labels:s,showReasoning:e.showReasoning,showToolOutput:e.showToolOutput,showUsage:e.showUsage,onApprove:e.onApprove,plans:p},r.id)),e.handedOver&&/* @__PURE__ */g("div",{role:"status",className:"text-center text-xs text-gray-500",children:s.teamJoined}),"submitted"===n&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
32
+ /* @__PURE__ */g(i,{className:"h-3 w-3"}),s.thinking]}),a&&/* @__PURE__ */g("div",{role:"alert",children:/* @__PURE__ */g(r,{tone:"danger",children:I(a,s.genericError)})})]})}var pe={title:"Assistant",placeholder:"Ask a question…",inputLabel:"Message to the assistant",send:"Send",stop:"Stop",newChat:"New chat",open:"Open assistant",close:"Close assistant",thinking:"Thinking",loadingHistory:"Loading the conversation",historyFailed:"The earlier conversation could not be loaded.",emptyState:"Ask me anything to get started.",approvalNeeded:"Approval needed",approve:"Approve",deny:"Deny",approved:"Approved",declined:"Declined",toolFailed:"did not complete",toolDeclined:"was not approved",details:"Details",reasoning:"Reasoning",genericError:"Something went wrong. Please try again.",working:"Working",steps:"Steps",teamName:"Team",teamJoined:"A team member has joined",plan:"Plan",planSummary:"Plan: {done} of {total} done",planProposed:"waiting for your approval",planApproved:"approved, starting",planRunning:"in progress",planCompleted:"finished",planFailed:"stopped — not every step ran",planDenied:"not approved — nothing was changed",planExpired:"expired — nothing was changed",planApprovalHeading:"Approve this plan of {count} steps",approvePlan:"Approve plan",replyStats:"{tokens} tokens · {seconds} s · {rate} tok/s",replyTokens:"{tokens} tokens",streaming:"Streaming",streamingRate:"Streaming · ~{rate} tok/s"},de=(e,t)=>`${e.replace(/\/+$/,"")}/${t}`;function ue(e){return de(e,"assistant/chat/")}function me(e,t){return de(e,`assistant/chat/${encodeURIComponent(t)}/`)}function he(e){const t={...pe,...e.labels},n=e.variant??"panel",r=function(e){const t=c(e);t.current=e;const n=c(e.conversationId?{id:e.conversationId}:null),[r,a]=p("idle"),[o,s]=p(!1),[l,i]=p(n.current),u=m(e=>{n.current=e,i(e)},[]),g=m((e,n)=>(t.current.fetch??fetch)(e,n),[]),f=h(()=>new y({api:ue(e.apiBase),fetch:g,prepareSendMessagesRequest:async({messages:e})=>{const{apiBase:r,getHeaders:a,credentials:o}=t.current;return{api:ue(r),body:j(e,n.current?.id??null),headers:await(a?.())??{},...o?{credentials:o}:{}}}}),[g]),v=w({transport:f,sendAutomaticallyWhen:x,onData:e=>{if("data-conversation"!==e.type)return;const{id:r,guest_token:a}=e.data,o=n.current,s=a??(o?.id===r?o.guestToken:void 0);o&&o.id===r&&o.guestToken===s||(u(s?{id:r,guestToken:s}:{id:r}),t.current.onConversation?.(n.current))}}),{setMessages:b,stop:k}=v,N=m(async(e,n)=>{const{apiBase:r,getHeaders:o,credentials:l,onConversation:i}=t.current;a("loading");try{const t=await g(me(r,e),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},signal:n});if(n.aborted)return;if(404===t.status)return u(null),i?.(null),void a("idle");if(!t.ok)throw new Error(`history ${t.status}`);const c=await t.json();if(n.aborted)return;s(!0===c.handed_over),b(e=>e.length>0?e:O(c)),a("idle")}catch{n.aborted||a("failed")}},[g,b,u]),C=e.conversationId??null;d(()=>{if(C===(n.current?.id??null)&&v.messages.length>0)return;if(null===C)return n.current&&(u(null),k(),b([])),void a("idle");n.current?.id===C||u({id:C});const e=new AbortController;return N(C,e.signal),()=>e.abort()},[C,N,b,k,u]);const A=m(async e=>{const r=n.current?.id;if(r)try{const{apiBase:a,getHeaders:o,credentials:l}=t.current,i=await g(me(a,r),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},...e?{signal:e}:{}});if(!i.ok||e?.aborted||n.current?.id!==r)return;const c=await i.json();s(!0===c.handed_over);const p=O(c).filter(e=>e.metadata?.source);if(0===p.length)return;b(e=>{const t=new Set(e.map(e=>e.id)),n=p.filter(e=>!t.has(e.id));return n.length>0?[...e,...n]:e})}catch{}},[g,b]),$=c(A);$.current=A;const{status:S}=v,_="submitted"===S||"streaming"===S,T=c(!1),I=c(!1),D=!!e.subscribe;d(()=>{const e=T.current&&!_;if(T.current=_,!e)return;if(D&&!I.current)return;I.current=!1;const t=new AbortController;return $.current(t.signal),()=>t.abort()},[_,D]);const J=c(_);J.current=_;const L=l?.id,W=l?.guestToken;d(()=>{const e=n.current,r=t.current.subscribe;if(e&&r)return r(e,()=>{J.current?I.current=!0:$.current()})??void 0},[L,W]);const R=m(e=>{const t=e.trim();t&&v.sendMessage({text:t})},[v]),E=m((e,t)=>{v.addToolApprovalResponse({id:e,approved:t})},[v]),P=m(()=>{k(),u(null),b([]),a("idle"),s(!1),t.current.onConversation?.(null)},[b,k,u]);return{messages:v.messages,status:v.status,error:v.error,historyState:r,handedOver:o,send:R,stop:k,approve:E,reset:P}}(e),a="submitted"===r.status||"streaming"===r.status,i=c(e.onBusyChange);i.current=e.onBusyChange,d(()=>{i.current?.(a)},[a]);const u="window"===n,v=e.showHeader??"window"!==n,b=e.title??t.title,N=T(r.messages);/* @__PURE__ */
33
+ return f("section",{"aria-label":b,className:`flex h-full min-h-0 flex-col bg-white text-gray-900 ${e.className??""}`.trim(),children:[v&&/* @__PURE__ */f("header",{className:"flex items-center gap-2 border-b border-gray-200 px-3 py-2",children:[
34
+ /* @__PURE__ */g("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:b}),r.messages.length>0&&/* @__PURE__ */g(s,{size:"sm",variant:"ghost",onClick:r.reset,children:t.newChat}),e.onClose&&/* @__PURE__ */g(o,{size:"sm","aria-label":t.close,onClick:e.onClose,children:/* @__PURE__ */g(l,{name:"close"})})]}),
35
+ /* @__PURE__ */g(ce,{messages:r.messages,status:r.status,error:r.error,history:r.historyState,handedOver:r.handedOver,labels:t,title:b,toolLabels:e.toolLabels,showReasoning:u&&!0===e.showReasoning,showToolOutput:u,showUsage:u&&!0===e.showUsage,onApprove:r.approve}),N&&/* @__PURE__ */g(K,{plan:N,labels:t},N.id),
36
+ /* @__PURE__ */g(k,{labels:t,placeholder:e.placeholder??t.placeholder,busy:a,focusWhen:e.focusComposer,onSend:r.send,onStop:r.stop,onNewChat:!v&&!1!==e.showNewChat&&r.messages.length>0?r.reset:void 0})]})}function ge(e){const t={...pe,...e.labels},[n,r]=p(e.defaultOpen??!1),a=u(),o=c(null),s=c(n),i=t=>{r(t),e.onOpenChange?.(t)};return d(()=>{s.current&&!n&&o.current?.focus(),s.current=n},[n]),/* @__PURE__ */f("div",{className:"rosh-assistant",style:{display:"contents"},children:[n&&/* @__PURE__ */g("div",{id:a,role:"dialog","aria-label":e.title??t.title,onKeyDown:e=>{"Escape"===e.key&&i(!1)},className:"fixed inset-x-2 bottom-20 z-[var(--z-window,1000)] h-[min(34rem,calc(100dvh-6rem))] overflow-hidden rounded-xl border border-gray-200 shadow-xl sm:inset-x-auto sm:right-4 sm:w-96",children:/* @__PURE__ */g(he,{...e,onClose:()=>i(!1),focusComposer:!0})}),
37
+ /* @__PURE__ */g("button",{ref:o,type:"button","aria-expanded":n,"aria-controls":n?a:void 0,"aria-label":n?t.close:t.open,onClick:()=>i(!n),className:"fixed bottom-4 right-4 z-[var(--z-window,1000)] flex h-12 w-12 items-center justify-center rounded-full shadow-lg bg-[var(--assistant-launcher-bg,var(--color-blue-600))] text-[var(--assistant-launcher-ink,var(--color-white))] hover:bg-[var(--assistant-launcher-bg-hover,var(--color-blue-700))] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--assistant-launcher-bg,var(--color-blue-600))]",children:/* @__PURE__ */g(l,n?{name:"close",size:20}:{name:"chat-bubble-left-right",size:22})})]})}function fe(e){if("bubble"===e.variant)/* @__PURE__ */return g(ge,{...e});const t="window"!==e.variant;/* @__PURE__ */
38
+ return g(he,{...e,className:`${t?"border-l border-gray-200":""} ${e.className??""}`.trim()})}export{Y as ApprovalCard,fe as AssistantChat,ie as AssistantMessage,pe as DEFAULT_ASSISTANT_CHAT_LABELS,V as PlanApprovalCard,K as PlanChecklist,X as ToolStep,j as buildRequestBody,ee as estimateTokens,re as finishedStats,ae as liveStats,O as messagesFromHistory,T as pinnedPlan,_ as plansOf,Q as tokensPerSecond};
package/dist/ai.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-white:#fff}}.rosh-assistant .sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.rosh-assistant .fixed{position:fixed}.rosh-assistant .sticky{position:sticky}.rosh-assistant .inset-x-2{inset-inline:.5rem}.rosh-assistant .top-0{top:0}.rosh-assistant .right-4{right:1rem}.rosh-assistant .bottom-4{bottom:1rem}.rosh-assistant .bottom-20{bottom:5rem}.rosh-assistant .z-30{z-index:30}.rosh-assistant .z-\[var\(--z-window\,1000\)\]{z-index:var(--z-window,1000)}.rosh-assistant .container{width:100%}@media (min-width:40rem){.rosh-assistant .container{max-width:40rem}}@media (min-width:48rem){.rosh-assistant .container{max-width:48rem}}@media (min-width:64rem){.rosh-assistant .container{max-width:64rem}}@media (min-width:80rem){.rosh-assistant .container{max-width:80rem}}@media (min-width:96rem){.rosh-assistant .container{max-width:96rem}}.rosh-assistant .m-auto{margin:auto}.rosh-assistant .my-1{margin-block:.25rem}.rosh-assistant .mt-0\.5{margin-top:.125rem}.rosh-assistant .mt-1{margin-top:.25rem}.rosh-assistant .mt-2{margin-top:.5rem}.rosh-assistant .mt-3{margin-top:.75rem}.rosh-assistant .ml-2{margin-left:.5rem}.rosh-assistant .block{display:block}.rosh-assistant .contents{display:contents}.rosh-assistant .flex{display:flex}.rosh-assistant .grid{display:grid}.rosh-assistant .hidden{display:none}.rosh-assistant .inline{display:inline}.rosh-assistant .inline-flex{display:inline-flex}.rosh-assistant .table{display:table}.rosh-assistant .size-3{width:.75rem;height:.75rem}.rosh-assistant .size-3\.5{width:.875rem;height:.875rem}.rosh-assistant .h-3{height:.75rem}.rosh-assistant .h-3\.5{height:.875rem}.rosh-assistant .h-4{height:1rem}.rosh-assistant .h-5{height:1.25rem}.rosh-assistant .h-6{height:1.5rem}.rosh-assistant .h-8{height:2rem}.rosh-assistant .h-10{height:2.5rem}.rosh-assistant .h-11{height:2.75rem}.rosh-assistant .h-12{height:3rem}.rosh-assistant .h-14{height:3.5rem}.rosh-assistant .h-16{height:4rem}.rosh-assistant .h-20{height:5rem}.rosh-assistant .h-\[min\(34rem\,calc\(100dvh-6rem\)\)\]{height:min(34rem,100dvh - 6rem)}.rosh-assistant .h-full{height:100%}.rosh-assistant .max-h-32{max-height:8rem}.rosh-assistant .min-h-0{min-height:0}.rosh-assistant .w-3{width:.75rem}.rosh-assistant .w-3\.5{width:.875rem}.rosh-assistant .w-4{width:1rem}.rosh-assistant .w-5{width:1.25rem}.rosh-assistant .w-6{width:1.5rem}.rosh-assistant .w-8{width:2rem}.rosh-assistant .w-10{width:2.5rem}.rosh-assistant .w-11{width:2.75rem}.rosh-assistant .w-12{width:3rem}.rosh-assistant .w-14{width:3.5rem}.rosh-assistant .w-16{width:4rem}.rosh-assistant .w-20{width:5rem}.rosh-assistant .w-full{width:100%}.rosh-assistant .max-w-\[85\%\]{max-width:85%}.rosh-assistant .max-w-\[92\%\]{max-width:92%}.rosh-assistant .min-w-0{min-width:0}.rosh-assistant .flex-1{flex:1}.rosh-assistant .shrink-0{flex-shrink:0}.rosh-assistant .grow{flex-grow:1}.rosh-assistant .basis-48{flex-basis:12rem}.rosh-assistant .border-collapse{border-collapse:collapse}.rosh-assistant .rotate-90{rotate:90deg}.rosh-assistant .cursor-pointer{cursor:pointer}.rosh-assistant .resize{resize:both}.rosh-assistant .resize-none{resize:none}.rosh-assistant .list-decimal{list-style-type:decimal}.rosh-assistant .list-disc{list-style-type:disc}.rosh-assistant .grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.rosh-assistant .flex-col{flex-direction:column}.rosh-assistant .flex-wrap{flex-wrap:wrap}.rosh-assistant .items-center{align-items:center}.rosh-assistant .items-end{align-items:flex-end}.rosh-assistant .items-start{align-items:flex-start}.rosh-assistant .justify-center{justify-content:center}.rosh-assistant .justify-end{justify-content:flex-end}.rosh-assistant .justify-start{justify-content:flex-start}.rosh-assistant .gap-1{gap:.25rem}.rosh-assistant .gap-2{gap:.5rem}.rosh-assistant .gap-3{gap:.75rem}:where(.rosh-assistant .space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}.rosh-assistant .gap-x-3{column-gap:.75rem}.rosh-assistant .gap-y-1{row-gap:.25rem}.rosh-assistant .gap-y-2{row-gap:.5rem}.rosh-assistant .self-center{align-self:center}.rosh-assistant .truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rosh-assistant .overflow-auto{overflow:auto}.rosh-assistant .overflow-hidden{overflow:hidden}.rosh-assistant .overflow-x-auto{overflow-x:auto}.rosh-assistant .rounded{border-radius:.25rem}.rosh-assistant .rounded-\(--radius-control\){border-radius:var(--radius-control)}.rosh-assistant .rounded-2xl{border-radius:1rem}.rosh-assistant .rounded-full{border-radius:3.40282e38px}.rosh-assistant .rounded-lg{border-radius:.5rem}.rosh-assistant .rounded-xl{border-radius:.75rem}.rosh-assistant .rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rosh-assistant .border{border-style:var(--tw-border-style);border-width:1px}.rosh-assistant .border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.rosh-assistant .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.rosh-assistant .border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.rosh-assistant .border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.rosh-assistant .border-dashed{--tw-border-style:dashed;border-style:dashed}.rosh-assistant .border-\[color\:var\(--line\)\]{border-color:var(--line)}.rosh-assistant .border-\[color\:var\(--status-neutral-solid\)\]{border-color:var(--status-neutral-solid)}.rosh-assistant .border-amber-200{border-color:oklch(92.4% .12 95.746)}.rosh-assistant .border-amber-300{border-color:oklch(87.9% .169 91.605)}.rosh-assistant .border-amber-700{border-color:oklch(55.5% .163 48.998)}.rosh-assistant .border-blue-200{border-color:oklch(88.2% .059 254.128)}.rosh-assistant .border-blue-300{border-color:oklch(80.9% .105 251.813)}.rosh-assistant .border-blue-700{border-color:oklch(48.8% .243 264.376)}.rosh-assistant .border-gray-100{border-color:oklch(96.7% .003 264.542)}.rosh-assistant .border-gray-200{border-color:oklch(92.8% .006 264.531)}.rosh-assistant .border-gray-300{border-color:oklch(87.2% .01 258.338)}.rosh-assistant .border-green-200{border-color:oklch(92.5% .084 155.995)}.rosh-assistant .border-green-700{border-color:oklch(52.7% .154 150.069)}.rosh-assistant .border-red-200{border-color:oklch(88.5% .062 18.334)}.rosh-assistant .border-red-300{border-color:oklch(80.8% .114 19.571)}.rosh-assistant .border-red-700{border-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]{background-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .bg-\[var\(--status-neutral-soft\)\]{background-color:var(--status-neutral-soft)}.rosh-assistant .bg-\[var\(--status-neutral-solid\)\]{background-color:var(--status-neutral-solid)}.rosh-assistant .bg-amber-50{background-color:oklch(98.7% .022 95.277)}.rosh-assistant .bg-amber-700{background-color:oklch(55.5% .163 48.998)}.rosh-assistant .bg-blue-50{background-color:oklch(97% .014 254.604)}.rosh-assistant .bg-blue-50\/60{background-color:oklab(97% -.00371685 -.0134976/.6)}.rosh-assistant .bg-blue-600{background-color:oklch(54.6% .245 262.881)}.rosh-assistant .bg-blue-700{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .bg-gray-50{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .bg-gray-100{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .bg-gray-200{background-color:oklch(92.8% .006 264.531)}.rosh-assistant .bg-green-50{background-color:oklch(98.2% .018 155.826)}.rosh-assistant .bg-green-700{background-color:oklch(52.7% .154 150.069)}.rosh-assistant .bg-red-50{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .bg-red-600{background-color:oklch(57.7% .245 27.325)}.rosh-assistant .bg-red-700{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-white{background-color:#fff}.rosh-assistant .p-0{padding:0}.rosh-assistant .p-3{padding:.75rem}.rosh-assistant .px-1{padding-inline:.25rem}.rosh-assistant .px-2{padding-inline:.5rem}.rosh-assistant .px-3{padding-inline:.75rem}.rosh-assistant .px-4{padding-inline:1rem}.rosh-assistant .px-5{padding-inline:1.25rem}.rosh-assistant .px-6{padding-inline:1.5rem}.rosh-assistant .px-8{padding-inline:2rem}.rosh-assistant .py-0\.5{padding-block:.125rem}.rosh-assistant .py-2{padding-block:.5rem}.rosh-assistant .py-3{padding-block:.75rem}.rosh-assistant .py-12{padding-block:3rem}.rosh-assistant .pl-1{padding-left:.25rem}.rosh-assistant .pl-3{padding-left:.75rem}.rosh-assistant .pl-5{padding-left:1.25rem}.rosh-assistant .text-center{text-align:center}.rosh-assistant .text-left{text-align:left}.rosh-assistant .align-top{vertical-align:top}.rosh-assistant .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rosh-assistant .text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.rosh-assistant .text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.rosh-assistant .text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.rosh-assistant .text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.rosh-assistant .text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.rosh-assistant .text-\[0\.85em\]{font-size:.85em}.rosh-assistant .leading-relaxed{--tw-leading:1.625;line-height:1.625}.rosh-assistant .font-medium{--tw-font-weight:500;font-weight:500}.rosh-assistant .font-semibold{--tw-font-weight:600;font-weight:600}.rosh-assistant .tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.rosh-assistant .break-words{overflow-wrap:break-word}.rosh-assistant .whitespace-pre-wrap{white-space:pre-wrap}.rosh-assistant .text-\[color\:var\(--status-neutral-soft-ink\)\]{color:var(--status-neutral-soft-ink)}.rosh-assistant .text-\[color\:var\(--status-on-solid\)\]{color:var(--status-on-solid)}.rosh-assistant .text-\[var\(--assistant-launcher-ink\,var\(--color-white\)\)\]{color:var(--assistant-launcher-ink,var(--color-white))}.rosh-assistant .text-amber-600{color:oklch(66.6% .179 58.318)}.rosh-assistant .text-amber-700{color:oklch(55.5% .163 48.998)}.rosh-assistant .text-blue-600{color:oklch(54.6% .245 262.881)}.rosh-assistant .text-blue-700{color:oklch(48.8% .243 264.376)}.rosh-assistant .text-gray-400{color:oklch(70.7% .022 261.325)}.rosh-assistant .text-gray-500{color:oklch(55.1% .027 264.364)}.rosh-assistant .text-gray-600{color:oklch(44.6% .03 256.802)}.rosh-assistant .text-gray-700{color:oklch(37.3% .034 259.733)}.rosh-assistant .text-gray-800{color:oklch(27.8% .033 256.848)}.rosh-assistant .text-gray-900{color:oklch(21% .034 264.665)}.rosh-assistant .text-green-600{color:oklch(62.7% .194 149.214)}.rosh-assistant .text-inherit{color:inherit}.rosh-assistant .text-red-600{color:oklch(57.7% .245 27.325)}.rosh-assistant .text-white{color:#fff}.rosh-assistant .uppercase{text-transform:uppercase}.rosh-assistant .no-underline{text-decoration-line:none}.rosh-assistant .underline{text-decoration-line:underline}.rosh-assistant .underline-offset-4{text-underline-offset:4px}.rosh-assistant .opacity-80{opacity:.8}.rosh-assistant .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.rosh-assistant .select-none{-webkit-user-select:none;user-select:none}.rosh-assistant .marker\:text-gray-400 ::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400 ::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .even\:bg-gray-50\/50:nth-child(2n){background-color:oklab(98.5% -.00075442 -.00185226/.5)}@media (hover:hover){.rosh-assistant .hover\:bg-\[var\(--assistant-launcher-bg-hover\,var\(--color-blue-700\)\)\]:hover{background-color:var(--assistant-launcher-bg-hover,var(--color-blue-700))}.rosh-assistant .hover\:text-gray-600:hover{color:oklch(44.6% .03 256.802)}.rosh-assistant .hover\:text-gray-700:hover{color:oklch(37.3% .034 259.733)}.rosh-assistant .hover\:underline:hover{text-decoration-line:underline}.rosh-assistant .hover\:opacity-100:hover{opacity:1}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-amber-800:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(47.3% .137 46.201)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(93.2% .032 255.585)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:underline:not(:disabled):not([aria-disabled=true]):hover{text-decoration-line:underline}}.rosh-assistant .focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid-strong)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-strong)}.rosh-assistant .focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.rosh-assistant .focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.rosh-assistant .focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rosh-assistant .focus-visible\:outline-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]:focus-visible{outline-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .focus-visible\:outline-blue-600:focus-visible{outline-color:oklch(54.6% .245 262.881)}.rosh-assistant .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.rosh-assistant .disabled\:opacity-60:disabled{opacity:.6}.rosh-assistant .aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.rosh-assistant .aria-disabled\:opacity-60[aria-disabled=true]{opacity:.6}@media (prefers-reduced-motion:no-preference){.rosh-assistant .motion-safe\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}}@media (prefers-reduced-motion:reduce){.rosh-assistant .motion-reduce\:animate-none{animation:none}}@media (min-width:40rem){.rosh-assistant .sm\:inset-x-auto{inset-inline:auto}.rosh-assistant .sm\:right-4{right:1rem}.rosh-assistant .sm\:w-96{width:24rem}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-white:#fff}}.rosh-assistant .sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.rosh-assistant .fixed{position:fixed}.rosh-assistant .sticky{position:sticky}.rosh-assistant .inset-x-2{inset-inline:.5rem}.rosh-assistant .top-0{top:0}.rosh-assistant .right-4{right:1rem}.rosh-assistant .bottom-4{bottom:1rem}.rosh-assistant .bottom-20{bottom:5rem}.rosh-assistant .z-30{z-index:30}.rosh-assistant .z-\[var\(--z-window\,1000\)\]{z-index:var(--z-window,1000)}.rosh-assistant .container{width:100%}@media (min-width:40rem){.rosh-assistant .container{max-width:40rem}}@media (min-width:48rem){.rosh-assistant .container{max-width:48rem}}@media (min-width:64rem){.rosh-assistant .container{max-width:64rem}}@media (min-width:80rem){.rosh-assistant .container{max-width:80rem}}@media (min-width:96rem){.rosh-assistant .container{max-width:96rem}}.rosh-assistant .m-auto{margin:auto}.rosh-assistant .my-1{margin-block:.25rem}.rosh-assistant .mt-0\.5{margin-top:.125rem}.rosh-assistant .mt-1{margin-top:.25rem}.rosh-assistant .mt-2{margin-top:.5rem}.rosh-assistant .mt-3{margin-top:.75rem}.rosh-assistant .ml-2{margin-left:.5rem}.rosh-assistant .block{display:block}.rosh-assistant .contents{display:contents}.rosh-assistant .flex{display:flex}.rosh-assistant .grid{display:grid}.rosh-assistant .hidden{display:none}.rosh-assistant .inline{display:inline}.rosh-assistant .inline-flex{display:inline-flex}.rosh-assistant .table{display:table}.rosh-assistant .size-3{width:.75rem;height:.75rem}.rosh-assistant .size-3\.5{width:.875rem;height:.875rem}.rosh-assistant .h-3{height:.75rem}.rosh-assistant .h-3\.5{height:.875rem}.rosh-assistant .h-4{height:1rem}.rosh-assistant .h-5{height:1.25rem}.rosh-assistant .h-6{height:1.5rem}.rosh-assistant .h-8{height:2rem}.rosh-assistant .h-10{height:2.5rem}.rosh-assistant .h-11{height:2.75rem}.rosh-assistant .h-12{height:3rem}.rosh-assistant .h-14{height:3.5rem}.rosh-assistant .h-16{height:4rem}.rosh-assistant .h-20{height:5rem}.rosh-assistant .h-\[min\(34rem\,calc\(100dvh-6rem\)\)\]{height:min(34rem,100dvh - 6rem)}.rosh-assistant .h-full{height:100%}.rosh-assistant .max-h-32{max-height:8rem}.rosh-assistant .min-h-0{min-height:0}.rosh-assistant .w-3{width:.75rem}.rosh-assistant .w-3\.5{width:.875rem}.rosh-assistant .w-4{width:1rem}.rosh-assistant .w-5{width:1.25rem}.rosh-assistant .w-6{width:1.5rem}.rosh-assistant .w-8{width:2rem}.rosh-assistant .w-10{width:2.5rem}.rosh-assistant .w-11{width:2.75rem}.rosh-assistant .w-12{width:3rem}.rosh-assistant .w-14{width:3.5rem}.rosh-assistant .w-16{width:4rem}.rosh-assistant .w-20{width:5rem}.rosh-assistant .w-full{width:100%}.rosh-assistant .max-w-\[85\%\]{max-width:85%}.rosh-assistant .max-w-\[92\%\]{max-width:92%}.rosh-assistant .min-w-0{min-width:0}.rosh-assistant .flex-1{flex:1}.rosh-assistant .shrink-0{flex-shrink:0}.rosh-assistant .grow{flex-grow:1}.rosh-assistant .basis-48{flex-basis:12rem}.rosh-assistant .border-collapse{border-collapse:collapse}.rosh-assistant .rotate-90{rotate:90deg}.rosh-assistant .cursor-pointer{cursor:pointer}.rosh-assistant .resize{resize:both}.rosh-assistant .resize-none{resize:none}.rosh-assistant .list-decimal{list-style-type:decimal}.rosh-assistant .list-disc{list-style-type:disc}.rosh-assistant .grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.rosh-assistant .flex-col{flex-direction:column}.rosh-assistant .flex-wrap{flex-wrap:wrap}.rosh-assistant .items-center{align-items:center}.rosh-assistant .items-end{align-items:flex-end}.rosh-assistant .items-start{align-items:flex-start}.rosh-assistant .justify-center{justify-content:center}.rosh-assistant .justify-end{justify-content:flex-end}.rosh-assistant .justify-start{justify-content:flex-start}.rosh-assistant .gap-1{gap:.25rem}.rosh-assistant .gap-2{gap:.5rem}.rosh-assistant .gap-3{gap:.75rem}:where(.rosh-assistant .space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}.rosh-assistant .gap-x-3{column-gap:.75rem}.rosh-assistant .gap-y-1{row-gap:.25rem}.rosh-assistant .gap-y-2{row-gap:.5rem}.rosh-assistant .self-center{align-self:center}.rosh-assistant .truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rosh-assistant .overflow-auto{overflow:auto}.rosh-assistant .overflow-hidden{overflow:hidden}.rosh-assistant .overflow-x-auto{overflow-x:auto}.rosh-assistant .rounded{border-radius:.25rem}.rosh-assistant .rounded-\(--radius-control\){border-radius:var(--radius-control)}.rosh-assistant .rounded-2xl{border-radius:1rem}.rosh-assistant .rounded-full{border-radius:3.40282e38px}.rosh-assistant .rounded-lg{border-radius:.5rem}.rosh-assistant .rounded-xl{border-radius:.75rem}.rosh-assistant .rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rosh-assistant .border{border-style:var(--tw-border-style);border-width:1px}.rosh-assistant .border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.rosh-assistant .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.rosh-assistant .border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.rosh-assistant .border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.rosh-assistant .border-dashed{--tw-border-style:dashed;border-style:dashed}.rosh-assistant .border-\[color\:var\(--line\)\]{border-color:var(--line)}.rosh-assistant .border-\[color\:var\(--status-neutral-solid\)\]{border-color:var(--status-neutral-solid)}.rosh-assistant .border-amber-200{border-color:oklch(92.4% .12 95.746)}.rosh-assistant .border-amber-300{border-color:oklch(87.9% .169 91.605)}.rosh-assistant .border-amber-700{border-color:oklch(55.5% .163 48.998)}.rosh-assistant .border-blue-200{border-color:oklch(88.2% .059 254.128)}.rosh-assistant .border-blue-300{border-color:oklch(80.9% .105 251.813)}.rosh-assistant .border-blue-700{border-color:oklch(48.8% .243 264.376)}.rosh-assistant .border-gray-100{border-color:oklch(96.7% .003 264.542)}.rosh-assistant .border-gray-200{border-color:oklch(92.8% .006 264.531)}.rosh-assistant .border-gray-300{border-color:oklch(87.2% .01 258.338)}.rosh-assistant .border-green-200{border-color:oklch(92.5% .084 155.995)}.rosh-assistant .border-green-700{border-color:oklch(52.7% .154 150.069)}.rosh-assistant .border-red-200{border-color:oklch(88.5% .062 18.334)}.rosh-assistant .border-red-300{border-color:oklch(80.8% .114 19.571)}.rosh-assistant .border-red-700{border-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]{background-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .bg-\[var\(--status-neutral-soft\)\]{background-color:var(--status-neutral-soft)}.rosh-assistant .bg-\[var\(--status-neutral-solid\)\]{background-color:var(--status-neutral-solid)}.rosh-assistant .bg-amber-50{background-color:oklch(98.7% .022 95.277)}.rosh-assistant .bg-amber-700{background-color:oklch(55.5% .163 48.998)}.rosh-assistant .bg-blue-50{background-color:oklch(97% .014 254.604)}.rosh-assistant .bg-blue-50\/60{background-color:oklab(97% -.00371685 -.0134976/.6)}.rosh-assistant .bg-blue-600{background-color:oklch(54.6% .245 262.881)}.rosh-assistant .bg-blue-700{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .bg-gray-50{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .bg-gray-100{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .bg-gray-200{background-color:oklch(92.8% .006 264.531)}.rosh-assistant .bg-green-50{background-color:oklch(98.2% .018 155.826)}.rosh-assistant .bg-green-700{background-color:oklch(52.7% .154 150.069)}.rosh-assistant .bg-red-50{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .bg-red-600{background-color:oklch(57.7% .245 27.325)}.rosh-assistant .bg-red-700{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-white{background-color:#fff}.rosh-assistant .p-0{padding:0}.rosh-assistant .p-3{padding:.75rem}.rosh-assistant .px-1{padding-inline:.25rem}.rosh-assistant .px-2{padding-inline:.5rem}.rosh-assistant .px-3{padding-inline:.75rem}.rosh-assistant .px-4{padding-inline:1rem}.rosh-assistant .px-5{padding-inline:1.25rem}.rosh-assistant .px-6{padding-inline:1.5rem}.rosh-assistant .px-8{padding-inline:2rem}.rosh-assistant .py-0\.5{padding-block:.125rem}.rosh-assistant .py-2{padding-block:.5rem}.rosh-assistant .py-3{padding-block:.75rem}.rosh-assistant .py-12{padding-block:3rem}.rosh-assistant .pl-1{padding-left:.25rem}.rosh-assistant .pl-3{padding-left:.75rem}.rosh-assistant .pl-5{padding-left:1.25rem}.rosh-assistant .text-center{text-align:center}.rosh-assistant .text-left{text-align:left}.rosh-assistant .align-top{vertical-align:top}.rosh-assistant .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rosh-assistant .text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.rosh-assistant .text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.rosh-assistant .text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.rosh-assistant .text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.rosh-assistant .text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.rosh-assistant .text-\[0\.85em\]{font-size:.85em}.rosh-assistant .leading-relaxed{--tw-leading:1.625;line-height:1.625}.rosh-assistant .font-medium{--tw-font-weight:500;font-weight:500}.rosh-assistant .font-semibold{--tw-font-weight:600;font-weight:600}.rosh-assistant .tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.rosh-assistant .break-words{overflow-wrap:break-word}.rosh-assistant .whitespace-pre-wrap{white-space:pre-wrap}.rosh-assistant .text-\[color\:var\(--status-neutral-soft-ink\)\]{color:var(--status-neutral-soft-ink)}.rosh-assistant .text-\[color\:var\(--status-on-solid\)\]{color:var(--status-on-solid)}.rosh-assistant .text-\[var\(--assistant-launcher-ink\,var\(--color-white\)\)\]{color:var(--assistant-launcher-ink,var(--color-white))}.rosh-assistant .text-amber-600{color:oklch(66.6% .179 58.318)}.rosh-assistant .text-amber-700{color:oklch(55.5% .163 48.998)}.rosh-assistant .text-blue-600{color:oklch(54.6% .245 262.881)}.rosh-assistant .text-blue-700{color:oklch(48.8% .243 264.376)}.rosh-assistant .text-gray-400{color:oklch(70.7% .022 261.325)}.rosh-assistant .text-gray-500{color:oklch(55.1% .027 264.364)}.rosh-assistant .text-gray-600{color:oklch(44.6% .03 256.802)}.rosh-assistant .text-gray-700{color:oklch(37.3% .034 259.733)}.rosh-assistant .text-gray-800{color:oklch(27.8% .033 256.848)}.rosh-assistant .text-gray-900{color:oklch(21% .034 264.665)}.rosh-assistant .text-green-600{color:oklch(62.7% .194 149.214)}.rosh-assistant .text-inherit{color:inherit}.rosh-assistant .text-red-600{color:oklch(57.7% .245 27.325)}.rosh-assistant .text-white{color:#fff}.rosh-assistant .uppercase{text-transform:uppercase}.rosh-assistant .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.rosh-assistant .no-underline{text-decoration-line:none}.rosh-assistant .underline{text-decoration-line:underline}.rosh-assistant .underline-offset-4{text-underline-offset:4px}.rosh-assistant .opacity-80{opacity:.8}.rosh-assistant .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.rosh-assistant .select-none{-webkit-user-select:none;user-select:none}.rosh-assistant .marker\:text-gray-400 ::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400 ::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .even\:bg-gray-50\/50:nth-child(2n){background-color:oklab(98.5% -.00075442 -.00185226/.5)}@media (hover:hover){.rosh-assistant .hover\:bg-\[var\(--assistant-launcher-bg-hover\,var\(--color-blue-700\)\)\]:hover{background-color:var(--assistant-launcher-bg-hover,var(--color-blue-700))}.rosh-assistant .hover\:text-gray-600:hover{color:oklch(44.6% .03 256.802)}.rosh-assistant .hover\:text-gray-700:hover{color:oklch(37.3% .034 259.733)}.rosh-assistant .hover\:underline:hover{text-decoration-line:underline}.rosh-assistant .hover\:opacity-100:hover{opacity:1}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-amber-800:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(47.3% .137 46.201)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(93.2% .032 255.585)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:underline:not(:disabled):not([aria-disabled=true]):hover{text-decoration-line:underline}}.rosh-assistant .focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid-strong)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-strong)}.rosh-assistant .focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.rosh-assistant .focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.rosh-assistant .focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rosh-assistant .focus-visible\:outline-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]:focus-visible{outline-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .focus-visible\:outline-blue-600:focus-visible{outline-color:oklch(54.6% .245 262.881)}.rosh-assistant .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.rosh-assistant .disabled\:opacity-60:disabled{opacity:.6}.rosh-assistant .aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.rosh-assistant .aria-disabled\:opacity-60[aria-disabled=true]{opacity:.6}@media (prefers-reduced-motion:no-preference){.rosh-assistant .motion-safe\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}}@media (prefers-reduced-motion:reduce){.rosh-assistant .motion-reduce\:animate-none{animation:none}}@media (min-width:40rem){.rosh-assistant .sm\:inset-x-auto{inset-inline:auto}.rosh-assistant .sm\:right-4{right:1rem}.rosh-assistant .sm\:w-96{width:24rem}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-PDPBIDHF.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-VQUMEECM.js";import"../chunk-O3WSAR62.js";import{setPdfPreview as e}from"../chunk-ESL5TDNA.js";export{setPdfPreview}from"../chunk-ESL5TDNA.js";import{setSpreadsheetPreview as t}from"../chunk-VTVSMRFX.js";export{setSpreadsheetPreview}from"../chunk-VTVSMRFX.js";import"../chunk-3WUR24KP.js";import"../chunk-TPDOOCFS.js";import"../chunk-AW7TOB6N.js";import"../chunk-KNUR2UEG.js";import"../chunk-JDCM2VHG.js";import"../chunk-LR2X6MKB.js";import"../chunk-5A7MWTXX.js";import"../chunk-Y53KNQKL.js";import"../chunk-JF45HC5H.js";import"../chunk-5GHLKEJQ.js";import"../chunk-LT2MMSHH.js";import"../chunk-ARC3R4I2.js";import"../chunk-VWGWZY7A.js";import"../chunk-PKXQDCNR.js";import"../chunk-KC3EX26K.js";import{toast_default as o}from"../chunk-2LKH6JM5.js";import"../chunk-7IF3RZF3.js";import"../chunk-GZCAFWWB.js";import"../chunk-UGTRSRIW.js";import"../chunk-QR4RM7PO.js";import"../chunk-BOGBLZKS.js";import"../chunk-CDAJKLGL.js";import"../chunk-QMQVOUIV.js";import"../chunk-YHYL2WSG.js";import"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import{currentShellStrings as r}from"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{lazy as n}from"react";function i(e){const t=/\.([a-z0-9]+)(?:[?#].*)?$/i.exec((e||"").trim());return t?t[1].toLowerCase():""}var s=/* @__PURE__ */new Set(["csv","tsv"]),c=/* @__PURE__ */new Set(["xlsx","xls","xlsm","ods"]),m=/* @__PURE__ */new Set(["png","jpg","jpeg","gif","webp","bmp","svg","avif"]),p=/* @__PURE__ */new Set(["step","stp","stl","obj","gltf","glb","3mf","iges","igs"]);function l(e){const t=i(e);return"pdf"===t?"pdf":"dxf"===t?"dxf":s.has(t)?"csv":m.has(t)?"image":p.has(t)?"3d":null}function a(e){window.open(e,"_blank","noopener,noreferrer")}async function u(e,t,o){if(t.fetchBlob)return(await t.fetchBlob(o)).text();const r=await fetch(e);if(!r.ok)throw new Error(`fetch failed: ${r.status}`);return r.text()}function h(e,t){return(e instanceof Error?e.message:"")||t}async function j(n,s,m={}){const p=r().attachment,j=n?.url||"",k=n?.filename||p.fallbackName;if(!j&&!m.fetchBlob)return void o.error(p.noLink);const d=l(k)??l(j);if("csv"===d){try{t({csv:await u(j,m,n),filename:k}),s("/spreadsheet")}catch{o.error(p.spreadsheetFailed),j&&a(j)}return}if(c.has(i(k)||i(j)))return o.error(p.workbookUnavailable),void(j&&a(j));if(!d)return j?(o.info(p.noViewer),void a(j)):void o.error(p.noLink);if(!m.fetchBlob)return e({url:j,filename:k,kind:d}),void s("/preview");const f=e({filename:k,kind:d,converting:!0,convertingMessage:m.loadingMessage||p.loading});s("/preview");try{const e=await m.fetchBlob(n);f.update({url:URL.createObjectURL(e),filename:k,kind:d})}catch(e){f.update({filename:k,kind:d,converting:!1,convertingMessage:h(e,p.loadFailed)})}}var k=n(()=>import("../Calculator-NPBOUICN.js")),d=n(()=>import("../Spreadsheet-J62PVFXA.js")),f=n(()=>import("../Weather-M7NGMQFP.js")),w=n(()=>import("../CurrencyConverter-NTJJAE7V.js")),g=n(()=>import("../PomodoroTimer-LBB7U6QS.js")),S=n(()=>import("../Notepad-FJELN7GD.js")),v=n(()=>import("../WorldClock-YQQJXAUG.js")),W=n(()=>import("../Stock-NBXKAAIF.js")),b=n(()=>import("../Preview-ILPASIEM.js")),B=n(()=>import("../PdfViewer-Q7IS273H.js")),L=n(()=>import("../Documents-AVAYAW4T.js")),M=n(()=>import("../Files-KZWWBH6Q.js")),P=n(()=>import("../Browser-XELHJME5.js")),T={"/calculator":{component:k,label:"Calculator",size:"sm",allowPinOnTop:!0,utility:!0,widget:!0,dimensions:[280,420]},"/spreadsheet":{component:d,label:"Spreadsheets",size:"2xl",appStyle:!0,multiInstance:!0},"/notepad":{component:S,label:"Notepad",size:"lg",allowPinOnTop:!0,flushBody:!0},"/weather":{component:f,label:"Weather",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,400]},"/currency":{component:w,label:"Currency Converter",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/pomodoro":{component:g,label:"Pomodoro Timer",size:"sm",utility:!0,widget:!0,dimensions:[320,600]},"/world-clock":{component:v,label:"World Clock",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/stock":{component:W,label:"Stocks",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,360]}},C={"/preview":{component:b,label:"Preview",size:"2xl",appStyle:!0,multiInstance:!0},"/documents":{component:L,label:"Documents",size:"xl",appStyle:!0,multiInstance:!0},"/files":{component:M,label:"Files",size:"xl",appStyle:!0}},F={"/browser":{component:P,label:"Browser",size:"2xl",appStyle:!0,multiInstance:!0}},R={...T,...C,...F};export{P as Browser,k as Calculator,w as CurrencyConverter,L as Documents,M as Files,S as Notepad,B as PdfViewer,g as PomodoroTimer,b as Preview,d as Spreadsheet,W as Stock,f as Weather,v as WorldClock,l as attachmentKind,R as bundledApps,C as documentApps,j as openAttachment,T as utilityApps,F as webApps};
2
+ export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-PDPBIDHF.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-LRM5XTDF.js";import"../chunk-O3WSAR62.js";import{setPdfPreview as e}from"../chunk-ESL5TDNA.js";export{setPdfPreview}from"../chunk-ESL5TDNA.js";import{setSpreadsheetPreview as t}from"../chunk-VTVSMRFX.js";export{setSpreadsheetPreview}from"../chunk-VTVSMRFX.js";import"../chunk-VR5GVM3A.js";import"../chunk-TPDOOCFS.js";import"../chunk-AW7TOB6N.js";import"../chunk-KNUR2UEG.js";import"../chunk-JDCM2VHG.js";import"../chunk-LR2X6MKB.js";import"../chunk-5A7MWTXX.js";import"../chunk-Y53KNQKL.js";import"../chunk-JF45HC5H.js";import"../chunk-5GHLKEJQ.js";import"../chunk-LT2MMSHH.js";import"../chunk-ARC3R4I2.js";import"../chunk-VWGWZY7A.js";import"../chunk-PKXQDCNR.js";import"../chunk-KC3EX26K.js";import{toast_default as o}from"../chunk-2LKH6JM5.js";import"../chunk-7IF3RZF3.js";import"../chunk-GZCAFWWB.js";import"../chunk-UGTRSRIW.js";import"../chunk-QR4RM7PO.js";import"../chunk-BOGBLZKS.js";import"../chunk-CDAJKLGL.js";import"../chunk-QMQVOUIV.js";import"../chunk-3WV3CMSU.js";import"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import{currentShellStrings as r}from"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{lazy as n}from"react";function i(e){const t=/\.([a-z0-9]+)(?:[?#].*)?$/i.exec((e||"").trim());return t?t[1].toLowerCase():""}var s=/* @__PURE__ */new Set(["csv","tsv"]),c=/* @__PURE__ */new Set(["xlsx","xls","xlsm","ods"]),m=/* @__PURE__ */new Set(["png","jpg","jpeg","gif","webp","bmp","svg","avif"]),p=/* @__PURE__ */new Set(["step","stp","stl","obj","gltf","glb","3mf","iges","igs"]);function l(e){const t=i(e);return"pdf"===t?"pdf":"dxf"===t?"dxf":s.has(t)?"csv":m.has(t)?"image":p.has(t)?"3d":null}function a(e){window.open(e,"_blank","noopener,noreferrer")}async function u(e,t,o){if(t.fetchBlob)return(await t.fetchBlob(o)).text();const r=await fetch(e);if(!r.ok)throw new Error(`fetch failed: ${r.status}`);return r.text()}function h(e,t){return(e instanceof Error?e.message:"")||t}async function j(n,s,m={}){const p=r().attachment,j=n?.url||"",k=n?.filename||p.fallbackName;if(!j&&!m.fetchBlob)return void o.error(p.noLink);const d=l(k)??l(j);if("csv"===d){try{t({csv:await u(j,m,n),filename:k}),s("/spreadsheet")}catch{o.error(p.spreadsheetFailed),j&&a(j)}return}if(c.has(i(k)||i(j)))return o.error(p.workbookUnavailable),void(j&&a(j));if(!d)return j?(o.info(p.noViewer),void a(j)):void o.error(p.noLink);if(!m.fetchBlob)return e({url:j,filename:k,kind:d}),void s("/preview");const f=e({filename:k,kind:d,converting:!0,convertingMessage:m.loadingMessage||p.loading});s("/preview");try{const e=await m.fetchBlob(n);f.update({url:URL.createObjectURL(e),filename:k,kind:d})}catch(e){f.update({filename:k,kind:d,converting:!1,convertingMessage:h(e,p.loadFailed)})}}var k=n(()=>import("../Calculator-KKB7EFVO.js")),d=n(()=>import("../Spreadsheet-SDDJ3EBT.js")),f=n(()=>import("../Weather-UHCDMFZE.js")),w=n(()=>import("../CurrencyConverter-QTFV2RSB.js")),S=n(()=>import("../PomodoroTimer-23O2CBIZ.js")),g=n(()=>import("../Notepad-GBSYEVOZ.js")),v=n(()=>import("../WorldClock-TB3HCUIH.js")),b=n(()=>import("../Stock-AQ2SJRU6.js")),B=n(()=>import("../Preview-WEWO3FSN.js")),R=n(()=>import("../PdfViewer-Q7IS273H.js")),T=n(()=>import("../Documents-7TUZDRPO.js")),C=n(()=>import("../Files-4KRJX4CJ.js")),W=n(()=>import("../Browser-QBOH7J6X.js")),F={"/calculator":{component:k,label:"Calculator",size:"sm",allowPinOnTop:!0,utility:!0,widget:!0,dimensions:[280,420]},"/spreadsheet":{component:d,label:"Spreadsheets",size:"2xl",appStyle:!0,multiInstance:!0},"/notepad":{component:g,label:"Notepad",size:"lg",allowPinOnTop:!0,flushBody:!0},"/weather":{component:f,label:"Weather",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,400]},"/currency":{component:w,label:"Currency Converter",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/pomodoro":{component:S,label:"Pomodoro Timer",size:"sm",utility:!0,widget:!0,dimensions:[320,600]},"/world-clock":{component:v,label:"World Clock",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/stock":{component:b,label:"Stocks",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,360]}},M={"/preview":{component:B,label:"Preview",size:"2xl",appStyle:!0,multiInstance:!0},"/documents":{component:T,label:"Documents",size:"xl",appStyle:!0,multiInstance:!0},"/files":{component:C,label:"Files",size:"xl",appStyle:!0}},V={"/browser":{component:W,label:"Browser",size:"2xl",appStyle:!0,multiInstance:!0}},L={...F,...M,...V};export{W as Browser,k as Calculator,w as CurrencyConverter,T as Documents,C as Files,g as Notepad,R as PdfViewer,S as PomodoroTimer,B as Preview,d as Spreadsheet,b as Stock,f as Weather,v as WorldClock,l as attachmentKind,L as bundledApps,M as documentApps,j as openAttachment,F as utilityApps,V as webApps};