@genesislcap/ai-assistant 14.409.0-FUI-2495.8 → 14.409.0-FUI-2495.9

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.
@@ -3666,6 +3666,37 @@
3666
3666
  "isProtected": false,
3667
3667
  "isAbstract": false
3668
3668
  },
3669
+ {
3670
+ "kind": "Method",
3671
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#enabledAnimationsChanged:member(1)",
3672
+ "docComment": "",
3673
+ "excerptTokens": [
3674
+ {
3675
+ "kind": "Content",
3676
+ "text": "enabledAnimationsChanged(): "
3677
+ },
3678
+ {
3679
+ "kind": "Content",
3680
+ "text": "void"
3681
+ },
3682
+ {
3683
+ "kind": "Content",
3684
+ "text": ";"
3685
+ }
3686
+ ],
3687
+ "isStatic": false,
3688
+ "returnTypeTokenRange": {
3689
+ "startIndex": 1,
3690
+ "endIndex": 2
3691
+ },
3692
+ "releaseTag": "Beta",
3693
+ "isProtected": false,
3694
+ "overloadIndex": 1,
3695
+ "parameters": [],
3696
+ "isOptional": false,
3697
+ "isAbstract": false,
3698
+ "name": "enabledAnimationsChanged"
3699
+ },
3669
3700
  {
3670
3701
  "kind": "Method",
3671
3702
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#getDebugLog:member(1)",
@@ -4474,6 +4505,37 @@
4474
4505
  "isProtected": false,
4475
4506
  "isAbstract": false
4476
4507
  },
4508
+ {
4509
+ "kind": "Method",
4510
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showAgentSwitchIndicatorChanged:member(1)",
4511
+ "docComment": "",
4512
+ "excerptTokens": [
4513
+ {
4514
+ "kind": "Content",
4515
+ "text": "showAgentSwitchIndicatorChanged(): "
4516
+ },
4517
+ {
4518
+ "kind": "Content",
4519
+ "text": "void"
4520
+ },
4521
+ {
4522
+ "kind": "Content",
4523
+ "text": ";"
4524
+ }
4525
+ ],
4526
+ "isStatic": false,
4527
+ "returnTypeTokenRange": {
4528
+ "startIndex": 1,
4529
+ "endIndex": 2
4530
+ },
4531
+ "releaseTag": "Beta",
4532
+ "isProtected": false,
4533
+ "overloadIndex": 1,
4534
+ "parameters": [],
4535
+ "isOptional": false,
4536
+ "isAbstract": false,
4537
+ "name": "showAgentSwitchIndicatorChanged"
4538
+ },
4477
4539
  {
4478
4540
  "kind": "Property",
4479
4541
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showHalo:member",
@@ -4687,6 +4749,37 @@
4687
4749
  "isProtected": false,
4688
4750
  "isAbstract": false
4689
4751
  },
4752
+ {
4753
+ "kind": "Method",
4754
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showThinkingStepsChanged:member(1)",
4755
+ "docComment": "",
4756
+ "excerptTokens": [
4757
+ {
4758
+ "kind": "Content",
4759
+ "text": "showThinkingStepsChanged(): "
4760
+ },
4761
+ {
4762
+ "kind": "Content",
4763
+ "text": "void"
4764
+ },
4765
+ {
4766
+ "kind": "Content",
4767
+ "text": ";"
4768
+ }
4769
+ ],
4770
+ "isStatic": false,
4771
+ "returnTypeTokenRange": {
4772
+ "startIndex": 1,
4773
+ "endIndex": 2
4774
+ },
4775
+ "releaseTag": "Beta",
4776
+ "isProtected": false,
4777
+ "overloadIndex": 1,
4778
+ "parameters": [],
4779
+ "isOptional": false,
4780
+ "isAbstract": false,
4781
+ "name": "showThinkingStepsChanged"
4782
+ },
4690
4783
  {
4691
4784
  "kind": "Property",
4692
4785
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showToolCalls:member",
@@ -4717,6 +4810,37 @@
4717
4810
  "isProtected": false,
4718
4811
  "isAbstract": false
4719
4812
  },
