@genesislcap/ai-assistant 14.420.0 → 14.421.0

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 (105) hide show
  1. package/dist/ai-assistant.api.json +4061 -1416
  2. package/dist/ai-assistant.d.ts +594 -81
  3. package/dist/dts/channel/ai-activity-channel.d.ts +4 -22
  4. package/dist/dts/channel/ai-activity-channel.d.ts.map +1 -1
  5. package/dist/dts/components/ai-driver/ai-driver.d.ts +52 -0
  6. package/dist/dts/components/ai-driver/ai-driver.d.ts.map +1 -0
  7. package/dist/dts/components/ai-driver/index.d.ts +2 -0
  8. package/dist/dts/components/ai-driver/index.d.ts.map +1 -0
  9. package/dist/dts/components/chat-driver/chat-driver.d.ts +63 -8
  10. package/dist/dts/components/chat-driver/chat-driver.d.ts.map +1 -1
  11. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.d.ts +3 -3
  12. package/dist/dts/components/chat-interaction-wrapper/chat-interaction-wrapper.d.ts.map +1 -1
  13. package/dist/dts/components/chat-markdown/chat-markdown.d.ts +1 -1
  14. package/dist/dts/components/chat-markdown/chat-markdown.d.ts.map +1 -1
  15. package/dist/dts/components/halo-overlay.d.ts +13 -1
  16. package/dist/dts/components/halo-overlay.d.ts.map +1 -1
  17. package/dist/dts/components/orchestrating-driver/index.d.ts +2 -0
  18. package/dist/dts/components/orchestrating-driver/index.d.ts.map +1 -0
  19. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts +39 -0
  20. package/dist/dts/components/orchestrating-driver/orchestrating-driver.d.ts.map +1 -0
  21. package/dist/dts/components/popout-manager/index.d.ts +2 -0
  22. package/dist/dts/components/popout-manager/index.d.ts.map +1 -0
  23. package/dist/dts/components/popout-manager/popout-manager.d.ts +72 -0
  24. package/dist/dts/components/popout-manager/popout-manager.d.ts.map +1 -0
  25. package/dist/dts/config/config.d.ts +43 -15
  26. package/dist/dts/config/config.d.ts.map +1 -1
  27. package/dist/dts/config/fallback-agents.d.ts +20 -0
  28. package/dist/dts/config/fallback-agents.d.ts.map +1 -0
  29. package/dist/dts/config/index.d.ts +1 -0
  30. package/dist/dts/config/index.d.ts.map +1 -1
  31. package/dist/dts/index.d.ts +6 -0
  32. package/dist/dts/index.d.ts.map +1 -1
  33. package/dist/dts/main/main.d.ts +122 -21
  34. package/dist/dts/main/main.d.ts.map +1 -1
  35. package/dist/dts/main/main.styles.d.ts.map +1 -1
  36. package/dist/dts/main/main.template.d.ts.map +1 -1
  37. package/dist/dts/main/main.types.d.ts +16 -0
  38. package/dist/dts/main/main.types.d.ts.map +1 -1
  39. package/dist/dts/state/ai-assistant-slice.d.ts +38 -0
  40. package/dist/dts/state/ai-assistant-slice.d.ts.map +1 -0
  41. package/dist/dts/state/driver-registry.d.ts +22 -0
  42. package/dist/dts/state/driver-registry.d.ts.map +1 -0
  43. package/dist/dts/state/session-store.d.ts +37 -0
  44. package/dist/dts/state/session-store.d.ts.map +1 -0
  45. package/dist/dts/suggestions/chat-suggestions.d.ts +7 -0
  46. package/dist/dts/suggestions/chat-suggestions.d.ts.map +1 -0
  47. package/dist/dts/types/ai-chat-widget.d.ts +3 -2
  48. package/dist/dts/types/ai-chat-widget.d.ts.map +1 -1
  49. package/dist/dts/utils/index.d.ts +1 -0
  50. package/dist/dts/utils/index.d.ts.map +1 -1
  51. package/dist/dts/utils/tool-fold.d.ts +133 -0
  52. package/dist/dts/utils/tool-fold.d.ts.map +1 -0
  53. package/dist/esm/components/ai-driver/ai-driver.js +1 -0
  54. package/dist/esm/components/ai-driver/index.js +1 -0
  55. package/dist/esm/components/chat-driver/chat-driver.js +499 -67
  56. package/dist/esm/components/chat-interaction-wrapper/chat-interaction-wrapper.js +2 -2
  57. package/dist/esm/components/chat-markdown/chat-markdown.js +1 -1
  58. package/dist/esm/components/halo-overlay.js +53 -7
  59. package/dist/esm/components/orchestrating-driver/index.js +1 -0
  60. package/dist/esm/components/orchestrating-driver/orchestrating-driver.js +247 -0
  61. package/dist/esm/components/popout-manager/index.js +1 -0
  62. package/dist/esm/components/popout-manager/popout-manager.js +126 -0
  63. package/dist/esm/config/fallback-agents.js +26 -0
  64. package/dist/esm/config/index.js +1 -0
  65. package/dist/esm/index.js +6 -0
  66. package/dist/esm/main/main.js +546 -112
  67. package/dist/esm/main/main.styles.js +200 -4
  68. package/dist/esm/main/main.template.js +163 -63
  69. package/dist/esm/state/ai-assistant-slice.js +54 -0
  70. package/dist/esm/state/driver-registry.js +46 -0
  71. package/dist/esm/state/session-store.js +39 -0
  72. package/dist/esm/suggestions/chat-suggestions.js +147 -0
  73. package/dist/esm/utils/index.js +1 -0
  74. package/dist/esm/utils/tool-fold.js +92 -0
  75. package/dist/tsconfig.tsbuildinfo +1 -1
  76. package/docs/migration-FUI-2495.md +339 -0
  77. package/docs/sub_agent.md +310 -0
  78. package/package.json +16 -15
  79. package/src/channel/ai-activity-channel.ts +4 -20
  80. package/src/components/ai-driver/ai-driver.ts +69 -0
  81. package/src/components/ai-driver/index.ts +1 -0
  82. package/src/components/chat-driver/chat-driver.ts +600 -73
  83. package/src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts +3 -3
  84. package/src/components/chat-markdown/chat-markdown.ts +1 -1
  85. package/src/components/halo-overlay.ts +45 -7
  86. package/src/components/orchestrating-driver/index.ts +1 -0
  87. package/src/components/orchestrating-driver/orchestrating-driver.ts +328 -0
  88. package/src/components/popout-manager/index.ts +1 -0
  89. package/src/components/popout-manager/popout-manager.ts +147 -0
  90. package/src/config/config.ts +45 -15
  91. package/src/config/fallback-agents.ts +29 -0
  92. package/src/config/index.ts +1 -0
  93. package/src/index.ts +6 -0
  94. package/src/main/main.styles.ts +200 -4
  95. package/src/main/main.template.ts +200 -80
  96. package/src/main/main.ts +567 -94
  97. package/src/main/main.types.ts +11 -0
  98. package/src/state/ai-assistant-slice.ts +80 -0
  99. package/src/state/driver-registry.ts +51 -0
  100. package/src/state/session-store.ts +56 -0
  101. package/src/suggestions/chat-suggestions.ts +158 -0
  102. package/src/types/ai-chat-widget.ts +4 -2
  103. package/src/utils/index.ts +1 -0
  104. package/src/utils/tool-fold.ts +181 -0
  105. package/docs/multi-agent-architecture.md +0 -198
