@burdenoff/fe-libs 2026.925.5 → 2026.925.6

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.
@@ -154,6 +154,7 @@ export * from './permissionError';
154
154
  export * from './autoRouting';
155
155
  export * from './turnOutcome';
156
156
  export * from './turnTimeline';
157
+ export * from './prewarm';
157
158
  export * from './turnOutcomeCopy';
158
159
  export * from './aiCredits';
159
160
  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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"}
@@ -0,0 +1,139 @@
1
+ import { AssistantModeConfig, AssistantTurnStage } from './conversation';
2
+ import { AssistantMode } from './types';
3
+ /**
4
+ * ★ BOFF-7801 — PRE-WARM ON THE FIRST KEYSTROKE (operator decision
5
+ * 2026-09-25: warm when a message is started, never on merely opening the
6
+ * panel).
7
+ *
8
+ * A warm is a GUESS about the next send, so it is held to a stricter rule than
9
+ * the send it anticipates: it may reuse or create a sandbox, and it may never
10
+ * take anything away. Concretely —
11
+ *
12
+ * - it never RELEASES. A send frees the person's other sandboxes before it
13
+ * creates, because a Free workspace holds one; a warm doing the same stopped
14
+ * a live Take-action sandbox to warm Ask for a message Auto then routed back
15
+ * to Take action (review of #268, reproduced against a one-slot model). A
16
+ * warm that finds the slot taken is refused by the quota, silently; the send
17
+ * does the committed release itself;
18
+ * - it yields to a send in ANOTHER mode (`settleWarmBeforeSend`): it is
19
+ * cancelled, and the send waits only for a create request already on the
20
+ * wire — the one thing that could still take the slot from under it;
21
+ * - one warm per workspace at a time, held here rather than in the panel,
22
+ * because the panel unmounts on minimise while its turns and warms run on.
23
+ */
24
+ export declare const PREWARM_COOLDOWN_MS = 30000;
25
+ export interface PrewarmInput {
26
+ autoRouting: boolean;
27
+ autoOffered: boolean;
28
+ /** The active conversation, if any. */
29
+ active?: {
30
+ mode: AssistantMode;
31
+ routedBy?: "auto";
32
+ } | undefined;
33
+ selectedMode: AssistantMode;
34
+ autoReadMode: AssistantMode;
35
+ modes: readonly Pick<AssistantModeConfig, "id" | "writeCapable" | "requiresAdmin">[];
36
+ acknowledgedWriteModes: readonly AssistantMode[];
37
+ /** The role check that admin-only modes wait on (`adminModeAccessGate`). */
38
+ adminAccess: {
39
+ loading: boolean;
40
+ canUseAdminModes: boolean;
41
+ };
42
+ /** The message will be SPOKEN — a mic tap, not a keystroke. */
43
+ dictated: boolean;
44
+ /** Any turn in any conversation, read from the store (it outlives a remount). */
45
+ turnInFlight: boolean;
46
+ /** A warm is already running in this workspace. */
47
+ warming: boolean;
48
+ lastPrewarmAt: ReadonlyMap<AssistantMode, number>;
49
+ /** Modes whose last warm created a sandbox no send has used yet. */
50
+ unusedCreates: ReadonlySet<AssistantMode>;
51
+ now: number;
52
+ }
53
+ export interface PrewarmPlan {
54
+ mode: AssistantMode;
55
+ /**
56
+ * False: reuse only. A warm's creation nobody used yet is not repeated —
57
+ * without this, typing and clearing every 31s created a sandbox each time
58
+ * the last one expired, none of them ever used.
59
+ */
60
+ mayCreate: boolean;
61
+ }
62
+ /**
63
+ * Which sandbox a warm should prepare, or null. Pure, so the rules are tested
64
+ * rather than read. Every refusal mirrors a gate the SEND would apply — a warm
65
+ * must never provision what the send it anticipates would be refused.
66
+ */
67
+ export declare function prewarmTarget(input: PrewarmInput): PrewarmPlan | null;
68
+ /** How a warm ended. It never rejects: a failed warm is the send's problem. */
69
+ export interface WarmOutcome {
70
+ ok: boolean;
71
+ /** The sandbox it left ready, when ok. */
72
+ sandboxId?: string;
73
+ /** It created, probed or adopted — not merely trusted a fresh proof. */
74
+ didWork: boolean;
75
+ /**
76
+ * What it proved dead. Carried to the send that joins, because the warm's
77
+ * own record of it lives in the panel that STARTED it — which may be gone
78
+ * (the panel unmounts on minimise; a reopened one joins the same warm).
79
+ */
80
+ dead?: readonly string[];
81
+ }
82
+ /** Thrown inside a warm to stop it where it stands. Never surfaces. */
83
+ export declare class WarmCancelled extends Error {
84
+ constructor(reason: "cancelled" | "no-create");
85
+ }
86
+ export interface WarmHandle {
87
+ readonly workspaceId: string;
88
+ readonly mode: AssistantMode;
89
+ readonly mayCreate: boolean;
90
+ readonly signal: AbortSignal;
91
+ /** Sandboxes its probes proved dead — handed on in its outcome. */
92
+ readonly dead: string[];
93
+ /** The warm's latest progress step, so a send that joins can show it. */
94
+ step: AssistantTurnStage | null;
95
+ /** Progress forwarded to the send that joined, if one has. */
96
+ onStep: ((step: AssistantTurnStage) => void) | null;
97
+ /** Call immediately before the CreateSandbox request; call the result when it settles. */
98
+ beginCreate(): () => void;
99
+ /** Settle the warm. Idempotent. */
100
+ finish(outcome: WarmOutcome): void;
101
+ }
102
+ /** This workspace's warm state, shaped for `prewarmTarget`. */
103
+ export declare function warmState(workspaceId: string): Pick<PrewarmInput, "warming" | "lastPrewarmAt" | "unusedCreates">;
104
+ /** Register a warm. The caller must have checked `prewarmTarget` first. */
105
+ export declare function startWarm(workspaceId: string, plan: PrewarmPlan, now: number): WarmHandle;
106
+ /** What a send learned from settling a warm (see `settleWarmBeforeSend`). */
107
+ export interface WarmSettlement {
108
+ /**
109
+ * `joined` — it waited for a warm that did the work; `joinedFailed` — it
110
+ * waited for one that failed (the wait still cost it); null — neither.
111
+ */
112
+ joined: "joined" | "joinedFailed" | null;
113
+ /** The sandbox the warm proved ready, for the send's own readiness record. */
114
+ verified?: string;
115
+ /** Sandboxes the warm proved dead, for the send's own quarantine. */
116
+ dead: readonly string[];
117
+ }
118
+ /**
119
+ * What a send does about a warm before acquiring its own sandbox.
120
+ *
121
+ * - Same mode, still live: JOIN — mirror its progress, wait for it, and take
122
+ * over what it learned (the panel that started it may be gone).
123
+ * - Another mode — or a warm some earlier send already CANCELLED: cancel it
124
+ * (again, harmlessly), take it out of the registry so it blocks no one, and
125
+ * wait only while its create request is on the wire. Once that lands the
126
+ * sandbox is listed, so the send's own release step sees it; before it
127
+ * lands, a one-slot workspace would refuse the send. A cancelled warm is
128
+ * never joined: it can only end in failure, after a probe nobody needs.
129
+ */
130
+ export declare function settleWarmBeforeSend(workspaceId: string, mode: AssistantMode, onStep: (step: AssistantTurnStage) => void): Promise<WarmSettlement>;
131
+ /**
132
+ * A send was served by `sandboxId` in this workspace and mode: was that a
133
+ * warm's work? True at most once per warmed sandbox, so "hit" means the warm
134
+ * saved THIS turn time — not every later turn on the same sandbox.
135
+ */
136
+ export declare function consumeWarm(workspaceId: string, mode: AssistantMode, sandboxId: string): boolean;
137
+ /** Tests only: forget every warm. */
138
+ export declare function resetWarmsForTest(): void;
139
+ //# sourceMappingURL=prewarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prewarm.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/prewarm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { modeRequiresConfirmWrites as e } from "./api.js";
2
+ import { adminOnlyModeSendRefusal as t } from "./modeCapabilities.js";
3
+ //#region src/shared/assistant/prewarm.ts
4
+ var n = 3e4;
5
+ function r(n) {
6
+ if (n.turnInFlight || n.warming) return null;
7
+ let r = n.autoRouting && n.autoOffered ? n.active?.routedBy === "auto" ? n.active.mode : n.autoReadMode : n.selectedMode, i = n.modes.find((e) => e.id === r);
8
+ if (!i) return null;
9
+ let a = i.writeCapable === !0 || e(r);
10
+ if (a && !n.acknowledgedWriteModes.includes(r) || a && n.dictated || t(i, n.adminAccess)) return null;
11
+ let o = n.lastPrewarmAt.get(r);
12
+ return o !== void 0 && n.now - o < 3e4 ? null : {
13
+ mode: r,
14
+ mayCreate: !n.unusedCreates.has(r)
15
+ };
16
+ }
17
+ var i = class extends Error {
18
+ constructor(e) {
19
+ super(`pre-warm ${e}`), this.name = "WarmCancelled";
20
+ }
21
+ }, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), l = (e, t) => `${e}\u0000${t}`;
22
+ function u(e) {
23
+ let t = `${e}\u0000`, n = /* @__PURE__ */ new Map();
24
+ for (let [e, r] of o) e.startsWith(t) && n.set(e.slice(t.length), r);
25
+ let r = /* @__PURE__ */ new Set();
26
+ for (let e of s) e.startsWith(t) && r.add(e.slice(t.length));
27
+ return {
28
+ warming: a.has(e),
29
+ lastPrewarmAt: n,
30
+ unusedCreates: r
31
+ };
32
+ }
33
+ function d(e, t, n) {
34
+ let r = new AbortController(), i = () => void 0, u = new Promise((e) => {
35
+ i = e;
36
+ }), d = !1, f = {
37
+ workspaceId: e,
38
+ mode: t.mode,
39
+ mayCreate: t.mayCreate,
40
+ signal: r.signal,
41
+ dead: [],
42
+ controller: r,
43
+ step: null,
44
+ onStep: null,
45
+ createLanded: Promise.resolve(),
46
+ done: u,
47
+ beginCreate() {
48
+ s.add(l(e, t.mode));
49
+ let n = () => void 0;
50
+ return f.createLanded = new Promise((e) => {
51
+ n = e;
52
+ }), n;
53
+ },
54
+ finish(t) {
55
+ d || (d = !0, t.ok && t.didWork && t.sandboxId && c.add(t.sandboxId), a.get(e) === f && a.delete(e), i(t));
56
+ }
57
+ };
58
+ return a.set(e, f), o.set(l(e, t.mode), n), f;
59
+ }
60
+ async function f(e, t, n) {
61
+ let r = a.get(e);
62
+ if (!r) return {
63
+ joined: null,
64
+ dead: []
65
+ };
66
+ if (r.mode === t && !r.signal.aborted) {
67
+ r.step && n(r.step), r.onStep = n;
68
+ let e = await r.done;
69
+ r.onStep = null;
70
+ let t = e.dead ?? [];
71
+ return e.ok ? {
72
+ joined: e.didWork ? "joined" : null,
73
+ ...e.didWork && e.sandboxId ? { verified: e.sandboxId } : {},
74
+ dead: t
75
+ } : {
76
+ joined: "joinedFailed",
77
+ dead: t
78
+ };
79
+ }
80
+ return r.onStep === null ? (r.controller.abort(), a.get(e) === r && a.delete(e), await r.createLanded, {
81
+ joined: null,
82
+ dead: []
83
+ }) : (await r.createLanded, {
84
+ joined: null,
85
+ dead: []
86
+ });
87
+ }
88
+ function p(e, t, n) {
89
+ return s.delete(l(e, t)), c.delete(n);
90
+ }
91
+ function m() {
92
+ for (let e of a.values()) e.controller.abort();
93
+ a.clear(), o.clear(), s.clear(), c.clear();
94
+ }
95
+ //#endregion
96
+ export { n as PREWARM_COOLDOWN_MS, i as WarmCancelled, p as consumeWarm, r as prewarmTarget, m as resetWarmsForTest, f as settleWarmBeforeSend, d as startWarm, u as warmState };
@@ -106,6 +106,13 @@ export interface TurnAttemptFacts {
106
106
  * failed — how often the cache's window costs rather than saves.
107
107
  */
108
108
  cacheProofFailed?: boolean;
109
+ /**
110
+ * A first-keystroke pre-warm and this attempt: `hit` — it had finished and
111
+ * served it, `joined` — the send waited for it and it served it,
112
+ * `joinedFailed` — the send waited for it and it FAILED (the wait is in the
113
+ * attempt's time with nothing else to explain it).
114
+ */
115
+ prewarm?: "hit" | "joined" | "joinedFailed";
109
116
  }
