@burdenoff/fe-libs 2026.912.6 → 2026.913.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/shared/assistant/index.d.ts +4 -0
  2. package/dist/shared/assistant/index.d.ts.map +1 -1
  3. package/dist/shared/assistant/preview/useAssistantPreviewBridge.js +8 -8
  4. package/dist/shared/assistant/ui/AssistantAvatar.d.ts +26 -0
  5. package/dist/shared/assistant/ui/AssistantAvatar.d.ts.map +1 -0
  6. package/dist/shared/assistant/ui/AssistantAvatar.js +12 -0
  7. package/dist/shared/assistant/ui/AssistantChatArea.js +298 -298
  8. package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
  9. package/dist/shared/assistant/ui/AssistantMessageItem.js +19 -21
  10. package/dist/shared/assistant/ui/AssistantToolActivity.js +1 -1
  11. package/dist/shared/assistant/ui/composer/AssistantAttachmentChips.d.ts.map +1 -1
  12. package/dist/shared/assistant/ui/composer/AssistantAttachmentChips.js +2 -2
  13. package/dist/shared/assistant/ui/composer/AssistantComposer.js +1 -1
  14. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
  15. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +112 -102
  16. package/dist/shared/assistant/ui/voice/VoiceMiniController.d.ts +10 -0
  17. package/dist/shared/assistant/ui/voice/VoiceMiniController.d.ts.map +1 -1
  18. package/dist/shared/assistant/ui/voice/VoiceMiniController.js +29 -28
  19. package/dist/shared/assistant/ui/voice/VoiceStage.d.ts +10 -0
  20. package/dist/shared/assistant/ui/voice/VoiceStage.d.ts.map +1 -1
  21. package/dist/shared/assistant/ui/voice/VoiceStage.js +35 -34
  22. package/dist/shared/assistant/ui/voice/VoiceStatusText.d.ts +51 -0
  23. package/dist/shared/assistant/ui/voice/VoiceStatusText.d.ts.map +1 -0
  24. package/dist/shared/assistant/ui/voice/VoiceStatusText.js +42 -0
  25. package/dist/shared/assistant/ui/voice/VoiceWaveform.js +1 -1
  26. package/dist/shared/assistant/voice/rotationClock.d.ts +31 -0
  27. package/dist/shared/assistant/voice/rotationClock.d.ts.map +1 -0
  28. package/dist/shared/assistant/voice/rotationClock.js +27 -0
  29. package/dist/shared/assistant/voice/voiceStatus.d.ts +81 -0
  30. package/dist/shared/assistant/voice/voiceStatus.d.ts.map +1 -0
  31. package/dist/shared/assistant/voice/voiceStatus.js +33 -0
  32. package/dist/shared-assistant.js +88 -84
  33. package/package.json +1 -1
