@astralbeam/sdk 0.15.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{$ as t,A as n,Ci as r,D as i,G as a,Gr as o,H as s,I as c,J as l,K as u,Kr as d,M as f,N as p,O as m,Q as h,Qt as g,R as _,V as v,W as y,Wn as b,Wr as x,X as S,Y as C,Z as w,Zn as T,a as E,ai as D,at as O,bi as k,c as A,d as j,et as M,g as ee,i as N,it as P,j as te,l as F,n as I,nt as ne,o as re,ot as ie,p as ae,q as oe,qr as se,r as ce,rt as le,t as ue,tt as de,u as fe,vi as pe,xi as me,yi as he,yn as ge,z as _e}from"./styles.generated-D8sDOLu3.js";var L=e(r(),1);const ve=new Map([[`bold`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z`}))],[`duotone`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),L.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`fill`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1-5.66-13.66l17-17-10.55-9.65-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,1,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60l10.93,10L226.34,50.3A8,8,0,0,1,240,56Z`}))],[`light`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M238,56v48a6,6,0,0,1-6,6H184a6,6,0,0,1,0-12h32.55l-30.38-27.8c-.06-.06-.12-.13-.19-.19a82,82,0,1,0-1.7,117.65,6,6,0,0,1,8.24,8.73A93.46,93.46,0,0,1,128,222h-1.28A94,94,0,1,1,194.37,61.4L226,90.35V56a6,6,0,1,1,12,0Z`}))],[`regular`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`thin`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M236,56v48a4,4,0,0,1-4,4H184a4,4,0,0,1,0-8h37.7L187.53,68.69l-.13-.12a84,84,0,1,0-1.75,120.51,4,4,0,0,1,5.5,5.82A91.43,91.43,0,0,1,128,220h-1.26A92,92,0,1,1,193,62.84l35,32.05V56a4,4,0,1,1,8,0Z`}))]]),ye=new Map([[`bold`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z`}))],[`duotone`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),L.createElement(`path`,{d:`M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z`}))],[`fill`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z`}))],[`light`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z`}))],[`regular`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z`}))],[`thin`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z`}))]]),be=new Map([[`bold`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,204H228V96a20,20,0,0,0-20-20H172V32a20,20,0,0,0-28.45-18.12l-104,48.54A20.06,20.06,0,0,0,28,80.55V204H16a12,12,0,0,0,0,24H240a12,12,0,0,0,0-24ZM204,100V204H172V100ZM52,83.09,148,38.3V204H52ZM132,112v12a12,12,0,0,1-24,0V112a12,12,0,0,1,24,0Zm-40,0v12a12,12,0,0,1-24,0V112a12,12,0,0,1,24,0Zm0,52v12a12,12,0,0,1-24,0V164a12,12,0,0,1,24,0Zm40,0v12a12,12,0,0,1-24,0V164a12,12,0,0,1,24,0Z`}))],[`duotone`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M136,32V216H40V85.35a8,8,0,0,1,3.56-6.66l80-53.33A8,8,0,0,1,136,32Z`,opacity:`0.2`}),L.createElement(`path`,{d:`M240,208H224V96a16,16,0,0,0-16-16H144V32a16,16,0,0,0-24.88-13.32L39.12,72A16,16,0,0,0,32,85.34V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM208,96V208H144V96ZM48,85.34,128,32V208H48ZM112,112v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm-32,0v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm0,56v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Zm32,0v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Z`}))],[`fill`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M239.73,208H224V96a16,16,0,0,0-16-16H164a4,4,0,0,0-4,4V208H144V32.41a16.43,16.43,0,0,0-6.16-13,16,16,0,0,0-18.72-.69L39.12,72A16,16,0,0,0,32,85.34V208H16.27A8.18,8.18,0,0,0,8,215.47,8,8,0,0,0,16,224H240a8,8,0,0,0,8-8.53A8.18,8.18,0,0,0,239.73,208ZM76,184a8,8,0,0,1-8.53,8A8.18,8.18,0,0,1,60,183.72V168.27A8.19,8.19,0,0,1,67.47,160,8,8,0,0,1,76,168Zm0-56a8,8,0,0,1-8.53,8A8.19,8.19,0,0,1,60,127.72V112.27A8.19,8.19,0,0,1,67.47,104,8,8,0,0,1,76,112Zm40,56a8,8,0,0,1-8.53,8,8.18,8.18,0,0,1-7.47-8.26V168.27a8.19,8.19,0,0,1,7.47-8.26,8,8,0,0,1,8.53,8Zm0-56a8,8,0,0,1-8.53,8,8.19,8.19,0,0,1-7.47-8.26V112.27a8.19,8.19,0,0,1,7.47-8.26,8,8,0,0,1,8.53,8Z`}))],[`light`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,210H222V96a14,14,0,0,0-14-14H142V32a14,14,0,0,0-21.77-11.64l-80,53.33A14,14,0,0,0,34,85.34V210H16a6,6,0,0,0,0,12H240a6,6,0,0,0,0-12ZM208,94a2,2,0,0,1,2,2V210H142V94ZM46,85.34a2,2,0,0,1,.89-1.66l80-53.34A2,2,0,0,1,130,32V210H46ZM110,112v16a6,6,0,0,1-12,0V112a6,6,0,0,1,12,0Zm-32,0v16a6,6,0,0,1-12,0V112a6,6,0,0,1,12,0Zm0,56v16a6,6,0,0,1-12,0V168a6,6,0,0,1,12,0Zm32,0v16a6,6,0,0,1-12,0V168a6,6,0,0,1,12,0Z`}))],[`regular`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,208H224V96a16,16,0,0,0-16-16H144V32a16,16,0,0,0-24.88-13.32L39.12,72A16,16,0,0,0,32,85.34V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM208,96V208H144V96ZM48,85.34,128,32V208H48ZM112,112v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm-32,0v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm0,56v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Zm32,0v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Z`}))],[`thin`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M240,212H220V96a12,12,0,0,0-12-12H140V32a12,12,0,0,0-18.66-10l-80,53.33a12,12,0,0,0-5.34,10V212H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8ZM208,92a4,4,0,0,1,4,4V212H140V92ZM44,85.34A4,4,0,0,1,45.78,82l80-53.33A4,4,0,0,1,132,32V212H44ZM108,112v16a4,4,0,0,1-8,0V112a4,4,0,0,1,8,0Zm-32,0v16a4,4,0,0,1-8,0V112a4,4,0,0,1,8,0Zm0,56v16a4,4,0,0,1-8,0V168a4,4,0,0,1,8,0Zm32,0v16a4,4,0,0,1-8,0V168a4,4,0,0,1,8,0Z`}))]]),xe=new Map([[`bold`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M216,76H188V48a20,20,0,0,0-20-20H40A20,20,0,0,0,20,48V176a12,12,0,0,0,19.54,9.33l28.46-23V184a20,20,0,0,0,20,20h92.17l36.29,29.33A12,12,0,0,0,236,224V96A20,20,0,0,0,216,76ZM44,150.87V52H164v80H71.58A12,12,0,0,0,64,134.67Zm168,48-20-16.2a12,12,0,0,0-7.54-2.67H92V156h76a20,20,0,0,0,20-20V100h24Z`}))],[`duotone`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M224,96V224l-39.58-32H88a8,8,0,0,1-8-8V144h88a8,8,0,0,0,8-8V88h40A8,8,0,0,1,224,96Z`,opacity:`0.2`}),L.createElement(`path`,{d:`M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z`}))],[`fill`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M232,96a16,16,0,0,0-16-16H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8Zm-42.55,89.78a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32V207.25Z`}))],[`light`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M216,82H182V48a14,14,0,0,0-14-14H40A14,14,0,0,0,26,48V176a6,6,0,0,0,3.42,5.41A5.86,5.86,0,0,0,32,182a6,6,0,0,0,3.77-1.33L73.71,150H74v34a14,14,0,0,0,14,14h94.29l37.94,30.67A6,6,0,0,0,224,230a5.86,5.86,0,0,0,2.58-.59A6,6,0,0,0,230,224V96A14,14,0,0,0,216,82ZM71.58,138a6,6,0,0,0-3.77,1.33L38,163.43V48a2,2,0,0,1,2-2H168a2,2,0,0,1,2,2v88a2,2,0,0,1-2,2ZM218,211.43l-29.81-24.1a6,6,0,0,0-3.77-1.33H88a2,2,0,0,1-2-2V150h82a14,14,0,0,0,14-14V94h34a2,2,0,0,1,2,2Z`}))],[`regular`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M216,80H184V48a16,16,0,0,0-16-16H40A16,16,0,0,0,24,48V176a8,8,0,0,0,13,6.22L72,154V184a16,16,0,0,0,16,16h93.59L219,230.22a8,8,0,0,0,5,1.78,8,8,0,0,0,8-8V96A16,16,0,0,0,216,80ZM66.55,137.78,40,159.25V48H168v88H71.58A8,8,0,0,0,66.55,137.78ZM216,207.25l-26.55-21.47a8,8,0,0,0-5-1.78H88V152h80a16,16,0,0,0,16-16V96h32Z`}))],[`thin`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M216,84H180V48a12,12,0,0,0-12-12H40A12,12,0,0,0,28,48V176a4,4,0,0,0,4,4,4,4,0,0,0,2.51-.89L73,148h3v36a12,12,0,0,0,12,12h95l38.49,31.11A4,4,0,0,0,224,228a4,4,0,0,0,4-4V96A12,12,0,0,0,216,84ZM71.58,140a4,4,0,0,0-2.51.89L36,167.62V48a4,4,0,0,1,4-4H168a4,4,0,0,1,4,4v88a4,4,0,0,1-4,4ZM220,215.62l-33.07-26.73a4,4,0,0,0-2.51-.89H88a4,4,0,0,1-4-4V148h84a12,12,0,0,0,12-12V92h36a4,4,0,0,1,4,4Z`}))]]),Se=new Map([[`bold`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M125.18,156.94a64,64,0,1,0-82.36,0,100.23,100.23,0,0,0-39.49,32,12,12,0,0,0,19.35,14.2,76,76,0,0,1,122.64,0,12,12,0,0,0,19.36-14.2A100.33,100.33,0,0,0,125.18,156.94ZM44,108a40,40,0,1,1,40,40A40,40,0,0,1,44,108Zm206.1,97.67a12,12,0,0,1-16.78-2.57A76.31,76.31,0,0,0,172,172a12,12,0,0,1,0-24,40,40,0,1,0-10.3-78.67,12,12,0,1,1-6.16-23.19,64,64,0,0,1,57.64,110.8,100.23,100.23,0,0,1,39.49,32A12,12,0,0,1,250.1,205.67Z`}))],[`duotone`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M136,108A52,52,0,1,1,84,56,52,52,0,0,1,136,108Z`,opacity:`0.2`}),L.createElement(`path`,{d:`M117.25,157.92a60,60,0,1,0-66.5,0A95.83,95.83,0,0,0,3.53,195.63a8,8,0,1,0,13.4,8.74,80,80,0,0,1,134.14,0,8,8,0,0,0,13.4-8.74A95.83,95.83,0,0,0,117.25,157.92ZM40,108a44,44,0,1,1,44,44A44.05,44.05,0,0,1,40,108Zm210.14,98.7a8,8,0,0,1-11.07-2.33A79.83,79.83,0,0,0,172,168a8,8,0,0,1,0-16,44,44,0,1,0-16.34-84.87,8,8,0,1,1-5.94-14.85,60,60,0,0,1,55.53,105.64,95.83,95.83,0,0,1,47.22,37.71A8,8,0,0,1,250.14,206.7Z`}))],[`fill`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M164.47,195.63a8,8,0,0,1-6.7,12.37H10.23a8,8,0,0,1-6.7-12.37,95.83,95.83,0,0,1,47.22-37.71,60,60,0,1,1,66.5,0A95.83,95.83,0,0,1,164.47,195.63Zm87.91-.15a95.87,95.87,0,0,0-47.13-37.56A60,60,0,0,0,144.7,54.59a4,4,0,0,0-1.33,6A75.83,75.83,0,0,1,147,150.53a4,4,0,0,0,1.07,5.53,112.32,112.32,0,0,1,29.85,30.83,23.92,23.92,0,0,1,3.65,16.47,4,4,0,0,0,3.95,4.64h60.3a8,8,0,0,0,7.73-5.93A8.22,8.22,0,0,0,252.38,195.48Z`}))],[`light`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M112.6,158.43a58,58,0,1,0-57.2,0A93.83,93.83,0,0,0,5.21,196.72a6,6,0,0,0,10.05,6.56,82,82,0,0,1,137.48,0,6,6,0,0,0,10-6.56A93.83,93.83,0,0,0,112.6,158.43ZM38,108a46,46,0,1,1,46,46A46.06,46.06,0,0,1,38,108Zm211,97a6,6,0,0,1-8.3-1.74A81.8,81.8,0,0,0,172,166a6,6,0,0,1,0-12,46,46,0,1,0-17.08-88.73,6,6,0,1,1-4.46-11.14,58,58,0,0,1,50.14,104.3,93.83,93.83,0,0,1,50.19,38.29A6,6,0,0,1,249,205Z`}))],[`regular`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M117.25,157.92a60,60,0,1,0-66.5,0A95.83,95.83,0,0,0,3.53,195.63a8,8,0,1,0,13.4,8.74,80,80,0,0,1,134.14,0,8,8,0,0,0,13.4-8.74A95.83,95.83,0,0,0,117.25,157.92ZM40,108a44,44,0,1,1,44,44A44.05,44.05,0,0,1,40,108Zm210.14,98.7a8,8,0,0,1-11.07-2.33A79.83,79.83,0,0,0,172,168a8,8,0,0,1,0-16,44,44,0,1,0-16.34-84.87,8,8,0,1,1-5.94-14.85,60,60,0,0,1,55.53,105.64,95.83,95.83,0,0,1,47.22,37.71A8,8,0,0,1,250.14,206.7Z`}))],[`thin`,L.createElement(L.Fragment,null,L.createElement(`path`,{d:`M107.19,159a56,56,0,1,0-46.38,0A91.83,91.83,0,0,0,6.88,197.81a4,4,0,1,0,6.7,4.37,84,84,0,0,1,140.84,0,4,4,0,1,0,6.7-4.37A91.83,91.83,0,0,0,107.19,159ZM36,108a48,48,0,1,1,48,48A48.05,48.05,0,0,1,36,108Zm212,95.35a4,4,0,0,1-5.53-1.17A83.81,83.81,0,0,0,172,164a4,4,0,0,1,0-8,48,48,0,1,0-17.82-92.58,4,4,0,1,1-3-7.43,56,56,0,0,1,44,103,91.83,91.83,0,0,1,53.93,38.86A4,4,0,0,1,248,203.35Z`}))]]),Ce=L.forwardRef((e,t)=>L.createElement(k,{ref:t,...e,weights:ve}));Ce.displayName=`ArrowClockwiseIcon`;const we=L.forwardRef((e,t)=>L.createElement(k,{ref:t,...e,weights:ye}));we.displayName=`ArrowLeftIcon`;const Te=L.forwardRef((e,t)=>L.createElement(k,{ref:t,...e,weights:be}));Te.displayName=`BuildingsIcon`;const Ee=L.forwardRef((e,t)=>L.createElement(k,{ref:t,...e,weights:xe}));Ee.displayName=`ChatsIcon`;const De=L.forwardRef((e,t)=>L.createElement(k,{ref:t,...e,weights:Se}));De.displayName=`UsersIcon`;function R(e,t){return C(e,w,t)}function Oe(e,t){let n=de(t),r=n.getQueryCache();return L.useSyncExternalStore(L.useCallback(e=>r.subscribe(h.batchCalls(e)),[r]),()=>n.isFetching(e),()=>n.isFetching(e))}var ke=me();function Ae(e,t){let n={options:e,onIdentityChange:t,abortController:new AbortController,auth:E({apiUrl:e.apiUrl,fetchAstralBeamToken:e.fetchAstralBeamToken})};return fe(n.auth,()=>{let e=N(n.auth);e.status===`error`&&je(n,e.error)}),n}function je(e,t){try{e.options.onError?.(t instanceof Error?t:Error(String(t)))}catch{}}function Me(e){e.abortController.abort(),re(e.auth)}function Ne(e,t){return z(e,t,async t=>{let{tenantId:r,tenantExternalId:a}=e.options;return r===void 0?(await n({page_size:1,...a===void 0?{}:{"filter[external_id]":a}},t)).items[0]??null:i(r,t)})}function Pe(e,t,r){return z(e,r,e=>n(t,e))}function Fe(e,t,r){return z(e,r,async e=>{let{kind:r,tenantId:a,q:o,admin:s,size:c,cursor:l}=t,u={q:o,page_size:c,...l};if(r===`users`){if(!a)throw Error(`Select a tenant before listing its users.`);return p(a,{...u,...s===`all`?{}:{"filter[admin]":s}},e)}if(a){let t=await i(a,e);return{items:!o||[t.name??``,t.external_id].some(e=>e.toLocaleLowerCase().includes(o.toLocaleLowerCase()))?[t]:[],page_after:null,page_before:null}}return n(u,e)})}async function z(e,t,n){let r=AbortSignal.any([t,e.abortController.signal,e.auth.session.abortController.signal]);try{for(let t=0;t<2;t++){r.throwIfAborted(),j(e.auth,{apiUrl:e.options.apiUrl,fetchAstralBeamToken:e.options.fetchAstralBeamToken});let i=await A({...e.auth,retryUnauthorized:t===0});r.throwIfAborted();let a=N(e.auth);if(a.status!==`ready`)throw Error(`Authentication is not ready`);let o=a.currentUser.scope===`organization`,s=ce(a.currentUser,e.auth.session.cached.tenantAdmin);if(e.identity!==void 0&&e.identity!==s)throw e.onIdentityChange(),new DOMException(`Identity changed`,`AbortError`);if(e.identity=s,e.options.scope===`organization`&&!o)throw Error(`Organization mode requires an organization-management token.`);if((e.options.scope??`tenant`)===`tenant`&&o&&!e.options.tenantId&&e.options.tenantExternalId===void 0)throw Error(`tenantId or tenantExternalId is required for a tenant view using an organization token.`);try{let t=await n({apiUrl:e.auth.apiUrl,astralBeamToken:i,signal:r});return r.throwIfAborted(),t}catch(n){if(t||!b(n)||n.status!==401)throw n;await F(e.auth,i)}}throw Error(`Authentication failed`)}catch(t){let n=N(e.auth);throw!(n.status===`error`&&n.error===t)&&!r.aborted&&!(t instanceof Error&&t.name===`AbortError`)&&je(e,t),t}}function Ie(e,t,n){return z(e,n,e=>f({q:t.q,page_size:t.size,...t.cursor,...t.tenantId?{"filter[tenant_id]":t.tenantId}:{}},e))}function Le(e,t,n,r,i){return z(e,i,e=>te(t,n,{page_size:100,...r?{page_after:r}:{}},e))}function Re(e,t,n,r,i,a){return z(e,a,async e=>(await m(t,n,r,i,e)).blob())}var B=o();function ze({label:e,placeholder:n=`Search…`,value:r,onValueChange:i,itemLabel:o,loadPage:d,disabled:f=!1,showClear:p=!1,popup:m=!1,id:h,className:g=`min-w-0 flex-1`}){let b=(0,L.useRef)(null),C=(0,L.useRef)(null),[w,T]=(0,L.useState)(``),[E,D]=(0,L.useState)(!1),[O]=ne(w.trim(),{wait:300}),k=(0,L.useContext)(t),[A]=(0,L.useState)(()=>new S),j=l({queryKey:[`search-dropdown`,(0,L.useId)(),O],enabled:E,initialPageParam:void 0,queryFn:({signal:e,pageParam:t})=>d(O,t,e),getNextPageParam:e=>e.page_after??void 0,retry:!1,gcTime:0},k??A),M=w.trim()!==O||j.isPending,{hasNextPage:ee,isFetching:N,isError:P,fetchNextPage:te}=j;(0,L.useEffect)(()=>{let e=C.current;if(!E||!e||M||!ee||N||P)return;let t=()=>{e.scrollHeight-e.scrollTop-e.clientHeight<48&&te({cancelRefetch:!1})};return t(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[E,M,ee,N,P,te,j.data]);let F=M?[]:j.data?.pages.flatMap(e=>e.items)??[],I=(0,B.jsx)(v,{id:m?void 0:h,"aria-label":m?n:e,placeholder:n,maxLength:255,disabled:f,showTrigger:!m,showClear:p,onFocus:e=>e.currentTarget.select()});return(0,B.jsx)(`div`,{ref:b,className:g,"data-slot":`search-dropdown`,children:(0,B.jsxs)(c,{items:r&&!F.some(e=>e.id===r.id)?[...F,r]:F,filteredItems:F,value:r,onValueChange:i,itemToStringLabel:o,itemToStringValue:e=>e.id,isItemEqualToValue:(e,t)=>e.id===t.id,disabled:f,onInputValueChange:(e,t)=>{T(t.reason===`input-change`?e:``)},onOpenChange:e=>{D(e),e||T(``)},children:[m?(0,B.jsx)(u,{id:h,"aria-label":e,render:(0,B.jsx)(x,{variant:`outline`,className:`w-full justify-between`}),children:(0,B.jsx)(`span`,{className:`truncate`,children:(0,B.jsx)(oe,{placeholder:e})})}):I,(0,B.jsxs)(_,{container:b,"aria-label":m?e:void 0,"aria-busy":M||j.isFetching?!0:void 0,children:[m&&I,(0,B.jsx)(a,{className:`text-center text-sm text-muted-foreground [&:not(:empty)]:py-2`,children:M||j.isFetchingNextPage?`Loading…`:null}),(0,B.jsx)(_e,{children:!M&&!j.isError?`No matches.`:null}),(0,B.jsx)(y,{ref:C,children:e=>(0,B.jsx)(s,{value:e,children:o(e)},e.id)}),!M&&j.isError&&(0,B.jsxs)(`div`,{className:`p-2 text-xs`,role:`alert`,children:[`Could not load options.`,(0,B.jsx)(x,{variant:`ghost`,size:`sm`,disabled:j.isFetching,onClick:()=>void(j.isFetchNextPageError?j.fetchNextPage():j.refetch()),children:`Retry`})]})]})]})})}function Be({className:e,size:t=`default`,...n}){return(0,B.jsxs)(`div`,{className:d(`group/native-select relative w-fit has-[select:disabled]:opacity-50`,e),"data-slot":`native-select-wrapper`,"data-size":t,children:[(0,B.jsx)(`select`,{"data-slot":`native-select`,"data-size":t,className:`h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pe-8 ps-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,...n}),(0,B.jsx)(he,{className:`pointer-events-none absolute top-1/2 end-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none`,"aria-hidden":`true`,"data-slot":`native-select-icon`})]})}function V({className:e,...t}){return(0,B.jsx)(`option`,{"data-slot":`native-select-option`,className:d(`bg-[Canvas] text-[CanvasText]`,e),...t})}function Ve({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`skeleton`,className:d(`animate-pulse rounded-md bg-muted`,e),...t})}const He=se(`group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current`}},defaultVariants:{variant:`default`}});function Ue({className:e,variant:t,...n}){return(0,B.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:d(He({variant:t}),e),...n})}function We({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`alert-title`,className:d(`font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,e),...t})}function Ge({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`alert-description`,className:d(`text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,e),...t})}function Ke({session:e,thread:t,onClose:n,ErrorFeedback:r,LoadingFeedback:i}){let[a,o]=(0,L.useState)(null),s=l({queryKey:[`directory-history`,t.tenant_id,t.id],initialPageParam:void 0,queryFn:({pageParam:n,signal:r})=>Le(e,t.tenant_id,t.id,n,r),getNextPageParam:e=>e.page_after??void 0}),c=(0,L.useCallback)(async(n,r)=>{try{return await Re(e,t.tenant_id,t.id,n,r,e.abortController.signal)}catch(e){throw b(e)&&[401,403,404].includes(e.status)&&o(e),e}},[e,t.tenant_id,t.id]),u=(0,L.useMemo)(()=>{let e=ee(s.data?.pages.toReversed().flatMap(e=>e.messages)??[]);for(let t of e)for(let e of t.parts)e.type===`tool-call`&&(e.input=ae(e.arguments),e.state??=`input-complete`);return e},[s.data]),d=a??s.error,f=b(d)&&[401,403,404].includes(d.status),p=s.data?.pages[0]?.thread??t;return(0,B.jsxs)(`section`,{"data-slot":`directory-transcript`,"aria-label":`Saved conversation`,className:`flex min-h-96 flex-col gap-4`,children:[(0,B.jsxs)(`header`,{className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsxs)(x,{variant:`outline`,size:`sm`,onClick:n,children:[(0,B.jsx)(we,{"aria-hidden":!0}),`Back to conversations`]}),(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsx)(`h3`,{className:`break-words font-semibold`,children:p.title||`Untitled conversation`}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Saved conversation · Read only`})]})]}),d&&(0,B.jsx)(r,{error:d,retry:()=>{(a||!s.isFetchNextPageError?s.refetch():s.fetchNextPage()).then(e=>{e.isSuccess&&o(null)})}}),s.isPending?(0,B.jsx)(i,{}):s.data&&!f?(0,B.jsx)(`div`,{className:`h-[32rem] min-h-64 overflow-hidden rounded-lg border border-foreground/10 bg-background text-foreground [--card-spacing:--spacing(4)]`,children:(0,B.jsx)(g,{messages:u,widgets:{},toolTitles:{},activeSlots:new Map,interactiveToolIds:new Set,readOnly:!0,getAttachment:c,hasOlder:s.hasNextPage&&!s.isError,loadingHistory:s.isFetching,loadingOlder:s.isFetchingNextPage,onLoadOlder:async()=>{await s.fetchNextPage({cancelRefetch:!1})},isBusy:s.isFetching,awaitingReply:!1,onQuestionnaireAnswers:()=>{}})}):null]})}function qe(e){return Je(e)||typeof e==`function`||Ye(e)}function Je(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Ye(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function H(e,t){return e==null?null:qe(e)?L.createElement(e,t):e}function Xe(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?H(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:H(n.cell,t.getContext())}return`header`in e&&e.header?H(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?H(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Ze(e){let t=le(e.source,e.selector,{compare:P});return typeof e.children==`function`?e.children(t):e.children}function Qe(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function $e(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function et(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function tt(){return $e({createAtom:ie,batch:O})}function U(e,t){return typeof e==`function`?e(t):e}function W(e){if(Array.isArray(e))return e.map(W);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?G():{},r=Object.keys(e);for(let t=0;t<r.length;t++){let i=r[t];Object.defineProperty(n,i,{configurable:!0,enumerable:!0,value:W(e[i]),writable:!0})}return n}return e}function G(){return Object.create(null)}function K(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function nt(e){if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function rt(e){return Reflect.ownKeys(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function it(e,t){return at(e,t,3)}function at(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!nt(e)||!nt(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=rt(e),i=rt(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e<r.length;e++){let i=r[e];if(!Object.prototype.propertyIsEnumerable.call(t,i)||!at(a[i],o[i],n-1))return!1}return!0}function q(e,t,n,r=it){let i=`on${t.charAt(0).toUpperCase()}${t.slice(1)}Change`,a=e.options[i];a&&a(e=>{let t=U(n,e);return r(e,t)?e:t})}function ot(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}const st=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e<l.length;e++)if(l[e]!==o[e]){u=!0;break}}return n?.(u),u?(o=l,a?.(),s=e(...l??[]),r?.(s),s):s}};function ct(e){let t=!1;return()=>{if(!t){t=!0;return}e()}}function lt({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return st({...a,...s})}function ut(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function J(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=ut(r);t[n]=a?lt({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function Y(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=ut(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=lt({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function X(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function dt(e){return e.row.getValue(e.column.id)}function ft(e){return e.getValue()??e.table.options.renderFallbackValue}function pt(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}const mt={assignCellPrototype:(e,t)=>{Y(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>dt(e)},cell_renderValue:{fn:e=>ft(e)},cell_getContext:{fn:e=>pt(e),memoDeps:e=>[e]}})}};function ht(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignHeaderPrototype?.(e._headerPrototype,e)}return e._headerPrototype}function gt(e,t,n){let r=ht(e),i=Object.create(r);i.colSpan=0,i.column=t,i.depth=n.depth,i.headerGroup=null,i.id=n.id??t.id,i.index=n.index,i.isPlaceholder=!!n.isPlaceholder,i.placeholderId=n.placeholderId,i.rowSpan=0,i.subHeaders=[];let a=e._headerInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function _t(){return{start:[],end:[]}}function Z(e){let t=e.table.atoms.columnVisibility?.get();if(!t)return!0;let n=e.columns;return n.length?n.some(e=>X(e,`getIsVisible`,Z)):(K(t,e.id)?t[e.id]:void 0)??!0}function vt(e){return e.getAllLeafColumns().filter(e=>X(e,`getIsVisible`,Z))}function yt(e,t=1){let n=t;for(let r=0;r<e.length;r++){let i=e[r];X(i,`getIsVisible`,Z)&&i.columns.length&&(n=Math.max(n,yt(i.columns,t+1)))}return n}function bt(e,t){return e?`${e}_${t}`:String(t)}function xt(e,t,n,r){let i=e??``;return t&&(i=i?`${i}_${t}`:String(t)),n&&(i=i?`${i}_${n}`:n),r&&(i=i?`${i}_${r}`:r),i}function St(e,t){let n=0;for(let r=0;r<e.length;r++)e[r].column===t&&n++;return n}function Ct(e,t,n,r,i,a){let o={depth:t,id:bt(r,t),headers:[]},s=[];for(let i=0;i<e.length;i++){if(!(i in e))continue;let a=e[i],c=s[s.length-1],l=a.column.depth===o.depth,u,d=!1;if(l&&a.column.parent?u=a.column.parent:(u=a.column,d=!0),c&&c.column===u)c.subHeaders.push(a);else{let e=gt(n,u,{id:xt(r,t,u.id,a.id),isPlaceholder:d,placeholderId:d?String(St(s,u)):void 0,depth:t,index:s.length});e.subHeaders.push(a),s.push(e)}o.headers.push(a),a.headerGroup=o}for(let e=0;e<a.length;e++)a[e](o);i.push(o),t>0&&Ct(s,t-1,n,r,i,a)}function wt(e){for(let t=0;t<e.length;t++){let n=e[t];if(!X(n.column,`getIsVisible`,Z))continue;let r=0;if(n.subHeaders.length){wt(n.subHeaders);for(let e=0;e<n.subHeaders.length;e++){let t=n.subHeaders[e];X(t.column,`getIsVisible`,Z)&&(r+=t.colSpan)}}else r=1;if(n.colSpan=r,n.isPlaceholder&&n.subHeaders.length===1&&n.subHeaders[0].column===n.column){let e=1,t=n.subHeaders[0];for(;t;)t.rowSpan=0,e++,t=t.subHeaders.length===1&&t.subHeaders[0].column===n.column?t.subHeaders[0]:void 0;n.rowSpan=e}else n.rowSpan=1}}function Tt(e,t,n,r){let i=yt(e),a=[],o=n._headerGroupInstanceInitFns,s=Array(t.length);for(let e=0;e<t.length;e++)e in t&&(s[e]=gt(n,t[e],{depth:i,index:e}));return Ct(s,i-1,n,r,a,o),a.reverse(),wt(a[0]?.headers??[]),a}function Et(e){if(!e._columnPrototype){e._columnPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignColumnPrototype?.(e._columnPrototype,e)}return e._columnPrototype}function Dt(e,t,n,r){let i={...e.getDefaultColumnDef(),...t},a=i.accessorKey,o=a===void 0?void 0:String(a),s=i.id??o?.replaceAll(`.`,`_`)??(typeof i.header==`string`?i.header:void 0),c;if(i.accessorFn)c=i.accessorFn;else if(a!==void 0)if(typeof a==`string`&&a.includes(`.`)){let e=a.split(`.`);c=t=>{let n=t;for(let t=0;t<e.length;t++){let r=e[t];n=n?.[r]}return n}}else c=e=>e[i.accessorKey];if(!s)throw Error();let l=Et(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e<d.length;e++)d[e](u);return u}function Ot(e){let t=e.atoms.columnOrder?.get();return n=>{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t<n.length;t++){let r=n[t];e.set(r.id,r)}for(let n=0;n<t.length;n++){let i=t[n],a=e.get(i);a&&(r.push(a),e.delete(i))}for(let t=0;t<n.length;t++){let i=n[t];e.has(i.id)&&r.push(i)}}return kt(e,r)}}function kt(e,t){let n=e.atoms.grouping?.get()??[],{groupedColumnMode:r}=e.options;if(!n.length||!r)return t;let i=t.filter(e=>!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;e<t.length;e++){let n=t[e];a.set(n.id,n)}let o=[];for(let e=0;e<n.length;e++){let t=a.get(n[e]);t&&o.push(t)}return[...o,...i]}function At(e){return[e,...e.columns.flatMap(e=>e.getFlatColumns())]}function jt(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return X(e.table,`getOrderColumns`,Ot)(t)}return[e]}function Mt(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function Nt(e,t,n,r=0){let i=Array(t.length);for(let a=0;a<t.length;a++){if(!(a in t))continue;let o=t[a],s=Dt(e,o,r,n),c=o;s.columns=c.columns?Nt(e,c.columns,s,r+1):[],i[a]=s}return i}function Pt(e){return Nt(e,e.options.columns)}function Ft(e){return e.getAllColumns().flatMap(e=>e.getFlatColumns())}function It(e){let t=G(),n=e.getAllFlatColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function Lt(e){let t=e.getAllColumns().flatMap(e=>e.getLeafColumns());return X(e,`getOrderColumns`,Ot)(t)}function Rt(e){let t=G(),n=e.getAllLeafColumns();for(let e=0;e<n.length;e++){let r=n[e];t[r.id]=r}return t}function zt(e,t){return e.getAllFlatColumnsById()[t]}const Bt={assignColumnPrototype:(e,t)=>{Y(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>At(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>jt(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{J(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Mt(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>Pt(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Ft(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>It(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Lt(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Rt(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>zt(e,t)}})}};function Vt(e,t){for(let n=0;n<e.subHeaders.length;n++)Vt(e.subHeaders[n],t);t.push(e)}function Ht(e){let t=[];return Vt(e,t),t}function Ut(e){return{column:e.column,header:e,table:e.column.table}}function Wt(e){let{start:t,end:n}=e.atoms.columnPinning?.get()??_t(),r=e.getAllColumns(),i=X(e,`getVisibleLeafColumns`,vt);if(!t.length&&!n.length)return Tt(r,i,e);let a=e.getAllLeafColumnsById(),o=[];for(let e=0;e<t.length;e++){let n=a[t[e]];n&&X(n,`getIsVisible`,Z)&&o.push(n)}let s=[];for(let e=0;e<n.length;e++){let t=a[n[e]];t&&X(t,`getIsVisible`,Z)&&s.push(t)}let c=i.filter(e=>!t.includes(e.id)&&!n.includes(e.id));return Tt(r,[...o,...c,...s],e)}function Gt(e){return[...e.getHeaderGroups()].reverse()}function Kt(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e<t.length;e++){let r=t[e].headers;for(let e=0;e<r.length;e++)n.push(r[e])}return n}function qt(e){let t=e.getHeaderGroups()[0]?.headers??[],n=[];for(let e=0;e<t.length;e++){let r=t[e].getLeafHeaders();for(let e=0;e<r.length;e++)n.push(r[e])}return n}const Jt={assignHeaderPrototype:(e,t)=>{Y(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>Ht(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>Ut(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{J(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>Wt(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>Gt(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>Kt(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>qt(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function Yt(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignRowPrototype?.(e._rowPrototype,e)}return e._rowPrototype}const Xt=(e,t,n,r,i,a,o)=>{let s=Yt(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=G(),c._valuesCache=G(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;e<l.length;e++)l[e](c);return c};function Zt(){return[]}function Qt(e,t){q(e,`cellSelection`,t?Zt():W(e.initialState.cellSelection)??Zt())}function $t(e){e.atoms.cellSelection&&(e.options.autoResetAll??e.options.autoResetCellSelection??!0)&&e._reactivity.schedule(()=>Qt(e))}function en(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>tn(e))}function tn(e,t){let n=e.initialState.expanded;q(e,`expanded`,t?G():n===!0||Object.assign(G(),W(n??{})))}function nn(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??0)===0)return;on(e,!0)}}function rn(e,t){q(e,`pagination`,t)}function an(e,t){rn(e,n=>{let r=U(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function on(e,t){an(e,t?0:e.initialState.pagination?.pageIndex??0)}function sn(e,t){q(e,`sorting`,t)}function cn(e,t){sn(e,t?[]:W(e.initialState.sorting??[]))}function ln(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&cn(e)}function un(){return e=>lt({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>fn(e,e.options.data),onAfterUpdate:ct(()=>{en(e),nn(e),ln(e),$t(e)})})}function dn(e,t,n,r=0,i){let a=[];for(let o=0;o<n.length;o++){let s=n[o],c=Xt(e,e.getRowId(s,o,i),s,o,r,void 0,i?.id);t.flatRows.push(c),t.rowsById[c.id]=c,a.push(c),e.options.getSubRows&&(c.originalSubRows=e.options.getSubRows(s,o),c.originalSubRows?.length&&(c.subRows=dn(e,t,c.originalSubRows,r+1,c)))}return a}function fn(e,t){let n={rows:[],flatRows:[],rowsById:G()};return n.rows=dn(e,n,t),n}function pn(e){return e._rowModels.coreRowModel||(e._rowModels.coreRowModel=e.options.features.coreRowModel?.(e)??un()(e)),e._rowModels.coreRowModel()}function mn(e){return e.getCoreRowModel()}function hn(e){return e._rowModels.filteredRowModel||(e._rowModels.filteredRowModel=e.options.features.filteredRowModel?.(e)),e.options.manualFiltering||!e._rowModels.filteredRowModel?e.getPreFilteredRowModel():e._rowModels.filteredRowModel()}function gn(e){return e.getFilteredRowModel()}function _n(e){return e._rowModels.groupedRowModel||(e._rowModels.groupedRowModel=e.options.features.groupedRowModel?.(e)),e.options.manualGrouping||!e._rowModels.groupedRowModel?e.getPreGroupedRowModel():e._rowModels.groupedRowModel()}function vn(e){return e.getGroupedRowModel()}function yn(e){return e._rowModels.sortedRowModel||(e._rowModels.sortedRowModel=e.options.features.sortedRowModel?.(e)),e.options.manualSorting||!e._rowModels.sortedRowModel?e.getPreSortedRowModel():e._rowModels.sortedRowModel()}function bn(e){return e.getSortedRowModel()}function xn(e){return e._rowModels.expandedRowModel||(e._rowModels.expandedRowModel=e.options.features.expandedRowModel?.(e)),e.options.manualExpanding||!e._rowModels.expandedRowModel?e.getPreExpandedRowModel():e._rowModels.expandedRowModel()}function Sn(e){return e.getExpandedRowModel()}function Cn(e){return e._rowModels.paginatedRowModel||(e._rowModels.paginatedRowModel=e.options.features.paginatedRowModel?.(e)),e.options.manualPagination||!e._rowModels.paginatedRowModel?e.getPrePaginatedRowModel():e._rowModels.paginatedRowModel()}function wn(e){return e.getPaginatedRowModel()}const Tn={constructTableAPIs:e=>{J(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>pn(e)},table_getPreFilteredRowModel:{fn:()=>mn(e)},table_getFilteredRowModel:{fn:()=>hn(e)},table_getPreGroupedRowModel:{fn:()=>gn(e)},table_getGroupedRowModel:{fn:()=>_n(e)},table_getPreSortedRowModel:{fn:()=>vn(e)},table_getSortedRowModel:{fn:()=>yn(e)},table_getPreExpandedRowModel:{fn:()=>bn(e)},table_getExpandedRowModel:{fn:()=>xn(e)},table_getPrePaginatedRowModel:{fn:()=>Sn(e)},table_getPaginatedRowModel:{fn:()=>Cn(e)},table_getRowModel:{fn:()=>wn(e)}})}};function En(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n<t.length;n++)t[n].assignCellPrototype?.(e._cellPrototype,e)}return e._cellPrototype}function Dn(e,t,n){let r=En(n),i=Object.create(r);i.column=e,i.id=`${t.id}_${e.id}`,i.row=t;let a=n._cellInstanceInitFns;for(let e=0;e<a.length;e++)a[e](i);return i}function On(e){let t=e.table.getRowsInDisplayOrder(),n=e._displayIndexCache;return t[n]===e?n:-1}function kn(e){let t=e.getPrePaginatedRowModel().rows;if(e.options.paginateExpandedRows===!1){let e=[],n=t=>{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;e<t.length;e++)t[e]._displayIndexCache=e;return t}function An(e,t){if(K(e._valuesCache,t))return e._valuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return e._valuesCache[t]=n.accessorFn(e.original,e.index),e._valuesCache[t]}function jn(e,t){if(K(e._uniqueValuesCache,t))return e._uniqueValuesCache[t];let n=e.table.getColumn(t);if(n?.accessorFn)return n.columnDef.getUniqueValues?(e._uniqueValuesCache[t]=n.columnDef.getUniqueValues(e.original,e.index),e._uniqueValuesCache[t]):(e._uniqueValuesCache[t]=[e.getValue(t)],e._uniqueValuesCache[t])}function Mn(e,t){return e.getValue(t)??e.table.options.renderFallbackValue}function Nn(e){return ot(e.subRows,e=>e.subRows)}function Pn(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e<t.length;e++)n=Math.max(n,t[e].depth);return n}function Fn(e){if(e.parentId)return e.table.getCoreRowModel().rowsById[e.parentId]??e.table.getRow(e.parentId,!0)}function In(e){let t=[],n=e;for(;;){let e=n.getParentRow();if(!e)break;t.push(e),n=e}return t.reverse()}function Ln(e){let t=e.table.getAllLeafColumns(),n=e._cellsCache;n||=e._cellsCache=new WeakMap;let r=Array(t.length);for(let i=0;i<t.length;i++){let a=t[i],o=n.get(a);o||(o=Dn(a,e,e.table),n.set(a,o)),r[i]=o}return r}function Rn(e){let t=G(),n=e.getAllCells();for(let e=0;e<n.length;e++){let r=n[e];t[r.column.id]=r}return t}function zn(e,t,n,r){return t.options.getRowId?.(e,n,r)??(r?`${r.id}.${n}`:String(n))}function Bn(e,t,n){let r=(n?e.getPrePaginatedRowModel():e.getRowModel()).rowsById[t];if(!r&&(r=e.getCoreRowModel().rowsById[t],!r))throw Error();return r}const Vn={assignRowPrototype:(e,t)=>{Y(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>On(e)},row_getAllCellsByColumnId:{fn:e=>Rn(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Ln(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>Nn(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Fn(e)},row_getParentRows:{fn:e=>In(e)},row_getUniqueValues:{fn:(e,t)=>jn(e,t)},row_getValue:{fn:(e,t)=>An(e,t)},row_renderValue:{fn:(e,t)=>Mn(e,t)}})},constructTableAPIs:e=>{J(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>kn(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>zn(t,e,n,r)},table_getRow:{fn:(t,n)=>Bn(e,t,n)},table_getMaxSubRowDepth:{fn:()=>Pn(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function Hn(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function Un(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{Hn(e,t,n),e._reactivity.commit?.()})}function Wn(e){let t=W(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;r<n.length;r++){let i=n[r];e.baseAtoms[i].set(t[i])}});let n=Object.values(e._features);for(let t=0;t<n.length;t++)n[t].resetTableInstanceData?.(e)}function Gn(e,t){let{features:n,atoms:r,initialState:i}=e.options;if(!e.options.mergeOptions)return{...e.options,...t,features:n,atoms:r,initialState:i};let a=e.options.mergeOptions(e.options,t),o={...Object.getOwnPropertyDescriptors(a)};return Object.defineProperties(Object.create(Object.getPrototypeOf(a)),{...o,features:{value:n,enumerable:!0,configurable:!0,writable:!0},atoms:{value:r,enumerable:!0,configurable:!0,writable:!0},initialState:{value:i,enumerable:!0,configurable:!0,writable:!0}})}function Kn(e,t,n){let r=Gn(e,U(t,e.options));e.optionsStore?e.optionsStore.set(()=>r):e.options=r,n?.syncExternalState!==!1&&Un(e,r.state??null)}const qn={coreCellsFeature:mt,coreColumnsFeature:Bt,coreHeadersFeature:Jt,coreRowModelsFeature:Tn,coreRowsFeature:Vn,coreTablesFeature:{constructTableAPIs:e=>{J(`coreTablesFeature`,e,{table_reset:{fn:()=>Wn(e)},table_setOptions:{fn:t=>Kn(e,t)}})}}};function Jn(e){return e}function Yn(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),W(t)}function Xn(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...qn,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=Yn(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e<x.length;e++){let n=x[e];v.baseAtoms[n]=t.createWritableAtom(v.initialState[n],{debugName:`table/baseAtoms/${n}`}),v.atoms[n]=t.createReadonlyAtom(()=>{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&K(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}Hn(v),v.store=Qe(t.createReadonlyAtom(()=>{let e={};for(let t=0;t<x.length;t++){let n=x[t];e[n]=v.atoms[n].get()}return e},{compare:P,debugName:`table/store`}));for(let e=0;e<y.length;e++){let t=y[e];t.initTableInstanceData?.(v),t.initCellInstanceData&&v._cellInstanceInitFns.push(t.initCellInstanceData.bind(t)),t.initColumnInstanceData&&v._columnInstanceInitFns.push(t.initColumnInstanceData.bind(t)),t.initHeaderGroupInstanceData&&v._headerGroupInstanceInitFns.push(t.initHeaderGroupInstanceData.bind(t)),t.initHeaderInstanceData&&v._headerInstanceInitFns.push(t.initHeaderInstanceData.bind(t)),t.initRowInstanceData&&v._rowInstanceInitFns.push(t.initRowInstanceData.bind(t)),t.constructTableAPIs?.(v)}return v}const Zn=typeof window>`u`?L.useEffect:L.useLayoutEffect;function Qn(e,t){let[{table:n,rootSource:r}]=(0,L.useState)(()=>{let t=Xn({...e,features:{coreReactivityFeature:tt(),...e.features}});return t.Subscribe=(e=>Ze({...e,source:e.source??t.store})),t.FlexRender=Xe,{table:t,rootSource:et(t.store,P)}}),i=n;Kn(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),s=le(r,t,{compare:P});return Zn(()=>{r.markCommitted(o),Un(i,a??null,P)}),(0,L.useMemo)(()=>({...n,options:e,state:s}),[n,e,s])}function $n({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full overflow-x-auto`,children:(0,B.jsx)(`table`,{"data-slot":`table`,className:d(`w-full caption-bottom text-sm`,e),...t})})}function er({className:e,...t}){return(0,B.jsx)(`thead`,{"data-slot":`table-header`,className:d(`[&_tr]:border-b`,e),...t})}function tr({className:e,...t}){return(0,B.jsx)(`tbody`,{"data-slot":`table-body`,className:d(`[&_tr:last-child]:border-0`,e),...t})}function nr({className:e,...t}){return(0,B.jsx)(`tr`,{"data-slot":`table-row`,className:d(`border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted`,e),...t})}function rr({className:e,...t}){return(0,B.jsx)(`th`,{"data-slot":`table-head`,className:d(`h-10 px-2 text-start align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pe-0`,e),...t})}function ir({className:e,...t}){return(0,B.jsx)(`td`,{"data-slot":`table-cell`,className:d(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0`,e),...t})}const ar=se(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function or({className:e,variant:t=`default`,render:n,...r}){return ge({defaultTagName:`span`,props:D({className:d(ar({variant:t}),e)},r),render:n,state:{slot:`badge`,variant:t}})}const sr=Jn({});function cr({rows:e,kind:t,options:n,filtered:r}){let{onTenantSelect:i,onTenantUserSelect:a,showAdmin:o}=n;return(0,B.jsx)(lr,{rows:e,columns:(0,L.useMemo)(()=>[{accessorKey:`external_id`,header:`ID`,cell:({row:e})=>(0,B.jsx)(`span`,{className:`line-clamp-3 break-all font-mono text-xs whitespace-normal`,children:e.original.external_id})},{id:`name`,header:t===`tenants`?`Tenant`:`User`,cell:({row:e})=>{let n=e.original,r=n.name||n.external_id;return(0,B.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3 py-1`,children:[t===`users`&&(0,B.jsx)(`span`,{"data-slot":`directory-avatar`,"aria-hidden":!0,className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-medium uppercase`,children:r.trim().split(/\s+/).slice(0,2).map(e=>Array.from(e)[0]).join(``)}),(0,B.jsx)(`span`,{className:`line-clamp-3 min-w-0 text-start whitespace-normal [overflow-wrap:anywhere]`,children:r})]})}},...t===`users`&&o?[{id:`admin`,header:`Stored admin`,cell:({row:e})=>(0,B.jsx)(or,{variant:`outline`,title:`Stored status does not grant or revoke signed JWT authority`,children:`admin`in e.original&&e.original.admin?`Admin`:`User`})}]:[],{accessorKey:`metadata`,header:`Metadata`,cell:({row:e})=>{let t=Object.entries(e.original.metadata);return t.length?(0,B.jsx)(`dl`,{className:`space-y-1 text-xs whitespace-normal`,children:t.map(([e,t])=>(0,B.jsxs)(`div`,{className:`flex gap-1`,children:[(0,B.jsxs)(`dt`,{className:`line-clamp-3 max-w-1/2 shrink-0 break-all text-muted-foreground`,children:[e,`:`]}),(0,B.jsx)(`dd`,{className:`line-clamp-6 min-w-0 [overflow-wrap:anywhere]`,children:typeof t==`string`?t:JSON.stringify(t)})]},e))}):(0,B.jsx)(`span`,{className:`text-muted-foreground`,children:`No metadata`})}},{accessorKey:`created_at`,header:`Created`,cell:({row:e})=>(0,B.jsx)(`time`,{dateTime:e.original.created_at,title:e.original.created_at,className:`whitespace-nowrap text-muted-foreground`,children:new Date(e.original.created_at).toLocaleDateString()})},...(t===`users`?a:i)?[{id:`actions`,header:``,cell:({row:e})=>{let t=e.original;return(0,B.jsx)(x,{variant:`ghost`,size:`sm`,onClick:()=>`tenant_id`in t?a?.(t):i?.(t),"aria-label":`Open ${t.name||t.external_id}`,title:`Open`,children:(0,B.jsx)(pe,{"aria-hidden":!0})})}}]:[]],[t,i,a,o]),emptyText:r?`No records match your filters.`:`No records yet.`})}function lr({rows:e,columns:t,emptyText:n,getRowId:r=e=>e.id}){let i=(0,L.useId)(),a=Qn({features:sr,data:e,columns:t,getRowId:r});return(0,B.jsxs)($n,{role:`table`,className:`block table-fixed @4xl/directory:table [&_th]:h-12 [&_th]:px-4 [&_td]:px-4 [&_td]:py-3`,children:[(0,B.jsx)(er,{role:`rowgroup`,className:`sr-only @4xl/directory:not-sr-only`,children:a.getHeaderGroups().map(e=>(0,B.jsx)(nr,{role:`row`,children:e.headers.map(e=>(0,B.jsx)(rr,{id:`${i}-${e.column.id}`,role:`columnheader`,scope:`col`,className:e.column.id===`actions`?`w-16`:void 0,children:(0,B.jsx)(a.FlexRender,{header:e})},e.id))},e.id))}),(0,B.jsxs)(tr,{role:`rowgroup`,className:`block @4xl/directory:table-row-group`,children:[a.getRowModel().rows.map(e=>(0,B.jsx)(nr,{role:`row`,className:`flex flex-col py-2 @4xl/directory:table-row @4xl/directory:py-0`,children:e.getAllCells().map(e=>(0,B.jsxs)(ir,{role:`cell`,headers:`${i}-${e.column.id}`,className:e.column.id===`name`||e.column.id===`title`?`order-first block min-w-0 font-medium whitespace-normal @4xl/directory:table-cell @4xl/directory:font-normal`:`block min-w-0 whitespace-normal @4xl/directory:table-cell`,children:[e.column.id!==`name`&&e.column.id!==`title`&&e.column.id!==`actions`&&(0,B.jsx)(`span`,{"aria-hidden":!0,className:`mb-1 block text-xs font-medium text-muted-foreground @4xl/directory:hidden`,children:e.column.columnDef.header}),(0,B.jsx)(a.FlexRender,{cell:e})]},e.id))},e.id)),!e.length&&(0,B.jsx)(nr,{role:`row`,className:`block @4xl/directory:table-row`,children:(0,B.jsx)(ir,{role:`cell`,colSpan:a.getAllLeafColumns().length,className:`block content-center h-32 text-center text-muted-foreground @4xl/directory:table-cell`,children:n})})]})]})}function ur({session:e,tenantId:t,q:n,size:r,ErrorFeedback:i,LoadingFeedback:a,Pagination:o}){let[s,c]=(0,L.useState)({}),[l,u]=(0,L.useState)(null),d=R({queryKey:[`threads`,t,n,r,s],queryFn:({signal:i})=>Ie(e,{tenantId:t,q:n,size:r,cursor:s},i)}),f=(0,L.useMemo)(()=>[{id:`participants`,header:`Participants`,cell:({row:e})=>(0,B.jsx)(`div`,{className:`min-w-0 max-w-64 space-y-2 @4xl/directory:min-w-40`,children:e.original.participants.length===0?`No participants`:e.original.participants.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`line-clamp-3 whitespace-normal [overflow-wrap:anywhere]`,title:e.name||e.external_id,children:e.name||e.external_id}),e.name&&(0,B.jsx)(`div`,{className:`line-clamp-3 break-all font-mono text-xs text-muted-foreground`,title:e.external_id,children:e.external_id})]},e.external_id))})},{id:`title`,header:`Conversation`,cell:({row:e})=>(0,B.jsx)(x,{variant:`link`,className:`h-auto min-w-0 max-w-full @4xl/directory:min-w-48 @4xl/directory:max-w-96 justify-start p-0 text-start whitespace-normal break-words`,onClick:()=>u(e.original),children:e.original.title||`Untitled conversation`})},{id:`activity`,header:`Last activity`,cell:({row:e})=>(0,B.jsx)(`time`,{className:`text-muted-foreground`,dateTime:e.original.updated_at,title:e.original.updated_at,children:new Date(e.original.updated_at).toLocaleString()})}],[]);return l?(0,B.jsx)(Ke,{session:e,thread:l,onClose:()=>u(null),ErrorFeedback:i,LoadingFeedback:a}):(0,B.jsxs)(`div`,{"data-slot":`directory-page`,"aria-busy":d.isFetching,className:`min-w-0 space-y-4`,children:[d.isError?(0,B.jsx)(i,{error:d.error,retry:()=>void d.refetch()}):d.isPending?(0,B.jsx)(a,{}):(0,B.jsx)(`div`,{"data-slot":`directory-table`,className:`overflow-hidden rounded-lg border border-foreground/10 bg-card text-card-foreground`,children:(0,B.jsx)(lr,{rows:d.data.items,columns:f,getRowId:e=>`${e.tenant_id}:${e.id}`,emptyText:n?`No conversations match your filters.`:`No conversations yet.`})}),(0,B.jsx)(`div`,{"data-slot":`directory-pagination`,children:(0,B.jsx)(o,{page:d.isError?void 0:d.data,busy:d.isFetching,onPage:c})})]})}const dr={tenants:{title:`Tenants`,searchLabel:`Search by name or external ID`,Icon:Te,tenantPrompt:null,showAdminFilter:!1},users:{title:`Tenant users`,searchLabel:`Search by name or external ID`,Icon:De,tenantPrompt:`Select a tenant to view its users.`,showAdminFilter:!0},threads:{title:`Conversations`,Icon:Ee,searchLabel:`Search conversations`,tenantPrompt:`Select a tenant to view its conversations.`,showAdminFilter:!1}};function fr({options:e,kind:t,session:n}){let r=dr[t],{Icon:i}=r,a=r.tenantPrompt!==null,o=de(),s=Oe(),[c,l]=(0,L.useState)(null),[u,d]=(0,L.useState)(``),[f]=ne(u.trim(),{wait:300}),[p,m]=(0,L.useState)(`all`),h=e.showAdmin?p:`all`,[g,_]=(0,L.useState)(e.pageSize??20),[v,y]=(0,L.useState)(e.pageSize);v!==e.pageSize&&(y(e.pageSize),_(e.pageSize??20));let b=e.scope??`tenant`,S=e.tenantId!==void 0||e.tenantExternalId!==void 0,C=S||a&&b===`tenant`,w=R({queryKey:[`identity-tenant`,e.tenantId,e.tenantExternalId],enabled:C,queryFn:({signal:e})=>Ne(n,e)}),E=C?w.data:c,D=E?.id,O=a&&b===`organization`&&!S,k=(a||C)&&!D,A=e.title??r.title;return(0,B.jsxs)(`section`,{"data-slot":`directory`,"aria-label":A,className:`@container/directory flex h-full min-w-0 flex-col gap-4 overflow-y-auto text-foreground`,children:[e.showHeader!==!1&&(0,B.jsxs)(`header`,{"data-slot":`directory-header`,className:`flex items-center gap-3`,children:[(0,B.jsx)(i,{size:22,"aria-hidden":!0}),(0,B.jsxs)(`div`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:[(0,B.jsx)(`h2`,{className:`font-heading text-lg font-semibold`,children:A}),(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[E?`${E.name||E.external_id} · ${E.external_id}`:b===`tenant`?`Current tenant`:`Current organization`,` `,`· Read-only directory`]})]})]}),O&&(0,B.jsx)(pr,{session:n,selected:c,onSelect:t=>{t?.id!==c?.id&&(l(t),e.onTenantChange?.(t))}}),(0,B.jsxs)(`div`,{"data-slot":`directory-toolbar`,className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsx)(T,{type:`search`,disabled:k,"aria-label":r.searchLabel,placeholder:`${r.searchLabel}…`,value:u,maxLength:255,onChange:e=>d(e.target.value),className:`w-full min-w-0 max-w-full @lg/directory:w-72`}),r.showAdminFilter&&e.showAdmin&&(0,B.jsxs)(Be,{disabled:k,"aria-label":`Stored admin status`,value:p,onChange:e=>m(e.target.value),children:[(0,B.jsx)(V,{value:`all`,children:`All users`}),(0,B.jsx)(V,{value:`true`,children:`Admins`}),(0,B.jsx)(V,{value:`false`,children:`Non-admins`})]}),(0,B.jsxs)(`div`,{"data-slot":`directory-page-controls`,className:`ms-auto flex shrink-0 items-center gap-2`,children:[(0,B.jsx)(Be,{disabled:k,"aria-label":`Rows per page`,className:`min-w-32`,value:g,onChange:e=>_(Number(e.target.value)),children:[20,50,100].map(e=>(0,B.jsxs)(V,{value:e,children:[e,` per page`]},e))}),(0,B.jsx)(x,{variant:`outline`,size:`icon`,"aria-label":`Refresh directory`,title:`Refresh directory`,disabled:s>0,onClick:()=>void o.refetchQueries({type:`active`}),children:(0,B.jsx)(Ce,{"aria-hidden":!0,className:s>0?`animate-spin motion-reduce:animate-none`:void 0})})]})]}),C&&w.isError?(0,B.jsx)(_r,{error:w.error,retry:()=>void w.refetch()}):C&&w.isPending?(0,B.jsx)(gr,{}):k?(0,B.jsx)(`div`,{"data-slot":`directory-empty`,className:`space-y-3 rounded-lg border border-foreground/10 bg-card p-8 text-center text-card-foreground`,children:(0,B.jsx)(`p`,{role:`status`,className:`text-muted-foreground`,children:O?r.tenantPrompt:`No persisted tenant found. Create the tenant, then refresh.`})}):t===`threads`?(0,B.jsx)(ur,{session:n,tenantId:D,q:f,size:g,ErrorFeedback:_r,LoadingFeedback:gr,Pagination:hr},JSON.stringify([D,f,g])):(0,B.jsx)(mr,{admin:h,options:e,kind:t,session:n,tenantId:D,q:f,size:g},JSON.stringify([D,f,h,g]))]})}function pr({session:e,selected:t,onSelect:n}){let r=(0,L.useId)();return(0,B.jsxs)(`div`,{"data-slot":`directory-tenant-picker`,className:`w-full min-w-0 space-y-1.5 [&_input]:min-w-0 [&_[data-slot=input-group-addon]]:me-0 @lg/directory:max-w-sm`,children:[(0,B.jsx)(`label`,{htmlFor:r,"data-slot":`directory-tenant-label`,className:`block text-sm font-medium`,children:`Tenant`}),(0,B.jsx)(ze,{id:r,label:`Tenant`,placeholder:`Search tenants…`,value:t,onValueChange:n,showClear:!0,itemLabel:e=>`${e.name||e.external_id} · ${e.external_id}`,loadPage:(t,n,r)=>Pe(e,{q:t,...n?{page_after:n}:{}},r)})]})}function mr({options:e,kind:t,session:n,tenantId:r,q:i,admin:a,size:o}){let[s,c]=(0,L.useState)({}),l=R({queryKey:[t,r,i,a,o,s],queryFn:({signal:e})=>Fe(n,{kind:t,tenantId:r,q:i,admin:a,size:o,cursor:s},e)});return(0,B.jsxs)(`div`,{"data-slot":`directory-page`,"aria-busy":l.isFetching,className:`min-w-0 space-y-4`,children:[l.isError?(0,B.jsx)(_r,{error:l.error,retry:()=>void l.refetch()}):l.isPending?(0,B.jsx)(gr,{}):(0,B.jsx)(`div`,{"data-slot":`directory-table`,className:`overflow-hidden rounded-lg border border-foreground/10 bg-card text-card-foreground`,children:(0,B.jsx)(cr,{rows:l.data.items,kind:t,options:e,filtered:!!i||a!==`all`},JSON.stringify(s))}),(0,B.jsx)(`div`,{"data-slot":`directory-pagination`,children:(0,B.jsx)(hr,{page:l.isError?void 0:l.data,busy:l.isFetching,onPage:c})})]})}function hr({page:e,busy:t,onPage:n}){return(0,B.jsxs)(`nav`,{"aria-label":`Directory pages`,className:`grid grid-cols-2 justify-end gap-2 @lg/directory:flex`,children:[(0,B.jsx)(x,{variant:`outline`,size:`sm`,disabled:t||!e?.page_before,onClick:()=>n({page_before:e.page_before}),children:`Previous`}),(0,B.jsx)(x,{variant:`outline`,size:`sm`,disabled:t||!e?.page_after,onClick:()=>n({page_after:e.page_after}),children:`Next`})]})}function gr(){return(0,B.jsx)(`div`,{role:`status`,"aria-label":`Loading directory`,className:`space-y-3 p-4`,children:[0,1,2].map(e=>(0,B.jsx)(Ve,{className:`h-10 w-full`},e))})}function _r({error:e,retry:t}){let n=b(e)?e:void 0,r=n?.status,i={401:`Authentication required`,403:`Access denied`,404:`Tenant not found`,429:`Too many requests`},a=n?.headers.get(`retry-after`);return(0,B.jsxs)(Ue,{variant:`destructive`,children:[(0,B.jsx)(We,{children:i[r??0]??`Unable to load directory`}),(0,B.jsx)(Ge,{children:r===429?`Please retry after ${a??`a few`} seconds.`:e.message}),(0,B.jsx)(x,{variant:`outline`,size:`sm`,onClick:t,children:`Retry`})]})}function vr(e,t,n,r){let i=document.createElement(`style`);i.textContent=ue+(n.customCss??``),e.append(i);let a={root:(0,ke.createRoot)(t),style:i,client:new S({defaultOptions:{queries:{retry:!1,refetchOnWindowFocus:!1,refetchOnReconnect:!1,gcTime:0}}}),options:n,kind:r,revision:0,session:Ae(n,()=>$(a))};return Sr(a),Q(a),a}function Q(e){let t=N(e.session.auth);e.root.render((0,B.jsx)(M,{client:e.client,children:t.status===`error`?(0,B.jsxs)(`div`,{role:`alert`,className:`p-4 text-sm`,children:[(0,B.jsx)(`p`,{children:t.error.message}),(0,B.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>yr(e),children:`Retry authentication`})]}):(0,B.jsx)(fr,{options:e.options,kind:e.kind,session:e.session},e.revision)}))}function yr(e){N(e.session.auth).status===`error`?A({...e.session.auth,force:!0}).catch(()=>{}):e.client.invalidateQueries()}function $(e){e.unsubscribeAuthentication?.(),e.stopAuthentication?.(),Me(e.session),e.client.clear(),e.session=Ae(e.options,()=>$(e)),e.revision++,Sr(e),Q(e)}function br(e,t){let n=e.options;n.customCss!==t.customCss&&(e.style.textContent=ue+(t.customCss??``));let r=n.apiUrl!==t.apiUrl;if(e.options=t,r)return $(e);e.session.options=t,j(e.session.auth,{apiUrl:t.apiUrl,fetchAstralBeamToken:t.fetchAstralBeamToken}),(n.scope!==t.scope||n.tenantId!==t.tenantId||n.tenantExternalId!==t.tenantExternalId)&&(e.client.clear(),e.revision++),Q(e)}function xr(e){e.unsubscribeAuthentication?.(),e.stopAuthentication?.(),Me(e.session),e.client.clear(),e.root.unmount(),e.style.remove()}function Sr(e){let t;e.unsubscribeAuthentication=fe(e.session.auth,()=>{let n=N(e.session.auth);if(n.status===`error`)e.client.clear(),e.revision++;else if(n.status===`ready`){let r=ce(n.currentUser,e.session.auth.session.cached.tenantAdmin);t!==void 0&&t!==r&&(e.session.abortController.abort(),e.session.abortController=new AbortController,e.session.identity=void 0,e.client.clear(),e.revision++),t=r}Q(e)}),e.stopAuthentication=I(e.session.auth)}export{xr as disposeListing,yr as refreshListing,vr as renderListing,$ as resetListing,br as updateListing};
package/dist/react.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as TenantUserRecordEncoded, b as TenantRecordEncoded } from "./api-DUe8JSVU.js";
2
- import { C as AstralBeamChatState, I as AstralBeamChatColorScheme$1, L as AstralBeamChatTheme$1, R as AstralBeamTokenSource$1, S as AstralBeamChatCoreOptions, x as AstralBeamChatCore } from "./index-DUznpmNz.js";
1
+ import { _t as TenantUserRecordEncoded, mt as TenantRecordEncoded } from "./index-CfGnT6Od.js";
2
+ import { D as AstralBeamChatState, E as AstralBeamChatCoreOptions, G as AstralBeamTokenSource$1, T as AstralBeamChatCore, U as AstralBeamChatColorScheme$1, W as AstralBeamChatTheme$1 } from "./index-NT05_Yw_.js";
3
3
  import { CSSProperties, ReactNode } from "react";
4
- import { AstralBeamChatAttachmentOptions, AstralBeamChatColorScheme, AstralBeamChatTheme, AstralBeamTenantListHandle as AstralBeamTenantListHandle$1, AstralBeamTenantUserListHandle as AstralBeamTenantUserListHandle$1, AstralBeamTokenRequest, AstralBeamTokenSource, InferParameters, JsonSchemaObject, MountAstralBeamChatOptions, MountAstralBeamTenantListOptions, MountAstralBeamTenantUserListOptions, ParametersSchema, ToolDefinition, WidgetDefinition as WidgetDefinition$1, defineTool } from "@astralbeam/sdk/client";
4
+ import { AstralBeamChatAttachmentOptions, AstralBeamChatColorScheme, AstralBeamChatTheme, AstralBeamTenantListHandle as AstralBeamTenantListHandle$1, AstralBeamTenantUserListHandle as AstralBeamTenantUserListHandle$1, AstralBeamThreadListHandle as AstralBeamThreadListHandle$1, AstralBeamTokenRequest, AstralBeamTokenSource, InferParameters, JsonSchemaObject, MountAstralBeamChatOptions, MountAstralBeamTenantListOptions, MountAstralBeamTenantUserListOptions, MountAstralBeamThreadListOptions, ParametersSchema, ToolDefinition, WidgetDefinition as WidgetDefinition$1, defineTool } from "@astralbeam/sdk/client";
5
5
 
6
6
  //#region src/react/listings.d.ts
7
7
  type ContainerProps = {
@@ -12,6 +12,8 @@ type AstralBeamTenantListProps = MountAstralBeamTenantListOptions & ContainerPro
12
12
  type AstralBeamTenantUserListProps = MountAstralBeamTenantUserListOptions & ContainerProps;
13
13
  declare const AstralBeamTenantList: import("react").ForwardRefExoticComponent<MountAstralBeamTenantListOptions & ContainerProps & import("react").RefAttributes<AstralBeamTenantListHandle$1>>;
14
14
  declare const AstralBeamTenantUserList: import("react").ForwardRefExoticComponent<MountAstralBeamTenantUserListOptions & ContainerProps & import("react").RefAttributes<AstralBeamTenantUserListHandle$1>>;
15
+ type AstralBeamThreadListProps = MountAstralBeamThreadListOptions & ContainerProps;
16
+ declare const AstralBeamThreadList: import("react").ForwardRefExoticComponent<MountAstralBeamThreadListOptions & ContainerProps & import("react").RefAttributes<AstralBeamThreadListHandle$1>>;
15
17
  //#endregion
16
18
  //#region src/core/listings.d.ts
17
19
  interface AstralBeamListingCoreOptions {
@@ -48,6 +50,10 @@ interface MountAstralBeamTenantUserListOptions$1 extends AstralBeamListingOption
48
50
  showAdmin?: boolean | undefined;
49
51
  onTenantUserSelect?: ((user: TenantUserRecordEncoded) => void) | undefined;
50
52
  }
53
+ interface MountAstralBeamThreadListOptions$1 extends AstralBeamListingOptions {
54
+ onTenantChange?: ((tenant: TenantRecordEncoded | null) => void) | undefined;
55
+ }
56
+ type AstralBeamThreadListHandle = AstralBeamListingHandle<MountAstralBeamThreadListOptions$1>;
51
57
  interface AstralBeamListingHandle<T extends AstralBeamListingOptions = AstralBeamListingOptions> {
52
58
  update(options: Partial<T>): void;
53
59
  refresh(): void;
@@ -77,7 +83,7 @@ interface UseAstralBeamChatResult extends AstralBeamChatState {
77
83
  stop: () => void;
78
84
  reload: () => Promise<void>;
79
85
  reset: () => void;
80
- /** The underlying headless session, for anything the flattened surface does not carry. */
86
+ /** Conversation management and the full headless session. */
81
87
  core: AstralBeamChatCore;
82
88
  }
83
89
  /**
@@ -102,8 +108,10 @@ interface AstralBeamChatRef {
102
108
  interface AstralBeamChatProps extends Omit<MountAstralBeamChatOptions, "widgets" | "slots"> {
103
109
  /** Host-defined widgets the agent can render inline in the conversation, keyed by identifier. */
104
110
  widgets?: Record<string, WidgetDefinition> | undefined;
105
- /** Replaces the header's content with the host's own React content; `showHeader` still applies. */
111
+ /** Replaces the header's title with the host's own React content; `showHeader` still applies. */
106
112
  header?: ReactNode;
113
+ /** Extra host controls at the end of the header, after the history and new chat buttons. */
114
+ headerActions?: ReactNode;
107
115
  /** Replaces the empty-transcript state with the host's own React content. */
108
116
  empty?: ReactNode;
109
117
  /** Extra host controls at the end of the composer's button row, next to send. */
@@ -111,4 +119,4 @@ interface AstralBeamChatProps extends Omit<MountAstralBeamChatOptions, "widgets"
111
119
  }
112
120
  declare const AstralBeamChat: import("react").ForwardRefExoticComponent<AstralBeamChatProps & import("react").RefAttributes<AstralBeamChatRef>>;
113
121
  //#endregion
114
- export { AstralBeamChat, type AstralBeamChatAttachmentOptions, type AstralBeamChatColorScheme, type AstralBeamChatCore, type AstralBeamChatCoreOptions, AstralBeamChatProps, AstralBeamChatRef, type AstralBeamChatState, type AstralBeamChatTheme, AstralBeamTenantList, type AstralBeamTenantListHandle, type AstralBeamTenantListProps, AstralBeamTenantUserList, type AstralBeamTenantUserListHandle, type AstralBeamTenantUserListProps, type AstralBeamTokenRequest, type AstralBeamTokenSource, type InferParameters, type ParametersSchema, type ToolDefinition, TypedReactWidgetDefinition, UseAstralBeamChatResult, WidgetDefinition, defineTool, defineWidget, useAstralBeamChat };
122
+ export { AstralBeamChat, type AstralBeamChatAttachmentOptions, type AstralBeamChatColorScheme, type AstralBeamChatCore, type AstralBeamChatCoreOptions, AstralBeamChatProps, AstralBeamChatRef, type AstralBeamChatState, type AstralBeamChatTheme, AstralBeamTenantList, type AstralBeamTenantListHandle, type AstralBeamTenantListProps, AstralBeamTenantUserList, type AstralBeamTenantUserListHandle, type AstralBeamTenantUserListProps, AstralBeamThreadList, type AstralBeamThreadListHandle, type AstralBeamThreadListProps, type AstralBeamTokenRequest, type AstralBeamTokenSource, type InferParameters, type ParametersSchema, type ToolDefinition, TypedReactWidgetDefinition, UseAstralBeamChatResult, WidgetDefinition, defineTool, defineWidget, useAstralBeamChat };
package/dist/react.js CHANGED
@@ -1,8 +1,8 @@
1
- import { n as CORE_OPTION_KEYS, r as createAstralBeamChat } from "./core-BGDo_tQ4.js";
2
- import { M as DEFAULT_COLOR_SCHEME } from "./api-r11gRy91.js";
1
+ import { n as CORE_OPTION_KEYS, r as createAstralBeamChat } from "./core-DeMY6_wQ.js";
2
+ import { Dt as DEFAULT_COLOR_SCHEME } from "./api-BaIPbj-Q.js";
3
3
  import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
- import { defineTool, mountAstralBeamChat, mountAstralBeamTenantList, mountAstralBeamTenantUserList } from "@astralbeam/sdk/client";
5
+ import { defineTool, mountAstralBeamChat, mountAstralBeamTenantList, mountAstralBeamTenantUserList, mountAstralBeamThreadList } from "@astralbeam/sdk/client";
6
6
  import { createPortal } from "react-dom";
7
7
  //#region src/react/listings.tsx
8
8
  const AstralBeamTenantList = forwardRef(function AstralBeamTenantList({ className, style, ...options }, ref) {
@@ -19,6 +19,13 @@ const AstralBeamTenantUserList = forwardRef(function AstralBeamTenantUserList({
19
19
  style
20
20
  });
21
21
  });
22
+ const AstralBeamThreadList = forwardRef(function AstralBeamThreadList({ className, style, ...options }, ref) {
23
+ return /* @__PURE__ */ jsx("div", {
24
+ ref: useListingMount(mountAstralBeamThreadList, options, ref),
25
+ className,
26
+ style
27
+ });
28
+ });
22
29
  function useListingMount(mount, options, ref) {
23
30
  const target = useRef(null);
24
31
  const handle = useRef(null);
@@ -117,7 +124,7 @@ function useAstralBeamChat(options) {
117
124
  core
118
125
  };
119
126
  }
120
- const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, showHeader, header, empty, composerActions, emptyTitle, emptyDescription, apiUrl, fetchAstralBeamToken, tools, widgets = {}, colorScheme = DEFAULT_COLOR_SCHEME, theme, customCss, attachments, sandboxPanel, debug }, ref) {
127
+ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, threadId, title, showHeader, showConversationTitle, header, headerActions, empty, composerActions, emptyHeadline, emptyDescription, apiUrl, fetchAstralBeamToken, tools, widgets = {}, colorScheme = DEFAULT_COLOR_SCHEME, theme, customCss, attachments, sandboxPanel, debug }, ref) {
121
128
  const targetRef = useRef(null);
122
129
  const handleRef = useRef(null);
123
130
  const [activeRenders, setActiveRenders] = useState(/* @__PURE__ */ new Map());
@@ -162,6 +169,7 @@ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, show
162
169
  }])), [widgets]);
163
170
  const [chromeContainers, setChromeContainers] = useState(/* @__PURE__ */ new Map());
164
171
  const hasHeader = header !== void 0;
172
+ const hasHeaderActions = headerActions !== void 0;
165
173
  const hasEmpty = empty !== void 0;
166
174
  const hasComposerActions = composerActions !== void 0;
167
175
  const chromeSlots = useMemo(() => {
@@ -177,21 +185,25 @@ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, show
177
185
  };
178
186
  return {
179
187
  ...hasHeader ? { header: build("header") } : {},
188
+ ...hasHeaderActions ? { headerActions: build("headerActions") } : {},
180
189
  ...hasEmpty ? { empty: build("empty") } : {},
181
190
  ...hasComposerActions ? { composerActions: build("composerActions") } : {}
182
191
  };
183
192
  }, [
184
193
  hasHeader,
194
+ hasHeaderActions,
185
195
  hasEmpty,
186
196
  hasComposerActions
187
197
  ]);
188
198
  const live = useMemo(() => ({
189
199
  agentId,
200
+ threadId,
190
201
  apiUrl,
191
202
  fetchAstralBeamToken,
192
203
  title,
193
204
  showHeader,
194
- emptyTitle,
205
+ showConversationTitle,
206
+ emptyHeadline,
195
207
  emptyDescription,
196
208
  colorScheme,
197
209
  theme,
@@ -204,11 +216,13 @@ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, show
204
216
  slots: chromeSlots
205
217
  }), [
206
218
  agentId,
219
+ threadId,
207
220
  apiUrl,
208
221
  fetchAstralBeamToken,
209
222
  title,
210
223
  showHeader,
211
- emptyTitle,
224
+ showConversationTitle,
225
+ emptyHeadline,
212
226
  emptyDescription,
213
227
  colorScheme,
214
228
  theme,
@@ -238,6 +252,7 @@ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, show
238
252
  }, [live]);
239
253
  const chromeContent = {
240
254
  header,
255
+ headerActions,
241
256
  empty,
242
257
  composerActions
243
258
  };
@@ -251,4 +266,4 @@ const AstralBeamChat = forwardRef(function AstralBeamChat({ agentId, title, show
251
266
  });
252
267
  });
253
268
  //#endregion
254
- export { AstralBeamChat, AstralBeamTenantList, AstralBeamTenantUserList, defineTool, defineWidget, useAstralBeamChat };
269
+ export { AstralBeamChat, AstralBeamTenantList, AstralBeamTenantUserList, AstralBeamThreadList, defineTool, defineWidget, useAstralBeamChat };
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{s as n,l as r,o as t};
package/dist/server.d.ts CHANGED
@@ -29,6 +29,11 @@ interface CreateAstralBeamTokenOptions<TTenantUser extends TenantUser = TenantUs
29
29
  readonly apiKey: string;
30
30
  readonly user: TTenantUser;
31
31
  readonly tenant: TTenant;
32
+ /**
33
+ * IDs of usage limits to apply beyond the Organization's defaults, copied from the dashboard's
34
+ * Usage Limits page, such as the limits of the tenant's plan.
35
+ */
36
+ readonly usageLimits?: readonly string[] | undefined;
32
37
  readonly expiresInSeconds?: number | undefined;
33
38
  }
34
39
  interface CreateAstralBeamOrganizationTokenOptions {
@@ -50,6 +55,7 @@ declare function createAstralBeamToken<TTenantUser extends TenantUser = TenantUs
50
55
  apiKey,
51
56
  user,
52
57
  tenant,
58
+ usageLimits,
53
59
  expiresInSeconds
54
60
  }: CreateAstralBeamTokenOptions<TTenantUser, TTenant>): Promise<string>;
55
61
  //#endregion
package/dist/server.js CHANGED
@@ -531,6 +531,8 @@ const CHAT_AUTH_TOKEN_MAX_BYTES = 16384;
531
531
  const IDENTITY_MAX_BYTES = 8192;
532
532
  const EXTERNAL_ID_MAX_LENGTH = 255;
533
533
  const API_KEY_PATTERN = /^key_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}_abo_[A-Za-z]{64}$/;
534
+ const USAGE_LIMIT_ID_PATTERN = /^limit_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
535
+ const USAGE_LIMITS_MAX = 20;
534
536
  const TENANT_FIELDS = [
535
537
  "id",
536
538
  "name",
@@ -607,15 +609,17 @@ async function createAstralBeamOrganizationToken({ apiKey, email, organizationId
607
609
  }).setIssuer(organizationId).setAudience(CHAT_AUTH_TOKEN_AUDIENCE).setIssuedAt(now).setExpirationTime(now + expiresInSeconds).sign(await signingKey(keySecret));
608
610
  }
609
611
  /** Creates the short-lived bearer token returned by an application's server auth endpoint. */
610
- async function createAstralBeamToken({ apiKey, user, tenant, expiresInSeconds = 300 }) {
612
+ async function createAstralBeamToken({ apiKey, user, tenant, usageLimits, expiresInSeconds = 300 }) {
611
613
  if (!Number.isInteger(expiresInSeconds) || expiresInSeconds < 60 || expiresInSeconds > 600) throw new Error("chat auth tokens must live for 60-600 seconds");
612
614
  const { keyId, organizationId, keySecret } = parseApiKey(apiKey);
613
615
  const identity = validatedIdentity(user, tenant);
616
+ if (usageLimits !== void 0 && (!Array.isArray(usageLimits) || usageLimits.length > USAGE_LIMITS_MAX || !usageLimits.every((id) => typeof id === "string" && USAGE_LIMIT_ID_PATTERN.test(id)))) throw new Error(`usageLimits must list at most ${USAGE_LIMITS_MAX} IDs of the form limit_<organizationId>_<id>`);
614
617
  const now = Math.floor(Date.now() / 1e3);
615
618
  const token = await new SignJWT({
616
619
  ver: 4,
617
620
  user: identity.user,
618
- tenant: identity.tenant
621
+ tenant: identity.tenant,
622
+ ...usageLimits?.length ? { usage_limits: [...new Set(usageLimits)] } : {}
619
623
  }).setProtectedHeader({
620
624
  alg: "HS256",
621
625
  typ: CHAT_AUTH_TOKEN_TYPE,