@burdenoff/fe-libs 2026.917.1 → 2026.917.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.
|
@@ -32,7 +32,7 @@ export interface ExistingAssistantSandbox {
|
|
|
32
32
|
createdBy: string;
|
|
33
33
|
}
|
|
34
34
|
/** Pure reuse selector, kept separate so quarantine behavior is regression-testable. */
|
|
35
|
-
export declare function selectExistingAssistantSandbox(sandboxes: ExistingAssistantSandbox[], product: string, mode: AssistantMode,
|
|
35
|
+
export declare function selectExistingAssistantSandbox(sandboxes: ExistingAssistantSandbox[], product: string, mode: AssistantMode, _isProd: boolean, authContext: Pick<AssistantSandboxAuthContext, "userId">, excludedSandboxIds?: ReadonlySet<string>): string | null;
|
|
36
36
|
/**
|
|
37
37
|
* Does this mode write through the gateway, and therefore need the
|
|
38
38
|
* confirm-before-write gate?
|
|
@@ -88,7 +88,15 @@ export declare function approvePendingWrite(sandboxId: string, workspaceId: stri
|
|
|
88
88
|
* ★★ Pure and exported so the ownership rules below are testable without a
|
|
89
89
|
* network. Getting these wrong stops somebody else's container.
|
|
90
90
|
*/
|
|
91
|
-
export declare function selectSupersededAssistantSandboxes(sandboxes: readonly ExistingAssistantSandbox[], product: string, mode: AssistantMode,
|
|
91
|
+
export declare function selectSupersededAssistantSandboxes(sandboxes: readonly ExistingAssistantSandbox[], product: string, mode: AssistantMode, _isProd: boolean, authContext: AssistantSandboxAuthContext,
|
|
92
|
+
/**
|
|
93
|
+
* Sandboxes proven dead this session.
|
|
94
|
+
*
|
|
95
|
+
* ★ Same parameter, same position and same default as the reuse selector, so
|
|
96
|
+
* the two keep identical shapes — which is what makes "superseded is the
|
|
97
|
+
* complement of reusable" checkable by reading them side by side.
|
|
98
|
+
*/
|
|
99
|
+
excludedSandboxIds?: ReadonlySet<string>): string[];
|
|
92
100
|
/**
|
|
93
101
|
* Free the workspace's sandbox slot before provisioning a different mode.
|
|
94
102
|
*
|
|
@@ -115,7 +123,9 @@ export declare function selectSupersededAssistantSandboxes(sandboxes: readonly E
|
|
|
115
123
|
* the alternative is that the second mode never works at all — and the tab
|
|
116
124
|
* recovers by provisioning again on its next turn.
|
|
117
125
|
*/
|
|
118
|
-
export declare function releaseSupersededAssistantSandboxes(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext
|
|
126
|
+
export declare function releaseSupersededAssistantSandboxes(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext,
|
|
127
|
+
/** Sandboxes proven dead this session — released even if they still match. */
|
|
128
|
+
excludedSandboxIds?: ReadonlySet<string>): Promise<string[]>;
|
|
119
129
|
/**
|
|
120
130
|
* Terminalize a sandbox whose Cloudflare data plane was reaped while its DB
|
|
121
131
|
* record remained RUNNING. Invoked only for Cloudflare's exact connection-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,YAAY,EACb,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAET;AA2DD,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,2BAA2B,EACxC,kBAAkB,GAAE,WAAW,CAAC,MAAM,CAAa,GAClD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,wBAAwB,EAAE,EACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ async function S(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
|
|
|
40
40
|
})).getActiveSandboxes ?? [], r, i, o, s, c);
|
|
41
41
|
}
|
|
42
42
|
function C(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
|
|
43
|
-
return e.find((e) => !a.has(e.id) && (e.status === "RUNNING" || e.status === "PROVISIONING" || e.status === "PENDING") && e.template === "AI_BUILDER" && h(e, [n]) === n && (!i.userId || e.createdBy === i.userId) && e.metadata?.authStrategy === "sandbox-app-client-headers-v1" && e.metadata?.assistantProduct === t &&
|
|
43
|
+
return e.find((e) => !a.has(e.id) && (e.status === "RUNNING" || e.status === "PROVISIONING" || e.status === "PENDING") && e.template === "AI_BUILDER" && h(e, [n]) === n && (!i.userId || e.createdBy === i.userId) && e.metadata?.authStrategy === "sandbox-app-client-headers-v1" && e.metadata?.assistantProduct === t && (!w(n) || e.metadata?.confirmWrites === !0))?.id ?? null;
|
|
44
44
|
}
|
|
45
45
|
function w(e) {
|
|
46
46
|
return e === "api-calls";
|
|
@@ -190,24 +190,23 @@ async function M(e, t, n, r, i) {
|
|
|
190
190
|
let a = await x(e, t, `/write-confirmations/${encodeURIComponent(n)}/approve`, "POST", {}, r, i);
|
|
191
191
|
if (a?.approved !== !0) throw Error(typeof a?.error == "string" ? a.error : "The change could not be approved. It may have expired — ask the assistant to try again.");
|
|
192
192
|
}
|
|
193
|
-
function N(e, t, n, r, i) {
|
|
194
|
-
|
|
195
|
-
return e.filter((e) => e.metadata?.authStrategy === "sandbox-app-client-headers-v1" && e.metadata?.assistantProduct === t && (!i.userId || e.createdBy === i.userId) && !(h(e, [n]) === n && e.metadata?.imageTag === a)).map((e) => e.id);
|
|
193
|
+
function N(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
|
|
194
|
+
return i.userId ? e.filter((e) => e.metadata?.authStrategy === "sandbox-app-client-headers-v1" && e.createdBy === i.userId && !(!a.has(e.id) && e.metadata?.assistantProduct === t && h(e, [n]) === n)).map((e) => e.id) : [];
|
|
196
195
|
}
|
|
197
|
-
async function P(n, r, i, o, s) {
|
|
198
|
-
let
|
|
196
|
+
async function P(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
|
|
197
|
+
let l;
|
|
199
198
|
try {
|
|
200
|
-
|
|
199
|
+
l = N((await t({
|
|
201
200
|
query: a,
|
|
202
201
|
operationName: "GetActiveSandboxes",
|
|
203
202
|
variables: { context: e(n, s) },
|
|
204
203
|
workspaceId: n,
|
|
205
204
|
authContext: s
|
|
206
|
-
})).getActiveSandboxes ?? [], r, i, o, s);
|
|
205
|
+
})).getActiveSandboxes ?? [], r, i, o, s, c);
|
|
207
206
|
} catch {
|
|
208
207
|
return [];
|
|
209
208
|
}
|
|
210
|
-
return (await Promise.all(
|
|
209
|
+
return (await Promise.all(l.map(async (e) => {
|
|
211
210
|
try {
|
|
212
211
|
return await F(e, n, s), e;
|
|
213
212
|
} catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAuEf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAwDvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAuEf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAwDvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAwoExD,CAAC"}
|
|
@@ -67,35 +67,35 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
67
67
|
]), x(() => () => {
|
|
68
68
|
H.abandon();
|
|
69
69
|
}, [H]);
|
|
70
|
-
let jt = S(() => D.filter((e) => !e.requiresAdmin || B), [D, B]), [Mt, Nt] = Ze(null), [Pt, Ft] = Ze(!1), It = C({}),
|
|
70
|
+
let jt = S(() => D.filter((e) => !e.requiresAdmin || B), [D, B]), [Mt, Nt] = Ze(null), [Pt, Ft] = Ze(!1), It = C({}), U = C(Pe()), Lt = C(/* @__PURE__ */ new Set()), Rt = C(/* @__PURE__ */ new Set()), zt = S(() => D.find((e) => e.id === M), [D, M]);
|
|
71
71
|
x(() => {
|
|
72
|
-
V || (!
|
|
72
|
+
V || (!zt || zt.requiresAdmin && !B) && M !== "assistant" && gt("assistant");
|
|
73
73
|
}, [
|
|
74
74
|
M,
|
|
75
|
-
|
|
75
|
+
zt,
|
|
76
76
|
B,
|
|
77
77
|
V,
|
|
78
78
|
gt
|
|
79
79
|
]);
|
|
80
80
|
let W = b((e, t, n, r) => {
|
|
81
81
|
I(e, n, t, null, r);
|
|
82
|
-
}, [I]),
|
|
82
|
+
}, [I]), Bt = b(async (e, t, n, r, i) => {
|
|
83
83
|
let a = y.getState().sandboxesByMode[n]?.sandboxId ?? null, o = async (e) => {
|
|
84
|
-
if (
|
|
84
|
+
if (U.current.isFresh(e)) return !0;
|
|
85
85
|
try {
|
|
86
|
-
return await p(e, r, i, 3e5), await f(e, r, n, i, 9e4),
|
|
86
|
+
return await p(e, r, i, 3e5), await f(e, r, n, i, 9e4), U.current.markVerified(e), !0;
|
|
87
87
|
} catch {
|
|
88
|
-
return
|
|
88
|
+
return U.current.invalidate(e), Lt.current.add(e), !1;
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
91
|
if (a && (L(n, a, "provisioning"), W(e, t, "provisioning", "reusingEnvironment"), await o(a) || (L(n, null, "provisioning"), a = null)), !a) {
|
|
92
92
|
W(e, t, "provisioning", "lookingForEnvironment");
|
|
93
|
-
let s = await l(r, E, n, Ye(), i);
|
|
93
|
+
let s = await l(r, E, n, Ye(), i, Lt.current);
|
|
94
94
|
s && (L(n, s, "provisioning"), W(e, t, "provisioning", "reusingEnvironment"), await o(s) ? a = s : L(n, null, "provisioning"));
|
|
95
95
|
}
|
|
96
96
|
if (!a) {
|
|
97
97
|
if (n === "api-calls" && !O()) throw Error("API Calls mode requires an authenticated session. Please sign in again.");
|
|
98
|
-
W(e, t, "provisioning", "startingEnvironment"), L(n, null, "provisioning"), await d(r, E, n, Ye(), i), a = await s(E, n, r, Ye(), $e, i), L(n, a, "provisioning"), await p(a, r, i, 3e5), await f(a, r, n, i, 9e4);
|
|
98
|
+
W(e, t, "provisioning", "startingEnvironment"), L(n, null, "provisioning"), await d(r, E, n, Ye(), i, Lt.current), a = await s(E, n, r, Ye(), $e, i), L(n, a, "provisioning"), await p(a, r, i, 3e5), await f(a, r, n, i, 9e4);
|
|
99
99
|
}
|
|
100
100
|
L(n, a, "running");
|
|
101
101
|
let c = y.getState().conversations.find((t) => t.id === e)?.backendSessionId ?? null;
|
|
@@ -116,7 +116,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
116
116
|
St,
|
|
117
117
|
L,
|
|
118
118
|
W
|
|
119
|
-
]), [
|
|
119
|
+
]), [Vt, Ht] = Ze(null), G = C(/* @__PURE__ */ new Set()), K = C(null), Ut = b(() => {
|
|
120
120
|
let e = y.getState(), t = e.activeConversationId;
|
|
121
121
|
if (!t) return;
|
|
122
122
|
let n = e.processingByConversationId[t], r = Ce(n?.status) ? n?.messageId ?? null : null;
|
|
@@ -140,7 +140,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
140
140
|
]), Wt = b(async (e) => {
|
|
141
141
|
let t = y.getState(), n = Se(t), r = Ne(), i = t.activeConversationId;
|
|
142
142
|
if (!(!n || !r || !i)) {
|
|
143
|
-
|
|
143
|
+
Ht(e);
|
|
144
144
|
try {
|
|
145
145
|
await o(n.sandboxId, r, e, n.mode, {
|
|
146
146
|
accessToken: O(),
|
|
@@ -149,7 +149,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
149
149
|
organizationId: Me()
|
|
150
150
|
});
|
|
151
151
|
} catch (e) {
|
|
152
|
-
|
|
152
|
+
Ht(null), P(i, {
|
|
153
153
|
id: tt(),
|
|
154
154
|
role: "system",
|
|
155
155
|
content: e instanceof Error ? e.message : "The change could not be approved.",
|
|
@@ -157,18 +157,18 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
157
157
|
});
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
|
-
|
|
160
|
+
Ht(null), J.current(T("pendingWrite.approvedPrompt", "I approved that change — go ahead."));
|
|
161
161
|
}
|
|
162
162
|
}, [
|
|
163
163
|
A,
|
|
164
164
|
P,
|
|
165
165
|
T
|
|
166
|
-
]),
|
|
166
|
+
]), q = b(async (e, t = [], n = {}) => {
|
|
167
167
|
let r = n.voiceSessionId !== void 0, a = y.getState(), o = a.activeConversationId ?? j;
|
|
168
168
|
if (o) {
|
|
169
169
|
if (Ce(a.processingByConversationId[o]?.status)) {
|
|
170
170
|
let r = a.processingByConversationId[o]?.messageId ?? null;
|
|
171
|
-
r && G.current.has(r) && (
|
|
171
|
+
r && G.current.has(r) && (K.current = {
|
|
172
172
|
conversationId: o,
|
|
173
173
|
content: e,
|
|
174
174
|
attachments: t,
|
|
@@ -220,7 +220,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
220
220
|
}, _ = async (n = 1) => {
|
|
221
221
|
let i = !1;
|
|
222
222
|
try {
|
|
223
|
-
let { sandboxId: n, sessionId: a } = await
|
|
223
|
+
let { sandboxId: n, sessionId: a } = await Bt(u, g, s, f, p), o = (await ne(n, f, a, s, p, { limit: 50 }).catch(() => [])).reduce((e, t) => Math.max(e, ie(t)), 0);
|
|
224
224
|
W(u, g, "streaming", "thinking");
|
|
225
225
|
let d = he(e, t), oe = at?.(s, d, dt, ft, r) ?? d, m = me(oe, t), ce = _e(m), h = ce > 0, _ = it?.();
|
|
226
226
|
i = ge(t) > ce;
|
|
@@ -282,7 +282,10 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
282
282
|
t.clearProcessing && xt(u);
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
|
-
if (n === 1 && We(e))
|
|
285
|
+
if (n === 1 && We(e)) {
|
|
286
|
+
let e = y.getState().sandboxesByMode[s]?.sandboxId ?? null;
|
|
287
|
+
return e && (Lt.current.add(e), U.current.invalidate(e)), Ct(u), wt(s), yt(u, g, ""), bt(u, g, { pendingWrite: void 0 }), _(2);
|
|
288
|
+
}
|
|
286
289
|
throw e;
|
|
287
290
|
}
|
|
288
291
|
}, v = u;
|
|
@@ -294,7 +297,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
294
297
|
if (e) throw Error(e);
|
|
295
298
|
await _();
|
|
296
299
|
} catch (e) {
|
|
297
|
-
|
|
300
|
+
U.current.invalidate(y.getState().sandboxesByMode[s]?.sandboxId ?? null);
|
|
298
301
|
let t = i(e);
|
|
299
302
|
if (t) {
|
|
300
303
|
t.refusal === "exhausted" && Ge(E, "sandbox");
|
|
@@ -309,8 +312,8 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
309
312
|
});
|
|
310
313
|
} finally {
|
|
311
314
|
Rt.current.delete(v);
|
|
312
|
-
let e =
|
|
313
|
-
|
|
315
|
+
let e = K.current;
|
|
316
|
+
K.current = null, e && e.conversationId === v && J.current(e.content, e.attachments, e.options);
|
|
314
317
|
}
|
|
315
318
|
}, [
|
|
316
319
|
j,
|
|
@@ -320,7 +323,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
320
323
|
wt,
|
|
321
324
|
mt,
|
|
322
325
|
N,
|
|
323
|
-
|
|
326
|
+
Bt,
|
|
324
327
|
it,
|
|
325
328
|
O,
|
|
326
329
|
k,
|
|
@@ -341,18 +344,18 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
341
344
|
yt,
|
|
342
345
|
A
|
|
343
346
|
]), Gt = b((e) => {
|
|
344
|
-
|
|
345
|
-
}, [
|
|
347
|
+
q(e);
|
|
348
|
+
}, [q]), Kt = b(() => {
|
|
346
349
|
let e = [...R.chat].reverse().find((e) => e.role === "user"), t = j ? It.current[j] ?? [] : [];
|
|
347
|
-
e &&
|
|
350
|
+
e && q(e.content, t);
|
|
348
351
|
}, [
|
|
349
352
|
Dt,
|
|
350
|
-
|
|
353
|
+
q,
|
|
351
354
|
j
|
|
352
|
-
]),
|
|
355
|
+
]), J = C(q);
|
|
353
356
|
x(() => {
|
|
354
|
-
|
|
355
|
-
}, [
|
|
357
|
+
J.current = q;
|
|
358
|
+
}, [q]);
|
|
356
359
|
let qt = S(() => {
|
|
357
360
|
if (Ot) return null;
|
|
358
361
|
for (let e = Dt.length - 1; e >= 0; --e) {
|
|
@@ -372,7 +375,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
372
375
|
Ot,
|
|
373
376
|
z,
|
|
374
377
|
T
|
|
375
|
-
]), Jt = S(() => qt ? de(qt.text) : null, [qt]), Yt = R.chat,
|
|
378
|
+
]), Jt = S(() => qt ? de(qt.text) : null, [qt]), Yt = R.chat, Y = S(() => R.voice.filter((e) => e.role === "user" || e.role === "assistant").map((e) => ({
|
|
376
379
|
id: e.id,
|
|
377
380
|
role: e.role,
|
|
378
381
|
text: Ae(e, z, T),
|
|
@@ -383,9 +386,9 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
383
386
|
z,
|
|
384
387
|
T
|
|
385
388
|
]), Xt = b(() => {
|
|
386
|
-
if (
|
|
389
|
+
if (Y.length === 0) return;
|
|
387
390
|
let e = /* @__PURE__ */ new Date();
|
|
388
|
-
Le(_(
|
|
391
|
+
Le(_(Y, {
|
|
389
392
|
title: T("voiceSession.transcript", "Voice conversation"),
|
|
390
393
|
savedAt: T("voiceSession.savedAt", "Saved"),
|
|
391
394
|
session: T("voiceSession.sessionLabel", "Session"),
|
|
@@ -395,68 +398,68 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
395
398
|
}, e), v(E, e), "text/markdown");
|
|
396
399
|
}, [
|
|
397
400
|
E,
|
|
398
|
-
|
|
401
|
+
Y,
|
|
399
402
|
T
|
|
400
|
-
]),
|
|
401
|
-
|
|
402
|
-
let
|
|
403
|
+
]), X = qe(), Z = C(X);
|
|
404
|
+
Z.current = X;
|
|
405
|
+
let Q = je({
|
|
403
406
|
onSubmit: b((e, t) => {
|
|
404
407
|
let n = () => {
|
|
405
|
-
let n =
|
|
406
|
-
|
|
408
|
+
let n = Z.current, r = ve(n.attachments);
|
|
409
|
+
J.current(e, r, { voiceSessionId: t }), n.clear();
|
|
407
410
|
};
|
|
408
|
-
if (!
|
|
411
|
+
if (!Z.current.isBusy) {
|
|
409
412
|
n();
|
|
410
413
|
return;
|
|
411
414
|
}
|
|
412
415
|
let r = Date.now(), i = window.setInterval(() => {
|
|
413
|
-
|
|
416
|
+
Z.current.isBusy && Date.now() - r < et || (window.clearInterval(i), n());
|
|
414
417
|
}, 200);
|
|
415
418
|
}, []),
|
|
416
419
|
latestReply: qt,
|
|
417
420
|
language: fe(ct, st).tag
|
|
418
|
-
}), Zt = S(() => (Et?.messages ?? []).reduce((e, t) => Math.max(e, t.metadata?.continuedVoiceTurns ?? 0), 0), [Et?.messages]),
|
|
421
|
+
}), Zt = S(() => (Et?.messages ?? []).reduce((e, t) => Math.max(e, t.metadata?.continuedVoiceTurns ?? 0), 0), [Et?.messages]), $ = ke(R.voice, z, T), Qt = $ > Zt, $t = b(() => {
|
|
419
422
|
let e = y.getState().activeConversationId;
|
|
420
|
-
!e ||
|
|
423
|
+
!e || Y.length === 0 || (P(e, {
|
|
421
424
|
id: tt(),
|
|
422
425
|
role: "system",
|
|
423
|
-
content: le(
|
|
426
|
+
content: le(Y.slice(Zt), {
|
|
424
427
|
intro: T("voiceSession.continuedIntro", "Continued from a voice conversation. You asked about:"),
|
|
425
428
|
nothing: T("voiceSession.continuedNothing", "Continued from a voice conversation."),
|
|
426
429
|
more: (e) => T("voiceSession.continuedMore", "…and {{count}} more", { count: e })
|
|
427
430
|
}),
|
|
428
431
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
429
|
-
metadata: { continuedVoiceTurns:
|
|
430
|
-
}), Ft(!1),
|
|
432
|
+
metadata: { continuedVoiceTurns: $ }
|
|
433
|
+
}), Ft(!1), Q.end());
|
|
431
434
|
}, [
|
|
432
|
-
|
|
433
|
-
|
|
435
|
+
Y,
|
|
436
|
+
$,
|
|
434
437
|
Zt,
|
|
435
438
|
P,
|
|
436
439
|
T,
|
|
437
|
-
|
|
440
|
+
Q
|
|
438
441
|
]), en = C(0);
|
|
439
442
|
x(() => {
|
|
440
|
-
|
|
441
|
-
}, [
|
|
443
|
+
Q.active && (en.current = $);
|
|
444
|
+
}, [Q.active]);
|
|
442
445
|
let tn = b(() => {
|
|
443
|
-
let e =
|
|
444
|
-
|
|
445
|
-
}, [Q
|
|
446
|
+
let e = $ > en.current;
|
|
447
|
+
Q.end(), e && Ft(!0);
|
|
448
|
+
}, [$, Q]);
|
|
446
449
|
x(() => {
|
|
447
|
-
!nt &&
|
|
448
|
-
}, [nt,
|
|
449
|
-
|
|
450
|
-
}, [
|
|
450
|
+
!nt && Q.active && Q.end();
|
|
451
|
+
}, [nt, Q]), x(() => {
|
|
452
|
+
Q.active || (Z.current.clear(), K.current = null);
|
|
453
|
+
}, [Q.active]), x(() => {
|
|
451
454
|
let e = y.getState().consumePendingPrompt();
|
|
452
|
-
return e &&
|
|
455
|
+
return e && J.current(e), y.subscribe((e, t) => {
|
|
453
456
|
if (e.pendingPrompt && e.pendingPrompt !== t.pendingPrompt) {
|
|
454
457
|
let e = y.getState().consumePendingPrompt();
|
|
455
|
-
e &&
|
|
458
|
+
e && J.current(e);
|
|
456
459
|
}
|
|
457
460
|
});
|
|
458
461
|
}, []);
|
|
459
|
-
let
|
|
462
|
+
let nn = b((e) => {
|
|
460
463
|
let t = j ? y.getState().conversations.find((e) => e.id === j) : void 0;
|
|
461
464
|
if (t && (t.messages.length > 0 || t.backendSessionId)) {
|
|
462
465
|
if (t.mode !== e) {
|
|
@@ -471,20 +474,20 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
471
474
|
vt,
|
|
472
475
|
_t,
|
|
473
476
|
gt
|
|
474
|
-
]),
|
|
477
|
+
]), rn = b((e) => {
|
|
475
478
|
if (D.find((t) => t.id === e)?.writeCapable && !y.getState().apiCallsAcknowledged) {
|
|
476
479
|
Nt(e);
|
|
477
480
|
return;
|
|
478
481
|
}
|
|
479
|
-
|
|
480
|
-
}, [
|
|
482
|
+
nn(e);
|
|
483
|
+
}, [nn, D]), an = b(() => {
|
|
481
484
|
let e = Mt;
|
|
482
|
-
Nt(null), Tt(), e &&
|
|
485
|
+
Nt(null), Tt(), e && nn(e);
|
|
483
486
|
}, [
|
|
484
487
|
Mt,
|
|
485
488
|
Tt,
|
|
486
|
-
|
|
487
|
-
]),
|
|
489
|
+
nn
|
|
490
|
+
]), on = b(() => {
|
|
488
491
|
Nt(null);
|
|
489
492
|
}, []);
|
|
490
493
|
return /* @__PURE__ */ Qe("div", {
|
|
@@ -492,10 +495,10 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
492
495
|
children: [
|
|
493
496
|
/* @__PURE__ */ Qe("div", {
|
|
494
497
|
className: "contents",
|
|
495
|
-
inert:
|
|
498
|
+
inert: Q.active || void 0,
|
|
496
499
|
children: [
|
|
497
|
-
|
|
498
|
-
count:
|
|
500
|
+
Y.length > 0 && !Q.active ? /* @__PURE__ */ w(Fe, {
|
|
501
|
+
count: Y.length,
|
|
499
502
|
onOpenTranscript: () => Ft(!0)
|
|
500
503
|
}) : null,
|
|
501
504
|
Yt.length === 0 ? /* @__PURE__ */ w(Re, {
|
|
@@ -505,7 +508,7 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
505
508
|
className: "flex min-h-0 flex-1 flex-col",
|
|
506
509
|
children: /* @__PURE__ */ w(ze, {
|
|
507
510
|
onApprovePendingWrite: Wt,
|
|
508
|
-
approvingWriteRef:
|
|
511
|
+
approvingWriteRef: Vt,
|
|
509
512
|
messages: Yt,
|
|
510
513
|
processing: z ?? null,
|
|
511
514
|
streamingMessageId: kt,
|
|
@@ -514,51 +517,51 @@ var nt = ({ visible: nt = !0, writeAccess: rt = "unknown" }) => {
|
|
|
514
517
|
})
|
|
515
518
|
}),
|
|
516
519
|
/* @__PURE__ */ w(Je, {
|
|
517
|
-
onStartVoiceSession:
|
|
518
|
-
onSend: (e, t) => void
|
|
520
|
+
onStartVoiceSession: Q.available && M !== "api-calls" ? Q.start : void 0,
|
|
521
|
+
onSend: (e, t) => void q(e, t),
|
|
519
522
|
disabled: Ot,
|
|
520
523
|
placeholder: M === "api-calls" ? T("chatArea.placeholderActions", "What would you like me to do?") : T("chatArea.placeholderGeneral", "Ask me anything…"),
|
|
521
524
|
mode: M,
|
|
522
|
-
writeAccessDenied: rt === "denied" && !!
|
|
525
|
+
writeAccessDenied: rt === "denied" && !!zt?.writeCapable,
|
|
523
526
|
availableModes: jt,
|
|
524
|
-
onModeChange:
|
|
527
|
+
onModeChange: rn
|
|
525
528
|
})
|
|
526
529
|
]
|
|
527
530
|
}),
|
|
528
|
-
Pt && !
|
|
529
|
-
turns:
|
|
531
|
+
Pt && !Q.active ? /* @__PURE__ */ w(Ie, {
|
|
532
|
+
turns: Y,
|
|
530
533
|
onClose: () => Ft(!1),
|
|
531
534
|
onSave: Xt,
|
|
532
535
|
onContinueInChat: Qt ? $t : void 0,
|
|
533
536
|
closeOnEscape: !0
|
|
534
537
|
}) : null,
|
|
535
|
-
|
|
536
|
-
session:
|
|
537
|
-
notice:
|
|
538
|
-
capturing:
|
|
539
|
-
interrupting:
|
|
540
|
-
awaitingEndpoint:
|
|
541
|
-
turns:
|
|
542
|
-
spokenChunks:
|
|
543
|
-
attachments:
|
|
544
|
-
onAttachFiles:
|
|
545
|
-
onRemoveAttachment:
|
|
546
|
-
onRetryAttachment:
|
|
547
|
-
canAttachMore:
|
|
548
|
-
preparingAttachments:
|
|
538
|
+
Q.active && /* @__PURE__ */ w(Be, {
|
|
539
|
+
session: Q.session,
|
|
540
|
+
notice: Q.notice,
|
|
541
|
+
capturing: Q.capturing,
|
|
542
|
+
interrupting: Q.interrupting,
|
|
543
|
+
awaitingEndpoint: Q.awaitingEndpoint,
|
|
544
|
+
turns: Y,
|
|
545
|
+
spokenChunks: Q.spokenChunks,
|
|
546
|
+
attachments: X.attachments,
|
|
547
|
+
onAttachFiles: X.addFiles,
|
|
548
|
+
onRemoveAttachment: X.remove,
|
|
549
|
+
onRetryAttachment: X.retry,
|
|
550
|
+
canAttachMore: X.canAddMore,
|
|
551
|
+
preparingAttachments: X.preparingCount,
|
|
549
552
|
onSaveTranscript: Xt,
|
|
550
553
|
onContinueInChat: $t,
|
|
551
554
|
onInterrupt: () => {
|
|
552
|
-
|
|
555
|
+
Q.interrupt(), Ut();
|
|
553
556
|
},
|
|
554
557
|
spoken: Jt,
|
|
555
|
-
onToggleMute:
|
|
558
|
+
onToggleMute: Q.toggleMute,
|
|
556
559
|
onEnd: tn
|
|
557
560
|
}),
|
|
558
561
|
/* @__PURE__ */ w(Xe, {
|
|
559
562
|
open: Mt !== null,
|
|
560
|
-
onConfirm:
|
|
561
|
-
onCancel:
|
|
563
|
+
onConfirm: an,
|
|
564
|
+
onCancel: on
|
|
562
565
|
})
|
|
563
566
|
]
|
|
564
567
|
});
|