@@ -0,0 +1,29 @@
1
+ import type { FallbackAgentConfig } from './config';
2
+
3
+ /**
4
+ * A warm, conversational fallback agent. Acknowledges it can't help directly,
5
+ * explains what the available specialists can do, and invites the user to retry.
6
+ *
7
+ * The system prompt is generated at runtime by `OrchestratingDriver` from the
8
+ * specialist list — no manual authoring required.
9
+ *
10
+ * @beta
11
+ */
12
+ export const friendlyFallbackAgent: FallbackAgentConfig = {
13
+ name: 'Assistant',
14
+ fallback: true,
15
+ systemPrompt: `You are a warm, friendly assistant. For general conversation like "Hi" or "How are you", you can have a friendly chat. For anything more complex, you cannot directly help, but you can explain what specialists are available. The available specialists are:\n\n{{agents}}\n\nPolitely let the user know what you can help with and invite them to rephrase their request if it is outside your scope.`,
16
+ };
17
+
18
+ /**
19
+ * A brief, professional fallback agent. States what is available without
20
+ * elaboration. The `{{agents}}` placeholder is replaced at runtime by
21
+ * `OrchestratingDriver` with the generated specialist list.
22
+ *
23
+ * @beta
24
+ */
25
+ export const strictFallbackAgent: FallbackAgentConfig = {
26
+ name: 'Assistant',
27
+ fallback: true,
28
+ systemPrompt: `You are a concise assistant. The user's request is outside your scope. Respond with a single short sentence stating what you can assist with. Do not elaborate. The available specialists are: {{agents}}.`,
29
+ };
@@ -1 +1,2 @@
1
1
  export * from './config';
