@burdenoff/fe-libs 2026.1001.5 → 2026.1002.1

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 (27) hide show
  1. package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
  2. package/dist/shared/assistant/createSandboxAssistantTransport.js +79 -74
  3. package/dist/shared/assistant/i18nManifest.d.ts +13 -5
  4. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  5. package/dist/shared/assistant/i18nManifest.js +8 -7
  6. package/dist/shared/assistant/index.d.ts +1 -0
  7. package/dist/shared/assistant/index.d.ts.map +1 -1
  8. package/dist/shared/assistant/preview/AssistantPreviewOverlay.js +4 -4
  9. package/dist/shared/assistant/preview/types.d.ts +13 -0
  10. package/dist/shared/assistant/preview/types.d.ts.map +1 -1
  11. package/dist/shared/assistant/preview/useAssistantPreviewBridge.d.ts +21 -1
  12. package/dist/shared/assistant/preview/useAssistantPreviewBridge.d.ts.map +1 -1
  13. package/dist/shared/assistant/preview/useAssistantPreviewBridge.js +1 -1
  14. package/dist/shared/assistant/preview/writeActionResults.d.ts +10 -0
  15. package/dist/shared/assistant/preview/writeActionResults.d.ts.map +1 -0
  16. package/dist/shared/assistant/preview/writeActionResults.js +26 -0
  17. package/dist/shared/assistant/turnOutcome.d.ts.map +1 -1
  18. package/dist/shared/assistant/turnOutcome.js +3 -3
  19. package/dist/shared/assistant/turnOutcomeCopy.d.ts +3 -3
  20. package/dist/shared/assistant/turnOutcomeCopy.d.ts.map +1 -1
  21. package/dist/shared/assistant/turnOutcomeCopy.js +3 -3
  22. package/dist/shared/assistant/ui/AIAssistantPanel.js +14 -14
  23. package/dist/shared/assistant/ui/AssistantHeader.js +4 -4
  24. package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -1
  25. package/dist/shared/assistant/ui/useWriteProposals.js +126 -99
  26. package/dist/shared-assistant.js +125 -124
  27. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createSandboxAssistantTransport.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/createSandboxAssistantTransport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2BH,OAAO,KAAK,EAGV,2BAA2B,EAE3B,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAOjB,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,2BAA2B,CAAC;IAClD,cAAc,EAAE,MAAM,MAAM,CAAC;CAC9B;AAYD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,aAAa,GAClB,yBAAyB,CAmO3B"}
1
+ {"version":3,"file":"createSandboxAssistantTransport.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/createSandboxAssistantTransport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,OAAO,KAAK,EAGV,2BAA2B,EAE3B,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAOjB,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,2BAA2B,CAAC;IAClD,cAAc,EAAE,MAAM,MAAM,CAAC;CAC9B;AAYD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,aAAa,GAClB,yBAAyB,CAwP3B"}
@@ -1,115 +1,120 @@
1
- import { isQuotaExhaustedError as e } from "./quota.js";
1
+ import { assistantLlmTerminalCodeOf as e } from "./sandboxProxyError.js";
2
+ import { isQuotaExhaustedError as t } from "./quota.js";
2
3
  import "./gatewayClient.js";
3
- import { checkAssistantAiCredits as t, getAssistantMessages as n, getAssistantStreamAccess as r, reportAssistantAiTokenUsage as i, sendAssistantPromptAsync as a, stopReapedAssistantSandbox as o } from "./api.js";
4
- import { AssistantRuntimeManager as s } from "./runtime.js";
5
- import { buildProgress as c, isReapedSandboxConnectionError as l, isRecoverable as u, mergeMessagesById as d, sanitize as f } from "./progress.js";
6
- import { assistantUsageLedger as p, hasPendingUsageReports as m, reportUsageWithRetry as h, retryPendingUsageReports as g, usageSendRefusal as _ } from "./usageReporting.js";
4
+ import { checkAssistantAiCredits as n, getAssistantMessages as r, getAssistantStreamAccess as i, reportAssistantAiTokenUsage as a, sendAssistantPromptAsync as o, stopReapedAssistantSandbox as s } from "./api.js";
5
+ import { AssistantRuntimeManager as c } from "./runtime.js";
6
+ import { buildProgress as l, isReapedSandboxConnectionError as u, isRecoverable as d, mergeMessagesById as f, sanitize as p } from "./progress.js";
7
+ import { assistantUsageLedger as m, hasPendingUsageReports as h, reportUsageWithRetry as g, retryPendingUsageReports as _, usageSendRefusal as v } from "./usageReporting.js";
7
8
  //#region src/shared/assistant/createSandboxAssistantTransport.ts
