@versini/sassysaint 8.71.0 → 8.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/chunks/{AboutChangelog.DWyXWTXc.js → AboutChangelog.Cq9mwfwv.js} +2 -2
  2. package/dist/chunks/{AboutEntry.Bfy81T6x.js → AboutEntry.ruVpzfpU.js} +7 -7
  3. package/dist/chunks/{App.DSD9BetC.js → App.BOp4E81K.js} +16 -16
  4. package/dist/chunks/{Chart.B4k3bheP.js → Chart.BVDTPl1g.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.Db8JqNYx.js → ChatBubbleAssistant.lzkCRPLG.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.BdgsqpxM.js → ChatBubbleUser.GpHT9aqr.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.D0NwLSQa.js → ChatHistoryTable.B6J50Lae.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.CAjcvSz8.js → HistoryEntry.CZ4jl6nS.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.DCCsaeos.js → ProfileEntry.CrCr1Bp7.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.CY7MR73f.js → SettingsEntry.JmLkVVd4.js} +3 -3
  11. package/dist/chunks/{Table.BE5_-y3Y.js → Table.BFDIw396.js} +2 -2
  12. package/dist/chunks/{UsageEntry.CPcF4Txm.js → UsageEntry.B65VL0SB.js} +3 -3
  13. package/dist/chunks/{UserMemoriesPanel.spEuG9Az.js → UserMemoriesPanel.BsWKxPUi.js} +116 -106
  14. package/dist/chunks/{index.B-0U7o63.js → index.AEvTjh_P.js} +3 -3
  15. package/dist/chunks/{index.pLrnJCen.js → index.B07uAAXy.js} +1 -1
  16. package/dist/chunks/{index.uvE2MwNm.js → index.ClLIvwbP.js} +1 -1
  17. package/dist/chunks/{index.zw3YchMP.js → index.DAmS0iMm.js} +2 -2
  18. package/dist/chunks/{index.2WWnkty4.js → index.NXGZo6q_.js} +1 -1
  19. package/dist/chunks/{index.D9fOwzja.js → index.RqmIaetn.js} +1 -1
  20. package/dist/chunks/{index.fh4mlmae.js → index.Sz1_o7rm.js} +1 -1
  21. package/dist/chunks/{index.jIT6fjlk.js → index.lwEWrGfp.js} +2 -1
  22. package/dist/chunks/{useMarkdown.45Aa42bV.js → useMarkdown.Ch0nplnG.js} +6 -6
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { p as m, ButtonScroll as n } from "./App.DSD9BetC.js";
2
+ import { p as m, ButtonScroll as n } from "./App.BOp4E81K.js";
3
3
  import { useRef as f, useCallback as u, useLayoutEffect as p } from "react";