@@ -8,64 +8,64 @@ import { abortAssistantTurn as a, approvePendingWrite as o, createAssistantSandb
8
8
  import { getAssistantMedia as h, sanitize as re } from "../progress.js";
9
9
  import { streamBudgetMs as ie, withIncompleteTurnNotice as ae } from "../streamBudget.js";
10
10
  import { isVoiceTurn as g, voiceMarker as _, voiceSessionIdOf as v } from "../voice/turnVisibility.js";
11
- import { buildContinuedFromVoiceNote as oe, buildVoiceTranscriptMarkdown as y, voiceTranscriptFilename as se } from "../voice/voiceTranscript.js";
12
- import { pollDelayMs as ce } from "../voice/assistantPollSchedule.js";
13
- import { toCaptionText as le } from "../voice/captionText.js";
14
- import { resolveAssistantLanguage as ue } from "../voice/languages.js";
15
- import { resolveLanguagePair as de } from "../voice/languagePair.js";
16
- import { findPendingWrite as b } from "../pendingWrite.js";
17
- import { buildPromptParts as fe, buildPromptWithAttachments as pe, countInlineImageCandidates as me, countInlinedImageParts as he, getSendableAttachments as ge, toMessageAttachment as _e } from "../attachments.js";
18
- import { useAssistantStore as x } from "../store.js";
19
- import { isTurnInFlight as ve, planAbandonedTurn as ye, planTurnAbort as be } from "../turnState.js";
20
- import { STAGE_COPY as S, isStageCopy as xe, stageText as C, statusStageCopy as Se, thinkingPhrase as Ce } from "../stageCopy.js";
21
- import { parseToolActivity as we } from "./AssistantToolActivity.js";
22
- import { useVoiceSession as Te } from "./useVoiceSession.js";
23
- import { getOrganizationId as Ee, getWorkspaceId as De } from "../context.js";
24
- import { createReadinessTracker as Oe } from "../sandboxReadiness.js";
25
- import { AssistantSpokenTurnsNotice as ke } from "./AssistantSpokenTurnsNotice.js";
26
- import { VoiceTranscriptDrawer as Ae } from "./voice/VoiceTranscriptDrawer.js";
27
- import { downloadFile as je } from "../exportConversation.js";
28
- import { AssistantEmptyState as Me } from "./AssistantEmptyState.js";
29
- import { AssistantMessageList as Ne } from "./AssistantMessageList.js";
30
- import { AssistantVoiceSession as Pe } from "./voice/AssistantVoiceSession.js";
31
- import { useAssistantApiAccess as Fe } from "../useAssistantApiAccess.js";
32
- import { useConversationTurns as Ie } from "../useConversationTurns.js";
33
- import { isMultimodalBodyRejection as Le, isRecoverableAssistantError as Re } from "../transportErrors.js";
34
- import { dispatchAssistantQuotaExhausted as ze, notifyAiCreditsUpdated as Be } from "../aiCredits.js";
35
- import { useAssistantAttachments as Ve } from "../useAssistantAttachments.js";
36
- import { AssistantComposer as He } from "./composer/AssistantComposer.js";
37
- import { isProdRuntime as Ue } from "../env.js";
38
- import { AssistantApiCallsConsentDialog as We } from "./AssistantApiCallsConsentDialog.js";
39
- import { useCallback as w, useEffect as T, useMemo as E, useRef as D, useState as Ge } from "react";
40
- import { jsx as O, jsxs as Ke } from "react/jsx-runtime";
11
+ import { STAGE_COPY as y, isStageCopy as oe, stageText as b, statusStageCopy as se, thinkingPhrase as ce } from "../stageCopy.js";
12
+ import { buildContinuedFromVoiceNote as x, buildVoiceTranscriptMarkdown as le, voiceTranscriptFilename as ue } from "../voice/voiceTranscript.js";
13
+ import { pollDelayMs as de } from "../voice/assistantPollSchedule.js";
14
+ import { toCaptionText as fe } from "../voice/captionText.js";
15
+ import { resolveAssistantLanguage as pe } from "../voice/languages.js";
16
+ import { resolveLanguagePair as me } from "../voice/languagePair.js";
17
+ import { findPendingWrite as he } from "../pendingWrite.js";
18
+ import { buildPromptParts as ge, buildPromptWithAttachments as _e, countInlineImageCandidates as ve, countInlinedImageParts as ye, getSendableAttachments as be, toMessageAttachment as xe } from "../attachments.js";
19
+ import { useAssistantStore as S } from "../store.js";
20
+ import { isTurnInFlight as Se, planAbandonedTurn as Ce, planTurnAbort as we } from "../turnState.js";
21
+ import { parseToolActivity as Te } from "./AssistantToolActivity.js";
22
+ import { useVoiceSession as Ee } from "./useVoiceSession.js";
23
+ import { getOrganizationId as De, getWorkspaceId as Oe } from "../context.js";
24
+ import { createReadinessTracker as ke } from "../sandboxReadiness.js";
25
+ import { AssistantSpokenTurnsNotice as Ae } from "./AssistantSpokenTurnsNotice.js";
26
+ import { VoiceTranscriptDrawer as je } from "./voice/VoiceTranscriptDrawer.js";
27
+ import { downloadFile as Me } from "../exportConversation.js";
28
+ import { AssistantEmptyState as Ne } from "./AssistantEmptyState.js";
29
+ import { AssistantMessageList as Pe } from "./AssistantMessageList.js";
30
+ import { AssistantVoiceSession as Fe } from "./voice/AssistantVoiceSession.js";
31
+ import { useAssistantApiAccess as Ie } from "../useAssistantApiAccess.js";
32
+ import { useConversationTurns as Le } from "../useConversationTurns.js";
33
+ import { isMultimodalBodyRejection as Re, isRecoverableAssistantError as ze } from "../transportErrors.js";
34
+ import { dispatchAssistantQuotaExhausted as Be, notifyAiCreditsUpdated as Ve } from "../aiCredits.js";
35
+ import { useAssistantAttachments as He } from "../useAssistantAttachments.js";
36
+ import { AssistantComposer as Ue } from "./composer/AssistantComposer.js";
37
+ import { isProdRuntime as We } from "../env.js";
38
+ import { AssistantApiCallsConsentDialog as Ge } from "./AssistantApiCallsConsentDialog.js";
39
+ import { useCallback as C, useEffect as w, useMemo as T, useRef as E, useState as Ke } from "react";
40
+ import { jsx as D, jsxs as qe } from "react/jsx-runtime";
41
41
  //#region src/shared/assistant/ui/AssistantChatArea.tsx
42
- var qe = 600, Je = 2e4;
43
- function Ye() {
42
+ var Je = 600, Ye = 2e4;
43
+ function Xe() {
44
44
  return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
45
45
  }
46
- function Xe(e) {
46
+ function Ze(e) {
47
47
  return e.info?.time?.created ?? 0;
48
48
  }
49
- function k(e) {
49
+ function O(e) {
50
50
  return (e ?? []).filter((e) => e.type === "text" && typeof e.text == "string").map((e) => e.text?.trim() ?? "").filter(Boolean).join("\n");
51
51
  }
52
- function A(e) {
52
+ function k(e) {
53
53
  return (e ?? []).filter((e) => e.type === "tool" && e.tool).map((e) => {
54
54
  let t = e.state?.status ?? "running", n = e.tool ?? "tool";
55
55
  return t === "completed" ? `Completed: ${n}` : t === "failed" ? `Failed: ${n}` : `Running: ${n}`;
56
56
  });
57
57
  }
58
- function Ze(e, t) {
59
- let n = e.filter((e) => e.info?.role === "assistant" && Xe(e) > t).sort((e, t) => Xe(e) - Xe(t));
58
+ function Qe(e, t) {
59
+ let n = e.filter((e) => e.info?.role === "assistant" && Ze(e) > t).sort((e, t) => Ze(e) - Ze(t));
60
60
  if (n.length === 0) return {
61
- content: S.thinking.fallback,
61
+ content: y.thinking.fallback,
62
62
  done: !1
63
63
  };
64
- let r = n[n.length - 1], i = k(r.parts), a = h(r.parts), o = A(r.parts), s = b(r.parts), c = [
64
+ let r = n[n.length - 1], i = O(r.parts), a = h(r.parts), o = k(r.parts), s = he(r.parts), c = [
65
65
  i,
66
66
  ...a,
67
67
  ...o
68
- ].filter(Boolean).join("\n\n") || S.thinking.fallback, l = r.info?.providerID, u = r.info?.modelID;
68
+ ].filter(Boolean).join("\n\n") || y.thinking.fallback, l = r.info?.providerID, u = r.info?.modelID;
69
69
  return {
70
70
  content: c,
71
71
  done: !!r.info?.time?.completed && (!!i || a.length > 0 || o.length > 0),
@@ -75,118 +75,118 @@ function Ze(e, t) {
75
75
  ...s ? { pendingWrite: s } : {}
76
76
  };
77
77
  }
78
- var j = ({ visible: h = !0, writeAccess: b = "unknown" }) => {
79
- let k = r(), { product: A, modes: j, gatherPageContext: Qe, buildPrompt: $e, reportTokenUsage: et } = n(), { getAccessToken: M, getWorkspaceToken: N, userId: P } = t(), { locale: tt } = e(), nt = x((e) => e.assistantLanguage), rt = x((e) => e.replyLanguage), it = E(() => de(nt, rt, tt), [
80
- nt,
78
+ var A = ({ visible: h = !0, writeAccess: he = "unknown" }) => {
79
+ let O = r(), { product: k, modes: A, gatherPageContext: $e, buildPrompt: et, reportTokenUsage: tt } = n(), { getAccessToken: j, getWorkspaceToken: M, userId: N } = t(), { locale: nt } = e(), rt = S((e) => e.assistantLanguage), it = S((e) => e.replyLanguage), at = T(() => me(rt, it, nt), [
81
80
  rt,
82
- tt
83
- ]), at = it.reply.english, ot = it.replyIsExplicit, st = it.reply.code, { conversations: ct, activeConversationId: F, mode: I, processingByConversationId: lt, setMode: ut, setConversationMode: dt, setActiveConversation: ft, createConversation: L, addMessage: R, updateMessage: z, patchMessage: B, mergeMessageMetadata: pt, setConversationProcessing: V, clearConversationProcessing: mt, setBackendSessionId: ht, clearBackendSessionId: gt, setSandbox: H, clearSandbox: _t, acknowledgeApiCalls: vt } = x(), yt = ct.find((e) => e.id === F), U = Ie(yt), bt = U.all, xt = F ? lt[F] : void 0, St = ve(xt?.status), Ct = St ? xt?.messageId ?? null : null, wt = xt?.status === "error" ? xt.messageId : null, { canUseApiCalls: Tt, loading: Et } = Fe(Ee()), Dt = E(() => j.filter((e) => !e.requiresAdmin || Tt), [j, Tt]), [Ot, kt] = Ge(null), [At, jt] = Ge(!1), Mt = D({}), W = D(Oe()), Nt = D(/* @__PURE__ */ new Set()), Pt = E(() => j.find((e) => e.id === I), [j, I]);
84
- T(() => {
85
- Et || (!Pt || Pt.requiresAdmin && !Tt) && I !== "assistant" && ut("assistant");
81
+ it,
82
+ nt
83
+ ]), ot = at.reply.english, st = at.replyIsExplicit, ct = at.reply.code, { conversations: lt, activeConversationId: P, mode: F, processingByConversationId: ut, setMode: I, setConversationMode: dt, setActiveConversation: ft, createConversation: L, addMessage: R, updateMessage: z, patchMessage: B, mergeMessageMetadata: pt, setConversationProcessing: V, clearConversationProcessing: mt, setBackendSessionId: ht, clearBackendSessionId: gt, setSandbox: H, clearSandbox: _t, acknowledgeApiCalls: vt } = S(), yt = lt.find((e) => e.id === P), U = Le(yt), bt = U.all, xt = P ? ut[P] : void 0, St = Se(xt?.status), Ct = St ? xt?.messageId ?? null : null, wt = xt?.status === "error" ? xt.messageId : null, { canUseApiCalls: Tt, loading: Et } = Ie(De()), Dt = T(() => A.filter((e) => !e.requiresAdmin || Tt), [A, Tt]), [Ot, kt] = Ke(null), [At, jt] = Ke(!1), Mt = E({}), Nt = E(ke()), Pt = E(/* @__PURE__ */ new Set()), Ft = T(() => A.find((e) => e.id === F), [A, F]);
84
+ w(() => {
85
+ Et || (!Ft || Ft.requiresAdmin && !Tt) && F !== "assistant" && I("assistant");
86
86
  }, [
87
- I,
88
- Pt,
87
+ F,
88
+ Ft,
89
89
  Tt,
90
90
  Et,
91
- ut
91
+ I
92
92
  ]);
93
- let G = w((e, t, n, r) => {
94
- V(e, n, t, null), r ? z(e, t, r) : z(e, t, Se(k, n));
93
+ let W = C((e, t, n, r) => {
94
+ V(e, n, t, null), r ? z(e, t, r) : z(e, t, se(O, n));
95
95
  }, [
96
96
  V,
97
97
  z,
98
- k
99
- ]), Ft = w(async (e, t, n, r, i) => {
100
- let a = x.getState().sandboxesByMode[n]?.sandboxId ?? null, o = async (e) => {
101
- if (W.current.isFresh(e)) return !0;
98
+ O
99
+ ]), It = C(async (e, t, n, r, i) => {
100
+ let a = S.getState().sandboxesByMode[n]?.sandboxId ?? null, o = async (e) => {
101
+ if (Nt.current.isFresh(e)) return !0;
102
102
  try {
103
- return await m(e, r, i, 3e5), await p(e, r, i, 9e4), W.current.markVerified(e), !0;
103
+ return await m(e, r, i, 3e5), await p(e, r, i, 9e4), Nt.current.markVerified(e), !0;
104
104
  } catch {
105
- return W.current.invalidate(e), !1;
105
+ return Nt.current.invalidate(e), !1;
106
106
  }
107
107
  };
108
- if (a && (H(n, a, "provisioning"), G(e, t, "provisioning", C(k, S.reusingEnvironment)), await o(a) || (H(n, null, "provisioning"), a = null)), !a) {
109
- G(e, t, "provisioning", C(k, S.lookingForEnvironment));
110
- let s = await u(r, A, n, Ue(), i);
111
- s && (H(n, s, "provisioning"), G(e, t, "provisioning", C(k, S.reusingEnvironment)), await o(s) ? a = s : H(n, null, "provisioning"));
108
+ if (a && (H(n, a, "provisioning"), W(e, t, "provisioning", b(O, y.reusingEnvironment)), await o(a) || (H(n, null, "provisioning"), a = null)), !a) {
109
+ W(e, t, "provisioning", b(O, y.lookingForEnvironment));
110
+ let s = await u(r, k, n, We(), i);
111
+ s && (H(n, s, "provisioning"), W(e, t, "provisioning", b(O, y.reusingEnvironment)), await o(s) ? a = s : H(n, null, "provisioning"));
112
112
  }
113
113
  if (!a) {
114
- if (n === "api-calls" && !M()) throw Error("API Calls mode requires an authenticated session. Please sign in again.");
115
- G(e, t, "provisioning", C(k, S.startingEnvironment)), H(n, null, "provisioning"), await f(r, A, n, Ue(), i), a = await s(A, n, r, Ue(), qe, i), H(n, a, "provisioning"), await m(a, r, i, 3e5), await p(a, r, i, 9e4);
114
+ if (n === "api-calls" && !j()) throw Error("API Calls mode requires an authenticated session. Please sign in again.");
115
+ W(e, t, "provisioning", b(O, y.startingEnvironment)), H(n, null, "provisioning"), await f(r, k, n, We(), i), a = await s(k, n, r, We(), Je, i), H(n, a, "provisioning"), await m(a, r, i, 3e5), await p(a, r, i, 9e4);
116
116
  }
117
117
  H(n, a, "running");
118
- let l = x.getState().conversations.find((t) => t.id === e)?.backendSessionId ?? null;
118
+ let l = S.getState().conversations.find((t) => t.id === e)?.backendSessionId ?? null;
119
119
  if (l) try {
120
120
  let e = await d(a, r, l, i);
121
121
  if (e.mode !== n) throw Error(`Session mode mismatch: expected ${n}, received ${e.mode}`);
122
122
  } catch {
123
123
  gt(e), l = null;
124
124
  }
125
- return l || (G(e, t, "connecting", C(k, S.preparingSession)), l = (await c(a, r, n, i)).sessionId, ht(e, l)), {
125
+ return l || (W(e, t, "connecting", b(O, y.preparingSession)), l = (await c(a, r, n, i)).sessionId, ht(e, l)), {
126
126
  sandboxId: a,
127
127
  sessionId: l
128
128
  };
129
129
  }, [
130
130
  gt,
131
- M,
132
- A,
131
+ j,
132
+ k,
133
133
  ht,
134
134
  H,
135
- k,
136
- G
137
- ]), [It, Lt] = Ge(null), K = D(/* @__PURE__ */ new Set()), Rt = D(null), zt = w(() => {
138
- let e = x.getState(), t = e.activeConversationId;
135
+ O,
136
+ W
137
+ ]), [Lt, Rt] = Ke(null), G = E(/* @__PURE__ */ new Set()), zt = E(null), Bt = C(() => {
138
+ let e = S.getState(), t = e.activeConversationId;
139
139
  if (!t) return;
140
- let n = e.processingByConversationId[t], r = ve(n?.status) ? n?.messageId ?? null : null;
141
- if (!be({
140
+ let n = e.processingByConversationId[t], r = Se(n?.status) ? n?.messageId ?? null : null;
141
+ if (!we({
142
142
  interruptedTurnId: r,
143
143
  activeTurnId: r,
144
- alreadyRequested: r ? K.current.has(r) : !1
144
+ alreadyRequested: r ? G.current.has(r) : !1
145
145
  }).send || !r) return;
146
- K.current.add(r);
147
- let i = e.sandboxesByMode[e.mode]?.sandboxId, o = De(), s = e.conversations.find((e) => e.id === t)?.backendSessionId;
146
+ G.current.add(r);
147
+ let i = e.sandboxesByMode[e.mode]?.sandboxId, o = Oe(), s = e.conversations.find((e) => e.id === t)?.backendSessionId;
148
148
  !i || !o || !s || a(i, o, s, {
149
- accessToken: M(),
150
- workspaceToken: N(),
151
- userId: P,
152
- organizationId: Ee()
149
+ accessToken: j(),
150
+ workspaceToken: M(),
151
+ userId: N,
152
+ organizationId: De()
153
153
  });
154
154
  }, [
155
- P,
156
- M,
157
- N
158
- ]), Bt = w(async (e) => {
159
- let t = x.getState(), n = t.sandboxesByMode[t.mode]?.sandboxId, r = De(), i = t.activeConversationId;
155
+ N,
156
+ j,
157
+ M
158
+ ]), Vt = C(async (e) => {
159
+ let t = S.getState(), n = t.sandboxesByMode[t.mode]?.sandboxId, r = Oe(), i = t.activeConversationId;
160
160
  if (!(!n || !r || !i)) {
161
- Lt(e);
161
+ Rt(e);
162
162
  try {
163
163
  await o(n, r, e, {
164
- accessToken: M(),
165
- workspaceToken: N(),
166
- userId: P,
167
- organizationId: Ee()
164
+ accessToken: j(),
165
+ workspaceToken: M(),
166
+ userId: N,
167
+ organizationId: De()
168
168
  });
169
169
  } catch (e) {
170
- Lt(null), R(i, {
171
- id: Ye(),
170
+ Rt(null), R(i, {
171
+ id: Xe(),
172
172
  role: "system",
173
173
  content: e instanceof Error ? e.message : "The change could not be approved.",
174
174
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
175
175
  });
176
176
  return;
177
177
  }
178
- Lt(null), J.current(k("pendingWrite.approvedPrompt", "I approved that change — go ahead."));
178
+ Rt(null), q.current(O("pendingWrite.approvedPrompt", "I approved that change — go ahead."));
179
179
  }
180
180
  }, [
181
- P,
181
+ N,
182
182
  R,
183
- k
184
- ]), q = w(async (e, t = [], n = {}) => {
185
- let r = n.voiceSessionId !== void 0, a = x.getState(), o = a.activeConversationId ?? F;
183
+ O
184
+ ]), K = C(async (e, t = [], n = {}) => {
185
+ let r = n.voiceSessionId !== void 0, a = S.getState(), o = a.activeConversationId ?? P;
186
186
  if (o) {
187
- if (ve(a.processingByConversationId[o]?.status)) {
187
+ if (Se(a.processingByConversationId[o]?.status)) {
188
188
  let r = a.processingByConversationId[o]?.messageId ?? null;
189
- r && K.current.has(r) && (Rt.current = {
189
+ r && G.current.has(r) && (zt.current = {
190
190
  conversationId: o,
191
191
  content: e,
192
192
  attachments: t,
@@ -194,39 +194,39 @@ var j = ({ visible: h = !0, writeAccess: b = "unknown" }) => {
194
194
  });
195
195
  return;
196
196
  }
197
- if (Nt.current.has(o)) return;
197
+ if (Pt.current.has(o)) return;
198
198
  }
199
- let s = a.mode, c = F, u = c ? x.getState().conversations.find((e) => e.id === c) : void 0;
199
+ let s = a.mode, c = P, u = c ? S.getState().conversations.find((e) => e.id === c) : void 0;
200
200
  if (c ? u && u.mode !== s && (u.messages.length > 0 || u.backendSessionId) ? c = L(void 0, s) : u && u.mode !== s && dt(c, s) : c = L(void 0, s), !c) return;
201
201
  Mt.current[c] = t;
202
- let d = De(), f = {
203
- accessToken: M(),
204
- workspaceToken: N(),
205
- userId: P,
206
- organizationId: Ee()
202
+ let d = Oe(), f = {
203
+ accessToken: j(),
204
+ workspaceToken: M(),
205
+ userId: N,
206
+ organizationId: De()
207
207
  }, p = {
208
- id: Ye(),
208
+ id: Xe(),
209
209
  role: "user",
210
210
  content: e,
211
211
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
212
212
  metadata: {
213
- ...t.length ? { attachments: t.map(_e) } : {},
213
+ ...t.length ? { attachments: t.map(xe) } : {},
214
214
  ..._(n.voiceSessionId)
215
215
  }
216
216
  };
217
217
  R(c, p);
218
- let m = Ye();
218
+ let m = Xe();
219
219
  R(c, {
220
220
  id: m,
221
221
  role: "assistant",
222
222
  content: "",
223
223
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
224
224
  metadata: {
225
- lang: st,
225
+ lang: ct,
226
226
  ..._(n.voiceSessionId)
227
227
  }
228
228
  }), V(c, "provisioning", m, null);
229
- let h = (e, t, r, i, a = st) => {
229
+ let h = (e, t, r, i, a = ct) => {
230
230
  B(c, m, { content: re(e) }), pt(c, m, {
231
231
  lang: a,
232
232
  ...t?.length ? { artifacts: t } : {},
@@ -238,75 +238,75 @@ var j = ({ visible: h = !0, writeAccess: b = "unknown" }) => {
238
238
  }, g = async (n = 1) => {
239
239
  let i = !1;
240
240
  try {
241
- let { sandboxId: n, sessionId: a } = await Ft(c, m, s, d, f), o = (await te(n, d, a, f, { limit: 50 }).catch(() => [])).reduce((e, t) => Math.max(e, Xe(t)), 0);
242
- G(c, m, "streaming", C(k, S.thinking));
243
- let u = pe(e, t), p = $e?.(s, u, at, ot, r) ?? u, g = fe(p, t), _ = he(g), v = _ > 0, oe = Qe?.();
244
- i = me(t) > _;
241
+ let { sandboxId: n, sessionId: a } = await It(c, m, s, d, f), o = (await te(n, d, a, f, { limit: 50 }).catch(() => [])).reduce((e, t) => Math.max(e, Ze(t)), 0);
242
+ W(c, m, "streaming", b(O, y.thinking));
243
+ let u = _e(e, t), p = et?.(s, u, ot, st, r) ?? u, g = ge(p, t), _ = ye(g), v = _ > 0, se = $e?.();
244
+ i = ve(t) > _;
245
245
  try {
246
- await ne(n, d, a, p, s, oe, f, g?.length ? { parts: g } : void 0);
246
+ await ne(n, d, a, p, s, se, f, g?.length ? { parts: g } : void 0);
247
247
  } catch (e) {
248
- if (!g || !Le(e)) throw e;
249
- await ne(n, d, a, p, s, oe, f, void 0), i ||= v;
248
+ if (!g || !Re(e)) throw e;
249
+ await ne(n, d, a, p, s, se, f, void 0), i ||= v;
250
250
  }
251
- let y = Ze([], o), se = Date.now() + ie(s), le = Date.now(), ue = Date.now(), de = () => ye({
251
+ let x = Qe([], o), le = Date.now() + ie(s), ue = Date.now(), fe = Date.now(), pe = () => Ce({
252
252
  turnId: m,
253
- abortRequested: K.current.has(m),
254
- activeTurnId: x.getState().processingByConversationId[c]?.messageId ?? null
255
- }), b = () => {
256
- let e = x.getState().conversations.find((e) => e.id === c)?.messages.find((e) => e.id === m)?.content;
257
- xe(k, e) && z(c, m, C(k, S.stopped));
253
+ abortRequested: G.current.has(m),
254
+ activeTurnId: S.getState().processingByConversationId[c]?.messageId ?? null
255
+ }), me = () => {
256
+ let e = S.getState().conversations.find((e) => e.id === c)?.messages.find((e) => e.id === m)?.content;
257
+ oe(O, e) && z(c, m, b(O, y.stopped));
258
258
  };
259
- for (; Date.now() < se;) {
260
- let e = de();
259
+ for (; Date.now() < le;) {
260
+ let e = pe();
261
261
  if (e.abandon) {
262
- b(), e.clearProcessing && mt(c);
262
+ me(), e.clearProcessing && mt(c);
263
263
  return;
264
264
  }
265
- if (y = Ze(await te(n, d, a, f, {
265
+ if (x = Qe(await te(n, d, a, f, {
266
266
  limit: 50,
267
267
  sinceMs: o
268
- }), o), B(c, m, { content: xe(k, y.content) ? Ce(k, Date.now() - ue) : re(y.content) }), y.pendingWrite && pt(c, m, { pendingWrite: y.pendingWrite }), y.done) break;
269
- Date.now() - le > 3e4 && (await l(n, d, 600, f).catch(() => void 0), le = Date.now()), await new Promise((e) => setTimeout(e, ce(Date.now() - ue)));
268
+ }), o), B(c, m, { content: oe(O, x.content) ? ce(O, Date.now() - fe) : re(x.content) }), x.pendingWrite && pt(c, m, { pendingWrite: x.pendingWrite }), x.done) break;
269
+ Date.now() - ue > 3e4 && (await l(n, d, 600, f).catch(() => void 0), ue = Date.now()), await new Promise((e) => setTimeout(e, de(Date.now() - fe)));
270
270
  }
271
- let ge = s === "vibe-plugins" ? await ee(n, d, a, f).then((e) => e).catch(() => []) : void 0;
272
- if (y.done || (y = {
273
- ...y,
274
- content: ae(y.content, s, k)
275
- }), i && (y = {
276
- ...y,
277
- content: `${y.content}\n\n${k("attachments.imagesNotSent", "_Your photo was too large to include with this message, so the answer above is from the text and the file link only. Try a smaller or more tightly cropped photo._")}`
278
- }), h(y.content, ge, a, n), y.tokens) {
279
- B(c, m, { tokens: y.tokens });
271
+ let he = s === "vibe-plugins" ? await ee(n, d, a, f).then((e) => e).catch(() => []) : void 0;
272
+ if (x.done || (x = {
273
+ ...x,
274
+ content: ae(x.content, s, O)
275
+ }), i && (x = {
276
+ ...x,
277
+ content: `${x.content}\n\n${O("attachments.imagesNotSent", "_Your photo was too large to include with this message, so the answer above is from the text and the file link only. Try a smaller or more tightly cropped photo._")}`
278
+ }), h(x.content, he, a, n), x.tokens) {
279
+ B(c, m, { tokens: x.tokens });
280
280
  try {
281
- await et?.({
281
+ await tt?.({
282
282
  workspaceId: d,
283
283
  sessionId: a,
284
- messageId: y.messageId,
285
- model: y.model,
286
- tokens: y.tokens
287
- }), Be(A);
284
+ messageId: x.messageId,
285
+ model: x.model,
286
+ tokens: x.tokens
287
+ }), Ve(k);
288
288
  } catch {}
289
289
  }
290
- let _e = de();
291
- if (_e.abandon) {
292
- b(), _e.clearProcessing && mt(c);
290
+ let be = pe();
291
+ if (be.abandon) {
292
+ me(), be.clearProcessing && mt(c);
293
293
  return;
294
294
  }
295
295
  V(c, "complete", m, null);
296
296
  } catch (e) {
297
- if (n === 1 && Re(e)) return gt(c), _t(s), g(2);
297
+ if (n === 1 && ze(e)) return gt(c), _t(s), g(2);
298
298
  throw e;
299
299
  }
300
300
  }, v = c;
301
- Nt.current.add(v);
301
+ Pt.current.add(v);
302
302
  try {
303
303
  if (!d) throw Error("Assistant backend is unavailable without an active workspace context.");
304
304
  await g();
305
305
  } catch (e) {
306
- W.current.invalidate(x.getState().sandboxesByMode[s]?.sandboxId ?? null);
306
+ Nt.current.invalidate(S.getState().sandboxesByMode[s]?.sandboxId ?? null);
307
307
  let t = i(e);
308
308
  if (t) {
309
- t.refusal === "exhausted" && ze(A, "sandbox");
309
+ t.refusal === "exhausted" && Be(k, "sandbox");
310
310
  let e = [t.quotaName, t.traceId ? `reference ${t.traceId}` : null].filter(Boolean).join(" · "), n = t.refusal === "exhausted" ? "You've reached your sandbox limit on the current plan. Upgrade to start the AI assistant." : "This workspace has no sandbox allowance provisioned, so the AI assistant cannot start. Upgrading will not help — ask an administrator to provision it.";
311
311
  h(e ? `${n}\n\n${e}` : n, void 0, void 0, void 0, "en"), V(c, "error", m, null);
312
312
  return;
@@ -317,239 +317,239 @@ var j = ({ visible: h = !0, writeAccess: b = "unknown" }) => {
317
317
  ..._(n.voiceSessionId)
318
318
  });
319
319
  } finally {
320
- Nt.current.delete(v);
321
- let e = Rt.current;
322
- Rt.current = null, e && e.conversationId === v && J.current(e.content, e.attachments, e.options);
320
+ Pt.current.delete(v);
321
+ let e = zt.current;
322
+ zt.current = null, e && e.conversationId === v && q.current(e.content, e.attachments, e.options);
323
323
  }
324
324
  }, [
325
- F,
325
+ P,
326
326
  R,
327
- $e,
327
+ et,
328
328
  gt,
329
329
  _t,
330
- ct,
330
+ lt,
331
331
  L,
332
- Ft,
333
- Qe,
332
+ It,
333
+ $e,
334
+ j,
334
335
  M,
335
- N,
336
336
  B,
337
- A,
338
- et,
339
- ot,
337
+ k,
338
+ tt,
340
339
  st,
341
- at,
340
+ ct,
341
+ ot,
342
342
  ht,
343
343
  dt,
344
344
  V,
345
345
  mt,
346
- k,
347
- G,
346
+ O,
347
+ W,
348
348
  z,
349
- P
350
- ]), Vt = w((e) => {
351
- q(e);
352
- }, [q]), Ht = w(() => {
353
- let e = [...U.chat].reverse().find((e) => e.role === "user"), t = F ? Mt.current[F] ?? [] : [];
354
- e && q(e.content, t);
349
+ N
350
+ ]), Ht = C((e) => {
351
+ K(e);
352
+ }, [K]), Ut = C(() => {
353
+ let e = [...U.chat].reverse().find((e) => e.role === "user"), t = P ? Mt.current[P] ?? [] : [];
354
+ e && K(e.content, t);
355
355
  }, [
356
356
  bt,
357
- q,
358
- F
359
- ]), J = D(q);
360
- T(() => {
361
- J.current = q;
362
- }, [q]);
363
- let Y = E(() => {
357
+ K,
358
+ P
359
+ ]), q = E(K);
360
+ w(() => {
361
+ q.current = K;
362
+ }, [K]);
363
+ let J = T(() => {
364
364
  if (St) return null;
365
365
  for (let e = bt.length - 1; e >= 0; --e) {
366
366
  let t = bt[e];
367
- if (t?.role !== "assistant" || !g(t) || K.current.has(t.id)) continue;
368
- let n = we(t.content).text.trim();
367
+ if (t?.role !== "assistant" || !g(t) || G.current.has(t.id)) continue;
368
+ let n = Te(t.content).text.trim();
369
369
  return n ? {
370
370
  id: t.id,
371
371
  text: n
372
372
  } : null;
373
373
  }
374
374
  return null;
375
- }, [bt, St]), Ut = E(() => Y ? le(Y.text) : null, [Y]), Wt = U.chat, X = E(() => U.voice.filter((e) => e.role === "user" || e.role === "assistant").map((e) => ({
375
+ }, [bt, St]), Wt = T(() => J ? fe(J.text) : null, [J]), Gt = U.chat, Y = T(() => U.voice.filter((e) => e.role === "user" || e.role === "assistant").map((e) => ({
376
376
  id: e.id,
377
377
  role: e.role,
378
- text: we(e.content).text.trim(),
378
+ text: Te(e.content).text.trim(),
379
379
  sessionId: v(e),
380
380
  timestamp: e.timestamp
381
- })).filter((e) => e.text.length > 0), [U.voice]), Gt = w(() => {
382
- if (X.length === 0) return;
381
+ })).filter((e) => e.text.length > 0), [U.voice]), Kt = C(() => {
382
+ if (Y.length === 0) return;
383
383
  let e = /* @__PURE__ */ new Date();
384
- je(y(X, {
385
- title: k("voiceSession.transcript", "Voice conversation"),
386
- savedAt: k("voiceSession.savedAt", "Saved"),
387
- session: k("voiceSession.sessionLabel", "Session"),
388
- earlier: k("voiceSession.earlierLabel", "Earlier"),
389
- you: k("voiceSession.speakerYou", "You"),
390
- assistant: k("voiceSession.speakerAssistant", "Assistant")
391
- }, e), se(A, e), "text/markdown");
384
+ Me(le(Y, {
385
+ title: O("voiceSession.transcript", "Voice conversation"),
386
+ savedAt: O("voiceSession.savedAt", "Saved"),
387
+ session: O("voiceSession.sessionLabel", "Session"),
388
+ earlier: O("voiceSession.earlierLabel", "Earlier"),
389
+ you: O("voiceSession.speakerYou", "You"),
390
+ assistant: O("voiceSession.speakerAssistant", "Assistant")
391
+ }, e), ue(k, e), "text/markdown");
392
392
  }, [
393
- A,
394
- X,
395
- k
396
- ]), Z = Ve(), Q = D(Z);
397
- Q.current = Z;
398
- let $ = Te({
399
- onSubmit: w((e, t) => {
393
+ k,
394
+ Y,
395
+ O
396
+ ]), X = He(), Z = E(X);
397
+ Z.current = X;
398
+ let Q = Ee({
399
+ onSubmit: C((e, t) => {
400
400
  let n = () => {
401
- let n = Q.current, r = ge(n.attachments);
402
- J.current(e, r, { voiceSessionId: t }), n.clear();
401
+ let n = Z.current, r = be(n.attachments);
402
+ q.current(e, r, { voiceSessionId: t }), n.clear();
403
403
  };
404
- if (!Q.current.isBusy) {
404
+ if (!Z.current.isBusy) {
405
405
  n();
406
406
  return;
407
407
  }
408
408
  let r = Date.now(), i = window.setInterval(() => {
409
- Q.current.isBusy && Date.now() - r < Je || (window.clearInterval(i), n());
409
+ Z.current.isBusy && Date.now() - r < Ye || (window.clearInterval(i), n());
410
410
  }, 200);
411
411
  }, []),
412
- latestReply: Y,
413
- language: ue(nt, tt).tag
414
- }), Kt = E(() => (yt?.messages ?? []).reduce((e, t) => Math.max(e, t.metadata?.continuedVoiceTurns ?? 0), 0), [yt?.messages]), qt = X.length > Kt, Jt = w(() => {
415
- let e = x.getState().activeConversationId;
416
- !e || X.length === 0 || (R(e, {
417
- id: Ye(),
412
+ latestReply: J,
413
+ language: pe(rt, nt).tag
414
+ }), qt = T(() => (yt?.messages ?? []).reduce((e, t) => Math.max(e, t.metadata?.continuedVoiceTurns ?? 0), 0), [yt?.messages]), Jt = Y.length > qt, Yt = C(() => {
415
+ let e = S.getState().activeConversationId;
416
+ !e || Y.length === 0 || (R(e, {
417
+ id: Xe(),
418
418
  role: "system",
419
- content: oe(X.slice(Kt), {
420
- intro: k("voiceSession.continuedIntro", "Continued from a voice conversation. You asked about:"),
421
- nothing: k("voiceSession.continuedNothing", "Continued from a voice conversation."),
422
- more: (e) => k("voiceSession.continuedMore", "…and {{count}} more", { count: e })
419
+ content: x(Y.slice(qt), {
420
+ intro: O("voiceSession.continuedIntro", "Continued from a voice conversation. You asked about:"),
421
+ nothing: O("voiceSession.continuedNothing", "Continued from a voice conversation."),
422
+ more: (e) => O("voiceSession.continuedMore", "…and {{count}} more", { count: e })
423
423
  }),
424
424
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
425
- metadata: { continuedVoiceTurns: X.length }
426
- }), jt(!1), $.end());
425
+ metadata: { continuedVoiceTurns: Y.length }
426
+ }), jt(!1), Q.end());
427
427
  }, [
428
- X,
429
- Kt,
428
+ Y,
429
+ qt,
430
430
  R,
431
- k,
432
- $
433
- ]), Yt = D(0);
434
- T(() => {
435
- $.active && (Yt.current = X.length);
436
- }, [$.active]);
437
- let Xt = w(() => {
438
- let e = X.length > Yt.current;
439
- $.end(), e && jt(!0);
440
- }, [X, $]);
441
- T(() => {
442
- !h && $.active && $.end();
443
- }, [h, $]), T(() => {
444
- $.active || (Q.current.clear(), Rt.current = null);
445
- }, [$.active]), T(() => {
446
- let e = x.getState().consumePendingPrompt();
447
- return e && J.current(e), x.subscribe((e, t) => {
431
+ O,
432
+ Q
433
+ ]), Xt = E(0);
434
+ w(() => {
435
+ Q.active && (Xt.current = Y.length);
436
+ }, [Q.active]);
437
+ let Zt = C(() => {
438
+ let e = Y.length > Xt.current;
439
+ Q.end(), e && jt(!0);
440
+ }, [Y, Q]);
441
+ w(() => {
442
+ !h && Q.active && Q.end();
443
+ }, [h, Q]), w(() => {
444
+ Q.active || (Z.current.clear(), zt.current = null);
445
+ }, [Q.active]), w(() => {
446
+ let e = S.getState().consumePendingPrompt();
447
+ return e && q.current(e), S.subscribe((e, t) => {
448
448
  if (e.pendingPrompt && e.pendingPrompt !== t.pendingPrompt) {
449
- let e = x.getState().consumePendingPrompt();
450
- e && J.current(e);
449
+ let e = S.getState().consumePendingPrompt();
450
+ e && q.current(e);
451
451
  }
452
452
  });
453
453
  }, []);
454
- let Zt = w((e) => {
455
- let t = F ? x.getState().conversations.find((e) => e.id === F) : void 0;
454
+ let $ = C((e) => {
455
+ let t = P ? S.getState().conversations.find((e) => e.id === P) : void 0;
456
456
  if (t && (t.messages.length > 0 || t.backendSessionId)) {
457
457
  if (t.mode !== e) {
458
- let t = x.getState().conversations.find((t) => t.mode === e && t.messages.length === 0 && !t.backendSessionId && !x.getState().processingByConversationId[t.id]);
458
+ let t = S.getState().conversations.find((t) => t.mode === e && t.messages.length === 0 && !t.backendSessionId && !S.getState().processingByConversationId[t.id]);
459
459
  t ? ft(t.id) : L(void 0, e);
460
460
  }
461
- } else F && dt(F, e);
462
- ut(e);
461
+ } else P && dt(P, e);
462
+ I(e);
463
463
  }, [
464
- F,
464
+ P,
465
465
  L,
466
466
  ft,
467
467
  dt,
468
- ut
469
- ]), Qt = w((e) => {
470
- if (j.find((t) => t.id === e)?.writeCapable && !x.getState().apiCallsAcknowledged) {
468
+ I
469
+ ]), Qt = C((e) => {
470
+ if (A.find((t) => t.id === e)?.writeCapable && !S.getState().apiCallsAcknowledged) {
471
471
  kt(e);
472
472
  return;
473
473
  }
474
- Zt(e);
475
- }, [Zt, j]), $t = w(() => {
474
+ $(e);
475
+ }, [$, A]), $t = C(() => {
476
476
  let e = Ot;
477
- kt(null), vt(), e && Zt(e);
477
+ kt(null), vt(), e && $(e);
478
478
  }, [
479
479
  Ot,
480
480
  vt,
481
- Zt
482
- ]), en = w(() => {
481
+ $
482
+ ]), en = C(() => {
483
483
  kt(null);
484
484
  }, []);
485
- return /* @__PURE__ */ Ke("div", {
485
+ return /* @__PURE__ */ qe("div", {
486
486
  className: "relative flex flex-1 flex-col overflow-hidden",
487
487
  children: [
488
- /* @__PURE__ */ Ke("div", {
488
+ /* @__PURE__ */ qe("div", {
489
489
  className: "contents",
490
- inert: $.active || void 0,
490
+ inert: Q.active || void 0,
491
491
  children: [
492
- X.length > 0 && !$.active ? /* @__PURE__ */ O(ke, {
493
- count: X.length,
492
+ Y.length > 0 && !Q.active ? /* @__PURE__ */ D(Ae, {
493
+ count: Y.length,
494
494
  onOpenTranscript: () => jt(!0)
495
495
  }) : null,
496
- Wt.length === 0 ? /* @__PURE__ */ O(Me, {
497
- mode: I,
498
- onSuggestionClick: Vt
499
- }) : /* @__PURE__ */ O("div", {
496
+ Gt.length === 0 ? /* @__PURE__ */ D(Ne, {
497
+ mode: F,
498
+ onSuggestionClick: Ht
499
+ }) : /* @__PURE__ */ D("div", {
500
500
  className: "flex min-h-0 flex-1 flex-col",
501
- children: /* @__PURE__ */ O(Ne, {
502
- onApprovePendingWrite: Bt,
503
- approvingWriteRef: It,
504
- messages: Wt,
501
+ children: /* @__PURE__ */ D(Pe, {
502
+ onApprovePendingWrite: Vt,
503
+ approvingWriteRef: Lt,
504
+ messages: Gt,
505
505
  streamingMessageId: Ct,
506
506
  failedMessageId: wt,
507
- onRetry: Ht
507
+ onRetry: Ut
508
508
  })
509
509
  }),
510
- /* @__PURE__ */ O(He, {
511
- onStartVoiceSession: $.available && I !== "api-calls" ? $.start : void 0,
512
- onSend: (e, t) => void q(e, t),
510
+ /* @__PURE__ */ D(Ue, {
511
+ onStartVoiceSession: Q.available && F !== "api-calls" ? Q.start : void 0,
512
+ onSend: (e, t) => void K(e, t),
513
513
  disabled: St,
514
- placeholder: I === "api-calls" ? k("chatArea.placeholderActions", "What would you like me to do?") : k("chatArea.placeholderGeneral", "Ask me anything…"),
515
- mode: I,
516
- writeAccessDenied: b === "denied" && !!Pt?.writeCapable,
514
+ placeholder: F === "api-calls" ? O("chatArea.placeholderActions", "What would you like me to do?") : O("chatArea.placeholderGeneral", "Ask me anything…"),
515
+ mode: F,
516
+ writeAccessDenied: he === "denied" && !!Ft?.writeCapable,
517
517
  availableModes: Dt,
518
518
  onModeChange: Qt
519
519
  })
520
520
  ]
521
521
  }),
522
- At && !$.active ? /* @__PURE__ */ O(Ae, {
523
- turns: X,
522
+ At && !Q.active ? /* @__PURE__ */ D(je, {
523
+ turns: Y,
524
524
  onClose: () => jt(!1),
525
- onSave: Gt,
526
- onContinueInChat: qt ? Jt : void 0,
525
+ onSave: Kt,
526
+ onContinueInChat: Jt ? Yt : void 0,
527
527
  closeOnEscape: !0
528
528
  }) : null,
529
- $.active && /* @__PURE__ */ O(Pe, {
530
- session: $.session,
531
- notice: $.notice,
532
- capturing: $.capturing,
533
- interrupting: $.interrupting,
534
- awaitingEndpoint: $.awaitingEndpoint,
535
- turns: X,
536
- spokenChunks: $.spokenChunks,
537
- attachments: Z.attachments,
538
- onAttachFiles: Z.addFiles,
539
- onRemoveAttachment: Z.remove,
540
- onRetryAttachment: Z.retry,
541
- canAttachMore: Z.canAddMore,
542
- preparingAttachments: Z.preparingCount,
543
- onSaveTranscript: Gt,
544
- onContinueInChat: Jt,
529
+ Q.active && /* @__PURE__ */ D(Fe, {
530
+ session: Q.session,
531
+ notice: Q.notice,
532
+ capturing: Q.capturing,
533
+ interrupting: Q.interrupting,
534
+ awaitingEndpoint: Q.awaitingEndpoint,
535
+ turns: Y,
536
+ spokenChunks: Q.spokenChunks,
537
+ attachments: X.attachments,
538
+ onAttachFiles: X.addFiles,
539
+ onRemoveAttachment: X.remove,
540
+ onRetryAttachment: X.retry,
541
+ canAttachMore: X.canAddMore,
542
+ preparingAttachments: X.preparingCount,
543
+ onSaveTranscript: Kt,
544
+ onContinueInChat: Yt,
545
545
  onInterrupt: () => {
546
- $.interrupt(), zt();
546
+ Q.interrupt(), Bt();
547
547
  },
548
- spoken: Ut,
549
- onToggleMute: $.toggleMute,
550
- onEnd: Xt
548
+ spoken: Wt,
549
+ onToggleMute: Q.toggleMute,
550
+ onEnd: Zt
551
551
  }),
552
- /* @__PURE__ */ O(We, {
552
+ /* @__PURE__ */ D(Ge, {
553
553
  open: Ot !== null,
554
554
  onConfirm: $t,
555
555
  onCancel: en
@@ -558,4 +558,4 @@ var j = ({ visible: h = !0, writeAccess: b = "unknown" }) => {
558
558
  });
559
559
  };
560
560
  //#endregion
561
- export { j as AssistantChatArea };
561
+ export { A as AssistantChatArea };