8
- var v = 42e4, y = 400, b = 2e3, x = 5e3;
9
- function S() {
9
+ var y = 42e4, b = 400, x = 2e3, S = 5e3;
10
+ function C() {
10
11
  return typeof window > "u" ? {} : {
11
12
  currentUrl: window.location.href,
12
13
  currentPage: window.location.pathname.split("/").filter(Boolean).slice(0, 3).join("/") || "home",
13
14
  viewportSize: `${window.innerWidth}x${window.innerHeight}`
14
15
  };
15
16
  }
16
- function C(C, w) {
17
- let T = C.mode ?? "assistant", E = C.streamBudgetMs ?? v, D = { accumulateNarration: C.accumulateNarration === !0 }, O = C.ttlSeconds ?? 3600, k = C.isProdRuntime ?? (() => !1), A = C.enableCredits ?? !1, j = p("transport", C.product), M = (e) => async (t) => {
18
- t.messageId && await i(t.workspaceId, t.sessionId, t.messageId, t.model, t.tokens, e);
19
- }, N = new s({
20
- product: C.product,
21
- mode: T,
22
- ttlSeconds: O,
23
- isProd: k,
24
- getWorkspaceId: w.getWorkspaceId,
25
- getAuthContext: w.getAuthContext
26
- }), P = () => C.gatherPageContext ? { ...C.gatherPageContext() } : S();
27
- async function F(e, t, i, s) {
17
+ function w(w, T) {
18
+ let E = w.mode ?? "assistant", D = w.streamBudgetMs ?? y, O = { accumulateNarration: w.accumulateNarration === !0 }, k = w.ttlSeconds ?? 3600, A = w.isProdRuntime ?? (() => !1), j = w.enableCredits ?? !1, M = m("transport", w.product), N = (e) => async (t) => {
19
+ t.messageId && await a(t.workspaceId, t.sessionId, t.messageId, t.model, t.tokens, e);
20
+ }, P = new c({
21
+ product: w.product,
22
+ mode: E,
23
+ ttlSeconds: k,
24
+ isProd: A,
25
+ getWorkspaceId: T.getWorkspaceId,
26
+ getAuthContext: T.getAuthContext
27
+ }), F = () => w.gatherPageContext ? { ...w.gatherPageContext() } : C();
28
+ async function I(t, n, a, c) {
28
29
  try {
29
- let { sandboxId: o, sessionId: s } = await N.ensureRuntime();
30
- N.startKeepWarm();
31
- let l = Date.now();
32
- await a(o, t, s, e.prompt, T, P(), i, e.parts?.length ? { parts: e.parts } : void 0);
33
- let u = null, p = null, m = await r(o, t, s, T, i).catch(() => null);
30
+ let { sandboxId: e, sessionId: s } = await P.ensureRuntime();
31
+ P.startKeepWarm();
32
+ let c = Date.now();
33
+ await o(e, n, s, t.prompt, E, F(), a, t.parts?.length ? { parts: t.parts } : void 0);
34
+ let u = null, d = null, m = await i(e, n, s, E, a).catch(() => null);
34
35
  if (m && typeof EventSource < "u") try {
35
- p = new EventSource(m.url);
36
+ d = new EventSource(m.url);
36
37
  let e = () => {
37
38
  if (u) {
38
39
  let e = u;
39
40
  u = null, e();
40
41
  }
41
42
  };
42
- p.onmessage = e, p.addEventListener("message.part.updated", e), p.addEventListener("message.updated", e), p.onerror = () => {
43
- p?.close(), p = null;
43
+ d.onmessage = e, d.addEventListener("message.part.updated", e), d.addEventListener("message.updated", e), d.onerror = () => {
44
+ d?.close(), d = null;
44
45
  };
45
46
  } catch {
46
- p = null;
47
+ d?.close(), d = null;
47
48
  }
48
- let g = (t) => new Promise((n) => {
49
- if (e.signal.aborted) return n();
49
+ let h = (e) => new Promise((n) => {
50
+ if (t.signal.aborted) return n();
50
51
  let r = setTimeout(() => {
51
52
  u = null, n();
52
- }, t);
53
+ }, e);
53
54
  u = () => {
54
55
  clearTimeout(r), n();
55
56
  };
56
- }), _ = l + E, v = [], S = c([], l, D), w = l;
57
- for (; Date.now() < _;) {
58
- if (e.signal.aborted) throw Error("Cancelled");
59
- let r = await n(o, t, s, T, i, {
60
- sinceMs: w,
61
- surfaceTurnTerminal: !0
62
- });
63
- v = d(v, r);
64
- for (let e of r) {
65
- let t = e.info?.time?.created;
66
- typeof t == "number" && t > w && (w = t);
57
+ }), _ = c + D, v = [], y = l([], c, O), C = c;
58
+ try {
59
+ for (; Date.now() < _;) {
60
+ if (t.signal.aborted) throw Error("Cancelled");
61
+ let i = await r(e, n, s, E, a, {
62
+ sinceMs: C,
63
+ surfaceTurnTerminal: !0
64
+ });
65
+ v = f(v, i);
66
+ for (let e of i) {
67
+ let t = e.info?.time?.created;
68
+ typeof t == "number" && t > C && (C = t);
69
+ }
70
+ if (y = l(v, c, O), t.onProgress(p(y.content)), y.done) break;
71
+ let o = Date.now() - c < S ? b : x;
72
+ await (d ? h(o) : new Promise((e) => setTimeout(e, o)));
67
73
  }
68
- if (S = c(v, l, D), e.onProgress(f(S.content)), S.done) break;
69
- let a = Date.now() - l < x ? y : b;
70
- await (p ? g(a) : new Promise((e) => setTimeout(e, a)));
74
+ } finally {
75
+ d?.close();
71
76
  }
72
- if (p?.close(), !S.done) throw Error("The assistant timed out while responding. Please try again.");
73
- let O = await n(o, t, s, T, i, { limit: 50 }).catch(() => v), k = c(d(v, O), l, D);
74
- if (A) {
75
- let e = O.filter((e) => e.info?.role === "assistant").sort((e, t) => (t.info?.time?.created ?? 0) - (e.info?.time?.created ?? 0))[0], n = e?.info?.tokens, r = e?.info?.providerID && e?.info?.modelID ? `${e.info.providerID}/${e.info.modelID}` : void 0;
76
- e?.info?.id && n && (await h({
77
- workspaceId: t,
77
+ if (!y.done) throw Error("The assistant timed out while responding. Please try again.");
78
+ let T = await r(e, n, s, E, a, { limit: 50 }).catch(() => v), k = l(f(v, T), c, O);
79
+ if (j) {
80
+ let e = T.filter((e) => e.info?.role === "assistant").sort((e, t) => (t.info?.time?.created ?? 0) - (e.info?.time?.created ?? 0))[0], t = e?.info?.tokens, r = e?.info?.providerID && e?.info?.modelID ? `${e.info.providerID}/${e.info.modelID}` : void 0;
81
+ e?.info?.id && t && (await g({
82
+ workspaceId: n,
78
83
  sessionId: s,
79
84
  messageId: e.info.id,
80
85
  model: r,
81
- tokens: n
82
- }, M(i), { ledger: j })).ok && C.onCreditsUpdated?.();
86
+ tokens: t
87
+ }, N(a), { ledger: M })).ok && w.onCreditsUpdated?.();
83
88
  }
84
- return { text: f(k.content) };
85
- } catch (n) {
86
- if (s === 1 && u(n)) {
87
- let r = l(n);
88
- if (r) {
89
- let e = N.getSandboxId();
90
- e && await o(e, t, i).catch(() => void 0);
89
+ return { text: p(k.content) };
90
+ } catch (r) {
91
+ if (c === 1 && d(r)) {
92
+ let i = u(r), o = e(r) === "ASSISTANT_SESSION_REVOKED", c = i || o;
93
+ if (c) {
94
+ let e = P.getSandboxId();
95
+ e && await s(e, n, a, { ownerScoped: o }).catch(() => void 0);
91
96
  }
92
- return N.reset({ quarantineCurrentSandbox: r }), F(e, t, i, 2);
97
+ return P.reset({ quarantineCurrentSandbox: c }), I(t, n, a, 2);
93
98
  }
94
- throw n;
99
+ throw r;
95
100
  }
96
101
  }
97
102
  return {
98
- sendPrompt: async (n) => {
99
- let r = w.getWorkspaceId();
103
+ sendPrompt: async (e) => {
104
+ let r = T.getWorkspaceId();
100
105
  if (!r) throw Error("The assistant needs an active workspace. Open a workspace and try again.");
101
- let i = w.getAuthContext();
102
- if (A && m(j, r)) {
103
- let e = await g(j, r, M(i));
104
- if (!e.ok) throw _(e.kind);
106
+ let i = T.getAuthContext();
107
+ if (j && h(M, r)) {
108
+ let e = await _(M, r, N(i));
109
+ if (!e.ok) throw v(e.kind);
105
110
  }
106
- return A && t(r, i).catch((t) => {
107
- e(t) && C.onQuotaExhausted?.(t);
108
- }), F(n, r, i, 1);
111
+ return j && n(r, i).catch((e) => {
112
+ t(e) && w.onQuotaExhausted?.(e);
113
+ }), I(e, r, i, 1);
109
114
  },
110
- prewarm: (e) => N.prewarm(e),
111
- suspend: () => N.stopKeepWarm()
115
+ prewarm: (e) => P.prewarm(e),
116
+ suspend: () => P.stopKeepWarm()
112
117
  };
113
118
  }
114
119
  //#endregion
115
- export { C as createSandboxAssistantTransport };
120
+ export { w as createSandboxAssistantTransport };
@@ -1,7 +1,7 @@
1
1
  import { AssistantModeConfig } from './conversation';
2
2
  /**
3
- * Every translation key the shared assistant can request, with its English
4
- * default (BOFF-7293).
3
+ * Every translation key the shared assistant can request, plus explicitly
4
+ * preserved seed keys, with their English default (BOFF-7293).
5
5
  *
6
6
  * ★★ WHY THIS EXISTS. Each product seeds the assistant's copy under its own
7
7
  * namespace (`<product>.assistant.<key>`, see `i18n.tsx`), and the i18n seeder
@@ -430,11 +430,19 @@ export type AssistantI18nLiteralKey = keyof typeof ASSISTANT_I18N_LITERAL_COPY;
430
430
  * from.
431
431
  */
432
432
  export declare const ASSISTANT_I18N_COMPUTED_COPY: Readonly<Record<string, string>>;
433
+ /**
434
+ * Retired at runtime, but still seeded: omitting an existing key makes the
435
+ * in-place product seeder deprecate its published translations and history.
436
+ * Only add an entry here for a key already live in product bundles.
437
+ */
438
+ export declare const ASSISTANT_I18N_SEED_COMPAT_COPY: Readonly<{
439
+ readonly "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow.";
440
+ }>;
433
441
  /**
434
442
  * The manifest: every relative key whose English fe-libs owns, literal and
435
- * computed. Mode labels are the product's — see `assistantModeI18nCopy` — and
436
- * so is any shared key a product has customised: see `overrides` on
437
- * `assistantI18nSeedCopy`.
443
+ * computed, plus retained seed keys. Mode labels are the product's — see
444
+ * `assistantModeI18nCopy` — and so is any shared key a product has customised:
445
+ * see `overrides` on `assistantI18nSeedCopy`.
438
446
  */
439
447
  export declare const ASSISTANT_I18N_MANIFEST: Readonly<Record<string, string>>;
440
448
  /** The part of a mode that decides its pill's key and English. */
@@ -1 +1 @@
1
- {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4WG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
1
+ {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4WG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCtE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;;EAGjC,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
@@ -330,19 +330,20 @@ var p = {
330
330
  ...m(Object.values(d)),
331
331
  ...m(Object.values(f)),
332
332
  ...Object.fromEntries(l.map((e) => [e.labelKey, e.labelFallback]))
333
- }), g = Object.freeze({
333
+ }), g = Object.freeze({ "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow." }), _ = Object.freeze({
334
334
  ...p,
335
- ...h
335
+ ...h,
336
+ ...g
336
337
  });
337
- function _(e) {
338
+ function v(e) {
338
339
  let r = e.map((e) => e.id).filter((e) => !n(e));
339
340
  if (r.length > 0) throw Error(`assistantModeI18nCopy: malformed mode id ${r.map((e) => JSON.stringify(e)).join(", ")}. Declare product modes with declareAssistantMode().`);
340
341
  return Object.fromEntries(e.map((e) => [`mode.${e.id}`, e.label || t(e)]));
341
342
  }
342
- function v(t) {
343
+ function y(t) {
343
344
  let n = {
344
- ...g,
345
- ..._(t.modes)
345
+ ..._,
346
+ ...v(t.modes)
346
347
  }, r = Object.entries(t.overrides ?? {}), i = r.filter(([e]) => !Object.hasOwn(n, e)).map(([e]) => e);
347
348
  if (i.length > 0) throw Error(`assistantI18nSeedCopy: no shared assistant key ${i.join(", ")} to override. Check the spelling, or that the key is a mode this product offers; a key fe-libs no longer requests belongs with the product's own keys.`);
348
349
  let a = r.filter(([, e]) => e.trim() === "").map(([e]) => e);
@@ -354,4 +355,4 @@ function v(t) {
354
355
  return Object.fromEntries(Object.entries(o).map(([n, r]) => [e(t.namespace, n), r]));
355
356
  }
356
357
  //#endregion
357
- export { h as ASSISTANT_I18N_COMPUTED_COPY, p as ASSISTANT_I18N_LITERAL_COPY, g as ASSISTANT_I18N_MANIFEST, v as assistantI18nSeedCopy, _ as assistantModeI18nCopy };
358
+ export { h as ASSISTANT_I18N_COMPUTED_COPY, p as ASSISTANT_I18N_LITERAL_COPY, _ as ASSISTANT_I18N_MANIFEST, g as ASSISTANT_I18N_SEED_COMPAT_COPY, y as assistantI18nSeedCopy, v as assistantModeI18nCopy };
@@ -118,6 +118,7 @@ export * from './ui/composer/AssistantAttachmentChips';
118
118
  export * from './ui/composer/AssistantConnectSourceItem';
119
119
  export * from './ui/composer/connectSource';
120
120
  export * from './preview/types';
121
+ export * from './preview/writeActionResults';
121
122
  export * from './preview/context';
122
123
  export * from './preview/previewTransitions';
123
124
  export * from './preview/surfaceState';
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  import { useAssistantTr as e } from "../i18n.js";
2
2
  import { useAssistantStore as t } from "../store.js";
3
- import { hasAssistantPreviewSurface as n } from "./types.js";
4
- import { useAssistantPreview as r } from "./context.js";
3
+ import { useAssistantPreview as n } from "./context.js";
4
+ import { hasAssistantPreviewSurface as r } from "./types.js";
5
5
  import { useOverlayFocus as i } from "../ui/useOverlayFocus.js";
6
6
  import { Component as a } from "react";
7
7
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
@@ -27,11 +27,11 @@ var l = class extends a {
27
27
  return this.state.failed ? this.props.fallback : this.props.children;
28
28
  }
29
29
  }, u = ({ controller: e }) => /* @__PURE__ */ s(o, { children: e.render() }), d = ({ onClose: a }) => {
30
- let o = r(), d = e(), f = t((e) => {
30
+ let o = n(), d = e(), f = t((e) => {
31
31
  let t = e.activeConversationId, n = t ? e.processingByConversationId[t]?.messageId : null;
32
32
  return !t || !n ? "idle" : `${t}:${n}#${e.conversations.find((e) => e.id === t)?.updatedAt ?? ""}`;
33
33
  }), p = i("assistant-toggle-preview");
34
- return n(o) ? /* @__PURE__ */ c("div", {
34
+ return r(o) ? /* @__PURE__ */ c("div", {
35
35
  ref: p,
36
36
  tabIndex: -1,
37
37
  className: "absolute inset-0 z-10 flex flex-col bg-bg-surface outline-none animate-in slide-in-from-right-2 fade-in duration-200",
@@ -62,6 +62,19 @@ export interface AssistantPreviewRun {
62
62
  export type AssistantPreviewEvent = {
63
63
  kind: "start";
64
64
  run: AssistantPreviewRun;
65
+ } | {
66
+ /** An approved write finished, independently of the model's turn. */
67
+ kind: "action-result";
68
+ run: AssistantPreviewRun;
69
+ action: {
70
+ id: string;
71
+ operation: string;
72
+ responseKey: string;
73
+ /** Approved inputs, with sensitive arguments omitted. */
74
+ arguments: Readonly<Record<string, unknown>>;
75
+ /** The sandbox's redacted GraphQL response, never model narration. */
76
+ result: unknown;
77
+ };
65
78
  } | {
66
79
  kind: "snapshot";
67
80
  run: AssistantPreviewRun;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,mBAAmB,CAAA;CAAE,GAC3C;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,mBAAmB,CAAC;IACzB;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACrC,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,mBAAmB,CAAC;IACzB;;;;;;;;OAQG;IACH,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;IAC5C;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEN;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,EAAE,MAAM,SAAS,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAEjD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,MAAM,iCAAiC,GAAG,0BAA0B,GAAG;IAC3E,MAAM,EAAE,MAAM,SAAS,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,GACxD,UAAU,IAAI,iCAAiC,CAEjD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,mBAAmB,CAAA;CAAE,GAC3C;IACE,qEAAqE;IACrE,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,mBAAmB,CAAC;IACzB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,yDAAyD;QACzD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,sEAAsE;QACtE,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,mBAAmB,CAAC;IACzB;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACrC,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,mBAAmB,CAAC;IACzB;;;;;;;;OAQG;IACH,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;IAC5C;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEN;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,EAAE,MAAM,SAAS,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAEjD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,MAAM,iCAAiC,GAAG,0BAA0B,GAAG;IAC3E,MAAM,EAAE,MAAM,SAAS,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,GACxD,UAAU,IAAI,iCAAiC,CAEjD"}
@@ -1,3 +1,23 @@
1
- import { AssistantPreviewController } from './types';
1
+ import { AssistantPreviewController, AssistantPreviewEvent } from './types';
2
+ /**
3
+ * Shared delivery for turn events and approved action results. The main effect
4
+ * and the unmount cleanup had already drifted: the
5
+ * receiver fix and the async-rejection guard were applied to one and not the
6
+ * other, so closing the assistant mid-run delivered the run's only terminal
7
+ * event through the broken path. One function is the fix for the class of bug,
8
+ * not just for the instance.
9
+ *
10
+ * ★ Called ON the controller, not as a detached function: a product may supply
11
+ * a class instance or an object method whose `onEvent` uses `this`, and a bare
12
+ * call loses the receiver — the resulting throw is caught here, so the product
13
+ * would silently receive nothing at all.
14
+ *
15
+ * ★ A promise-like return has its rejection handled without awaiting. `onEvent`
16
+ * is typed as returning void, which TypeScript lets an `async` function
17
+ * satisfy, so a throw after an `await` escapes the `try` entirely and surfaces
18
+ * as an unhandled rejection in the HOST app — breaking the containment this
19
+ * wrapper exists to provide.
20
+ */
21
+ export declare function deliverPreviewEvent(controller: AssistantPreviewController | null | undefined, event: AssistantPreviewEvent): void;
2
22
  export declare function useAssistantPreviewBridge(controller: AssistantPreviewController | null): void;
3
23
  //# sourceMappingURL=useAssistantPreviewBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantPreviewBridge.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/useAssistantPreviewBridge.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,0BAA0B,EAAyB,MAAM,SAAS,CAAC;AA2CjF,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAC5C,IAAI,CA+MN"}
1
+ {"version":3,"file":"useAssistantPreviewBridge.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/useAssistantPreviewBridge.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,EACzD,KAAK,EAAE,qBAAqB,GAC3B,IAAI,CAeN;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAC5C,IAAI,CA+MN"}
@@ -75,4 +75,4 @@ function d(d) {
75
75
  ]);
76
76
  }
77
77
  //#endregion
78
- export { d as useAssistantPreviewBridge };
78
+ export { u as deliverPreviewEvent, d as useAssistantPreviewBridge };
@@ -0,0 +1,10 @@
1
+ import { WriteProposalView } from '../writeProposals';
2
+ import { PreviewOwner } from './surfaceState';
3
+ import { AssistantPreviewEvent } from './types';
4
+ /** Only a recorded successful execution supplies data to a live preview. */
5
+ export declare function writeActionResultEvents(view: Pick<WriteProposalView, 'proposalId' | 'status' | 'result'> & {
6
+ description: Pick<WriteProposalView['description'], 'rootFields'>;
7
+ }, conversationId: string, messageId: string, owner: PreviewOwner): Extract<AssistantPreviewEvent, {
8
+ kind: "action-result";
9
+ }>[];
10
+ //# sourceMappingURL=writeActionResults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeActionResults.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/writeActionResults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,SAAS,CAAC;AAE1E,4EAA4E;AAC5E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG;IAClE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;CACnE,EACD,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,EAAE,CA+B7D"}
@@ -0,0 +1,26 @@
1
+ //#region src/shared/assistant/preview/writeActionResults.ts
2
+ function e(e, t, n, r) {
3
+ if (e.status !== "succeeded" || !e.result || e.result.errors?.length || e.result.dataPreview === void 0) return [];
4
+ let i = {
5
+ runId: `${t}:${n}`,
6
+ conversationId: t,
7
+ messageId: n,
8
+ ...r
9
+ };
10
+ return e.description.rootFields.map((t) => {
11
+ let n = t.alias ?? t.field;
12
+ return {
13
+ kind: "action-result",
14
+ run: i,
15
+ action: {
16
+ id: `${e.proposalId}:${n}`,
17
+ operation: t.field,
18
+ responseKey: n,
19
+ arguments: Object.fromEntries(t.args.filter((e) => !e.sensitive).map((e) => [e.name, e.value])),
20
+ result: e.result?.dataPreview
21
+ }
22
+ };
23
+ });
24
+ }
25
+ //#endregion
26
+ export { e as writeActionResultEvents };
@@ -1 +1 @@
1
- {"version":3,"file":"turnOutcome.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnOutcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAO1C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GAErB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;CAKvD;AAED,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,YAAY,GACZ,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6BAA6B;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,oFAAoF;IACpF,aAAa,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uFAAuF;IACvF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,GACb,EAAE;IACD,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,sEAAsE;IACtE,YAAY,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3D,GAAG,OAAO,CAMV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO;AACd;;;;GAIG;AACH,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,WAAW,CAkEb;AAQD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,IAAI,CAQf;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,WAAW;AACf;;;;GAIG;AACH,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CA8CzD"}
1
+ {"version":3,"file":"turnOutcome.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnOutcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAO1C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GAErB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;CAKvD;AAED,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,YAAY,GACZ,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6BAA6B;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,oFAAoF;IACpF,aAAa,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uFAAuF;IACvF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,GACb,EAAE;IACD,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,sEAAsE;IACtE,YAAY,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3D,GAAG,OAAO,CAMV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO;AACd;;;;GAIG;AACH,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,WAAW,CAqEb;AAQD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,IAAI,CAQf;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,WAAW;AACf;;;;GAIG;AACH,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CA4CzD"}
@@ -42,7 +42,7 @@ function c(e) {
42
42
  return e === null ? null : Number.isFinite(Date.parse(e)) ? e : null;
43
43
  }
44
44
  function l(e, t) {
45
- if (!t) return "usageDailyLimitReachedNoTime";
45
+ if (!t) return "usageDailyLimitReachedUnknownTime";
46
46
  switch (e) {
47
47
  case "assistant.llm.actor_daily": return "usageDailyLimitReached";
48
48
  case "assistant.llm.workspace_daily": return "usageDailyLimitReachedWorkspace";
@@ -130,9 +130,9 @@ function g(e, t) {
130
130
  return t ? e.replace(/\{\{(\w+)\}\}/g, (e, n) => t[n] ?? e) : e;
131
131
  }
132
132
  function _(e, t, n = {}) {
133
- let i = e.resetsAt ? m(e.resetsAt, n.locale) : null, a = e.resetsAt ? m(e.resetsAt, h(n.locale)) : null, o = r[i === null && r[e.copy].fallback.includes("{{time}}") ? "usageDailyLimitReachedNoTime" : e.copy], s = i === null ? void 0 : { time: i }, c = t(o.key, o.fallback, s), l = g(o.fallback, a === null ? void 0 : { time: a }), u = r.reference, d = e.traceId ? u.fallback.replace("{{id}}", e.traceId) : null, f = e.traceId ? t(u.key, u.fallback, { id: e.traceId }) : null, p = c !== g(o.fallback, s) && (f === null || f !== d), _ = p ? c : l, v = p ? f : d, y = [e.quotaName, v].filter((e) => !!e);
133
+ let i = e.resetsAt ? m(e.resetsAt, n.locale) : null, a = e.resetsAt ? m(e.resetsAt, h(n.locale)) : null, o = r[i === null && r[e.copy].fallback.includes("{{time}}") ? "usageDailyLimitReachedUnknownTime" : e.copy], s = i === null ? void 0 : { time: i }, c = t(o.key, o.fallback, s), l = g(o.fallback, a === null ? void 0 : { time: a }), u = r.reference, d = e.traceId ? u.fallback.replace("{{id}}", e.traceId) : null, f = e.traceId ? t(u.key, u.fallback, { id: e.traceId }) : null, p = c !== g(o.fallback, s) && (f === null || f !== d), _ = p ? c : l, v = p ? f : d;
134
134
  return {
135
- text: y.length ? `${_}\n\n${y.join(" · ")}` : _,
135
+ text: v ? `${_}\n\n${v}` : _,
136
136
  headline: _,
137
137
  translated: p
138
138
  };
@@ -51,9 +51,9 @@ export declare const TURN_OUTCOME_COPY: {
51
51
  readonly key: "outcome.usageDailyLimitReachedPlatform";
52
52
  readonly fallback: "The AI assistant has reached today's usage limit. It resets at {{time}}.";
53
53
  };
54
- readonly usageDailyLimitReachedNoTime: {
55
- readonly key: "outcome.usageDailyLimitReachedNoTime";
56
- readonly fallback: "You've reached today's AI assistant limit. Try again tomorrow.";
54
+ readonly usageDailyLimitReachedUnknownTime: {
55
+ readonly key: "outcome.usageDailyLimitReachedUnknownTime";
56
+ readonly fallback: "The AI assistant has reached a daily usage limit. Try again later.";
57
57
  };
58
58
  readonly permissionDenied: {
59
59
  readonly key: "outcome.permissionDenied";
@@ -1 +1 @@
1
- {"version":3,"file":"turnOutcomeCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnOutcomeCopy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkIwC,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"turnOutcomeCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnOutcomeCopy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIwC,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC"}
@@ -28,9 +28,9 @@ var e = {
28
28
  key: "outcome.usageDailyLimitReachedPlatform",
29
29
  fallback: "The AI assistant has reached today's usage limit. It resets at {{time}}."
30
30
  },
31
- usageDailyLimitReachedNoTime: {
32
- key: "outcome.usageDailyLimitReachedNoTime",
33
- fallback: "You've reached today's AI assistant limit. Try again tomorrow."
31
+ usageDailyLimitReachedUnknownTime: {
32
+ key: "outcome.usageDailyLimitReachedUnknownTime",
33
+ fallback: "The AI assistant has reached a daily usage limit. Try again later."
34
34
  },
35
35
  permissionDenied: {
36
36
  key: "outcome.permissionDenied",
@@ -4,11 +4,11 @@ import { useAssistantTr as n } from "../i18n.js";
4
4
  import { AssistantNavigateProvider as r } from "./AssistantMarkdownRenderer.js";
5
5
  import { useAssistantStore as i } from "../store.js";
6
6
  import { AssistantSpeechProvider as a } from "./AssistantSpeechProvider.js";
7
- import { AssistantConnectSourceProvider as o } from "./composer/connectSource.js";
8
- import { ASSISTANT_OVERLAY_ATTR as s, ASSISTANT_PANEL_ATTR as c, activePanelOverlay as l, escapeDismisses as u, nextPanelOverlays as d } from "./panelOverlays.js";
9
- import { hasAssistantPreviewSurface as f } from "../preview/types.js";
10
- import { AssistantPreviewProvider as p } from "../preview/context.js";
11
- import { useAssistantPreviewBridge as m } from "../preview/useAssistantPreviewBridge.js";
7
+ import { AssistantPreviewProvider as o } from "../preview/context.js";
8
+ import { useAssistantPreviewBridge as s } from "../preview/useAssistantPreviewBridge.js";
9
+ import { AssistantConnectSourceProvider as c } from "./composer/connectSource.js";
10
+ import { ASSISTANT_OVERLAY_ATTR as l, ASSISTANT_PANEL_ATTR as u, activePanelOverlay as d, escapeDismisses as f, nextPanelOverlays as p } from "./panelOverlays.js";
11
+ import { hasAssistantPreviewSurface as m } from "../preview/types.js";
12
12
  import { panelOwnedPreviewBridge as h, useHostedAssistantPreviewBridge as g } from "../preview/bridgeHostContext.js";
13
13
  import { AssistantPreviewOverlay as _ } from "../preview/AssistantPreviewOverlay.js";
14
14
  import { AssistantHeader as v } from "./AssistantHeader.js";
@@ -25,17 +25,17 @@ import { jsx as O, jsxs as k } from "react/jsx-runtime";
25
25
  var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee, onNavigate: P, connectSourceHref: F, onConnectSource: I, preview: L, serverHistory: R = !1 }) => {
26
26
  let z = n();
27
27
  x(R);
28
- let [B, V] = D(!1), H = f(L);
28
+ let [B, V] = D(!1), H = m(L);
29
29
  B && !H && V(!1);
30
30
  let U = B && H;
31
- m(h(L, g()));
31
+ s(h(L, g()));
32
32
  let W = E(null);
33
33
  e(W);
34
- let { conversations: G, activeConversationId: K, conversationListOpen: q, setConversationListOpen: J, createConversation: Y } = i(), X = q || U, Z = l({
34
+ let { conversations: G, activeConversationId: K, conversationListOpen: q, setConversationListOpen: J, createConversation: Y } = i(), X = q || U, Z = d({
35
35
  historyOpen: q,
36
36
  previewOpen: U
37
37
  }), Q = (e) => {
38
- let t = d({
38
+ let t = p({
39
39
  historyOpen: q,
40
40
  previewOpen: U
41
41
  }, e);
@@ -46,7 +46,7 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
46
46
  return w({
47
47
  panelRef: W,
48
48
  onClose: () => {
49
- if (u({
49
+ if (f({
50
50
  historyOpen: q,
51
51
  previewOpen: U
52
52
  }) === "overlay") {
@@ -57,11 +57,11 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
57
57
  }
58
58
  }), /* @__PURE__ */ O(a, {
59
59
  visible: j ?? !0,
60
- children: /* @__PURE__ */ O(p, {
60
+ children: /* @__PURE__ */ O(o, {
61
61
  value: L,
62
62
  children: /* @__PURE__ */ O(r, {
63
63
  value: P,
64
- children: /* @__PURE__ */ O(o, {
64
+ children: /* @__PURE__ */ O(c, {
65
65
  value: F,
66
66
  onOpen: I,
67
67
  children: /* @__PURE__ */ O(b, { children: /* @__PURE__ */ k("div", {
@@ -70,8 +70,8 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
70
70
  role: "complementary",
71
71
  "aria-label": z("panel.ariaLabel", "AI Assistant"),
72
72
  "data-testid": "ai-assistant-panel",
73
- [c]: "",
74
- ...Z ? { [s]: Z } : {},
73
+ [u]: "",
74
+ ...Z ? { [l]: Z } : {},
75
75
  tabIndex: -1,
76
76
  children: [
77
77
  /* @__PURE__ */ O("div", {
@@ -1,12 +1,12 @@
1
1
  import { useAssistantTr as e } from "../i18n.js";
2
- import { hasAssistantPreviewSurface as t } from "../preview/types.js";
3
- import { useAssistantPreview as n } from "../preview/context.js";
2
+ import { useAssistantPreview as t } from "../preview/context.js";
3
+ import { hasAssistantPreviewSurface as n } from "../preview/types.js";
4
4
  import { AssistantMoreMenu as r } from "./AssistantMoreMenu.js";
5
5
  import { Eye as i, History as a, PanelBottom as o, PanelRight as s, Plus as c, Sparkles as l, X as u } from "lucide-react";
6
6
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
7
7
  //#region src/shared/assistant/ui/AssistantHeader.tsx
8
8
  var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen: _, onTogglePreview: v, previewOpen: y, onClose: b, docked: x, onToggleDock: S }) => {
9
- let C = e(), w = n();
9
+ let C = e(), w = t();
10
10
  return /* @__PURE__ */ p("div", {
11
11
  className: "flex items-center gap-2 border-b border-border-default bg-bg-elevated px-3 py-2.5",
12
12
  children: [/* @__PURE__ */ p("div", {
@@ -47,7 +47,7 @@ var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen:
47
47
  "data-testid": "assistant-open-history",
48
48
  children: /* @__PURE__ */ f(a, { className: "size-4" })
49
49
  }),
50
- t(w) && v && /* @__PURE__ */ f("button", {
50
+ n(w) && v && /* @__PURE__ */ f("button", {
51
51
  type: "button",
52
52
  onClick: v,
53
53
  className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,