2
+ export * from './fallback-agents';
package/src/index.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  export * from './main/main';
2
2
  export * from './main/main.types';
3
3
  export * from './main/main.template';
4
+ export * from './components/ai-driver';
4
5
  export * from './components/chat-driver';
6
+ export * from './components/orchestrating-driver';
7
+ export * from './components/popout-manager';
5
8
  export * from './channel/ai-activity-channel';
6
9
  export * from './channel/ai-activity-bus';
7
10
  export * from './config/config';
11
+ export * from './config/fallback-agents';
12
+ export * from './utils/tool-fold';
8
13
  export type { AiChatWidget } from './types/ai-chat-widget';
14
+ export { AiChatMarkdown } from './components/chat-markdown/chat-markdown';
@@ -17,6 +17,7 @@ export const styles = css`
17
17
  }
18
18
 
19
19
  .chat-wrapper {
20
+ container-type: inline-size;
20
21
  position: relative;
21
22
  display: flex;
22
23
  flex-direction: column;
@@ -62,22 +63,189 @@ export const styles = css`
62
63
  font-size: 1.2em;
63
64
  }
64
65
 
66
+ @keyframes settings-slide-in {
67
+ from {
68
+ opacity: 0%;
69
+ transform: translateY(-6px);
70
+ }
71
+
72
+ to {
73
+ opacity: 100%;
74
+ transform: translateY(0);
75
+ }
76
+ }
77
+
78
+ @keyframes settings-slide-out {
79
+ from {
80
+ opacity: 100%;
81
+ transform: translateY(0);
82
+ }
83
+
84
+ to {
85
+ opacity: 0%;
86
+ transform: translateY(-6px);
87
+ }
88
+ }
89
+
65
90
  .settings-panel {
66
- display: flex;
67
- flex-wrap: wrap;
68
- align-items: center;
69
- gap: calc(var(--design-unit) * 4px);
91
+ animation: settings-slide-in 0.2s ease-out;
92
+ display: grid;
93
+ grid-template-columns: 1fr;
94
+ gap: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 4px);
70
95
  padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 3px);
71
96
  border-bottom: 1px solid var(--neutral-stroke-rest);
72
97
  background-color: var(--neutral-layer-2);
73
98
  }
74
99
 
100
+ .settings-panel.closing {
101
+ animation: settings-slide-out 0.2s ease-in forwards;
102
+ }
103
+
104
+ rapid-multiselect::part(root) {
105
+ min-width: 80px;
106
+ width: 300%;
107
+ }
108
+
109
+ rapid-multiselect::part(control),
110
+ .settings-panel > [part='download-button'] {
111
+ width: fit-content;
112
+ }
113
+
114
+ .settings-panel > [part='toggle-tool-calls'] {
115
+ grid-column: 1;
116
+ grid-row: 1;
117
+ }
118
+
119
+ .settings-panel > [part='toggle-thinking'] {
120
+ grid-column: 2;
121
+ grid-row: 1;
122
+ }
123
+
124
+ .settings-panel > [part='toggle-agent-switch'] {
125
+ grid-column: 1;
126
+ grid-row: 2;
127
+ }
128
+
129
+ .settings-panel > [part='download-button'] {
130
+ grid-column: 2;
131
+ grid-row: 2;
132
+ }
133
+
75
134
  .settings-animations {
76
135
  display: flex;
77
136
  align-items: center;
78
137
  gap: calc(var(--design-unit) * 2px);
79
138
  }
80
139
 