110
117
  export interface TurnAttempt extends TurnAttemptFacts {
111
118
  at: Partial<Record<TurnMilestone, number>>;
@@ -1 +1 @@
1
- {"version":3,"file":"turnTimeline.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnTimeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,eAAO,MAAM,eAAe,yTAqBlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAiB7D;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,UAAU,GACV,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,sEAAsE;IACtE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,kCAAkC;AAClC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc,EAAE,gBAAgB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,wDAAwD;IACxD,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC,MAAM,CAAC,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC,CAC7E,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAUvE,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,IAAI,cAAc,CAAC,QAAQ,CAAC,CAQ3D;AAsCD;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,eAAe,GACxB,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,aAAa,EACxB,EAAE,GAAE,MAAsB,GACzB,IAAI,CAKN;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GACtD,IAAI,CA+BN;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,EAAE,GAAE,MAAsB,GACzB,IAAI,CAuBN;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGrE;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAEpD;AAED,kBAAkB;AAClB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BvB,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAS1C;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,SAAS,CAYvE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,EAC3C,OAAO,GAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAA0B,GAC9D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CA6BhE"}
1
+ {"version":3,"file":"turnTimeline.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnTimeline.ts"],"names":[],"mappings":"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"}
@@ -91,7 +91,7 @@ function d(e, t) {
91
91
  let n = i.get(e);
92
92
  if (!n) return;
93
93
  let r = !1;
94
- t.runtime !== void 0 && n.runtime === void 0 && (n.runtime = t.runtime, r = !0), t.usedTools !== void 0 && n.usedTools === void 0 && (n.usedTools = t.usedTools, r = !0), t.deadSandboxProbe !== void 0 && n.deadSandboxProbe === void 0 && (n.deadSandboxProbe = t.deadSandboxProbe, r = !0), t.cacheProofFailed !== void 0 && n.cacheProofFailed === void 0 && (n.cacheProofFailed = t.cacheProofFailed, r = !0), t.outcome !== void 0 && n.outcome === void 0 && (n.outcome = t.outcome, r = !0), r && c(n);
94
+ t.runtime !== void 0 && n.runtime === void 0 && (n.runtime = t.runtime, r = !0), t.usedTools !== void 0 && n.usedTools === void 0 && (n.usedTools = t.usedTools, r = !0), t.deadSandboxProbe !== void 0 && n.deadSandboxProbe === void 0 && (n.deadSandboxProbe = t.deadSandboxProbe, r = !0), t.cacheProofFailed !== void 0 && n.cacheProofFailed === void 0 && (n.cacheProofFailed = t.cacheProofFailed, r = !0), t.prewarm !== void 0 && n.prewarm === void 0 && (n.prewarm = t.prewarm, r = !0), t.outcome !== void 0 && n.outcome === void 0 && (n.outcome = t.outcome, r = !0), r && c(n);
95
95
  }
