@genesislcap/ai-assistant 14.409.0-FUI-2495.3 → 14.409.0-FUI-2495.4
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.
- package/dist/ai-assistant.api.json +92 -0
- package/dist/ai-assistant.d.ts +5 -0
- package/dist/dts/main/main.d.ts +5 -0
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/dts/main/main.styles.d.ts.map +1 -1
- package/dist/dts/main/main.template.d.ts.map +1 -1
- package/dist/esm/main/main.js +25 -0
- package/dist/esm/main/main.styles.js +17 -0
- package/dist/esm/main/main.template.js +4 -0
- package/docs/multi-agent-architecture.md +68 -0
- package/package.json +15 -15
- package/src/main/main.styles.ts +17 -0
- package/src/main/main.template.ts +4 -0
- package/src/main/main.ts +23 -0
|
@@ -3047,6 +3047,37 @@
|
|
|
3047
3047
|
"isProtected": false,
|
|
3048
3048
|
"isAbstract": false
|
|
3049
3049
|
},
|
|
3050
|
+
{
|
|
3051
|
+
"kind": "Method",
|
|
3052
|
+
"canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#chatConfigChanged:member(1)",
|
|
3053
|
+
"docComment": "",
|
|
3054
|
+
"excerptTokens": [
|
|
3055
|
+
{
|
|
3056
|
+
"kind": "Content",
|
|
3057
|
+
"text": "chatConfigChanged(): "
|
|
3058
|
+
},
|
|
3059
|
+
{
|
|
3060
|
+
"kind": "Content",
|
|
3061
|
+
"text": "void"
|
|
3062
|
+
},
|
|
3063
|
+
{
|
|
3064
|
+
"kind": "Content",
|
|
3065
|
+
"text": ";"
|
|
3066
|
+
}
|
|
3067
|
+
],
|
|
3068
|
+
"isStatic": false,
|
|
3069
|
+
"returnTypeTokenRange": {
|
|
3070
|
+
"startIndex": 1,
|
|
3071
|
+
"endIndex": 2
|
|
3072
|
+
},
|
|
3073
|
+
"releaseTag": "Beta",
|
|
3074
|
+
"isProtected": false,
|
|
3075
|
+
"overloadIndex": 1,
|
|
3076
|
+
"parameters": [],
|
|
3077
|
+
"isOptional": false,
|
|
3078
|
+
"isAbstract": false,
|
|
3079
|
+
"name": "chatConfigChanged"
|
|
3080
|
+
},
|
|
3050
3081
|
{
|
|
3051
3082
|
"kind": "Method",
|
|
3052
3083
|
"canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#connectedCallback:member(1)",
|
|
@@ -4068,6 +4099,67 @@
|
|
|
4068
4099
|
"isAbstract": false,
|
|
4069
4100
|
"name": "showHaloChanged"
|
|
4070
4101
|
},
|
|
4102
|
+
{
|
|
4103
|
+
"kind": "Property",
|
|
4104
|
+
"canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showingSplash:member",
|
|
4105
|
+
"docComment": "/**\n * Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host.\n */\n",
|
|
4106
|
+
"excerptTokens": [
|
|
4107
|
+
{
|
|
4108
|
+
"kind": "Content",
|
|
4109
|
+
"text": "showingSplash: "
|
|
4110
|
+
},
|
|
4111
|
+
{
|
|
4112
|
+
"kind": "Content",
|
|
4113
|
+
"text": "boolean"
|
|
4114
|
+
},
|
|
4115
|
+
{
|
|
4116
|
+
"kind": "Content",
|
|
4117
|
+
"text": ";"
|
|
4118
|
+
}
|
|
4119
|
+
],
|
|
4120
|
+
"isReadonly": false,
|
|
4121
|
+
"isOptional": false,
|
|
4122
|
+
"releaseTag": "Beta",
|
|
4123
|
+
"name": "showingSplash",
|
|
4124
|
+
"propertyTypeTokenRange": {
|
|
4125
|
+
"startIndex": 1,
|
|
4126
|
+
"endIndex": 2
|
|
4127
|
+
},
|
|
4128
|
+
"isStatic": false,
|
|
4129
|
+
"isProtected": false,
|
|
4130
|
+
"isAbstract": false
|
|
4131
|
+
},
|
|
4132
|
+
{
|
|
4133
|
+
"kind": "Method",
|
|
4134
|
+
"canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showingSplashChanged:member(1)",
|
|
4135
|
+
"docComment": "",
|
|
4136
|
+
"excerptTokens": [
|
|
4137
|
+
{
|
|
4138
|
+
"kind": "Content",
|
|
4139
|
+
"text": "showingSplashChanged(): "
|
|
4140
|
+
},
|
|
4141
|
+
{
|
|
4142
|
+
"kind": "Content",
|
|
4143
|
+
"text": "void"
|
|
4144
|
+
},
|
|
4145
|
+
{
|
|
4146
|
+
"kind": "Content",
|
|
4147
|
+
"text": ";"
|
|
4148
|
+
}
|
|
4149
|
+
],
|
|
4150
|
+
"isStatic": false,
|
|
4151
|
+
"returnTypeTokenRange": {
|
|
4152
|
+
"startIndex": 1,
|
|
4153
|
+
"endIndex": 2
|
|
4154
|
+
},
|
|
4155
|
+
"releaseTag": "Beta",
|
|
4156
|
+
"isProtected": false,
|
|
4157
|
+
"overloadIndex": 1,
|
|
4158
|
+
"parameters": [],
|
|
4159
|
+
"isOptional": false,
|
|
4160
|
+
"isAbstract": false,
|
|
4161
|
+
"name": "showingSplashChanged"
|
|
4162
|
+
},
|
|
4071
4163
|
{
|
|
4072
4164
|
"kind": "Property",
|
|
4073
4165
|
"canonicalReference": "@genesislcap/ai-assistant!FoundationAiAssistant#showLoadingIndicator:member",
|
package/dist/ai-assistant.d.ts
CHANGED
|
@@ -442,6 +442,8 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
442
442
|
showLoadingIndicator: boolean;
|
|
443
443
|
/** Whether the settings panel is open. */
|
|
444
444
|
settingsOpen: boolean;
|
|
445
|
+
/** Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host. */
|
|
446
|
+
showingSplash: boolean;
|
|
445
447
|
private driver?;
|
|
446
448
|
private loadingTimer;
|
|
447
449
|
private unsubBus?;
|
|
@@ -460,6 +462,9 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
460
462
|
get visibleMessages(): ChatMessage[];
|
|
461
463
|
connectedCallback(): void;
|
|
462
464
|
disconnectedCallback(): void;
|
|
465
|
+
chatConfigChanged(): void;
|
|
466
|
+
showingSplashChanged(): void;
|
|
467
|
+
private syncShowingSplash;
|
|
463
468
|
stateChanged(): void;
|
|
464
469
|
messagesChanged(): void;
|
|
465
470
|
showLoadingIndicatorChanged(): void;
|
package/dist/dts/main/main.d.ts
CHANGED
|
@@ -54,6 +54,8 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
54
54
|
showLoadingIndicator: boolean;
|
|
55
55
|
/** Whether the settings panel is open. */
|
|
56
56
|
settingsOpen: boolean;
|
|
57
|
+
/** Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host. */
|
|
58
|
+
showingSplash: boolean;
|
|
57
59
|
private driver?;
|
|
58
60
|
private loadingTimer;
|
|
59
61
|
private unsubBus?;
|
|
@@ -72,6 +74,9 @@ export declare class FoundationAiAssistant extends GenesisElement {
|
|
|
72
74
|
get visibleMessages(): ChatMessage[];
|
|
73
75
|
connectedCallback(): void;
|
|
74
76
|
disconnectedCallback(): void;
|
|
77
|
+
chatConfigChanged(): void;
|
|
78
|
+
showingSplashChanged(): void;
|
|
79
|
+
private syncShowingSplash;
|
|
75
80
|
stateChanged(): void;
|
|
76
81
|
messagesChanged(): void;
|
|
77
82
|
showLoadingIndicatorChanged(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAGL,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AASjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAYtB;;;;;;;;;GASG;AACH,qBAOa,qBAAsB,SAAQ,cAAc;IAC3C,UAAU,EAAG,UAAU,CAAC;IAExB,kBAAkB,EAAE,MAAM,CAAW;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5C,WAAW,EAAE,MAAM,CAA0B;IACrD;;;;;OAKG;IACiC,UAAU,CAAC,EAAE,UAAU,CAAC;IAC5D;;;OAGG;IACS,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,UAAU,CAAM;IAC5B,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAElC,QAAQ,EAAE,WAAW,EAAE,CAAM;IAC7B,KAAK,EAAE,gBAAgB,CAAU;IACjC,UAAU,SAAM;IAChB,WAAW,EAAE,cAAc,EAAE,CAAM;IACnC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAsB;IACpE,OAAO,CAAC,sBAAsB,CAAK;IAEnC,iEAAiE;IACrD,aAAa,UAAS;IAClC,qEAAqE;IACzD,iBAAiB,UAAS;IACtC,8EAA8E;IAClE,wBAAwB,UAAS;IAC7C,oCAAoC;IACxB,iBAAiB,EAAE,oBAAoB,EAAE,CAAM;IAC3D,+FAA+F;IACnF,oBAAoB,UAAS;IACzC,0CAA0C;IAC9B,YAAY,UAAS;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"main.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,MAAM,iDAqgBlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AA6DpD,gBAAgB;AAChB,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,KACzB,YAAY,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AA6DpD,gBAAgB;AAChB,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,KACzB,YAAY,CAAC,qBAAqB,CAqWpC,CAAC"}
|
package/dist/esm/main/main.js
CHANGED
|
@@ -53,6 +53,8 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
53
53
|
this.showLoadingIndicator = false;
|
|
54
54
|
/** Whether the settings panel is open. */
|
|
55
55
|
this.settingsOpen = false;
|
|
56
|
+
/** Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host. */
|
|
57
|
+
this.showingSplash = false;
|
|
56
58
|
this.haloStartPublished = false;
|
|
57
59
|
this.showHalo = 'no';
|
|
58
60
|
}
|
|
@@ -175,6 +177,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
175
177
|
this.applyState(state);
|
|
176
178
|
});
|
|
177
179
|
}
|
|
180
|
+
this.syncShowingSplash();
|
|
178
181
|
this.fetchSuggestions();
|
|
179
182
|
logger.debug('FoundationAiAssistant connected');
|
|
180
183
|
}
|
|
@@ -187,6 +190,24 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
187
190
|
this.unsubBus = undefined;
|
|
188
191
|
this.driver = undefined;
|
|
189
192
|
}
|
|
193
|
+
chatConfigChanged() {
|
|
194
|
+
this.syncShowingSplash();
|
|
195
|
+
}
|
|
196
|
+
showingSplashChanged() {
|
|
197
|
+
if (this.showingSplash) {
|
|
198
|
+
this.setAttribute('showing-splash', '');
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.removeAttribute('showing-splash');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Sets the observable which reflects as a boolean attribute on the host via showingSplashChanged.
|
|
205
|
+
// Must be an attribute on the host (not a shadow DOM class) so consumer CSS can target slotted
|
|
206
|
+
// light DOM content — shadow DOM classes are not visible to external stylesheets.
|
|
207
|
+
syncShowingSplash() {
|
|
208
|
+
var _a;
|
|
209
|
+
this.showingSplash = !!((_a = this.chatConfig.ui) === null || _a === void 0 ? void 0 : _a.showSplash) && this.messages.length === 0;
|
|
210
|
+
}
|
|
190
211
|
stateChanged() {
|
|
191
212
|
this.syncShowHalo();
|
|
192
213
|
}
|
|
@@ -206,6 +227,7 @@ let FoundationAiAssistant = FoundationAiAssistant_1 = class FoundationAiAssistan
|
|
|
206
227
|
}
|
|
207
228
|
}
|
|
208
229
|
this.syncShowHalo();
|
|
230
|
+
this.syncShowingSplash();
|
|
209
231
|
// Publish halo-start whenever a new toolCalls message arrives.
|
|
210
232
|
if (this.showHalo !== 'no' && ((_a = this.enabledAnimations) === null || _a === void 0 ? void 0 : _a.includes('halo'))) {
|
|
211
233
|
const last = this.messages[this.messages.length - 1];
|
|
@@ -594,6 +616,9 @@ __decorate([
|
|
|
594
616
|
__decorate([
|
|
595
617
|
observable
|
|
596
618
|
], FoundationAiAssistant.prototype, "settingsOpen", void 0);
|
|
619
|
+
__decorate([
|
|
620
|
+
observable
|
|
621
|
+
], FoundationAiAssistant.prototype, "showingSplash", void 0);
|
|
597
622
|
__decorate([
|
|
598
623
|
observable
|
|
599
624
|
], FoundationAiAssistant.prototype, "showHalo", void 0);
|
|
@@ -191,6 +191,23 @@ export const styles = css `
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
+
.splash-wrapper {
|
|
195
|
+
position: absolute;
|
|
196
|
+
inset: 0;
|
|
197
|
+
z-index: 10;
|
|
198
|
+
overflow: hidden;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
:host(:not([showing-splash])) .splash-wrapper {
|
|
202
|
+
pointer-events: none;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
::slotted([slot='splash']) {
|
|
206
|
+
display: block;
|
|
207
|
+
width: 100%;
|
|
208
|
+
height: 100%;
|
|
209
|
+
}
|
|
210
|
+
|
|
194
211
|
.messages {
|
|
195
212
|
flex: 1;
|
|
196
213
|
overflow-y: auto;
|
|
@@ -165,6 +165,10 @@ export const FoundationAiAssistantTemplate = (designSystemPrefix) => {
|
|
|
165
165
|
`)}
|
|
166
166
|
`)}
|
|
167
167
|
|
|
168
|
+
<div class="splash-wrapper" part="splash">
|
|
169
|
+
<slot name="splash"></slot>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
168
172
|
<div class="messages" part="messages">
|
|
169
173
|
|
|
170
174
|
${repeat((x) => x.visibleMessages, html `
|
|
@@ -196,3 +196,71 @@ Option 1 + 2 together cover most real cases without requiring suspend/resume inf
|
|
|
196
196
|
- [ ] Add `showAgentSwitchIndicator` to `ChatConfig` and implement the system-event message type + divider template
|
|
197
197
|
- [ ] Write specialist configs for each new domain (allocations, settlement, etc.)
|
|
198
198
|
- [ ] Decide on mid-flow handoff strategy (suppress re-routing vs. fallback tools vs. clarify)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Splash slot
|
|
203
|
+
|
|
204
|
+
A named slot (`slot="splash"`) lets consumers render a branded intro screen over the chat before any messages exist. It disappears once the first message is sent.
|
|
205
|
+
|
|
206
|
+
### Enabling it
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
chatConfig: {
|
|
210
|
+
ui: {
|
|
211
|
+
showSplash: true,
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
The component reflects a `showing-splash` boolean attribute on the host while the splash is active (no messages). It is absent once the conversation starts.
|
|
217
|
+
|
|
218
|
+
### Basic usage
|
|
219
|
+
|
|
220
|
+
```html
|
|
221
|
+
<foundation-ai-assistant :chatConfig="${() => chatConfig}">
|
|
222
|
+
<div slot="splash" class="my-splash">
|
|
223
|
+
<h2>Hello, how can I help?</h2>
|
|
224
|
+
</div>
|
|
225
|
+
</foundation-ai-assistant>
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Animated exit
|
|
229
|
+
|
|
230
|
+
The splash wrapper stays in the DOM when dismissed (it is never removed), so CSS transitions and keyframe animations work on exit. Use the `showing-splash` attribute as the CSS hook:
|
|
231
|
+
|
|
232
|
+
```css
|
|
233
|
+
.my-splash {
|
|
234
|
+
width: 100%;
|
|
235
|
+
height: 100%;
|
|
236
|
+
display: flex;
|
|
237
|
+
align-items: center;
|
|
238
|
+
justify-content: center;
|
|
239
|
+
transition: opacity 0.4s ease, transform 0.4s ease;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* Dismissed state — triggers the exit transition */
|
|
243
|
+
foundation-ai-assistant:not([showing-splash]) .my-splash {
|
|
244
|
+
opacity: 0;
|
|
245
|
+
transform: translateY(-8px);
|
|
246
|
+
pointer-events: none;
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Keyframe animations work the same way — add the animation class when `showing-splash` is present, remove it (or swap to an exit animation class) when it is absent. Because the element remains in the DOM, the exit animation plays in full before the element becomes visually irrelevant.
|
|
251
|
+
|
|
252
|
+
### Container queries
|
|
253
|
+
|
|
254
|
+
The component does not impose a container context on the splash wrapper. If you need the splash content to respond to the panel size, wrap your slotted element in its own container:
|
|
255
|
+
|
|
256
|
+
```html
|
|
257
|
+
<div slot="splash" style="container-type: inline-size; width: 100%; height: 100%;">
|
|
258
|
+
<div class="my-splash-content">...</div>
|
|
259
|
+
</div>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```css
|
|
263
|
+
@container (max-width: 400px) {
|
|
264
|
+
.my-splash-content { font-size: 0.9em; }
|
|
265
|
+
}
|
|
266
|
+
```
|
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.
|
|
4
|
+
"version": "14.409.0-FUI-2495.4",
|
|
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.
|
|
63
|
-
"@genesislcap/genx": "14.409.0-FUI-2495.
|
|
64
|
-
"@genesislcap/rollup-builder": "14.409.0-FUI-2495.
|
|
65
|
-
"@genesislcap/ts-builder": "14.409.0-FUI-2495.
|
|
66
|
-
"@genesislcap/uvu-playwright-builder": "14.409.0-FUI-2495.
|
|
67
|
-
"@genesislcap/vite-builder": "14.409.0-FUI-2495.
|
|
68
|
-
"@genesislcap/webpack-builder": "14.409.0-FUI-2495.
|
|
62
|
+
"@genesislcap/foundation-testing": "14.409.0-FUI-2495.4",
|
|
63
|
+
"@genesislcap/genx": "14.409.0-FUI-2495.4",
|
|
64
|
+
"@genesislcap/rollup-builder": "14.409.0-FUI-2495.4",
|
|
65
|
+
"@genesislcap/ts-builder": "14.409.0-FUI-2495.4",
|
|
66
|
+
"@genesislcap/uvu-playwright-builder": "14.409.0-FUI-2495.4",
|
|
67
|
+
"@genesislcap/vite-builder": "14.409.0-FUI-2495.4",
|
|
68
|
+
"@genesislcap/webpack-builder": "14.409.0-FUI-2495.4",
|
|
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.
|
|
74
|
-
"@genesislcap/foundation-logger": "14.409.0-FUI-2495.
|
|
75
|
-
"@genesislcap/foundation-ui": "14.409.0-FUI-2495.
|
|
76
|
-
"@genesislcap/foundation-utils": "14.409.0-FUI-2495.
|
|
77
|
-
"@genesislcap/rapid-design-system": "14.409.0-FUI-2495.
|
|
78
|
-
"@genesislcap/web-core": "14.409.0-FUI-2495.
|
|
73
|
+
"@genesislcap/foundation-ai": "14.409.0-FUI-2495.4",
|
|
74
|
+
"@genesislcap/foundation-logger": "14.409.0-FUI-2495.4",
|
|
75
|
+
"@genesislcap/foundation-ui": "14.409.0-FUI-2495.4",
|
|
76
|
+
"@genesislcap/foundation-utils": "14.409.0-FUI-2495.4",
|
|
77
|
+
"@genesislcap/rapid-design-system": "14.409.0-FUI-2495.4",
|
|
78
|
+
"@genesislcap/web-core": "14.409.0-FUI-2495.4",
|
|
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": "
|
|
90
|
+
"gitHead": "776a61e07afe56f5e9521ccee55034385cc03d44"
|
|
91
91
|
}
|
package/src/main/main.styles.ts
CHANGED
|
@@ -197,6 +197,23 @@ export const styles = css`
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
.splash-wrapper {
|
|
201
|
+
position: absolute;
|
|
202
|
+
inset: 0;
|
|
203
|
+
z-index: 10;
|
|
204
|
+
overflow: hidden;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
:host(:not([showing-splash])) .splash-wrapper {
|
|
208
|
+
pointer-events: none;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
::slotted([slot='splash']) {
|
|
212
|
+
display: block;
|
|
213
|
+
width: 100%;
|
|
214
|
+
height: 100%;
|
|
215
|
+
}
|
|
216
|
+
|
|
200
217
|
.messages {
|
|
201
218
|
flex: 1;
|
|
202
219
|
overflow-y: auto;
|
package/src/main/main.ts
CHANGED
|
@@ -102,6 +102,8 @@ export class FoundationAiAssistant extends GenesisElement {
|
|
|
102
102
|
@observable showLoadingIndicator = false;
|
|
103
103
|
/** Whether the settings panel is open. */
|
|
104
104
|
@observable settingsOpen = false;
|
|
105
|
+
/** Whether the splash overlay is currently showing (no messages and showSplash is enabled). Reflected as a boolean attribute on the host. */
|
|
106
|
+
@observable showingSplash = false;
|
|
105
107
|
|
|
106
108
|
private driver?: AiDriver;
|
|
107
109
|
private loadingTimer: ReturnType<typeof setTimeout> | undefined;
|
|
@@ -241,6 +243,7 @@ export class FoundationAiAssistant extends GenesisElement {
|
|
|
241
243
|
});
|
|
242
244
|
}
|
|
243
245
|
|
|
246
|
+
this.syncShowingSplash();
|
|
244
247
|
this.fetchSuggestions();
|
|
245
248
|
logger.debug('FoundationAiAssistant connected');
|
|
246
249
|
}
|
|
@@ -254,6 +257,25 @@ export class FoundationAiAssistant extends GenesisElement {
|
|
|
254
257
|
this.driver = undefined;
|
|
255
258
|
}
|
|
256
259
|
|
|
260
|
+
chatConfigChanged() {
|
|
261
|
+
this.syncShowingSplash();
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
showingSplashChanged() {
|
|
265
|
+
if (this.showingSplash) {
|
|
266
|
+
this.setAttribute('showing-splash', '');
|
|
267
|
+
} else {
|
|
268
|
+
this.removeAttribute('showing-splash');
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Sets the observable which reflects as a boolean attribute on the host via showingSplashChanged.
|
|
273
|
+
// Must be an attribute on the host (not a shadow DOM class) so consumer CSS can target slotted
|
|
274
|
+
// light DOM content — shadow DOM classes are not visible to external stylesheets.
|
|
275
|
+
private syncShowingSplash() {
|
|
276
|
+
this.showingSplash = !!this.chatConfig.ui?.showSplash && this.messages.length === 0;
|
|
277
|
+
}
|
|
278
|
+
|
|
257
279
|
stateChanged() {
|
|
258
280
|
this.syncShowHalo();
|
|
259
281
|
}
|
|
@@ -272,6 +294,7 @@ export class FoundationAiAssistant extends GenesisElement {
|
|
|
272
294
|
}
|
|
273
295
|
}
|
|
274
296
|
this.syncShowHalo();
|
|
297
|
+
this.syncShowingSplash();
|
|
275
298
|
// Publish halo-start whenever a new toolCalls message arrives.
|
|
276
299
|
if (this.showHalo !== 'no' && this.enabledAnimations?.includes('halo')) {
|
|
277
300
|
const last = this.messages[this.messages.length - 1];
|