140
+ .settings-panel > .settings-animations {
141
+ grid-column: 1/2;
142
+ grid-row: 3;
143
+ }
144
+
145
+ @container (min-width: 400px) {
146
+ .settings-panel {
147
+ grid-template-columns: auto 1fr;
148
+ align-items: start;
149
+ }
150
+
151
+ .settings-panel > [part='toggle-tool-calls'] {
152
+ grid-column: 1;
153
+ grid-row: 1;
154
+ }
155
+
156
+ .settings-panel > [part='toggle-thinking'] {
157
+ grid-column: 1;
158
+ grid-row: 2;
159
+ }
160
+
161
+ .settings-panel > [part='toggle-agent-switch'] {
162
+ grid-column: 1;
163
+ grid-row: 3;
164
+ }
165
+
166
+ .settings-panel > [part='download-button'],
167
+ .settings-panel > .settings-animations {
168
+ grid-column: 2;
169
+ justify-self: end;
170
+ }
171
+
172
+ .settings-panel > [part='download-button'] {
173
+ grid-row: 1;
174
+ }
175
+
176
+ .settings-panel > .settings-animations {
177
+ grid-row: 2;
178
+ }
179
+ }
180
+
181
+ @container (min-width: 750px) {
182
+ .settings-panel {
183
+ display: flex;
184
+ flex-wrap: nowrap;
185
+ align-items: center;
186
+ gap: calc(var(--design-unit) * 4px);
187
+ }
188
+
189
+ .settings-panel > [part='download-button'],
190
+ .settings-panel > .settings-animations {
191
+ justify-self: unset;
192
+ margin-left: auto;
193
+ }
194
+
195
+ .settings-panel > [part='download-button'] ~ .settings-animations {
196
+ margin-left: 0;
197
+ }
198
+ }
199
+
200
+ .context-usage {
201
+ animation: settings-slide-in 0.2s ease-out;
202
+ padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 3px);
203
+ border-bottom: 1px solid var(--neutral-stroke-rest);
204
+ background-color: var(--neutral-layer-2);
205
+ display: flex;
206
+ flex-direction: column;
207
+ gap: calc(var(--design-unit) * 1px);
208
+ }
209
+
210
+ .context-usage-header {
211
+ display: flex;
212
+ justify-content: space-between;
213
+ align-items: baseline;
214
+ gap: calc(var(--design-unit) * 2px);
215
+ }
216
+
217
+ .context-usage-label {
218
+ font-size: 0.85em;
219
+ font-weight: 600;
220
+ color: var(--neutral-foreground-rest);
221
+ white-space: nowrap;
222
+ }
223
+
224
+ .context-usage-tokens {
225
+ font-size: 0.8em;
226
+ color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));
227
+ opacity: 80%;
228
+ }
229
+
230
+ .context-usage rapid-progress,
231
+ .context-usage [part='context-progress'] {
232
+ width: 100%;
233
+ }
234
+
235
+ .splash-wrapper {
236
+ position: absolute;
237
+ inset: 0;
238
+ z-index: 10;
239
+ overflow: hidden;
240
+ pointer-events: none;
241
+ }
242
+
243
+ ::slotted([slot='splash']) {
244
+ display: block;
245
+ width: 100%;
246
+ height: 100%;
247
+ }
248
+
81
249
  .messages {
82
250
  flex: 1;
83
251
  overflow-y: auto;
@@ -123,6 +291,28 @@ export const styles = css`
123
291
  }
124
292
  }
125
293
 
294
+ .agent-switch-indicator {
295
+ display: flex;
296
+ align-items: center;
297
+ gap: 8px;
298
+ margin: 8px 0;
299
+ color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));
300
+ opacity: 60%;
301
+ font-size: 0.75em;
302
+ }
303
+
304
+ .agent-switch-indicator::before,
305
+ .agent-switch-indicator::after {
306
+ content: '';
307
+ flex: 1;
308
+ height: 1px;
309
+ background: currentColor;
310
+ }
311
+
312
+ .agent-switch-label {
313
+ white-space: nowrap;
314
+ }
315
+
126
316
  .message-row {
127
317
  display: flex;
128
318
  align-items: flex-start;
@@ -255,6 +445,12 @@ export const styles = css`
255
445
  font-size: 0.95em;
256
446
  }
257
447
 
448
+ .payload.unknown-tool {
449
+ color: var(--error-color, #f87171);
450
+ border-left: 2px solid color-mix(in srgb, var(--error-color, #f87171) 40%, transparent);
451
+ padding-left: 8px;
452
+ }
453
+
258
454
  .input-row {
259
455
  display: flex;
260
456
  gap: calc(var(--design-unit) * 2px);