@burdenoff/fe-libs 2026.925.3 → 2026.925.5

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 (31) hide show
  1. package/dist/shared/assistant/api.d.ts +19 -1
  2. package/dist/shared/assistant/api.d.ts.map +1 -1
  3. package/dist/shared/assistant/api.js +57 -46
  4. package/dist/shared/assistant/index.d.ts +1 -0
  5. package/dist/shared/assistant/index.d.ts.map +1 -1
  6. package/dist/shared/assistant/sandboxReadiness.d.ts +45 -6
  7. package/dist/shared/assistant/sandboxReadiness.d.ts.map +1 -1
  8. package/dist/shared/assistant/sandboxReadiness.js +25 -11
  9. package/dist/shared/assistant/speech/browserSpeechEngine.d.ts.map +1 -1
  10. package/dist/shared/assistant/speech/browserSpeechEngine.js +1 -1
  11. package/dist/shared/assistant/transportErrors.d.ts +2 -0
  12. package/dist/shared/assistant/transportErrors.d.ts.map +1 -1
  13. package/dist/shared/assistant/transportErrors.js +5 -1
  14. package/dist/shared/assistant/turnProgress.d.ts +38 -0
  15. package/dist/shared/assistant/turnProgress.d.ts.map +1 -1
  16. package/dist/shared/assistant/turnProgress.js +24 -2
  17. package/dist/shared/assistant/turnTimeline.d.ts +288 -0
  18. package/dist/shared/assistant/turnTimeline.d.ts.map +1 -0
  19. package/dist/shared/assistant/turnTimeline.js +291 -0
  20. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  21. package/dist/shared/assistant/ui/AssistantChatArea.js +537 -468
  22. package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
  23. package/dist/shared/assistant/ui/AssistantSpeechProvider.js +190 -185
  24. package/dist/shared/assistant/ui/useVoiceSession.d.ts +7 -1
  25. package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
  26. package/dist/shared/assistant/ui/useVoiceSession.js +87 -80
  27. package/dist/shared/assistant/voice/voiceSession.d.ts +25 -0
  28. package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
  29. package/dist/shared/assistant/voice/voiceSession.js +29 -13
  30. package/dist/shared-assistant.js +122 -121
  31. package/package.json +1 -1