4813
+ {
4814
+ "kind": "Method",
4815
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showToolCallsChanged:member(1)",
4816
+ "docComment": "",
4817
+ "excerptTokens": [
4818
+ {
4819
+ "kind": "Content",
4820
+ "text": "showToolCallsChanged(): "
4821
+ },
4822
+ {
4823
+ "kind": "Content",
4824
+ "text": "void"
4825
+ },
4826
+ {
4827
+ "kind": "Content",
4828
+ "text": ";"
4829
+ }
4830
+ ],
4831
+ "isStatic": false,
4832
+ "returnTypeTokenRange": {
4833
+ "startIndex": 1,
4834
+ "endIndex": 2
4835
+ },
4836
+ "releaseTag": "Beta",
4837
+ "isProtected": false,
4838
+ "overloadIndex": 1,
4839
+ "parameters": [],
4840
+ "isOptional": false,
4841
+ "isAbstract": false,
4842
+ "name": "showToolCallsChanged"
4843
+ },
4720
4844
  {
4721
4845
  "kind": "Property",
4722
4846
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#state:member",
@@ -4810,6 +4934,37 @@
4810
4934
  "isProtected": false,
4811
4935
  "isAbstract": false
4812
4936
  },
4937
+ {
4938
+ "kind": "Method",
4939
+ "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#suggestionsStateChanged:member(1)",
4940
+ "docComment": "",
4941
+ "excerptTokens": [
4942
+ {
4943
+ "kind": "Content",
4944
+ "text": "suggestionsStateChanged(): "
4945
+ },
4946
+ {
4947
+ "kind": "Content",
4948
+ "text": "void"
4949
+ },
4950
+ {
4951
+ "kind": "Content",
4952
+ "text": ";"
4953
+ }
4954
+ ],
4955
+ "isStatic": false,
4956
+ "returnTypeTokenRange": {
4957
+ "startIndex": 1,
4958
+ "endIndex": 2
4959
+ },
4960
+ "releaseTag": "Beta",
4961
+ "isProtected": false,
4962
+ "overloadIndex": 1,
4963
+ "parameters": [],
4964
+ "isOptional": false,
4965
+ "isAbstract": false,
4966
+ "name": "suggestionsStateChanged"
4967
+ },
4813
4968
  {
4814
4969
  "kind": "Method",
4815
4970
  "canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#toggleSettings:member(1)",
@@ -571,6 +571,8 @@ export declare class FoundationAiAssistant extends GenesisElement {
571
571
  private loadingTimer;
572
572
  private unsubBus?;
573
573
  private haloStartPublished;
574
+ /** True during connectedCallback setup — suppresses cache writes until recovery is applied. */
575
+ private _settingUp;
574
576
  showHalo: 'no' | 'orchestrating' | 'agent';
575
577
  private syncShowHalo;
576
578
  /** True when there is a pending (unresolved) interaction — disables the popout button. */
@@ -591,6 +593,11 @@ export declare class FoundationAiAssistant extends GenesisElement {
591
593
  private syncShowingSplash;
592
594
  stateChanged(): void;
593
595
  messagesChanged(): void;
596
+ showToolCallsChanged(): void;
597
+ showThinkingStepsChanged(): void;
598
+ showAgentSwitchIndicatorChanged(): void;
599
+ enabledAnimationsChanged(): void;
600
+ suggestionsStateChanged(): void;
594
601
  showLoadingIndicatorChanged(): void;
595
602
  private scrollToBottom;
596
603
  private static readonly DEFAULT_LOADING_DELAY_S;
@@ -603,6 +610,10 @@ export declare class FoundationAiAssistant extends GenesisElement {
603
610
  handlePopout(): void;
604
611
  /** Applies a serialized state snapshot to this live instance (used on collapse path). */
605
612
  applyState(state: AiAssistantSerializedState): void;
613
+ /** Returns a cache key for this instance, or undefined if the component has no identity. */
614
+ private getStateKey;
615
+ private persistStateIfTracked;
616
+ private recoverStateIfAvailable;
606
617
  private serializeState;
607
618
  toggleSettings(): void;
608
619
  toggleShowToolCalls(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-driver.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-driver/chat-driver.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,8 @@ export declare class FoundationAiAssistant extends GenesisElement {
64
64
  private loadingTimer;
65
65
  private unsubBus?;
66
66
  private haloStartPublished;
67
+ /** True during connectedCallback setup — suppresses cache writes until recovery is applied. */
68
+ private _settingUp;
67
69
  showHalo: 'no' | 'orchestrating' | 'agent';
68
70
  private syncShowHalo;
69
71
  /** True when there is a pending (unresolved) interaction — disables the popout button. */
@@ -84,6 +86,11 @@ export declare class FoundationAiAssistant extends GenesisElement {
84
86
  private syncShowingSplash;
85
87
  stateChanged(): void;
86
88
  messagesChanged(): void;
89
+ showToolCallsChanged(): void;
90
+ showThinkingStepsChanged(): void;
91
+ showAgentSwitchIndicatorChanged(): void;
92
+ enabledAnimationsChanged(): void;
93
+ suggestionsStateChanged(): void;
87
94
  showLoadingIndicatorChanged(): void;
88
95
  private scrollToBottom;
89
96
  private static readonly DEFAULT_LOADING_DELAY_S;
@@ -96,6 +103,10 @@ export declare class FoundationAiAssistant extends GenesisElement {
96
103
  handlePopout(): void;
97
104
  /** Applies a serialized state snapshot to this live instance (used on collapse path). */
98
105
  applyState(state: AiAssistantSerializedState): void;
106
+ /** Returns a cache key for this instance, or undefined if the component has no identity. */
107
+ private getStateKey;
108
+ private persistStateIfTracked;
109
+ private recoverStateIfAvailable;
99
110
  private serializeState;
100
111
  toggleSettings(): void;
101
112
  toggleShowToolCalls(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
@@ -640,6 +640,10 @@ export class ChatDriver extends EventTarget {
640
640
  }
641
641
  if (iterations >= this.maxToolIterations) {
642
642
  logger.warn('ChatDriver: reached max tool iterations, stopping');
643
+ this.appendToHistory({
644
+ role: 'assistant',
645
+ content: "I've reached my limit for this response. You can ask me to continue and I'll pick up where I left off.",
646
+ });
643
647
  }
644
648
  return { reason: 'done' };
645
649
  });
@@ -25,6 +25,13 @@ const MODEL_CONTEXT_LIMITS = {
25
25
  'gpt-4o-mini': 128000,
26
26
  'gpt-4-turbo': 128000,
27
27
  };
28
+ /**
29
+ * Module-level cache for surviving unintentional DOM lifecycle events (e.g. layout systems
30
+ * removing and re-inserting components). Keyed by the component's identity string (see
31
+ * `getStateKey`). Intentionally never evicted — entries are small in number and each is simply
32
+ * overwritten on every state change.
33
+ */
34
+ const stateCache = new Map();
28
35
  // Register supporting components when the main component module is imported.
29
36
  avoidTreeShaking(AiChatMarkdown, AiChatInteractionWrapper, AiHaloOverlay, AiChatBubble, AiActivityHalo, ChatSuggestions);
30
37
  /**
@@ -69,6 +76,8 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
69
76
  /** Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host. */
70
77
  this.showingSplash = false;
71
78
  this.haloStartPublished = false;
79
+ /** True during connectedCallback setup — suppresses cache writes until recovery is applied. */
80
+ this._settingUp = false;
72
81
  this.showHalo = 'no';
73
82
  }
74
83
  syncShowHalo() {
@@ -148,6 +157,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
148
157
  connectedCallback() {
149
158
  var _a, _b, _c, _d, _e, _f;
150
159
  super.connectedCallback();
160
+ this._settingUp = true;
151
161
  const ui = (_a = this.chatConfig.ui) !== null && _a !== void 0 ? _a : {};
152
162
  const agent = (_b = this.chatConfig.agent) !== null && _b !== void 0 ? _b : {};
153
163
  this.showToolCalls = ui.showToolCalls === true;
@@ -191,6 +201,8 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
191
201
  this.applyState(state);
192
202
  });
193
203
  }
204
+ this.recoverStateIfAvailable();
205
+ this._settingUp = false;
194
206
  this.syncShowingSplash();
195
207
  this.fetchSuggestions();
196
208
  void this.resolveContextLimit();
@@ -201,6 +213,8 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
201
213
  super.disconnectedCallback();
202
214
  this.stopLoadingTimer();
203
215
  this.state = 'idle';
216
+ // Persist before clearing the driver so foldStack is still accessible.
217
+ this.persistStateIfTracked();
204
218
  (_a = this.unsubBus) === null || _a === void 0 ? void 0 : _a.call(this);
205
219
  this.unsubBus = undefined;
206
220
  this.driver = undefined;
@@ -242,6 +256,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
242
256
  }
243
257
  messagesChanged() {
244
258
  var _a, _b;
259
+ this.persistStateIfTracked();
245
260
  // Reset the loading timer when an assistant message arrives mid-loop so each
246
261
  // individual step gets a fresh window before the spinner appears.
247
262
  // If the last message is a blocking interaction, stop the timer — the AI is
@@ -280,6 +295,21 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
280
295
  }
281
296
  this.scrollToBottom();
282
297
  }
298
+ showToolCallsChanged() {
299
+ this.persistStateIfTracked();
300
+ }
301
+ showThinkingStepsChanged() {
302
+ this.persistStateIfTracked();
303
+ }
304
+ showAgentSwitchIndicatorChanged() {
305
+ this.persistStateIfTracked();
306
+ }
307
+ enabledAnimationsChanged() {
308
+ this.persistStateIfTracked();
309
+ }
310
+ suggestionsStateChanged() {
311
+ this.persistStateIfTracked();
312
+ }
283
313
  showLoadingIndicatorChanged() {
284
314
  if (this.showLoadingIndicator) {
285
315
  this.scrollToBottom();
@@ -347,6 +377,26 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
347
377
  this.suggestionsState = { status: 'loaded', suggestions: state.suggestions };
348
378
  }
349
379
  }
380
+ /** Returns a cache key for this instance, or undefined if the component has no identity. */
381
+ getStateKey() {
382
+ const parts = [this.id, this.headerTitle].filter(Boolean);
383
+ return parts.length ? parts.join('::') : undefined;
384
+ }
385
+ persistStateIfTracked() {
386
+ if (this._settingUp)
387
+ return;
388
+ const key = this.getStateKey();
389
+ if (key)
390
+ stateCache.set(key, this.serializeState());
391
+ }
392
+ recoverStateIfAvailable() {
393
+ const key = this.getStateKey();
394
+ if (!key)
395
+ return;
396
+ const saved = stateCache.get(key);
397
+ if (saved)
398
+ this.applyState(saved);
399
+ }
350
400
  serializeState() {
351
401
  return {
352
402
  messages: [...this.messages],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/ai-assistant",
3
3
  "description": "Genesis AI Assistant micro-frontend",
4
- "version": "14.409.0-FUI-2495.8",
4
+ "version": "14.409.0-FUI-2495.9",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/ai-assistant.d.ts",
@@ -59,23 +59,23 @@
59
59
  }
60
60
  },
61
61
  "devDependencies": {
62
- "@genesislcap/foundation-testing": "14.409.0-FUI-2495.8",
63
- "@genesislcap/genx": "14.409.0-FUI-2495.8",
64
- "@genesislcap/rollup-builder": "14.409.0-FUI-2495.8",
65
- "@genesislcap/ts-builder": "14.409.0-FUI-2495.8",
66
- "@genesislcap/uvu-playwright-builder": "14.409.0-FUI-2495.8",
67
- "@genesislcap/vite-builder": "14.409.0-FUI-2495.8",
68
- "@genesislcap/webpack-builder": "14.409.0-FUI-2495.8",
62
+ "@genesislcap/foundation-testing": "14.409.0-FUI-2495.9",
63
+ "@genesislcap/genx": "14.409.0-FUI-2495.9",
64
+ "@genesislcap/rollup-builder": "14.409.0-FUI-2495.9",
65
+ "@genesislcap/ts-builder": "14.409.0-FUI-2495.9",
66
+ "@genesislcap/uvu-playwright-builder": "14.409.0-FUI-2495.9",
67
+ "@genesislcap/vite-builder": "14.409.0-FUI-2495.9",
68
+ "@genesislcap/webpack-builder": "14.409.0-FUI-2495.9",
69
69
  "@types/dompurify": "^3.0.5",
70
70
  "@types/marked": "^5.0.2"
71
71
  },
72
72
  "dependencies": {
73
- "@genesislcap/foundation-ai": "14.409.0-FUI-2495.8",
74
- "@genesislcap/foundation-logger": "14.409.0-FUI-2495.8",
75
- "@genesislcap/foundation-ui": "14.409.0-FUI-2495.8",
76
- "@genesislcap/foundation-utils": "14.409.0-FUI-2495.8",
77
- "@genesislcap/rapid-design-system": "14.409.0-FUI-2495.8",
78
- "@genesislcap/web-core": "14.409.0-FUI-2495.8",
73
+ "@genesislcap/foundation-ai": "14.409.0-FUI-2495.9",
74
+ "@genesislcap/foundation-logger": "14.409.0-FUI-2495.9",
75
+ "@genesislcap/foundation-ui": "14.409.0-FUI-2495.9",
76
+ "@genesislcap/foundation-utils": "14.409.0-FUI-2495.9",
77
+ "@genesislcap/rapid-design-system": "14.409.0-FUI-2495.9",
78
+ "@genesislcap/web-core": "14.409.0-FUI-2495.9",
79
79
  "dompurify": "^3.3.1",
80
80
  "marked": "^17.0.3"
81
81
  },
@@ -87,5 +87,5 @@
87
87
  "publishConfig": {
88
88
  "access": "public"
89
89
  },
90
- "gitHead": "812966c213d406bf4a31c74a54287ed1f98539c8"
90
+ "gitHead": "79df39dc559df3b11085a61b02c0bb2457c98d13"
91
91
  }
@@ -773,6 +773,11 @@ export class ChatDriver extends EventTarget implements AiDriver {
773
773
 
774
774
  if (iterations >= this.maxToolIterations) {
775
775
  logger.warn('ChatDriver: reached max tool iterations, stopping');
776
+ this.appendToHistory({
777
+ role: 'assistant',
778
+ content:
779
+ "I've reached my limit for this response. You can ask me to continue and I'll pick up where I left off.",
780
+ });
776
781
  }
777
782
 
778
783
  return { reason: 'done' };
package/src/main/main.ts CHANGED
@@ -42,6 +42,14 @@ const MODEL_CONTEXT_LIMITS: Record<string, number> = {
42
42
  'gpt-4-turbo': 128_000,
43
43
  };
44
44
 
45
+ /**
46
+ * Module-level cache for surviving unintentional DOM lifecycle events (e.g. layout systems
47
+ * removing and re-inserting components). Keyed by the component's identity string (see
48
+ * `getStateKey`). Intentionally never evicted — entries are small in number and each is simply
49
+ * overwritten on every state change.
50
+ */
51
+ const stateCache = new Map<string, AiAssistantSerializedState>();
52
+
45
53
  // Register supporting components when the main component module is imported.
46
54
  avoidTreeShaking(
47
55
  AiChatMarkdown,
@@ -123,6 +131,8 @@ export class FoundationAiAssistant extends GenesisElement {
123
131
  private loadingTimer: ReturnType<typeof setTimeout> | undefined;
124
132
  private unsubBus?: () => void;
125
133
  private haloStartPublished = false;
134
+ /** True during connectedCallback setup — suppresses cache writes until recovery is applied. */
135
+ private _settingUp = false;
126
136
 
127
137
  @observable showHalo: 'no' | 'orchestrating' | 'agent' = 'no';
128
138
 
@@ -204,6 +214,7 @@ export class FoundationAiAssistant extends GenesisElement {
204
214
 
205
215
  connectedCallback() {
206
216
  super.connectedCallback();
217
+ this._settingUp = true;
207
218
  const ui = this.chatConfig.ui ?? {};
208
219
  const agent = this.chatConfig.agent ?? {};
209
220
 
@@ -259,6 +270,9 @@ export class FoundationAiAssistant extends GenesisElement {
259
270
  });
260
271
  }
261
272
 
273
+ this.recoverStateIfAvailable();
274
+ this._settingUp = false;
275
+
262
276
  this.syncShowingSplash();
263
277
  this.fetchSuggestions();
264
278
  void this.resolveContextLimit();
@@ -269,6 +283,8 @@ export class FoundationAiAssistant extends GenesisElement {
269
283
  super.disconnectedCallback();
270
284
  this.stopLoadingTimer();
271
285
  this.state = 'idle';
286
+ // Persist before clearing the driver so foldStack is still accessible.
287
+ this.persistStateIfTracked();
272
288
  this.unsubBus?.();
273
289
  this.unsubBus = undefined;
274
290
  this.driver = undefined;
@@ -309,6 +325,7 @@ export class FoundationAiAssistant extends GenesisElement {
309
325
  }
310
326
 
311
327
  messagesChanged() {
328
+ this.persistStateIfTracked();
312
329
  // Reset the loading timer when an assistant message arrives mid-loop so each
313
330
  // individual step gets a fresh window before the spinner appears.
314
331
  // If the last message is a blocking interaction, stop the timer — the AI is
@@ -347,6 +364,26 @@ export class FoundationAiAssistant extends GenesisElement {
347
364
  this.scrollToBottom();
348
365
  }
349
366
 
367
+ showToolCallsChanged() {
368
+ this.persistStateIfTracked();
369
+ }
370
+
371
+ showThinkingStepsChanged() {
372
+ this.persistStateIfTracked();
373
+ }
374
+
375
+ showAgentSwitchIndicatorChanged() {
376
+ this.persistStateIfTracked();
377
+ }
378
+
379
+ enabledAnimationsChanged() {
380
+ this.persistStateIfTracked();
381
+ }
382
+
383
+ suggestionsStateChanged() {
384
+ this.persistStateIfTracked();
385
+ }
386
+
350
387
  showLoadingIndicatorChanged() {
351
388
  if (this.showLoadingIndicator) {
352
389
  this.scrollToBottom();
@@ -419,6 +456,25 @@ export class FoundationAiAssistant extends GenesisElement {
419
456
  }
420
457
  }
421
458
 
459
+ /** Returns a cache key for this instance, or undefined if the component has no identity. */
460
+ private getStateKey(): string | undefined {
461
+ const parts = [this.id, this.headerTitle].filter(Boolean);
462
+ return parts.length ? parts.join('::') : undefined;
463
+ }
464
+
465
+ private persistStateIfTracked(): void {
466
+ if (this._settingUp) return;
467
+ const key = this.getStateKey();
468
+ if (key) stateCache.set(key, this.serializeState());
469
+ }
470
+
471
+ private recoverStateIfAvailable(): void {
472
+ const key = this.getStateKey();
473
+ if (!key) return;
474
+ const saved = stateCache.get(key);
475
+ if (saved) this.applyState(saved);
476
+ }
477
+
422
478
  private serializeState(): AiAssistantSerializedState {
423
479
  return {
424
480
  messages: [...this.messages],