4
- import { useMarkdown as d } from "./useMarkdown.45Aa42bV.js";
4
+ import { useMarkdown as d } from "./useMarkdown.Ch0nplnG.js";
5
5
  const b = ({ content: o }) => {
6
6
  const [l, t] = d(), { ref: a, inViewport: c } = m(), e = f(null), i = u(() => {
7
7
  e.current && e.current.scrollIntoView({
@@ -1,15 +1,15 @@
1
1
  import { jsxs as b, Fragment as l, jsx as e } from "react/jsx-runtime";
2
- import { oe as A } from "./App.DSD9BetC.js";
3
- import { i as d, useServerCapabilities as g, useChangelogs as B, S as t, renderDataAsList as c, CARDS as r, pluralize as E, isProbablyMobile as I, ABOUT_TITLE as S } from "./index.jIT6fjlk.js";
2
+ import { oe as g } from "./App.BOp4E81K.js";
3
+ import { i as d, useServerCapabilities as A, useChangelogs as B, S as t, renderDataAsList as c, CARDS as r, pluralize as E, isProbablyMobile as I, ABOUT_TITLE as S } from "./index.lwEWrGfp.js";
4
4
  import O from "clsx";
5
5
  import { Suspense as C, lazy as U } from "react";
6
6
  const L = U(
7
7
  () => import(
8
8
  /* webpackChunkName: "LazyAboutChangelog" */
9
- "./AboutChangelog.DWyXWTXc.js"
9
+ "./AboutChangelog.Cq9mwfwv.js"
10
10
  )
11
11
  ), N = () => {
12
- const s = d(), i = d(), { data: o, isSuccess: m } = g(), { data: T, isSuccess: h } = B(), p = o?.version || "", a = o?.models || [], u = o?.buildTime || "";
12
+ const s = d(), i = d(), { data: o, isSuccess: m } = A(), { data: T, isSuccess: h } = B(), p = o?.version || "", a = o?.models || [], u = o?.buildTime || "";
13
13
  return /* @__PURE__ */ b(l, { children: [
14
14
  /* @__PURE__ */ e(
15
15
  t,
@@ -18,8 +18,8 @@ const L = U(
18
18
  className: "prose-dark dark:prose-lighter mb-4",
19
19
  noBorder: !0,
20
20
  children: c(s, {
21
- [r.ABOUT.VERSION]: "8.71.0",
22
- [r.ABOUT.BUILD_TIMESTAMP]: "10/24/2025 10:30 AM EDT"
21
+ [r.ABOUT.VERSION]: "8.72.0",
22
+ [r.ABOUT.BUILD_TIMESTAMP]: "10/24/2025 12:36 PM EDT"
23
23
  })
24
24
  }
25
25
  ),
@@ -54,7 +54,7 @@ const L = U(
54
54
  open: s,
55
55
  onOpenChange: i
56
56
  }) => /* @__PURE__ */ e(
57
- A,
57
+ g,
58
58
  {
59
59
  open: s,
60
60
  onOpenChange: i,
@@ -1,5 +1,5 @@
1
1
  import { jsx as l, jsxs as T, Fragment as Oe } from "react/jsx-runtime";
2
- import { I as H, ACTION_SORT as ys, ACTION_SEARCH as _s, ACTION_RESET_PROMPT as Eo, ACTION_TOGGLE_PROMPT as To, LOCAL_STORAGE_PREFIX as Le, LOCAL_STORAGE_CHAT_ID as So, n as ve, isDev as bs, isPWAMode as xo, useChat as ws, B as Is, te as Se, DEFAULT_ICON_ACTION_SIZE as Ae, isTauri as Xt, useUserPreferences as Je, isProbablyiPhone as Ue, serverUrl as ko, useEntitlements as Jr, L as zr, j as it, C as mn, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Es, nt as Kt, LOCAL_STORAGE_REASONING_DISCLOSURE as Ts, useSaveChat as Ss, TOAST_CHAT_SAVED as xs, PROMPT_CLASSNAME as ks, PROMPT_EDITABLE_AREA_CLASSNAME as Cs, useChatsHistory as Ns, i as zs, Et as Co, ERROR_MESSAGE as As, E as bt, CLIPBOARD_PROMPT as hn, INPUT_PLACEHOLDER_TEXT_MOBILE as fn, INPUT_PLACEHOLDER_TEXT_ENTER as gn, INPUT_PLACEHOLDER_TEXT_CMD_ENTER as vn, isProbablyMobile as Ar, K as Os, FOOTER_DISCLAIMERS as yn, h as No, isProbablyiPad as $s, INPUT_BOTTOM_OFFSET_EXTRA as _n, INPUT_BOTTOM_OFFSET_IPHONE as Ms, INPUT_BOTTOM_OFFSET_IPAD as Rs, INPUT_BOTTOM_OFFSET as zo, getLayoutPaddingClass as Or, canEvaluateModels as bn, st as Ps, r as Zs, O as Ds, c as Ls, H as Bs, x as vr, setNewProvider as wn, TOAST_PROVIDER_CHANGED as In, useQueryClient as Us, LOG_OUT as En, e as Ao, Y as Tn, useServerCapabilities as js, getMessageContaintWrapperClass as Vs, UI_FOOTER_BUFFER as Oo, UI_BUTTON_SCROLL_BUFFER as Fs, Logo as Hs, UI_DEFAULT_MAIN_HEIGHT as Sn, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Js, APP_CLASSNAME as Gs, Z as xn, J as Ws, LOCAL_STORAGE_SORT as qs, LOCAL_STORAGE_SEARCH as Ys, LOCAL_STORAGE_SORT_TIMESTAMP as Xs, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ks, TOAST_CACHE_ENABLED as Qs, TOAST_CACHE_DISABLED as ei } from "./index.jIT6fjlk.js";
2
+ import { I as H, ACTION_SORT as ys, ACTION_SEARCH as _s, ACTION_RESET_PROMPT as Eo, ACTION_TOGGLE_PROMPT as To, LOCAL_STORAGE_PREFIX as Le, LOCAL_STORAGE_CHAT_ID as So, n as ve, isDev as bs, isPWAMode as xo, useChat as ws, B as Is, te as Se, DEFAULT_ICON_ACTION_SIZE as Ae, isTauri as Xt, useUserPreferences as Je, isProbablyiPhone as Ue, serverUrl as ko, useEntitlements as Jr, L as zr, j as it, C as mn, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Es, nt as Kt, LOCAL_STORAGE_REASONING_DISCLOSURE as Ts, useSaveChat as Ss, TOAST_CHAT_SAVED as xs, PROMPT_CLASSNAME as ks, PROMPT_EDITABLE_AREA_CLASSNAME as Cs, useChatsHistory as Ns, i as zs, Et as Co, ERROR_MESSAGE as As, E as bt, CLIPBOARD_PROMPT as hn, INPUT_PLACEHOLDER_TEXT_MOBILE as fn, INPUT_PLACEHOLDER_TEXT_ENTER as gn, INPUT_PLACEHOLDER_TEXT_CMD_ENTER as vn, isProbablyMobile as Ar, K as Os, FOOTER_DISCLAIMERS as yn, h as No, isProbablyiPad as $s, INPUT_BOTTOM_OFFSET_EXTRA as _n, INPUT_BOTTOM_OFFSET_IPHONE as Ms, INPUT_BOTTOM_OFFSET_IPAD as Rs, INPUT_BOTTOM_OFFSET as zo, getLayoutPaddingClass as Or, canEvaluateModels as bn, st as Ps, r as Zs, O as Ds, c as Ls, H as Bs, x as vr, setNewProvider as wn, TOAST_PROVIDER_CHANGED as In, useQueryClient as Us, LOG_OUT as En, e as Ao, Y as Tn, useServerCapabilities as js, getMessageContaintWrapperClass as Vs, UI_FOOTER_BUFFER as Oo, UI_BUTTON_SCROLL_BUFFER as Fs, Logo as Hs, UI_DEFAULT_MAIN_HEIGHT as Sn, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Js, APP_CLASSNAME as Gs, Z as xn, J as Ws, LOCAL_STORAGE_SORT as qs, LOCAL_STORAGE_SEARCH as Ys, LOCAL_STORAGE_SORT_TIMESTAMP as Xs, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ks, TOAST_CACHE_ENABLED as Qs, TOAST_CACHE_DISABLED as ei } from "./index.lwEWrGfp.js";
3
3
  import * as se from "react";
4
4
  import dt, { useRef as U, useEffect as $, useCallback as Z, useState as R, useSyncExternalStore as Ft, createContext as ti, useContext as ie, useId as $o, forwardRef as Mo, useMemo as ze, Suspense as Qt, lazy as Me, useReducer as Rt, useLayoutEffect as ri } from "react";
5
5
  import O from "clsx";
@@ -6614,7 +6614,7 @@ const Qa = async () => (Sr || (Sr = import(
6614
6614
  "./index.790ujKXR.js"
6615
6615
  )), Sr), es = async () => (xr || (xr = import(
6616
6616
  /* webpackChunkName: "toast-utilities" */
6617
- "./index.jIT6fjlk.js"
6617
+ "./index.lwEWrGfp.js"
6618
6618
  ).then((e) => e.utilities)), xr), th = async () => {
6619
6619
  try {
6620
6620
  await Promise.all([Qa(), es()]);
@@ -9357,38 +9357,38 @@ const tf = (e) => {
9357
9357
  }, kf = Me(
9358
9358
  () => import(
9359
9359
  /* webpackChunkName: "modal-chunk" */
9360
- "./ProfileEntry.DCCsaeos.js"
9360
+ "./ProfileEntry.CrCr1Bp7.js"
9361
9361
  ).then((e) => ({
9362
9362
  default: e.Profile
9363
9363
  }))
9364
9364
  ), Cf = Me(
9365
9365
  () => import(
9366
9366
  /* webpackChunkName: "modal-chunk" */
9367
- "./SettingsEntry.CY7MR73f.js"
9367
+ "./SettingsEntry.JmLkVVd4.js"
9368
9368
  ).then((e) => ({
9369
9369
  default: e.SettingsPanel
9370
9370
  }))
9371
9371
  ), Nf = Me(
9372
9372
  () => import(
9373
9373
  /* webpackChunkName: "modal-chunk" */
9374
- "./HistoryEntry.CAjcvSz8.js"
9374
+ "./HistoryEntry.CZ4jl6nS.js"
9375
9375
  ).then((e) => ({
9376
9376
  default: e.HistoryPanel
9377
9377
  }))
9378
9378
  ), zf = Me(
9379
9379
  () => import(
9380
9380
  /* webpackChunkName: "modal-chunk" */
9381
- "./AboutEntry.Bfy81T6x.js"
9381
+ "./AboutEntry.ruVpzfpU.js"
9382
9382
  ).then((e) => ({ default: e.About }))
9383
9383
  ), Af = Me(
9384
9384
  () => import(
9385
9385
  /* webpackChunkName: "modal-chunk" */
9386
- "./UsageEntry.CPcF4Txm.js"
9386
+ "./UsageEntry.B65VL0SB.js"
9387
9387
  ).then((e) => ({ default: e.Usage }))
9388
9388
  ), Of = Me(
9389
9389
  () => import(
9390
9390
  /* webpackChunkName: "modal-chunk" */
9391
- "./UserMemoriesPanel.spEuG9Az.js"
9391
+ "./UserMemoriesPanel.BsWKxPUi.js"
9392
9392
  ).then(
9393
9393
  (e) => ({ default: e.default })
9394
9394
  )
@@ -9436,23 +9436,23 @@ const tf = (e) => {
9436
9436
  d || Promise.all([
9437
9437
  import(
9438
9438
  /* webpackChunkName: "modal-chunk" */
9439
- "./ProfileEntry.DCCsaeos.js"
9439
+ "./ProfileEntry.CrCr1Bp7.js"
9440
9440
  ),
9441
9441
  import(
9442
9442
  /* webpackChunkName: "modal-chunk" */
9443
- "./SettingsEntry.CY7MR73f.js"
9443
+ "./SettingsEntry.JmLkVVd4.js"
9444
9444
  ),
9445
9445
  import(
9446
9446
  /* webpackChunkName: "modal-chunk" */
9447
- "./HistoryEntry.CAjcvSz8.js"
9447
+ "./HistoryEntry.CZ4jl6nS.js"
9448
9448
  ),
9449
9449
  import(
9450
9450
  /* webpackChunkName: "modal-chunk" */
9451
- "./AboutEntry.Bfy81T6x.js"
9451
+ "./AboutEntry.ruVpzfpU.js"
9452
9452
  ),
9453
9453
  import(
9454
9454
  /* webpackChunkName: "modal-chunk" */
9455
- "./UsageEntry.CPcF4Txm.js"
9455
+ "./UsageEntry.B65VL0SB.js"
9456
9456
  )
9457
9457
  ]).finally(() => f(!0));
9458
9458
  }, [d]), b = Z((A) => {
@@ -9700,18 +9700,18 @@ try {
9700
9700
  } catch {
9701
9701
  }
9702
9702
  const Zf = Me(
9703
- () => import("./index.uvE2MwNm.js").then((e) => ({ default: e.Bubble }))
9703
+ () => import("./index.ClLIvwbP.js").then((e) => ({ default: e.Bubble }))
9704
9704
  ), dn = (e) => /* @__PURE__ */ l(Qt, { fallback: /* @__PURE__ */ l("span", { className: "inline-block" }), children: /* @__PURE__ */ l(Zf, { ...e }) });
9705
9705
  dn.displayName = "AsyncBubble";
9706
9706
  const Io = 1, Df = 150, Lf = Me(
9707
9707
  () => import(
9708
9708
  /* webpackChunkName: "LazyMessageAssistant" */
9709
- "./ChatBubbleAssistant.Db8JqNYx.js"
9709
+ "./ChatBubbleAssistant.lzkCRPLG.js"
9710
9710
  )
9711
9711
  ), Bf = Me(
9712
9712
  () => import(
9713
9713
  /* webpackChunkName: "LazyMessageUser" */
9714
- "./ChatBubbleUser.BdgsqpxM.js"
9714
+ "./ChatBubbleUser.GpHT9aqr.js"
9715
9715
  )
9716
9716
  ), Uf = dt.memo(
9717
9717
  ({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Ap } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as ln } from "./App.DSD9BetC.js";
2
+ import { getDefaultExportFromCjs as ln } from "./App.BOp4E81K.js";
3
3
  import Cp, { useState as Pp, useEffect as Op } from "react";
4
- import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.jIT6fjlk.js";
4
+ import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.lwEWrGfp.js";
5
5
  var ls = { exports: {} }, Ip = ls.exports, on;
6
6
  function Dp() {
7
7
  return on || (on = 1, (function(we, he) {
@@ -1,10 +1,10 @@
1
1
  import { jsx as x } from "react/jsx-runtime";
2
- import { n as N, useUserPreferences as O, convertCamelCaseToReadable as P, numberFormatter as R, pluralize as y, Y as L } from "./index.jIT6fjlk.js";
3
- import { BUBBLE_FOOTER_EMPTY as _ } from "./index.uvE2MwNm.js";
2
+ import { n as N, useUserPreferences as O, convertCamelCaseToReadable as P, numberFormatter as R, pluralize as y, Y as L } from "./index.lwEWrGfp.js";
3
+ import { BUBBLE_FOOTER_EMPTY as _ } from "./index.ClLIvwbP.js";
4
4
  import w from "clsx";
5
5
  import v, { useState as M, useRef as A, useEffect as U, useContext as B } from "react";
6
- import { ChatContext as G, AsyncBubble as E } from "./App.DSD9BetC.js";
7
- import { useMarkdown as D } from "./useMarkdown.45Aa42bV.js";
6
+ import { ChatContext as G, AsyncBubble as E } from "./App.BOp4E81K.js";
7
+ import { useMarkdown as D } from "./useMarkdown.Ch0nplnG.js";
8
8
  const j = 2, q = j * 1e3, b = "", I = (e) => e * (2 - e);
9
9
  function W(e, n = !0) {
10
10
  const [a, p] = M(0), [i, C] = M(0), [t, T] = M(e), r = A(0), s = A(0);
@@ -1,8 +1,8 @@
1
1
  import { jsx as n, Fragment as b, jsxs as A } from "react/jsx-runtime";
2
2
  import { useState as C, useMemo as u, isValidElement as p, useEffect as I } from "react";
3
- import { AsyncBubble as w } from "./App.DSD9BetC.js";
4
- import { useMarkdown as _ } from "./useMarkdown.45Aa42bV.js";
5
- import { C as M } from "./index.jIT6fjlk.js";
3
+ import { AsyncBubble as w } from "./App.BOp4E81K.js";
4
+ import { useMarkdown as _ } from "./useMarkdown.Ch0nplnG.js";
5
+ import { C as M } from "./index.lwEWrGfp.js";
6
6
  const R = 200, N = ({
7
7
  string: e,
8
8
  idealLength: r = R
@@ -1,9 +1,9 @@
1
1
  import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
- import { I as g, Z as N, J as C, INFINITE_SCROLL_THRESHOLD as A, CARDS as E, pluralize as y, te as p, numberFormatter as k, ot as b, isProbablyMobile as D, c as U, r as B, O as I } from "./index.jIT6fjlk.js";
3
- import { st as u, p$1 as P, z as L, p$2 as V } from "./App.DSD9BetC.js";
2
+ import { I as g, Z as N, J as C, INFINITE_SCROLL_THRESHOLD as A, CARDS as E, pluralize as y, te as p, numberFormatter as k, ot as b, isProbablyMobile as D, c as U, r as B, O as I } from "./index.lwEWrGfp.js";
3
+ import { st as u, p$1 as P, z as L, p$2 as V } from "./App.BOp4E81K.js";
4
4
  import h from "clsx";
5
5
  import { Fragment as _ } from "react";
6
- import { j as $, D as H, G as M, H as Y, U as F, M as a, F as f, l as G } from "./Table.BE5_-y3Y.js";
6
+ import { j as $, D as H, G as M, H as Y, U as F, M as a, F as f, l as G } from "./Table.BFDIw396.js";
7
7
  const K = ({
8
8
  className: l,
9
9
  viewBox: c,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as n, jsx as t, Fragment as X } from "react/jsx-runtime";
2
- import { I as Z, n as P, INFINITE_SCROLL_LIMIT as F, INFINITE_SCROLL_THRESHOLD as ee, LOCAL_STORAGE_PREFIX as T, LOCAL_STORAGE_SORT_TIMESTAMP as te, LOCAL_STORAGE_SORT_TOKEN_USAGE as re, LOCAL_STORAGE_SORT as ae, Z as L, useUserPreferences as se, useDeleteChat as oe, useToggleFavoriteChat as ie, APP_CLASSNAME as ne, TOAST_CHAT_DELETED as ce, graphQLRequest as le, SERVICE_TYPES as de, setNewProvider as he, ACTION_SORT as me, J as ue, TOAST_PROVIDER_CHANGED as Ce, useChatsHistory as Se, LOCAL_STORAGE_SEARCH as pe, LOCAL_STORAGE_FAVORITES_ONLY as ye, HISTORY_TITLE as fe, S as Te, Y$1 as ge, debounce as Ae, C as Ee, ACTION_SEARCH as ve } from "./index.jIT6fjlk.js";
3
- import { HistoryContext as V, ChatContext as z, useAiChat as _e, E as g, e as m, ConfirmationPanel as De, LazyToastContainerWrapper as Oe, showErrorToast as Le, CHAT_SET_PROVIDER as Re, showSuccessToast as Ie, CHAT_SET_STATUS as ke, oe as Ne, G as be } from "./App.DSD9BetC.js";
2
+ import { I as Z, n as P, INFINITE_SCROLL_LIMIT as F, INFINITE_SCROLL_THRESHOLD as ee, LOCAL_STORAGE_PREFIX as T, LOCAL_STORAGE_SORT_TIMESTAMP as te, LOCAL_STORAGE_SORT_TOKEN_USAGE as re, LOCAL_STORAGE_SORT as ae, Z as L, useUserPreferences as se, useDeleteChat as oe, useToggleFavoriteChat as ie, APP_CLASSNAME as ne, TOAST_CHAT_DELETED as ce, graphQLRequest as le, SERVICE_TYPES as de, setNewProvider as he, ACTION_SORT as me, J as ue, TOAST_PROVIDER_CHANGED as Ce, useChatsHistory as Se, LOCAL_STORAGE_SEARCH as pe, LOCAL_STORAGE_FAVORITES_ONLY as ye, HISTORY_TITLE as fe, S as Te, Y$1 as ge, debounce as Ae, C as Ee, ACTION_SEARCH as ve } from "./index.lwEWrGfp.js";
3
+ import { HistoryContext as V, ChatContext as z, useAiChat as _e, E as g, e as m, ConfirmationPanel as De, LazyToastContainerWrapper as Oe, showErrorToast as Le, CHAT_SET_PROVIDER as Re, showSuccessToast as Ie, CHAT_SET_STATUS as ke, oe as Ne, G as be } from "./App.BOp4E81K.js";
4
4
  import { useRef as w, useState as x, useContext as R, useCallback as we, useEffect as G, Suspense as xe, lazy as He } from "react";
5
5
  const Fe = ({
6
6
  className: l,
@@ -31,7 +31,7 @@ const Fe = ({
31
31
  ), Pe = He(
32
32
  () => import(
33
33
  /* webpackChunkName: "history-table" */
34
- "./ChatHistoryTable.D0NwLSQa.js"
34
+ "./ChatHistoryTable.B6J50Lae.js"
35
35
  ).then((l) => ({ default: l.ChatHistoryTable }))
36
36
  ), Ve = ({
37
37
  filteredHistory: l,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as t, Fragment as D, jsx as e } from "react/jsx-runtime";
2
- import { preloadToast as K, showSuccessToast as W, showErrorToast as Y, ConfirmationPanel as H, LazyToastContainerWrapper as $, oe as V } from "./App.DSD9BetC.js";
3
- import { n as q, i as J, useUserPreferences as Q, useServerCapabilities as X, x as Z, setUserPlan as ee, S as d, renderDataAsList as ae, CARDS as s, L as f, j as c, C as se, it as ne, isTauri as re, te, l as b, PROFILE_TITLE as le } from "./index.jIT6fjlk.js";
2
+ import { preloadToast as K, showSuccessToast as W, showErrorToast as Y, ConfirmationPanel as H, LazyToastContainerWrapper as $, oe as V } from "./App.BOp4E81K.js";
3
+ import { n as q, i as J, useUserPreferences as Q, useServerCapabilities as X, x as Z, setUserPlan as ee, S as d, renderDataAsList as ae, CARDS as s, L as f, j as c, C as se, it as ne, isTauri as re, te, l as b, PROFILE_TITLE as le } from "./index.lwEWrGfp.js";
4
4
  import ie from "clsx";
5
5
  import { useState as m, useMemo as ce, useCallback as P } from "react";
6
6
  const oe = () => {
@@ -1,7 +1,7 @@
1
1
  import { jsxs as s, jsx as t, Fragment as w } from "react/jsx-runtime";
2
- import { n as Ce, useEntitlements as Ie, useUserPreferences as be, nt as te, canEvaluateModels as ke, et as we, getCacheInfo as ye, isServiceWorkerEnabled as ve, SETTINGS_TITLE as De, S as m, CARDS as c, Q as Le, C as y, PROMPTS_DESCRIPTION as Me, L as xe, j as oe, getCurrentGeoLocation as Re, graphQLRequest as se, handleServiceWorkerToggle as _e, SERVICE_TYPES as ae } from "./index.jIT6fjlk.js";
3
- import { useCapability as ne, oe as Be, G as l } from "./App.DSD9BetC.js";
4
- import { Re as re } from "./index.pLrnJCen.js";
2
+ import { n as Ce, useEntitlements as Ie, useUserPreferences as be, nt as te, canEvaluateModels as ke, et as we, getCacheInfo as ye, isServiceWorkerEnabled as ve, SETTINGS_TITLE as De, S as m, CARDS as c, Q as Le, C as y, PROMPTS_DESCRIPTION as Me, L as xe, j as oe, getCurrentGeoLocation as Re, graphQLRequest as se, handleServiceWorkerToggle as _e, SERVICE_TYPES as ae } from "./index.lwEWrGfp.js";
3
+ import { useCapability as ne, oe as Be, G as l } from "./App.BOp4E81K.js";
4
+ import { Re as re } from "./index.B07uAAXy.js";
5
5
  import { useState as n, useMemo as Oe, useCallback as Ae, useEffect as ce } from "react";
6
6
  const $e = ({
7
7
  open: le,
@@ -1,8 +1,8 @@
1
1
  import { jsxs as _, jsx as r } from "react/jsx-runtime";
2
- import { I as f, b as v } from "./index.jIT6fjlk.js";
2
+ import { I as f, b as v } from "./index.lwEWrGfp.js";
3
3
  import C, { useContext as b } from "react";
4
4
  import o from "clsx";
5
- import { e as k } from "./App.DSD9BetC.js";
5
+ import { e as k } from "./App.BOp4E81K.js";
6
6
  const L = ({
7
7
  className: e,
8
8
  viewBox: a,
@@ -1,13 +1,13 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { n as f, i as v, useUserChatStats as _, useChatsUsage as z, USAGE_TITLE as B, S as g, renderDataAsList as P, CARDS as a, L as p, j as A, C as i, pluralize as h } from "./index.jIT6fjlk.js";
3
- import { oe as H } from "./App.DSD9BetC.js";
2
+ import { n as f, i as v, useUserChatStats as _, useChatsUsage as z, USAGE_TITLE as B, S as g, renderDataAsList as P, CARDS as a, L as p, j as A, C as i, pluralize as h } from "./index.lwEWrGfp.js";
3
+ import { oe as H } from "./App.BOp4E81K.js";
4
4
  import { useState as C, Suspense as K, lazy as j } from "react";
5
5
  const s = [0, 3, 6, 9], n = {
6
6
  TOKEN: "token",
7
7
  MODEL: "model"
8
8
  }, w = j(() => import(
9
9
  /* webpackChunkName: "LazyChart" */
10
- "./Chart.B4k3bheP.js"
10
+ "./Chart.BVDTPl1g.js"
11
11
  )), R = ({
12
12
  open: k,
13
13
  onOpenChange: E
@@ -1,23 +1,23 @@
1
- import { jsxs as l, jsx as e, Fragment as ne } from "react/jsx-runtime";
2
- import { I as ce, L as O, j as y, C as v, n as se, LOCAL_STORAGE_PREFIX as q, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as oe, LOCAL_STORAGE_SORT_MEMORY_COLUMN as ie, useUserMemories as ae, useDeleteMemory as de, useDeleteAllMemories as me, useUpdateMemory as he, te as B } from "./index.jIT6fjlk.js";
3
- import { oe as j, E as F, e as g, ConfirmationPanel as G, st as H } from "./App.DSD9BetC.js";
4
- import k from "clsx";
5
- import { useState as h, useEffect as xe, useRef as U } from "react";
6
- import { Re as ue } from "./index.pLrnJCen.js";
7
- import { j as pe, D as fe, G as b, M as a, F as ge, H as ye, l as Ce, U as Ne } from "./Table.BE5_-y3Y.js";
1
+ import { jsxs as l, jsx as e, Fragment as _ } from "react/jsx-runtime";
2
+ import { I as se, L as O, j as y, C as v, n as ce, LOCAL_STORAGE_PREFIX as q, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as oe, LOCAL_STORAGE_SORT_MEMORY_COLUMN as ie, useUserMemories as ae, useDeleteMemory as de, useDeleteAllMemories as me, useUpdateMemory as he, te as B } from "./index.lwEWrGfp.js";
3
+ import { oe as V, E as F, e as g, ConfirmationPanel as G, st as H } from "./App.BOp4E81K.js";
4
+ import E from "clsx";
5
+ import { useState as x, useEffect as xe, useRef as j } from "react";
6
+ import { Re as ue } from "./index.B07uAAXy.js";
7
+ import { j as pe, D as fe, G as b, M as d, F as ge, H as ye, l as Ce, U as Ne } from "./Table.BFDIw396.js";
8
8
  const Ae = ({
9
- className: i,
10
- viewBox: d,
9
+ className: a,
10
+ viewBox: m,
11
11
  title: n,
12
12
  monotone: r,
13
13
  ...C
14
14
  }) => /* @__PURE__ */ l(
15
- ce,
15
+ se,
16
16
  {
17
17
  defaultViewBox: "0 0 512 512",
18
18
  size: "size-5",
19
- viewBox: d,
20
- className: i,
19
+ viewBox: m,
20
+ className: a,
21
21
  title: n || "Edit",
22
22
  ...C,
23
23
  children: [
@@ -32,25 +32,25 @@ const Ae = ({
32
32
  ]
33
33
  }
34
34
  ), Se = ({
35
- open: i,
36
- onOpenChange: d,
35
+ open: a,
36
+ onOpenChange: m,
37
37
  initialText: n,
38
38
  metadata: r,
39
39
  onSave: C,
40
40
  isSaving: N = !1
41
41
  }) => {
42
- const [o, A] = h(n);
42
+ const [i, A] = x(n);
43
43
  xe(() => {
44
- i && A(n);
45
- }, [i, n]);
46
- const D = () => {
47
- o.trim().length >= 3 && C(o.trim());
48
- }, S = o.trim().length >= 3, w = o.trim() !== n.trim();
44
+ a && A(n);
45
+ }, [a, n]);
46
+ const T = () => {
47
+ i.trim().length >= 3 && C(i.trim());
48
+ }, S = i.trim().length >= 3, D = i.trim() !== n.trim();
49
49
  return /* @__PURE__ */ e(
50
- j,
50
+ V,
51
51
  {
52
- open: i,
53
- onOpenChange: d,
52
+ open: a,
53
+ onOpenChange: m,
54
54
  title: "Edit Memory",
55
55
  animation: !0,
56
56
  animationType: "fade",
@@ -62,7 +62,7 @@ const Ae = ({
62
62
  variant: "secondary",
63
63
  noBorder: !0,
64
64
  focusMode: "light",
65
- onClick: () => d(!1),
65
+ onClick: () => m(!1),
66
66
  disabled: N,
67
67
  children: "Cancel"
68
68
  }
@@ -72,8 +72,8 @@ const Ae = ({
72
72
  {
73
73
  mode: "dark",
74
74
  focusMode: "light",
75
- disabled: N || !S || !w,
76
- onClick: D,
75
+ disabled: N || !S || !D,
76
+ onClick: T,
77
77
  children: N ? "Saving..." : "Save"
78
78
  }
79
79
  ) })
@@ -86,23 +86,23 @@ const Ae = ({
86
86
  focusMode: "light",
87
87
  label: "Memory text",
88
88
  name: "memoryText",
89
- value: o,
90
- onChange: (x) => A(x.target.value),
89
+ value: i,
90
+ onChange: (u) => A(u.target.value),
91
91
  autoFocus: !0,
92
- helperText: o.trim().length < 3 ? "Memory text must be at least 3 characters" : `${o.length} characters`
92
+ helperText: i.trim().length < 3 ? "Memory text must be at least 3 characters" : `${i.length} characters`
93
93
  }
94
94
  ),
95
95
  r && /* @__PURE__ */ l("div", { className: "flex flex-col gap-3 p-4 bg-slate-800/50 rounded-md border border-slate-700/50", children: [
96
96
  /* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-slate-300 m-0", children: "Memory Details" }),
97
97
  r.categories && r.categories.length > 0 && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
98
98
  /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Category" }),
99
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: r.categories.map((x, T) => /* @__PURE__ */ e(
99
+ /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: r.categories.map((u, w) => /* @__PURE__ */ e(
100
100
  "span",
101
101
  {
102
102
  className: "text-xs px-2 py-1 bg-slate-700/50 text-slate-200 rounded",
103
- children: x
103
+ children: u
104
104
  },
105
- `${x}-${T}`
105
+ `${u}-${w}`
106
106
  )) })
107
107
  ] }),
108
108
  /* @__PURE__ */ l("div", { className: "flex flex-col sm:flex-row gap-4", children: [
@@ -143,81 +143,81 @@ const Ae = ({
143
143
  }
144
144
  );
145
145
  }, be = ({
146
- open: i,
147
- onOpenChange: d,
146
+ open: a,
147
+ onOpenChange: m,
148
148
  user: n
149
149
  }) => {
150
- const { getAccessToken: r } = se(), [C] = h(void 0), [N, o] = F({
150
+ const { getAccessToken: r } = ce(), [C] = x(void 0), [N, i] = F({
151
151
  key: q + oe,
152
152
  initialValue: g.DESC
153
- }), [A, D] = F({
153
+ }), [A, T] = F({
154
154
  key: q + ie,
155
155
  initialValue: "createdAt"
156
- }), [S, w] = h(N || g.DESC), [x, T] = h(
156
+ }), [S, D] = x(N || g.DESC), [u, w] = x(
157
157
  A || "createdAt"
158
- ), { data: u, isLoading: R, isError: z } = ae({
158
+ ), { data: o, isLoading: R, isError: L } = ae({
159
159
  user: n,
160
160
  query: C,
161
161
  getAccessToken: r,
162
- enabled: i
163
- }), L = de({ getAccessToken: r }), P = me({ getAccessToken: r }), M = he({ getAccessToken: r }), [V, I] = h(!1), m = U(null), [Y, _] = h(!1), [X, E] = h(!1), c = U(null), J = (t, s, p, f) => {
164
- m.current = { id: t, text: s, description: p, createdAt: f }, I(!0);
165
- }, K = () => {
166
- m.current && L.mutate({ user: n, memoryId: m.current.id });
167
- }, Q = (t, s, p, f, ee, te, le, re) => {
168
- c.current = {
162
+ enabled: a
163
+ }), z = de({ getAccessToken: r }), P = me({ getAccessToken: r }), M = he({ getAccessToken: r }), [Y, I] = x(!1), h = j(null), [X, U] = x(!1), [J, k] = x(!1), s = j(null), K = (t, c, p, f) => {
164
+ h.current = { id: t, text: c, description: p, createdAt: f }, I(!0);
165
+ }, Q = () => {
166
+ h.current && z.mutate({ user: n, memoryId: h.current.id });
167
+ }, W = (t, c, p, f, te, le, re, ne) => {
168
+ s.current = {
169
169
  id: t,
170
- description: s,
170
+ description: c,
171
171
  categories: p,
172
172
  quote: f,
173
- canonicalText: ee,
174
- confidence: te,
175
- status: le,
176
- sourceType: re
177
- }, E(!0);
178
- }, W = (t) => {
179
- c.current && n && M.mutate(
173
+ canonicalText: te,
174
+ confidence: le,
175
+ status: re,
176
+ sourceType: ne
177
+ }, k(!0);
178
+ }, Z = (t) => {
179
+ s.current && n && M.mutate(
180
180
  {
181
181
  user: n,
182
- memoryId: c.current.id,
182
+ memoryId: s.current.id,
183
183
  description: t
184
184
  },
185
185
  {
186
186
  onSuccess: () => {
187
- E(!1);
187
+ k(!1);
188
188
  }
189
189
  }
190
190
  );
191
- }, Z = () => {
192
- n && _(!0);
193
191
  }, $ = () => {
192
+ n && U(!0);
193
+ }, ee = () => {
194
194
  n && P.mutate({ user: n });
195
195
  };
196
- return /* @__PURE__ */ l(ne, { children: [
196
+ return /* @__PURE__ */ l(_, { children: [
197
197
  /* @__PURE__ */ e(
198
198
  Se,
199
199
  {
200
- open: X,
201
- onOpenChange: E,
202
- initialText: c.current?.description || "",
203
- metadata: c.current ? {
204
- categories: c.current.categories,
205
- quote: c.current.quote,
206
- canonicalText: c.current.canonicalText,
207
- confidence: c.current.confidence,
208
- status: c.current.status,
209
- sourceType: c.current.sourceType
200
+ open: J,
201
+ onOpenChange: k,
202
+ initialText: s.current?.description || "",
203
+ metadata: s.current ? {
204
+ categories: s.current.categories,
205
+ quote: s.current.quote,
206
+ canonicalText: s.current.canonicalText,
207
+ confidence: s.current.confidence,
208
+ status: s.current.status,
209
+ sourceType: s.current.sourceType
210
210
  } : void 0,
211
- onSave: W,
211
+ onSave: Z,
212
212
  isSaving: M.isPending
213
213
  }
214
214
  ),
215
215
  /* @__PURE__ */ l(
216
216
  G,
217
217
  {
218
- showConfirmation: V,
218
+ showConfirmation: Y,
219
219
  setShowConfirmation: I,
220
- action: K,
220
+ action: Q,
221
221
  customStrings: {
222
222
  title: "Delete memory",
223
223
  confirmAction: "Delete",
@@ -229,12 +229,12 @@ const Ae = ({
229
229
  /* @__PURE__ */ l("li", { children: [
230
230
  "Excerpt:",
231
231
  " ",
232
- (m.current?.description || m.current?.text || "").slice(0, 80)
232
+ (h.current?.description || h.current?.text || "").slice(0, 80)
233
233
  ] }),
234
234
  /* @__PURE__ */ l("li", { children: [
235
235
  "Created:",
236
236
  " ",
237
- m.current?.createdAt ? new Date(m.current.createdAt).toLocaleString() : "-"
237
+ h.current?.createdAt ? new Date(h.current.createdAt).toLocaleString() : "-"
238
238
  ] })
239
239
  ] })
240
240
  ]
@@ -243,9 +243,9 @@ const Ae = ({
243
243
  /* @__PURE__ */ e(
244
244
  G,
245
245
  {
246
- showConfirmation: Y,
247
- setShowConfirmation: _,
248
- action: $,
246
+ showConfirmation: X,
247
+ setShowConfirmation: U,
248
+ action: ee,
249
249
  customStrings: {
250
250
  title: "Delete all memories",
251
251
  confirmAction: "Delete all",
@@ -255,10 +255,10 @@ const Ae = ({
255
255
  }
256
256
  ),
257
257
  /* @__PURE__ */ e(
258
- j,
258
+ V,
259
259
  {
260
- open: i,
261
- onOpenChange: (t) => d(t),
260
+ open: a,
261
+ onOpenChange: (t) => m(t),
262
262
  title: "User Memories",
263
263
  animation: !0,
264
264
  animationType: "fade",
@@ -270,7 +270,7 @@ const Ae = ({
270
270
  variant: "secondary",
271
271
  noBorder: !0,
272
272
  focusMode: "light",
273
- onClick: () => d(!1),
273
+ onClick: () => m(!1),
274
274
  children: "Close"
275
275
  }
276
276
  ) }),
@@ -280,19 +280,19 @@ const Ae = ({
280
280
  mode: "dark",
281
281
  focusMode: "light",
282
282
  variant: "danger",
283
- disabled: P.isPending || (u?.total ?? 0) === 0,
284
- onClick: Z,
283
+ disabled: P.isPending || (o?.total ?? 0) === 0,
284
+ onClick: $,
285
285
  children: "Delete All"
286
286
  }
287
287
  ) })
288
288
  ] }),
289
289
  children: /* @__PURE__ */ l("div", { className: "flex flex-col sm:flex-row max-h-[75vh] min-h-[60vh] pt-2", children: [
290
290
  R && /* @__PURE__ */ e("p", { className: "m-0", children: "Loading memories..." }),
291
- z && /* @__PURE__ */ e("p", { className: "m-0 text-red-500", children: "Failed to load memories." }),
292
- !R && !z && (u && u.items.length > 0 ? /* @__PURE__ */ l(pe, { stickyHeader: !0, stickyFooter: !0, compact: !0, mode: "alt-system", children: [
291
+ L && /* @__PURE__ */ e("p", { className: "m-0 text-red-500", children: "Failed to load memories." }),
292
+ !R && !L && (o && o.items.length > 0 ? /* @__PURE__ */ l(pe, { stickyHeader: !0, stickyFooter: !0, compact: !0, mode: "alt-system", children: [
293
293
  /* @__PURE__ */ e(fe, { children: /* @__PURE__ */ l(b, { children: [
294
- /* @__PURE__ */ e(a, { className: "sr-only", children: "Row" }),
295
- /* @__PURE__ */ e(a, { children: "Memory" }),
294
+ /* @__PURE__ */ e(d, { className: "sr-only", children: "Row" }),
295
+ /* @__PURE__ */ e(d, { children: "Memory" }),
296
296
  /* @__PURE__ */ e(
297
297
  ge,
298
298
  {
@@ -301,27 +301,27 @@ const Ae = ({
301
301
  cellId: "createdAt",
302
302
  align: "left",
303
303
  sortDirection: S,
304
- sortedCell: x,
304
+ sortedCell: u,
305
305
  onClick: () => {
306
- T("createdAt"), D("createdAt"), w((t) => {
307
- const s = t === g.ASC ? g.DESC : g.ASC;
308
- return o(s), s;
306
+ w("createdAt"), T("createdAt"), D((t) => {
307
+ const c = t === g.ASC ? g.DESC : g.ASC;
308
+ return i(c), c;
309
309
  });
310
310
  },
311
311
  children: "Date"
312
312
  }
313
313
  ),
314
- /* @__PURE__ */ e(a, { align: "right", children: "Actions" })
314
+ /* @__PURE__ */ e(d, { align: "right", children: "Actions" })
315
315
  ] }) }),
316
- /* @__PURE__ */ e(ye, { children: [...u.items].sort((t, s) => {
317
- const p = t.createdAt ? new Date(t.createdAt).getTime() : 0, f = s.createdAt ? new Date(s.createdAt).getTime() : 0;
316
+ /* @__PURE__ */ e(ye, { children: [...o.items].sort((t, c) => {
317
+ const p = t.createdAt ? new Date(t.createdAt).getTime() : 0, f = c.createdAt ? new Date(c.createdAt).getTime() : 0;
318
318
  return S === g.ASC ? p - f : f - p;
319
- }).map((t, s) => /* @__PURE__ */ l(b, { children: [
320
- /* @__PURE__ */ e(a, { className: k("dark:text-gray-400"), children: s + 1 }),
319
+ }).map((t, c) => /* @__PURE__ */ l(b, { children: [
320
+ /* @__PURE__ */ e(d, { className: E("dark:text-gray-400"), children: c + 1 }),
321
321
  /* @__PURE__ */ e(
322
- a,
322
+ d,
323
323
  {
324
- className: k(
324
+ className: E(
325
325
  "dark:text-white",
326
326
  "max-w-[100px] sm:max-w-[400px]",
327
327
  "text-xs sm:text-sm"
@@ -333,18 +333,18 @@ const Ae = ({
333
333
  }
334
334
  ),
335
335
  /* @__PURE__ */ e(
336
- a,
336
+ d,
337
337
  {
338
338
  component: "th",
339
339
  scope: "row",
340
- className: k(
340
+ className: E(
341
341
  "dark:text-gray-400",
342
342
  "sm:whitespace-nowrap text-xs sm:text-sm max-w-20 sm:max-w-none"
343
343
  ),
344
344
  children: t.createdAt ? new Date(t.createdAt).toLocaleDateString() : "-"
345
345
  }
346
346
  ),
347
- /* @__PURE__ */ e(a, { className: "align-top", align: "right", children: /* @__PURE__ */ l(O, { columnGap: 2, alignHorizontal: "flex-end", children: [
347
+ /* @__PURE__ */ e(d, { className: "align-top", align: "right", children: /* @__PURE__ */ l(O, { columnGap: 2, alignHorizontal: "flex-end", children: [
348
348
  /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
349
349
  H,
350
350
  {
@@ -359,7 +359,7 @@ const Ae = ({
359
359
  label: "Edit memory",
360
360
  variant: "primary",
361
361
  disabled: M.isPending,
362
- onClick: () => Q(
362
+ onClick: () => W(
363
363
  t.memoryId,
364
364
  t.description || t.text,
365
365
  t.categories,
@@ -388,8 +388,8 @@ const Ae = ({
388
388
  label: "Delete memory",
389
389
  variant: "primary",
390
390
  iconClassName: "text-red-700 dark:text-red-500",
391
- disabled: L.isPending,
392
- onClick: () => J(
391
+ disabled: z.isPending,
392
+ onClick: () => K(
393
393
  t.memoryId,
394
394
  t.text,
395
395
  t.description,
@@ -402,10 +402,20 @@ const Ae = ({
402
402
  ) })
403
403
  ] }) })
404
404
  ] }, t.memoryId)) }),
405
- /* @__PURE__ */ e(Ne, { children: /* @__PURE__ */ e(b, { children: /* @__PURE__ */ l(a, { colSpan: 4, children: [
406
- u.total,
405
+ /* @__PURE__ */ e(Ne, { children: /* @__PURE__ */ e(b, { children: /* @__PURE__ */ l(d, { colSpan: 4, children: [
406
+ o.total,
407
407
  " memor",
408
- u.total === 1 ? "y" : "ies"
408
+ o.total === 1 ? "y" : "ies",
409
+ o.totalTokenUsage !== void 0 && o.totalTokenUsage > 0 && /* @__PURE__ */ l(_, { children: [
410
+ " ",
411
+ "(approximately",
412
+ " ",
413
+ Math.round(o.totalTokenUsage).toLocaleString(),
414
+ " ",
415
+ "token",
416
+ Math.round(o.totalTokenUsage) === 1 ? "" : "s",
417
+ ")"
418
+ ] })
409
419
  ] }) }) })
410
420
  ] }) : /* @__PURE__ */ e("p", { className: "m-0 italic opacity-70", children: "No memories stored." }))
411
421
  ] })
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.DSD9BetC.js";
2
- import { visit as In } from "./useMarkdown.45Aa42bV.js";
3
- import { toText as Cn } from "./index.2WWnkty4.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.BOp4E81K.js";
2
+ import { visit as In } from "./useMarkdown.Ch0nplnG.js";
3
+ import { toText as Cn } from "./index.NXGZo6q_.js";
4
4
  function xn(e) {
5
5
  const t = e.regex, i = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), a = "decltype\\(auto\\)", r = "[a-zA-Z_]\\w*::", d = "(?!struct)(" + a + "|" + t.optional(r) + "[a-zA-Z_]\\w*" + t.optional("<[^<>]+>") + ")", c = {
6
6
  className: "type",
@@ -1,5 +1,5 @@
1
1
  import { jsxs as oe, jsx as x } from "react/jsx-runtime";
2
- import { o as se, h as U, i as ie, x$1 as de } from "./index.jIT6fjlk.js";
2
+ import { o as se, h as U, i as ie, x$1 as de } from "./index.lwEWrGfp.js";
3
3
  import ce, { useState as _, useEffect as ne, useRef as b, useLayoutEffect as T } from "react";
4
4
  import s from "clsx";
5
5
  function ue({
@@ -1,5 +1,5 @@
1
1
  import { jsxs as p, jsx as i } from "react/jsx-runtime";
2
- import { te as B } from "./index.jIT6fjlk.js";
2
+ import { te as B } from "./index.lwEWrGfp.js";
3
3
  import { useState as I, useEffect as k } from "react";
4
4
  import s from "clsx";
5
5
  const h = "av-bubble", w = ({
@@ -1,5 +1,5 @@
1
- import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.45Aa42bV.js";
2
- import { toText as Ca } from "./index.2WWnkty4.js";
1
+ import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.Ch0nplnG.js";
2
+ import { toText as Ca } from "./index.NXGZo6q_.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.45Aa42bV.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.Ch0nplnG.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.45Aa42bV.js";
1
+ import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.Ch0nplnG.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.45Aa42bV.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.Ch0nplnG.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -4457,6 +4457,7 @@ const G = {
4457
4457
  quote
4458
4458
  }
4459
4459
  total
4460
+ totalTokenUsage
4460
4461
  }
4461
4462
  }`,
4462
4463
  DELETE_MEMORY: `mutation DeleteMemory($user: String!, $memoryId: String!) {
@@ -6964,7 +6965,7 @@ Press Ctrl+Enter to send it or Enter for new line.`, wl = "{{clipboard}}", P = "
6964
6965
  ] });
6965
6966
  }, qo = new URL(document.location.href).searchParams, Rr = !!qo.get("debug") || !1, Wo = qs(() => import(
6966
6967
  /* webpackChunkName: "LazyApp" */
6967
- "./App.DSD9BetC.js"
6968
+ "./App.BOp4E81K.js"
6968
6969
  ).then((e) => e.App)), Vo = new fa(), Cr = ({
6969
6970
  isComponent: e,
6970
6971
  headerHeight: t
@@ -1,8 +1,8 @@
1
1
  import * as rn from "react/jsx-runtime";
2
2
  import { jsx as se, jsxs as Pn } from "react/jsx-runtime";
3
- import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.jIT6fjlk.js";
3
+ import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.lwEWrGfp.js";
4
4
  import zr, { useState as Lt, useEffect as _t, useCallback as vt, useRef as Re } from "react";
5
- import { getDefaultExportFromCjs as Nt } from "./App.DSD9BetC.js";
5
+ import { getDefaultExportFromCjs as Nt } from "./App.BOp4E81K.js";
6
6
  import Lr from "clsx";
7
7
  const Rt = ({
8
8
  children: e,
@@ -6907,7 +6907,7 @@ class uu {
6907
6907
  if (!this.remarkGfm) {
6908
6908
  const { default: n } = await import(
6909
6909
  /* webpackChunkName: "md-remark" */
6910
- "./index.D9fOwzja.js"
6910
+ "./index.RqmIaetn.js"
6911
6911
  );
6912
6912
  this.remarkGfm = n;
6913
6913
  }
@@ -6918,7 +6918,7 @@ class uu {
6918
6918
  hu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
6919
6919
  const { default: n } = await import(
6920
6920
  /* webpackChunkName: "md-rehype-katex" */
6921
- "./index.zw3YchMP.js"
6921
+ "./index.DAmS0iMm.js"
6922
6922
  );
6923
6923
  this.rehypeKatex = n;
6924
6924
  }
@@ -6928,7 +6928,7 @@ class uu {
6928
6928
  if (!this.remarkMath) {
6929
6929
  const { default: n } = await import(
6930
6930
  /* webpackChunkName: "md-remark" */
6931
- "./index.fh4mlmae.js"
6931
+ "./index.Sz1_o7rm.js"
6932
6932
  );
6933
6933
  this.remarkMath = n;
6934
6934
  }
@@ -6938,7 +6938,7 @@ class uu {
6938
6938
  if (!this.rehypeHighlight) {
6939
6939
  const { default: n } = await import(
6940
6940
  /* webpackChunkName: "md-rehype-highlight" */
6941
- "./index.B-0U7o63.js"
6941
+ "./index.AEvTjh_P.js"
6942
6942
  );
6943
6943
  this.rehypeHighlight = n;
6944
6944
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.jIT6fjlk.js";
2
+ import { SassySaint as a } from "../../chunks/index.lwEWrGfp.js";
3
3
  export {
4
4
  a as SassySaint
5
5
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SassySaint as r } from "./chunks/index.jIT6fjlk.js";
1
+ import { SassySaint as r } from "./chunks/index.lwEWrGfp.js";
2
2
  /*!
3
- @sassysaint/client v8.71.0
3
+ @sassysaint/client v8.72.0
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.71.0",
9
- buildTime: "10/24/2025 10:30 AM EDT",
8
+ version: "8.72.0",
9
+ buildTime: "10/24/2025 12:36 PM EDT",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint",
3
- "version": "8.71.0",
3
+ "version": "8.72.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "react-dom": "^18.3.1 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@sassysaint/client": "8.71.0",
36
+ "@sassysaint/client": "8.72.0",
37
37
  "@tailwindcss/vite": "4.1.15",
38
38
  "@versini/ui-styles": "6.0.6"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "sideEffects": [
46
46
  "**/*.css"
47
47
  ],
48
- "gitHead": "79f1a539c87fd2af6c8efd7a200c3e70c13af408"
48
+ "gitHead": "30d8a9ed37639894bbaff3f506246cba7025be14"
49
49
  }