96
96
  function f(e, n = a()) {
97
97
  let r = i.get(e);
@@ -104,7 +104,7 @@ function f(e, n = a()) {
104
104
  let t = r.at[e];
105
105
  t !== void 0 && (o.at[e] = t, delete r.at[e]);
106
106
  }
107
- r.runtime !== void 0 && (o.runtime = r.runtime), r.usedTools !== void 0 && (o.usedTools = r.usedTools), r.deadSandboxProbe !== void 0 && (o.deadSandboxProbe = r.deadSandboxProbe), r.cacheProofFailed !== void 0 && (o.cacheProofFailed = r.cacheProofFailed), delete r.runtime, delete r.usedTools, delete r.deadSandboxProbe, delete r.cacheProofFailed, r.attempts = [...r.attempts ?? [], o], r.retried = !0, c(r);
107
+ r.runtime !== void 0 && (o.runtime = r.runtime), r.usedTools !== void 0 && (o.usedTools = r.usedTools), r.deadSandboxProbe !== void 0 && (o.deadSandboxProbe = r.deadSandboxProbe), r.cacheProofFailed !== void 0 && (o.cacheProofFailed = r.cacheProofFailed), r.prewarm !== void 0 && (o.prewarm = r.prewarm), delete r.runtime, delete r.usedTools, delete r.deadSandboxProbe, delete r.cacheProofFailed, delete r.prewarm, r.attempts = [...r.attempts ?? [], o], r.retried = !0, c(r);
108
108
  }
109
109
  function p(e) {
110
110
  let t = i.get(e);
@@ -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;AAmHf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA6DvE;;;;;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,CA2xFxD,CAAC"}
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;AA6Hf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA6DvE;;;;;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,CAygGxD,CAAC"}