@@ -23,6 +23,18 @@ import { AssistantMode, AssistantPromptPart, AssistantRawMessage, AssistantSandb
23
23
  */
24
24
  export declare function forwardsUserTokensToSandbox(mode: AssistantMode | null | undefined): boolean;
25
25
  export declare function findExistingSandbox(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext, excludedSandboxIds?: ReadonlySet<string>): Promise<string | null>;
26
+ /**
27
+ * `findExistingSandbox`, and the status the server reported for the one it
28
+ * chose. Reuse accepts a sandbox still PROVISIONING or PENDING — joining a boot
29
+ * someone else started (a reload mid-cold-start, a second tab) — and a latency
30
+ * report must not call waiting out that boot a probe (BOFF-7801).
31
+ */
32
+ export declare function findExistingSandboxWithStatus(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext, excludedSandboxIds?: ReadonlySet<string>): Promise<{
33
+ id: string;
34
+ status: string;
35
+ } | null>;
36
+ /** The status the server listed for `id`; "UNKNOWN" if it is not listed. */
37
+ export declare function sandboxStatusOf(sandboxes: readonly ExistingAssistantSandbox[], id: string): string;
26
38
  export interface ExistingAssistantSandbox {
27
39
  id: string;
28
40
  name: string;
@@ -60,7 +72,13 @@ export declare function createAssistantSandbox(product: string, mode: AssistantM
60
72
  * the same terminal-error strings either way.
61
73
  */
62
74
  export declare function waitForSandboxRunning(sandboxId: string, workspaceId: string, authContext: AssistantSandboxAuthContext, maxWaitMs?: number): Promise<void>;
63
- export declare function waitForAssistantServiceReady(sandboxId: string, workspaceId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext, maxWaitMs?: number): Promise<void>;
75
+ export declare function waitForAssistantServiceReady(sandboxId: string, workspaceId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext, maxWaitMs?: number,
76
+ /**
77
+ * Called on each attempt that found the service not up yet, before the
78
+ * retry. A caller that REUSES a sandbox learns from it that it joined a boot
79
+ * in progress rather than a service already serving (BOFF-7801).
80
+ */
81
+ onNotReady?: () => void): Promise<void>;
64
82
  export declare function createAssistantSession(sandboxId: string, workspaceId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext): Promise<{
65
83
  sessionId: string;
66
84
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"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"}
@@ -36,22 +36,32 @@ async function C(e, n, r, i, a, o, s) {
36
36
  }
37
37
  return c.body;
38
38
  }
39
- async function w(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
40
- return T((await t({
39
+ async function w(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
40
+ return (await T(e, t, n, r, i, a))?.id ?? null;
41
+ }
42
+ async function T(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
43
+ let l = (await t({
41
44
  query: a,
42
45
  operationName: "GetActiveSandboxes",
43
46
  variables: { context: e(n, s) },
44
47
  workspaceId: n,
45
48
  authContext: s
46
- })).getActiveSandboxes ?? [], r, i, o, s, c);
49
+ })).getActiveSandboxes ?? [], u = D(l, r, i, o, s, c);
50
+ return u ? {
51
+ id: u,
52
+ status: E(l, u)
53
+ } : null;
54
+ }
55
+ function E(e, t) {
56
+ return e.find((e) => e.id === t)?.status ?? "UNKNOWN";
47
57
  }
48
- function T(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
49
- 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 && (!E(n) || e.metadata?.confirmWrites === !0))?.id ?? null;
58
+ function D(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
59
+ 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 && (!O(n) || e.metadata?.confirmWrites === !0))?.id ?? null;
50
60
  }
51
- function E(e) {
61
+ function O(e) {
52
62
  return e === "api-calls";
53
63
  }
54
- function D(e, t, n, r) {
64
+ function k(e, t, n, r) {
55
65
  let i = [
56
66
  {
57
67
  name: "AI_ASSISTANT_MODE",
@@ -79,13 +89,13 @@ function D(e, t, n, r) {
79
89
  }), r.workspaceToken && i.push({
80
90
  name: "WORKSPACE_AUTH_TOKEN",
81
91
  value: r.workspaceToken
82
- })), E(t) && i.push({
92
+ })), O(t) && i.push({
83
93
  name: "AI_ASSISTANT_CONFIRM_WRITES",
84
94
  value: "1"
85
95
  }), i;
86
96
  }
87
- async function O(n, i, a, o, s, c) {
88
- let l = m(i), u = D(n, i, a, c), h = (t) => ({
97
+ async function A(n, i, a, o, s, c) {
98
+ let l = m(i), u = k(n, i, a, c), h = (t) => ({
89
99
  name: `ai-assistant-${i}-${Date.now()}`,
90
100
  description: `AI Assistant sandbox (${i} mode)`,
91
101
  template: "AI_BUILDER",
@@ -108,7 +118,7 @@ async function O(n, i, a, o, s, c) {
108
118
  assistantOrganizationId: c.organizationId ?? null,
109
119
  authStrategy: d,
110
120
  imageTag: p(i, o),
111
- confirmWrites: E(i)
121
+ confirmWrites: O(i)
112
122
  },
113
123
  context: e(a, c)
114
124
  }), g = (e) => t({
@@ -128,7 +138,7 @@ async function O(n, i, a, o, s, c) {
128
138
  if (!_?.createSandbox?.id) throw Error("createSandbox returned empty response");
129
139
  return _.createSandbox.id;
130
140
  }
131
- async function k(n, r, i) {
141
+ async function j(n, r, i) {
132
142
  return (await t({
133
143
  query: o,
134
144
  operationName: "GetSandbox",
@@ -140,10 +150,10 @@ async function k(n, r, i) {
140
150
  authContext: i
141
151
  })).getSandbox;
142
152
  }
143
- function A(e, t) {
153
+ function M(e, t) {
144
154
  if (e === "FAILED" || e === "STOPPED" || e === "EXPIRED") throw Error(t ? `Sandbox ${e.toLowerCase()}: ${t}` : `Sandbox ${e.toLowerCase()}`);
145
155
  }
146
- async function j(n, r, i, a = 3e5) {
156
+ async function N(n, r, i, a = 3e5) {
147
157
  let o = Date.now();
148
158
  if (g("waitForSandboxRunning") !== "unsupported") for (; Date.now() - o < a;) try {
149
159
  let a = await t({
@@ -160,7 +170,7 @@ async function j(n, r, i, a = 3e5) {
160
170
  v("waitForSandboxRunning");
161
171
  let o = a.waitForSandboxRunning;
162
172
  if (o?.status === "RUNNING") return;
163
- A(o?.status, o?.errorMessage);
173
+ M(o?.status, o?.errorMessage);
164
174
  } catch (e) {
165
175
  if (_(e)) {
166
176
  y("waitForSandboxRunning");
@@ -169,40 +179,41 @@ async function j(n, r, i, a = 3e5) {
169
179
  throw e;
170
180
  }
171
181
  for (; Date.now() - o < a;) {
172
- let e = await k(n, r, i);
182
+ let e = await j(n, r, i);
173
183
  if (e?.status === "RUNNING") return;
174
- A(e?.status, e?.errorMessage), await new Promise((e) => setTimeout(e, 2e3));
184
+ M(e?.status, e?.errorMessage), await new Promise((e) => setTimeout(e, 2e3));
175
185
  }
176
186
  throw Error("Sandbox startup timed out");
177
187
  }
178
- async function M(e, t, n, r, i = 9e4) {
179
- let a = Date.now();
180
- for (; Date.now() - a < i;) {
188
+ async function P(e, t, n, r, i = 9e4, a) {
189
+ let o = Date.now();
190
+ for (; Date.now() - o < i;) {
181
191
  try {
182
192
  await C(e, t, "/health", "GET", void 0, n, r);
183
193
  return;
184
194
  } catch (e) {
185
195
  let t = e instanceof Error ? e.message : String(e);
186
196
  if (!/proxy error: 502|proxy error: 503|proxy error: 404|service not available|starting/i.test(t)) throw e;
197
+ a?.();
187
198
  }
188
199
  await new Promise((e) => setTimeout(e, 2e3));
189
200
  }
190
201
  throw Error("Assistant service did not become healthy before timeout");
191
202
  }
192
- async function N(e, t, n, r) {
203
+ async function F(e, t, n, r) {
193
204
  return { sessionId: (await C(e, t, "/sessions", "POST", { mode: n }, n, r)).session.id };
194
205
  }
195
- async function P(e, t, n, r, i) {
206
+ async function I(e, t, n, r, i) {
196
207
  let a = await C(e, t, `/write-confirmations/${encodeURIComponent(n)}/approve`, "POST", {}, r, i);
197
208
  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.");
198
209
  }
199
- function F(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
210
+ function L(e, t, n, r, i, a = /* @__PURE__ */ new Set()) {
200
211
  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) : [];
201
212
  }
202
- async function I(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
213
+ async function R(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
203
214
  let l;
204
215
  try {
205
- l = F((await t({
216
+ l = L((await t({
206
217
  query: a,
207
218
  operationName: "GetActiveSandboxes",
208
219
  variables: { context: e(n, s) },
@@ -214,13 +225,13 @@ async function I(n, r, i, o, s, c = /* @__PURE__ */ new Set()) {
214
225
  }
215
226
  return (await Promise.all(l.map(async (e) => {
216
227
  try {
217
- return await L(e, n, s), e;
228
+ return await z(e, n, s), e;
218
229
  } catch {
219
230
  return null;
220
231
  }
221
232
  }))).filter((e) => e !== null);
222
233
  }
223
- async function L(n, r, i) {
234
+ async function z(n, r, i) {
224
235
  await t({
225
236
  query: l,
226
237
  operationName: "StopAssistantSandbox",
@@ -232,7 +243,7 @@ async function L(n, r, i) {
232
243
  authContext: i
233
244
  });
234
245
  }
235
- function R(e) {
246
+ function B(e) {
236
247
  let { mode: t, prompt: n, pageContext: r, parts: i } = e, a = {
237
248
  mode: t,
238
249
  prompt: n,
@@ -240,14 +251,14 @@ function R(e) {
240
251
  };
241
252
  return i && i.length > 0 && (a.parts = i), a;
242
253
  }
243
- function z(e) {
244
- return S(e.sandboxId, e.workspaceId, `/sessions/${e.sessionId}/prompt-async`, "POST", R(e), e.mode, e.authContext);
254
+ function V(e) {
255
+ return S(e.sandboxId, e.workspaceId, `/sessions/${e.sessionId}/prompt-async`, "POST", B(e), e.mode, e.authContext);
245
256
  }
246
- function B(e) {
247
- return new TextEncoder().encode(JSON.stringify(z(e))).byteLength;
257
+ function H(e) {
258
+ return new TextEncoder().encode(JSON.stringify(V(e))).byteLength;
248
259
  }
249
- async function V(e, t, n, r, i, a, o, s) {
250
- if (B({
260
+ async function U(e, t, n, r, i, a, o, s) {
261
+ if (H({
251
262
  sandboxId: e,
252
263
  workspaceId: t,
253
264
  sessionId: n,
@@ -257,7 +268,7 @@ async function V(e, t, n, r, i, a, o, s) {
257
268
  authContext: o,
258
269
  parts: s?.parts
259
270
  }) > 262144) throw Error(b);
260
- let c = await C(e, t, `/sessions/${n}/prompt-async`, "POST", R({
271
+ let c = await C(e, t, `/sessions/${n}/prompt-async`, "POST", B({
261
272
  mode: i,
262
273
  prompt: r,
263
274
  pageContext: a,
@@ -265,13 +276,13 @@ async function V(e, t, n, r, i, a, o, s) {
265
276
  }), i, o);
266
277
  return { messageID: typeof c.messageID == "string" ? c.messageID : void 0 };
267
278
  }
268
- async function H(e, t, n, r, i, a) {
279
+ async function W(e, t, n, r, i, a) {
269
280
  let o = `/sessions/${n}/messages?limit=${a?.limit ?? 50}`;
270
281
  a?.sinceMs && g("sinceParam") !== "unsupported" && (o += `&since=${a.sinceMs}`);
271
282
  let s = await C(e, t, o, "GET", void 0, r, i);
272
283
  return typeof s.now == "number" && v("sinceParam"), s.messages ?? [];
273
284
  }
274
- async function U(e, t, n, r, i) {
285
+ async function G(e, t, n, r, i) {
275
286
  if (g("sse") === "unsupported") return null;
276
287
  try {
277
288
  let a = await C(e, t, `/sessions/${n}/stream-url`, "GET", void 0, r, i);
@@ -283,7 +294,7 @@ async function U(e, t, n, r, i) {
283
294
  return y("sse"), null;
284
295
  }
285
296
  }
286
- async function W(n, r, a, o) {
297
+ async function K(n, r, a, o) {
287
298
  await t({
288
299
  query: i,
289
300
  operationName: "ExtendSandboxTtl",
@@ -296,27 +307,27 @@ async function W(n, r, a, o) {
296
307
  authContext: o
297
308
  });
298
309
  }
299
- async function G(e, t, n, r, i) {
310
+ async function q(e, t, n, r, i) {
300
311
  await C(e, t, `/sessions/${n}/heartbeat`, "POST", void 0, r, i).catch(() => void 0);
301
312
  }
302
- async function K(e, t, n, r, i) {
313
+ async function J(e, t, n, r, i) {
303
314
  try {
304
315
  return (await C(e, t, `/sessions/${n}/abort`, "POST", void 0, r, i))?.aborted === !0;
305
316
  } catch {
306
317
  return !1;
307
318
  }
308
319
  }
309
- async function q(e, t, n, r, i) {
320
+ async function Y(e, t, n, r, i) {
310
321
  return ((await C(e, t, `/sessions/${n}/artifacts`, "GET", void 0, r, i)).artifacts ?? []).filter((e) => !e.name.startsWith("."));
311
322
  }
312
- async function J(e, t, n, r, i) {
323
+ async function X(e, t, n, r, i) {
313
324
  let a = await C(e, t, `/sessions/${n}`, "GET", void 0, r, i);
314
325
  return {
315
326
  id: a.session?.id ?? n,
316
327
  mode: a.mode ?? "unknown"
317
328
  };
318
329
  }
319
- async function Y(e, t, n, r, i, a) {
330
+ async function Z(e, t, n, r, i, a) {
320
331
  let o = (await C(e, t, `/sessions/${n}/artifacts/download?path=${encodeURIComponent(r)}`, "GET", void 0, i, a)).artifact;
321
332
  if (!o) throw Error("Artifact download returned an empty response");
322
333
  return {
@@ -325,7 +336,7 @@ async function Y(e, t, n, r, i, a) {
325
336
  contentBase64: o.contentBase64
326
337
  };
327
338
  }
328
- async function X(e, r) {
339
+ async function Q(e, r) {
329
340
  return (await t({
330
341
  query: n,
331
342
  operationName: "CheckAiCredits",
@@ -334,7 +345,7 @@ async function X(e, r) {
334
345
  authContext: r
335
346
  })).checkAiCredits;
336
347
  }
337
- async function Z(e, n, r, i, a, o) {
348
+ async function $(e, n, r, i, a, o) {
338
349
  let s = Math.max(0, Math.round(a.input ?? 0)), l = Math.max(0, Math.round(a.output ?? 0));
339
350
  s + l === 0 || !i || await t({
340
351
  query: c,
@@ -351,4 +362,4 @@ async function Z(e, n, r, i, a, o) {
351
362
  });
352
363
  }
353
364
  //#endregion
354
- export { K as abortAssistantTurn, P as approvePendingWrite, D as buildAssistantSandboxEnv, z as buildPromptGatewayRequest, R as buildPromptRequestBody, X as checkAssistantAiCredits, O as createAssistantSandbox, N as createAssistantSession, Y as downloadAssistantArtifact, W as extendAssistantSandboxTTL, w as findExistingSandbox, x as forwardsUserTokensToSandbox, q as getAssistantArtifacts, H as getAssistantMessages, J as getAssistantSession, U as getAssistantStreamAccess, E as modeRequiresConfirmWrites, B as promptGatewayRequestBytes, I as releaseSupersededAssistantSandboxes, Z as reportAssistantAiTokenUsage, T as selectExistingAssistantSandbox, F as selectSupersededAssistantSandboxes, V as sendAssistantPromptAsync, G as sendHeartbeat, L as stopReapedAssistantSandbox, M as waitForAssistantServiceReady, j as waitForSandboxRunning };
365
+ export { J as abortAssistantTurn, I as approvePendingWrite, k as buildAssistantSandboxEnv, V as buildPromptGatewayRequest, B as buildPromptRequestBody, Q as checkAssistantAiCredits, A as createAssistantSandbox, F as createAssistantSession, Z as downloadAssistantArtifact, K as extendAssistantSandboxTTL, w as findExistingSandbox, T as findExistingSandboxWithStatus, x as forwardsUserTokensToSandbox, Y as getAssistantArtifacts, W as getAssistantMessages, X as getAssistantSession, G as getAssistantStreamAccess, O as modeRequiresConfirmWrites, H as promptGatewayRequestBytes, R as releaseSupersededAssistantSandboxes, $ as reportAssistantAiTokenUsage, E as sandboxStatusOf, D as selectExistingAssistantSandbox, L as selectSupersededAssistantSandboxes, U as sendAssistantPromptAsync, q as sendHeartbeat, z as stopReapedAssistantSandbox, P as waitForAssistantServiceReady, N as waitForSandboxRunning };
@@ -153,6 +153,7 @@ export * from './quota';
153
153
  export * from './permissionError';
154
154
  export * from './autoRouting';
155
155
  export * from './turnOutcome';
156
+ export * from './turnTimeline';
156
157
  export * from './turnOutcomeCopy';
157
158
  export * from './aiCredits';
158
159
  export * from './useWorkspaceWriteAccess';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,14 @@
12
12
  * fails in ways that are worse to surface than a re-provision. So this does not
13
13
  * remove the check — it stops repeating a check that just passed.
14
14
  *
15
- * ★ The TTL is deliberately far shorter than the sandbox's own lifetime. Each
16
- * turn extends the sandbox by 600s, so a 60s readiness window can never outlive
17
- * the thing it describes; the worst case is that a sandbox dies inside the
18
- * window and one turn fails, which is exactly what happens today when it dies
19
- * mid-turn — and the caller already handles that by dropping it and
20
- * provisioning a fresh one.
15
+ * ★ The TTL is deliberately far shorter than the sandbox's usual lifetime —
16
+ * long turns extend it by 600s and the panel's heartbeat keeps it alive
17
+ * between turns — but it is NOT a guarantee: extensions clamp to the
18
+ * workspace/plan ceiling, so a sandbox can die at a fixed instant inside a
19
+ * window. The callers cover that: every failure invalidates, and a sandbox
20
+ * trusted from this cache that then fails at session setup is replaced or
21
+ * re-probed INSIDE the same attempt (`planTrustedSandboxFailure`, BOFF-7801).
22
+ * Such a death costs the failed setup request(s) — not the turn's retry.
21
23
  *
22
24
  * Correctness rests on the caller invalidating on failure. A cache that only
23
25
  * ever gets written on success, and never cleared, would pin a dead sandbox and
@@ -42,4 +44,41 @@ export declare function createReadinessTracker(clock?: () => number): {
42
44
  invalidate(sandboxId: string | null | undefined): void;
43
45
  };
44
46
  export type ReadinessTracker = ReturnType<typeof createReadinessTracker>;
47
+ /**
48
+ * ★ BOFF-7801: a sandbox trusted from this cache (no probe ran) failed at
49
+ * session setup. What now? Decided INSIDE the attempt, so the turn keeps its
50
+ * one retry for whatever comes after (final review of #266: routing a dead
51
+ * proof to attempt 2 spent that retry, and a replacement whose first start
52
+ * then failed lost a turn the always-probe code would have answered).
53
+ *
54
+ * - `rethrow` — the turn was cut off (a re-run could send a prompt they
55
+ * abandoned); a REFUSAL (rate limit, unauthorized, a permission or usage
56
+ * wall), which a probe or a new sandbox meets again and a probe would answer
57
+ * by quarantining a live sandbox; or the sandbox service could not reach the
58
+ * gateway to mint the sandbox's credentials ("proxy credentials not ready"):
59
+ * the sandbox is fine and a new one would fail the same way — the
60
+ * attempt-level retry handles it as before.
61
+ * - `check-network` — a TRANSPORT failure ("Failed to fetch"). It has two
62
+ * causes that read identically in the browser: the person's own network, or
63
+ * a dead sandbox's hop that hung until the load balancer answered without
64
+ * CORS headers. `planAfterTransportFailure` tells them apart.
65
+ * - `replace` — the error says the sandbox is GONE (not found, not running,
66
+ * unable to connect…). Quarantine it and provision now: no 90s probe of a
67
+ * dead container.
68
+ * - `reprobe` — anything else temporary: the gap the cache opened. Probe for
69
+ * real, as every turn did before the cache.
70
+ */
71
+ export type TrustedSandboxFailurePlan = "rethrow" | "check-network" | "replace" | "reprobe";
72
+ export declare function planTrustedSandboxFailure(error: unknown, abandoned: boolean): TrustedSandboxFailurePlan;
73
+ /**
74
+ * A transport failure at session create: the person's network, or the
75
+ * sandbox's? Ask the GATEWAY something that never touches the sandbox.
76
+ *
77
+ * - offline, or the gateway is unreachable too → `rethrow`: the sandbox may be
78
+ * fine, and a probe over the same outage would quarantine it — and the next
79
+ * turn would stop it;
80
+ * - the gateway answers (even with an error of its own) → `reprobe`: the
81
+ * network is up, so the sandbox hop is what failed.
82
+ */
83
+ export declare function planAfterTransportFailure(askGateway: () => Promise<unknown>): Promise<"rethrow" | "reprobe">;
45
84
  //# sourceMappingURL=sandboxReadiness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandboxReadiness.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/sandboxReadiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAA6B,GACnC,OAAO,CAKT;AAWD,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAM,MAAiB;IAIjE,kEAAkE;uBAC/C,MAAM,GAAG,OAAO;IAGnC,iCAAiC;4BACT,MAAM,GAAG,IAAI;IAKrC;;;OAGG;0BACmB,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;EAIzD;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"sandboxReadiness.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/sandboxReadiness.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAA6B,GACnC,OAAO,CAKT;AAaD,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAM,MAAiB;IAIjE,kEAAkE;uBAC/C,MAAM,GAAG,OAAO;IAGnC,iCAAiC;4BACT,MAAM,GAAG,IAAI;IAKrC;;;OAGG;0BACmB,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;EAIzD;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,eAAe,GACf,SAAS,GACT,SAAS,CAAC;AAEd,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,OAAO,GACjB,yBAAyB,CAU3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAShC"}
@@ -1,22 +1,36 @@
1
+ import { isTransportError as e } from "../utils/backendErrors.js";
2
+ import { classifyTurnFailure as t } from "./turnOutcome.js";
3
+ import { isNeverRecoverableAssistantError as n, isRecoverableAssistantError as r } from "./transportErrors.js";
1
4
  //#region src/shared/assistant/sandboxReadiness.ts
2
- var e = 6e4;
3
- function t(t, n, r = e) {
4
- return t == null || t > n ? !1 : n - t < r;
5
+ var i = 6e4;
6
+ function a(e, t, n = i) {
7
+ return e == null || e > t ? !1 : t - e < n;
5
8
  }
6
- var n = 32;
7
- function r(e = Date.now) {
8
- let r = /* @__PURE__ */ new Map();
9
+ var o = 32;
10
+ function s(e = Date.now) {
11
+ let t = /* @__PURE__ */ new Map();
9
12
  return {
10
13
  isFresh(n) {
11
- return t(r.get(n), e());
14
+ return a(t.get(n), e());
12
15
  },
13
- markVerified(t) {
14
- r.size >= n && !r.has(t) && r.clear(), r.set(t, e());
16
+ markVerified(n) {
17
+ t.size >= o && !t.has(n) && t.clear(), t.set(n, e());
15
18
  },
16
19
  invalidate(e) {
17
- e && r.delete(e);
20
+ e && t.delete(e);
18
21
  }
19
22
  };
20
23
  }
24
+ function c(i, a) {
25
+ return a || n(i) ? "rethrow" : e(i) ? "check-network" : (i instanceof Error ? i.message : String(i)).toLowerCase().includes("proxy credentials not ready") ? "rethrow" : r(i) ? "replace" : t(i).kind === "temporary" ? "reprobe" : "rethrow";
26
+ }
27
+ async function l(t) {
28
+ if (typeof navigator < "u" && navigator.onLine === !1) return "rethrow";
29
+ try {
30
+ return await t(), "reprobe";
31
+ } catch (t) {
32
+ return e(t) ? "rethrow" : "reprobe";
33
+ }
34
+ }
21
35
  //#endregion
22
- export { e as SANDBOX_READY_TTL_MS, r as createReadinessTracker, t as isRecentlyVerified };
36
+ export { i as SANDBOX_READY_TTL_MS, s as createReadinessTracker, a as isRecentlyVerified, l as planAfterTransportFailure, c as planTrustedSandboxFailure };
@@ -1 +1 @@
1
- {"version":3,"file":"browserSpeechEngine.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/speech/browserSpeechEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,SAAS,CAAC;AAqEjB,eAAO,MAAM,mBAAmB,EAAE,YA6HjC,CAAC"}
1
+ {"version":3,"file":"browserSpeechEngine.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/speech/browserSpeechEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,SAAS,CAAC;AAqEjB,eAAO,MAAM,mBAAmB,EAAE,YAgIjC,CAAC"}
@@ -81,7 +81,7 @@ var i = 0, a = {
81
81
  return;
82
82
  }
83
83
  r.onstart = () => {
84
- u === i && s.onChunkStart?.(t);
84
+ u === i && (t === 0 && s.onStart?.(), s.onChunkStart?.(t));
85
85
  }, r.onerror = (e) => {
86
86
  if (u === i) {
87
87
  i += 1;
@@ -35,5 +35,7 @@
35
35
  * the multimodal parts?
36
36
  */
37
37
  export declare function isMultimodalBodyRejection(error: unknown): boolean;
38
+ /** A refusal (rate limit, unauthorized) — never cured by another sandbox or a probe. */
39
+ export declare function isNeverRecoverableAssistantError(error: unknown): boolean;
38
40
  export declare function isRecoverableAssistantError(error: unknown): boolean;
39
41
  //# sourceMappingURL=transportErrors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transportErrors.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/transportErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAmCH;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASjE;AA6CD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASnE"}
1
+ {"version":3,"file":"transportErrors.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/transportErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAmCH;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASjE;AA6CD,wFAAwF;AACxF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKxE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASnE"}
@@ -45,8 +45,12 @@ var r = [
45
45
  "able to access the url"
46
46
  ];
47
47
  function a(e) {
48
+ let t = (e instanceof Error ? e.message : String(e)).toLowerCase();
49
+ return r.some((e) => t.includes(e));
50
+ }
51
+ function o(e) {
48
52
  let t = (e instanceof Error ? e.message : String(e)).toLowerCase();
49
53
  return r.some((e) => t.includes(e)) ? !1 : i.some((e) => t.includes(e));
50
54
  }
51
55
  //#endregion
52
- export { n as isMultimodalBodyRejection, a as isRecoverableAssistantError };
56
+ export { n as isMultimodalBodyRejection, a as isNeverRecoverableAssistantError, o as isRecoverableAssistantError };
@@ -18,6 +18,22 @@ export interface AssistantTurnProgress {
18
18
  * note. A boolean cannot be mistaken for output (BOFF-7277).
19
19
  */
20
20
  hasRenderableOutput: boolean;
21
+ /**
22
+ * Whether the answer's own TEXT has started — not a tool line, not media,
23
+ * and not narration ahead of a tool call ("Let me look that up."): in the
24
+ * newest message the last non-empty text part must come AFTER the last
25
+ * tool part. In a mode whose narration IS the answer (`accumulateNarration`)
26
+ * any narration counts. The "first useful response" of a latency report
27
+ * (BOFF-7801) — and only a CANDIDATE mid-step: a poll can land before the
28
+ * step's tool part exists (see `trackFirstText`).
29
+ */
30
+ hasText?: boolean;
31
+ /**
32
+ * Whether ANY of this turn's messages holds a tool call. Read from every
33
+ * message, not only the newest: a fast tool's message is superseded before
34
+ * the next poll, so its progress line may never be seen.
35
+ */
36
+ usedTools?: boolean;
21
37
  done: boolean;
22
38
  tokens?: {
23
39
  input: number;
@@ -66,4 +82,26 @@ export declare function buildAssistantProgress(messages: AssistantRawMessage[],
66
82
  * first error (a temporary outcome the person can retry).
67
83
  */
68
84
  export declare function snapshotReplyFloor(fetchPrior: () => Promise<AssistantRawMessage[]>, sessionIsNew: boolean): Promise<number>;
85
+ /** Where a turn's first answer text is, while it is still only a candidate. */
86
+ export interface FirstTextTracker {
87
+ messageId: string | null;
88
+ at: number | null;
89
+ }
90
+ export declare const NO_FIRST_TEXT: FirstTextTracker;
91
+ /**
92
+ * ★ BOFF-7801: the first answer TEXT is known for certain only when the turn
93
+ * is done. A step streams its narration BEFORE its tool part exists, so a poll
94
+ * can see "Let me look that up." as text — and a later poll shows the tool
95
+ * after it. So the first text is a candidate held against the message that
96
+ * showed it, dropped when that message turns out to call a tool, or when a
97
+ * newer message takes over; it is confirmed only if it belongs to the message
98
+ * that completes the turn. `confirmedAt` is its time once confirmed.
99
+ *
100
+ * Not for `accumulateNarration` modes, where the narration IS the answer and
101
+ * its first appearance counts at once.
102
+ */
103
+ export declare function trackFirstText(tracker: FirstTextTracker, progress: Pick<AssistantTurnProgress, "hasText" | "messageId" | "done">, now: number): {
104
+ tracker: FirstTextTracker;
105
+ confirmedAt: number | null;
106
+ };
69
107
  //# sourceMappingURL=turnProgress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turnProgress.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,KAAK,wBAAwB,EAK9B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,wBAAwB,GACjC,qBAAqB,CA4DvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAChD,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
1
+ {"version":3,"file":"turnProgress.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,KAAK,wBAAwB,EAK9B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,wBAAwB,GACjC,qBAAqB,CAqFvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAChD,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,gBAAgD,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC,EACvE,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAc3D"}
@@ -12,10 +12,16 @@ function a(a, o, s) {
12
12
  u,
13
13
  ...d,
14
14
  ...f
15
- ].filter(Boolean).join("\n\n"), g = l.info?.providerID, _ = l.info?.modelID;
15
+ ].filter(Boolean).join("\n\n"), g = l.info?.providerID, _ = l.info?.modelID, v = l.parts ?? [], y = -1, b = -1;
16
+ v.forEach((e, t) => {
17
+ e.type === "tool" && (b = t), e.type === "text" && typeof e.text == "string" && e.text.trim() !== "" && (y = t);
18
+ });
19
+ let x = y > b, S = c.some((e) => (e.parts ?? []).some((e) => e.type === "tool"));
16
20
  return {
17
21
  content: h,
18
22
  hasRenderableOutput: m,
23
+ hasText: s?.accumulateNarration ? !!u : !!u && x,
24
+ usedTools: S,
19
25
  done: !!l.info?.time?.completed && m,
20
26
  tokens: l.info?.tokens,
21
27
  messageId: l.info?.id,
@@ -38,5 +44,21 @@ async function o(e, t) {
38
44
  throw i ?? e;
39
45
  }
40
46
  }
47
+ var s = {
48
+ messageId: null,
49
+ at: null
50
+ };
51
+ function c(e, t, n) {
52
+ let r = t.messageId ?? null, i = e;
53
+ t.hasText ? (e.at === null || e.messageId !== r) && (i = {
54
+ messageId: r,
55
+ at: n
56
+ }) : i = s;
57
+ let a = t.done && i.at !== null && i.messageId === r ? i.at : null;
58
+ return {
59
+ tracker: i,
60
+ confirmedAt: a
61
+ };
62
+ }
41
63
  //#endregion
42
- export { a as buildAssistantProgress, o as snapshotReplyFloor };
64
+ export { s as NO_FIRST_TEXT, a as buildAssistantProgress, o as snapshotReplyFloor, c as trackFirstText };