@tylertech/forge-ai 0.13.3 → 0.13.5

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 (49) hide show
  1. package/custom-elements.json +3987 -3760
  2. package/dist/ai-artifact/ai-artifact.scss.mjs +1 -1
  3. package/dist/ai-assistant-response/ai-assistant-response.d.ts +0 -2
  4. package/dist/ai-assistant-response/ai-assistant-response.mjs +24 -106
  5. package/dist/ai-assistant-response/ai-assistant-response.scss.mjs +1 -1
  6. package/dist/ai-chat-header/ai-chat-header.scss.mjs +1 -1
  7. package/dist/ai-chatbot/ai-chatbot-base.d.ts +4 -2
  8. package/dist/ai-chatbot/ai-chatbot-base.mjs +16 -24
  9. package/dist/ai-chatbot/ai-chatbot-tool-call.d.ts +0 -5
  10. package/dist/ai-chatbot/ai-chatbot-tool-call.mjs +5 -175
  11. package/dist/ai-chatbot/ai-chatbot-tool-call.scss.mjs +1 -1
  12. package/dist/ai-chatbot/ai-chatbot.mjs +5 -258
  13. package/dist/ai-chatbot/ai-chatbot.scss.mjs +1 -1
  14. package/dist/ai-chatbot/index.d.ts +1 -1
  15. package/dist/ai-chatbot/markdown-stream-controller.d.ts +2 -1
  16. package/dist/ai-chatbot/markdown-stream-controller.mjs +5 -5
  17. package/dist/ai-chatbot/utils.d.ts +31 -2
  18. package/dist/ai-chatbot/utils.mjs +47 -2
  19. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.mjs +20 -9
  20. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.scss.mjs +1 -1
  21. package/dist/ai-error-message/ai-error-message.scss.mjs +1 -1
  22. package/dist/ai-floating-chat/ai-floating-chat.d.ts +8 -0
  23. package/dist/ai-floating-chat/ai-floating-chat.mjs +8 -0
  24. package/dist/ai-message-thread/ai-message-thread.d.ts +1 -1
  25. package/dist/ai-message-thread/ai-message-thread.mjs +14 -21
  26. package/dist/ai-message-thread/ai-message-thread.scss.mjs +1 -1
  27. package/dist/ai-prompt/ai-prompt.mjs +4 -4
  28. package/dist/ai-reasoning-header/ai-reasoning-header.mjs +4 -4
  29. package/dist/ai-response-message/ai-response-message.scss.mjs +1 -1
  30. package/dist/ai-response-message-toolbar/ai-response-message-toolbar.mjs +12 -12
  31. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.mjs +3 -2
  32. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.scss.mjs +1 -1
  33. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.d.ts +12 -8
  34. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.mjs +244 -32
  35. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.scss.mjs +1 -1
  36. package/dist/ai-user-message/ai-user-message.scss.mjs +1 -1
  37. package/dist/core/tooltip/tooltip.scss.mjs +1 -1
  38. package/dist/tools/ai-data-table/ai-data-table.mjs +60 -25
  39. package/dist/tools/ai-data-table/ai-data-table.scss.mjs +1 -1
  40. package/dist/utils/csv-utils.d.ts +4 -0
  41. package/dist/utils/csv-utils.mjs +65 -0
  42. package/dist/utils/index.d.ts +1 -0
  43. package/dist/utils/index.mjs +6 -1
  44. package/package.json +5 -5
  45. package/dist/ai-event-stream-viewer/ai-event-stream-viewer.d.ts +0 -19
  46. package/dist/ai-event-stream-viewer/ai-event-stream-viewer.mjs +0 -164
  47. package/dist/ai-event-stream-viewer/ai-event-stream-viewer.scss.mjs +0 -4
  48. package/dist/ai-event-stream-viewer/index.d.ts +0 -1
  49. package/dist/ai-event-stream-viewer/index.mjs +0 -5
@@ -32,7 +32,7 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
32
32
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
33
33
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
34
34
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
35
- var _chatInterfaceRef, _headerRef, _conversationsPanelRef, _conversationsDialogRef, _boundEscapeHandler, _AiChatbotComponent_instances, handleHeaderExpand_fn, handleHeaderMinimize_fn, handleHeaderClear_fn, handleHeaderInfo_fn, handleConversationsDialogClose_fn, handleEscapeKey_fn, handleBackdropClick_fn, handleConversationsToggle_fn, handleThreadSelect_fn, handleNewChat_fn, handlePanelClose_fn, _handleConversationSearch, _handleConversationLoadMore, _handleConversationRename, _handleConversationDelete, promptSlot_get, messageThread_get, _defaultEmptyStateIcon;
35
+ var _chatInterfaceRef, _headerRef, _conversationsPanelRef, _conversationsDialogRef, _boundEscapeHandler, _AiChatbotComponent_instances, handleHeaderExpand_fn, handleHeaderMinimize_fn, handleHeaderClear_fn, handleHeaderInfo_fn, handleConversationsDialogClose_fn, handleEscapeKey_fn, handleBackdropClick_fn, handleConversationsToggle_fn, handleThreadSelect_fn, handleNewChat_fn, handlePanelClose_fn, _handleConversationSearch, _handleConversationLoadMore, _handleConversationRename, _handleConversationDelete, promptSlot_get, messageThread_get;
36
36
  const AiChatbotComponentTagName = "forge-ai-chatbot";
37
37
  let AiChatbotComponent = class extends AiChatbotBase {
38
38
  constructor() {
@@ -101,260 +101,6 @@ let AiChatbotComponent = class extends AiChatbotBase {
101
101
  e.preventDefault();
102
102
  }
103
103
  });
104
- __privateAdd(this, _defaultEmptyStateIcon, html`
105
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" class="empty-state-icon">
106
- <defs>
107
- <style>
108
- .cls-1 {
109
- isolation: isolate;
110
- }
111
- .cls-2 {
112
- fill: #d0dbf4;
113
- }
114
- .cls-11,
115
- .cls-2 {
116
- fill-rule: evenodd;
117
- }
118
- .cls-15,
119
- .cls-3 {
120
- fill: #fcbf12;
121
- }
122
- .cls-13,
123
- .cls-4,
124
- .cls-5 {
125
- fill: none;
126
- }
127
- .cls-14,
128
- .cls-15,
129
- .cls-16,
130
- .cls-17,
131
- .cls-4,
132
- .cls-5 {
133
- stroke: #586ab1;
134
- stroke-linecap: round;
135
- stroke-linejoin: round;
136
- }
137
- .cls-5 {
138
- stroke-width: 0.75px;
139
- }
140
- .cls-6 {
141
- fill: #99a2bc;
142
- }
143
- .cls-10,
144
- .cls-12,
145
- .cls-17,
146
- .cls-19,
147
- .cls-7 {
148
- fill: #d1d1d1;
149
- }
150
- .cls-7 {
151
- opacity: 0.6;
152
- }
153
- .cls-10,
154
- .cls-12,
155
- .cls-19,
156
- .cls-7 {
157
- mix-blend-mode: multiply;
158
- }
159
- .cls-8 {
160
- fill: #e5e5e5;
161
- }
162
- .cls-11,
163
- .cls-14,
164
- .cls-9 {
165
- fill: #fff;
166
- }
167
- .cls-10 {
168
- opacity: 0.44;
169
- }
170
- .cls-12 {
171
- opacity: 0.62;
172
- }
173
- .cls-16 {
174
- fill: #5cc5cd;
175
- }
176
- .cls-18 {
177
- fill: #586ab1;
178
- }
179
- .cls-19 {
180
- opacity: 0.07;
181
- }
182
- </style>
183
- </defs>
184
- <title>chickadee-guide-spot-hero</title>
185
- <g class="cls-1">
186
- <g id="Layer_1" data-name="Layer 1">
187
- <path class="cls-2" d="M98.17,120.45A43.77,43.77,0,1,0,54.4,76.68,43.77,43.77,0,0,0,98.17,120.45Z" />
188
- <path
189
- class="cls-3"
190
- d="M157.52,156.26s1.48-.55,2.14,2c2,7.77-1.77,16.33-3.63,15.77,0,0-1.44,1.58-2.93-.84,0,0-1.16-3.07-12.51-3.25l-58-.28-10.6-.37s-2,1.3-5.21-.56-16.84-8.93-16.84-8.93-4.46-.75-6.6-.37L28,154.12s-1.12-1.3.65-1.3,14.08,3.25,14.08,3.25l8.15-.27-3.67-6.89s-.05-2.14,1.81-.74L54.63,156l16.84,7.54,36.28-1.12,31.63-.18s9.86,0,13.39-2.05A14.54,14.54,0,0,0,157.52,156.26Z" />
191
- <path
192
- class="cls-4"
193
- d="M51.61,156l-8.85.11s-10.24-2.58-13.17-3.17-1.86,1-1.86,1L43,159.31s4.93-.27,7.37.74,15.39,8.15,17.2,9a5.89,5.89,0,0,0,3.59.33l24.32.58s43.72-.15,45.77-.06,8.93.82,12.56,3.61c0,0,2.09,2.23,3.9-.7" />
194
- <path
195
- class="cls-4"
196
- d="M50.77,155.34l-3.53-6.43a1.17,1.17,0,0,1,1.16-1.47L55,156.18,70,162.78l70.41-.47c2,.09,13.59-.64,16-4.56,0,0,1.86-2.28,2.84-.19" />
197
- <path
198
- class="cls-5"
199
- d="M96.45,167.25a61.73,61.73,0,0,0,16.31,0c12.94-1.71,14.89-1.47,21-.74a54.38,54.38,0,0,0,14.32,0" />
200
- <path class="cls-5" d="M90.59,166.08s.9.28,2.53.61" />
201
- <path class="cls-5" d="M150.61,166a10.32,10.32,0,0,1,5.13-.49" />
202
- <path class="cls-5" d="M87.52,165.24s-4.75-.84-7-.42" />
203
- <path class="cls-5" d="M55.56,159.8s9.49,4.88,14.8,4.74" />
204
- <path
205
- class="cls-6"
206
- d="M101.4,143.68,89.26,159.31a2.44,2.44,0,0,1-1.39.7c-.7,0-9.7-.56-11.24-.28s-1.74.83-1.39,1,6.77.91,6.77.91l-7,1.61s-1.26,1.11-1,1.74,2-.07,2-.07L84,163.36s-4.81,2-5.3,2.86-1.51,1.95-.86,2S89.12,163,90,162.87a45,45,0,0,1,5,.21s1.13-.79-.13-1.41a12.23,12.23,0,0,0-3.63-.76s-.49-.55.48-1.67,13.82-13.19,13.82-13.19l-4.4-2.44" />
207
- <polygon class="cls-7" points="97.52 148.73 100.96 150.03 103.38 147.8 99.1 146.77 97.52 148.73" />
208
- <path
209
- class="cls-6"
210
- d="M117.1,146.26a142.71,142.71,0,0,1,8.84,11.44c3.16,4.84,6,7,8,6s1.86-5.12,1.86-5.12,6.91.65,8.1-2-1.22-3.81-4.38-5.11S127.24,141,127.24,141Z" />
211
- <path class="cls-7" d="M120,150.4c.65-.18,9.12-2.79,11.44-4.65l-2.1-1.53-2.92-.05-8.65,3.63Z" />
212
- <path
213
- class="cls-6"
214
- d="M113.24,146.4,110.45,161a1.75,1.75,0,0,1-1.54.83,12.83,12.83,0,0,0-4,0c-.51.28-.79.79-.14.88a19.22,19.22,0,0,1,4.38,1.21c.65.47,6.6,5.3,7.21,6.05s3,3.49,3.53,3,.23-2.33-.6-3.12-2.66-2.75-2.66-2.75l7.17,4.28s1.52-.89.43-1.79-7-4.11-7-4.11,8,1.95,7.72,1.2-12.33-4.88-12.33-4.88l5.12-14.65Z" />
215
- <polygon class="cls-7" points="112.68 150.68 116.5 150.4 117.69 147.5 113.89 148.36 112.68 150.68" />
216
- <path
217
- class="cls-8"
218
- d="M41.68,90.4s-5,19.93-1.36,26c0,0,1.88,2.28,2.3-1.17S45.88,105,47.85,104c0,0-2.65,12.43.34,18.13,0,0,1.42,4.08,2.61,3.6s.91-3.6.78-6,2.24-11.78,5.52-12.87c0,0-4.71,15.92,3.36,22.66,0,0,2,.89,2-2s-.95-9.57,2.14-12.47c0,0,.25,12.82,9.07,12.82,0,0,4.61-28.74,3.66-29s-32.68-14.1-32.68-14.1Z" />
219
- <path
220
- class="cls-4"
221
- d="M124.32,137.45s8.39,11.4,17.51,14.8c0,0,4.29,1.58,2.07,4.24s-7.69,2-7.69,2,.54,4.68-2.81,5.17-6.37-3.79-7.16-5.57-5.72-9-9.37-11.64" />
222
- <path
223
- class="cls-9"
224
- d="M75.38,91.57s-9.07,14.09-7.95,26.37,10.18,20.51,18.27,24,18,6.83,24.56,6.42,14.65-3.07,17.72-4.89a36.75,36.75,0,0,0,6.7-5.86L112.08,92Z" />
225
- <path
226
- class="cls-10"
227
- d="M97.8,105.56s-1.58,2.7-.19,4.66L103.1,117s-5.86,9.76-1.77,17.67c0,0,1.58,2.7,7,1.68,0,0,6.88,8.65,15.63,9l2.88-1.21Z" />
228
- <path
229
- class="cls-6"
230
- d="M83,85.61s-5.26,2.19-6.84,4.56c0,0,1.44,8,4.84,10.19,0,0-.47-1.82.46-2.1s1.86,2.19,1.86,2.19,1.54-4.75,3.3-4.37-.18,4.46-.18,4.46,2.72-1.74,2.91-.66-1.28,2.89-1.28,2.89,10.51-2.32,15.16-5,4-2.79,4-2.79l-1.07-3.67s-5-4.28-6.56-5.82a10.69,10.69,0,0,0-2.93-2.14S93.75,89,92.5,89.24s-7.07-3.77-7.07-3.77Z" />
231
- <path
232
- class="cls-11"
233
- d="M79,75s-5.49,8.47-4,17c0,0,1.39-4,7.53-6.32,0,0-4.09.84-3.25-.75s5.76-5.76,5.76-5.76S79.94,77.38,79,75Z" />
234
- <path
235
- class="cls-12"
236
- d="M79.26,75.43a8.75,8.75,0,0,0-2.88,4s3.07,1.86,4.65,2l3-2.23S79.54,77.29,79.26,75.43Z" />
237
- <path
238
- class="cls-11"
239
- d="M91.84,76.36a20.73,20.73,0,0,1,8,2.09c4.46,2.09,15.76,3.63,21.07-8.23,0,0,4.88,9.07,5.58,15.76,0,0-9.07,10.47-11,11.31s-19-14.24-19.54-15.77S92.54,76.5,91.84,76.36Z" />
240
- <polyline class="cls-13" points="-0.12 199.83 -0.12 -0.17 199.88 -0.17" />
241
- <path
242
- class="cls-6"
243
- d="M84.12,79a11.71,11.71,0,0,1,8.56-2.46,19.88,19.88,0,0,1,5,1c3.38,1.43,6.82,3.56,12.32,2,8.1-2.24,10.33-8.52,10.33-8.52l.42-1.81a19.11,19.11,0,0,0-6-9.77s-.14-1,.28-.84,7.8-1.54,7-2.23-9.07,1.26-8.37.84,2.93-3.91,2.79-4.33-2.09-.69-3.35,1a9.83,9.83,0,0,1-3.49,2.65s-16.32-8.23-28.46,5c0,0-4.19,9.16-2.79,10.27L78,73.43S80.54,78,82.36,78.5" />
244
- <path
245
- class="cls-12"
246
- d="M107.94,72.17s-1,7.42-6.28,8.23c-5.75.89-7.82-2.09-7.82-2.09S103.66,82.5,107.94,72.17Z" />
247
- <path
248
- class="cls-6"
249
- d="M69.83,101.93c1.45-4,3.3-6.79,5.07-12.21l-2.78.51a12.72,12.72,0,0,1-2,.31c-.67,0-3.08-.13-3.08-.13s-8.84.41-18.5-7.89c0,0-6.18-6.33-10-1.86-2.43,2.83-.44,11.13-9.16,12.61,0,0-2.55,1.34,1.21,2.41s8.58,2.69,15-8.58l1.21-1.74s8.53,14.48,21.68,14.88" />
250
- <path class="cls-4" d="M48.53,82.52c2.26,2.06,13.66,10.59,26.37,7" />
251
- <path
252
- class="cls-4"
253
- d="M42.22,92.87s-6.58,17.83-1.35,24.27c0,0,1.35,1.08,1.75-1.88s3-9.79,5.23-11.26c0,0-2,9.12-.81,15.83,0,0,1.61,6.16,3.76,5.9S52,120,52,120s-.41-9,5.09-13.14c0,0-4.83,13.54,3.36,22.66,0,0,1.74,1.07,2-2,0,0-1.34-7.64,2.14-12.47,0,0-.13,6.21,3.09,10.32a7.76,7.76,0,0,0,2.55,2.18" />
254
- <path class="cls-4" d="M46.78,85.36S55.63,99.17,68,100.24A5.52,5.52,0,0,1,69.7,102" />
255
- <polygon class="cls-14" points="32.83 107.73 37.77 104.93 32.88 102.06 32.83 107.73" />
256
- <rect
257
- class="cls-15"
258
- x="40.84"
259
- y="72.64"
260
- width="5.72"
261
- height="33.14"
262
- transform="translate(51.23 -9.84) rotate(30.45)" />
263
- <line class="cls-5" x1="35.29" y1="103.42" x2="51.82" y2="75.44" />
264
- <path
265
- class="cls-16"
266
- d="M56.14,71.65,52.83,69.8a.91.91,0,0,0-.58-.11.81.81,0,0,0-.36.12,1,1,0,0,0-.34.35l-.83,1.48a1,1,0,0,0,0,.82.89.89,0,0,0,.4.46l3.32,1.85a1,1,0,0,0,.76.07,1,1,0,0,0,.52-.43l.82-1.49a.89.89,0,0,0,.11-.63A1,1,0,0,0,56.5,72,.89.89,0,0,0,56.14,71.65Z" />
267
- <path
268
- class="cls-17"
269
- d="M50.58,72.13c-.12,0-.29.11-.4.31l-.57,1c-.13.24-.14.48,0,.55h0l1.08.6L53,75.91h0l1.13.64h0c.12.07.32-.07.45-.3l.57-1c.13-.23.14-.48,0-.54l-.07,0-4.51-2.53Z" />
270
- <circle class="cls-18" cx="33.52" cy="106.5" r="0.75" />
271
- <path class="cls-6" d="M42.84,81.91s.87,9.72-3.51,12.75S32,95.85,32,95.85l.56-2Z" />
272
- <path
273
- class="cls-4"
274
- d="M43,84.69s-.4,8.18-4.56,10.73-9.25,0-9.25,0-1.75-2.15.93-2.28,6-2.69,7.52-9.8S45.43,80,45.43,80" />
275
- <path
276
- class="cls-10"
277
- d="M72.12,90.23s-8.25,12.24-7.17,26.7c0,0,2,10.3,6,10.85a28.14,28.14,0,0,1-2-22.78,109.62,109.62,0,0,1,5-11.93l1-2.35-.73-1.18Z" />
278
- <line class="cls-4" x1="117.68" y1="147.5" x2="112.17" y2="162.5" />
279
- <path
280
- class="cls-4"
281
- d="M78.45,75.59S74,81.08,75,91.15c0,0-9,16.91-7.85,25.68S72.49,140,99.38,147,139,132.63,139,132.63s-14-60.81-20.46-69a24.7,24.7,0,0,0-22.89-9.52C80.22,55.8,78.73,67.84,78.73,67.84s-.68,3-.91,4.75" />
282
- <path class="cls-4" d="M98.72,144.64c.44.23.88.46,1.34.68" />
283
- <path class="cls-4" d="M83.29,103.19S78,130.34,95.77,142.82" />
284
- <path
285
- class="cls-4"
286
- d="M96.92,82.64S94,77.08,90.79,76.5c0,0-5.26-.29-11.69,7.89,0,0-1.76.88,2.63,1.17S93.12,84.68,96.92,82.64Z" />
287
- <path class="cls-4" d="M86.11,86.14s4.68,3.51,6.43,2.93,4.38-6.43,4.38-6.43" />
288
- <line class="cls-4" x1="98.39" y1="147.25" x2="88.77" y2="159.88" />
289
- <path class="cls-4" d="M125,98.71s-5.26,9.06-4.38,16.07" />
290
- <path class="cls-4" d="M121.47,69.05c-7.74,15-19.14,11.25-22.5,9.06s-8.18-1.61-8.18-1.61" />
291
- <path class="cls-4" d="M112,89.8c10.09.58,14-5.7,14-5.7" />
292
- <path class="cls-4" d="M110.58,57s2.54-4.77,5.26-4.38-3.5,4.77-3.5,4.77,8.47-2,9.64-1-8.09,2.37-8.09,2.37" />
293
- <path
294
- class="cls-19"
295
- d="M97.8,105.56s-1.58,2.7-.19,4.66L103.1,117s-5.86,9.76-1.77,17.67c0,0,1.58,2.7,7,1.68,0,0,6.88,8.65,15.63,9l2.88-1.21Z" />
296
- <line class="cls-4" x1="103.06" y1="148.12" x2="90.82" y2="160.17" />
297
- <path
298
- class="cls-4"
299
- d="M121.05,88.45s2,1.21,1,2.14-4.93-.93-4.93-.93.37,2.23-1.49,2.6S108,89.57,108,89.57s0,1.58-1.3,1.86c-1,.21-4.68-3.41-6.34-5.1l-.83-.86a17,17,0,0,0-2.88-2.74" />
300
- <path class="cls-4" d="M83.19,85.75s-6,1.58-8.56,6.33" />
301
- <path class="cls-4" d="M87.74,102.9c5.61-.26,13.42-3,20.94-8.78" />
302
- <path class="cls-4" d="M76.12,90.59s1.53,7,5,10.37" />
303
- <path class="cls-18" d="M108.51,55.37s-3.25-2.78-4.68-2.89.61,2.08.61,2.08l4.54,1" />
304
- <path class="cls-18" d="M110.76,57c-.2-.79-.88-5.32-2.52-5.77s-.52,4.85-.52,4.85Z" />
305
- <path
306
- class="cls-4"
307
- d="M81.3,101.41s-1.18-2.8,0-3.22,2.3,2.88,2.3,2.88.5-4.84,2.88-4.92-.17,5.09-.17,5.09,2.11-2.11,3-1.36c1.18.94-1.7,3.08-1.7,3.08" />
308
- <ellipse class="cls-4" cx="99.14" cy="70.08" rx="8.69" ry="9.07" />
309
- <ellipse class="cls-4" cx="81.62" cy="70.98" rx="6.98" ry="8.85" />
310
- <path class="cls-4" d="M107.89,70.08c.42-.14,13.26-6.7,13.26-6.7s2.37-1,3.07,1.25" />
311
- <line class="cls-4" x1="90.45" y1="69.24" x2="88.36" y2="69.24" />
312
- <path class="cls-4" d="M102.47,68.3a3.51,3.51,0,0,0-4.54-1.6" />
313
- <circle class="cls-18" cx="98.98" cy="73.02" r="2.08" />
314
- <circle class="cls-9" cx="98.29" cy="72.57" r="0.5" />
315
- <path class="cls-18" d="M107.68,68.75l1-.28A8.61,8.61,0,0,1,108.9,71l-.94.21Z" />
316
- <path class="cls-4" d="M81.14,68.3a3.5,3.5,0,0,1,4.53-1.6" />
317
- <circle class="cls-18" cx="84.63" cy="73.02" r="2.08" />
318
- <circle class="cls-9" cx="85.32" cy="72.57" r="0.5" />
319
- <path class="cls-4" d="M84.45,79s-4.19.69-6.56-6.14" />
320
- <path
321
- class="cls-4"
322
- d="M86.25,162.69c-.26.19-6.38,2.33-7.27,3.16s-1.46,2.06-1.18,2.36,1.94-.53,1.94-.53,9.15-5.06,12.17-4.89,3.57.28,3.57.28.61-.83-.63-1.4a7.84,7.84,0,0,0-2.79-.56,1.37,1.37,0,0,1-1.33-.89" />
323
- <path class="cls-4" d="M85.15,163c-3,.65-10.44,2.53-11,2.42s-.36-1.1.5-1.84,9.13-1.84,9.13-1.84" />
324
- <path class="cls-4" d="M88.54,160S77,159.1,75.36,160s1.13,1.1,2.36,1.18l6.54.46" />
325
- <path
326
- class="cls-4"
327
- d="M113.84,165.29c.2.26,5,4,5.62,5s.78,2.39.43,2.6-1.69-1.08-1.69-1.08-7.26-7.53-10.2-8.26-3.49-.78-3.49-.78-.33-1,1-1.15a7.83,7.83,0,0,1,2.82.28,7.83,7.83,0,0,0,1.73-.13" />
328
- <path class="cls-4" d="M114.4,165.76c2.67,1.54,9.2,5.62,9.74,5.68s.68-.94.09-1.9-8.12-4.7-8.12-4.7" />
329
- <path class="cls-4" d="M112.46,162.2s10.94,2.41,12.19,3.8-1.42.7-2.61.39-6.15-1.62-6.15-1.62" />
330
- <line class="cls-4" x1="113.22" y1="148.24" x2="110.08" y2="162.31" />
331
- <path class="cls-5" d="M127.94,145.52a22.35,22.35,0,0,0,9.9,7.44" />
332
- <path class="cls-5" d="M139.56,153.84s1,.47.84.93" />
333
- <path class="cls-5" d="M122.31,148.12s5.21,6.14,6.51,8.28,2.05,3.54,2.61,3.72" />
334
- <path
335
- class="cls-6"
336
- d="M108.13,115.5s-6.13,10.81-5.65,15,6.67,3.39,6.67,3.39,12.33,12.59,21.68,9.72c0,0,1-.52-2.05-5.85,0,0,10.48,4.09,14.35,1.73,0,0,2.59-1.73.33-2.85l-4.84-2.42L146,132a124.87,124.87,0,0,0,1.61-25.33S142,93.88,128.13,93.56Z" />
337
- <path
338
- class="cls-17"
339
- d="M113.83,89.32a4.47,4.47,0,0,0-7.15,5.36l-5.37,4,4.48,6,17.85-13.38-4.49-6Zm-5.28,3.92a2.08,2.08,0,1,1,3.32-2.5Z" />
340
- <path
341
- class="cls-3"
342
- d="M111.84,124.7c-.43.75-13.45-18.29-13.45-18.29a1.79,1.79,0,0,1,.86-2c1.29-1,24.52-17.75,24.52-17.75s1.3-3.38,3.23-1,11,20.65,11,20.65,1.29,1.45-.48,1.93S116,117.28,111.84,124.7Z" />
343
- <path
344
- class="cls-4"
345
- d="M111.84,124.54,98.39,106.41a1.16,1.16,0,0,1,.25-1.62l26.75-19.38a1.14,1.14,0,0,1,1.61.25l12.1,21.94" />
346
- <path class="cls-4" d="M107.8,126.79s.81,1.94,4.52-2.58,15-12.9,26.78-16.45c0,0,1.94,0,1.94-2.75" />
347
- <path
348
- class="cls-4"
349
- d="M109.15,133.89c.43.22,10.43,11.51,20.22,10.33,0,0,2.9-.33,1.61-2.69s-2.69-4.41-2.69-4.41,7,5.48,14.84,2.37a2,2,0,0,0,1.08-1.94c-.22-1.29-7.42-4.41-7.42-4.41" />
350
- <path class="cls-4" d="M138.4,133.68A18.6,18.6,0,0,0,146,132s2.47-6.24,1.5-24.42c0,0,.41-8.73-16-13.75" />
351
- <path class="cls-4" d="M106.57,117.54s-5.81,10.54-3.45,15.28c0,0,1.51,2.15,8.82.64" />
352
- <path class="cls-5" d="M114.47,127.49a5.72,5.72,0,0,0,1.21-.8" />
353
- <path class="cls-5" d="M117.83,124.94s7.75-6.78,14.44-9.44" />
354
- </g>
355
- </g>
356
- </svg>
357
- `);
358
104
  }
359
105
  _handleInfo() {
360
106
  const header = __privateGet(this, _headerRef).value;
@@ -427,7 +173,7 @@ let AiChatbotComponent = class extends AiChatbotBase {
427
173
  ?show-conversations-button=${this.showConversationsButton}
428
174
  ?expanded=${this.expanded}
429
175
  ?disable-agent-selector=${this._isStreaming}
430
- export-option=${this._hasMessages ? "enabled" : "off"}
176
+ export-option=${this.exportOption === "off" ? "off" : this._hasMessages ? "enabled" : "off"}
431
177
  clear-option=${this._hasMessages ? "enabled" : "off"}
432
178
  .minimizeIcon=${this.minimizeIcon}
433
179
  .agentInfo=${this.agentInfo}
@@ -579,6 +325,8 @@ promptSlot_get = function() {
579
325
  variant="icon-button"
580
326
  multiple
581
327
  ?disabled=${isUploading}
328
+ .maxSize=${this.maxFileSize}
329
+ .accept=${this.acceptedFileTypes}
582
330
  .selectedFiles=${this._coreController?.pendingAttachments.map((a) => a.filename) ?? []}
583
331
  @forge-ai-file-picker-change=${this._handleFileSelect}
584
332
  @forge-ai-file-picker-error=${this._handleFileError}>
@@ -611,7 +359,7 @@ messageThread_get = function() {
611
359
  @forge-ai-message-thread-user-copy=${this._handleUserCopy}
612
360
  @forge-ai-message-thread-user-resend=${this._handleUserResend}
613
361
  @forge-ai-message-thread-user-edit=${this._handleUserEdit}>
614
- <slot name="empty-state-icon" slot="empty-state-icon">${__privateGet(this, _defaultEmptyStateIcon)}</slot>
362
+ <slot name="empty-state-icon" slot="empty-state-icon"></slot>
615
363
  <slot name="empty-state-heading" slot="empty-state-heading"></slot>
616
364
  <slot name="empty-state-message" slot="empty-state-message"></slot>
617
365
  <div class="suggestions-container" slot="empty-state-actions">
@@ -624,7 +372,6 @@ messageThread_get = function() {
624
372
  </forge-ai-message-thread>
625
373
  `;
626
374
  };
627
- _defaultEmptyStateIcon = /* @__PURE__ */ new WeakMap();
628
375
  AiChatbotComponent.styles = unsafeCSS(styles);
629
376
  __decorateClass([
630
377
  property({ type: Boolean, attribute: "show-expand-button" })
@@ -1,4 +1,4 @@
1
- const styles = '/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc.\n * License: Apache-2.0\n */\n@keyframes forge-dialog-zoom-in {\n from {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n to {\n opacity: 1;\n scale: 1;\n }\n}\n@keyframes forge-dialog-zoom-out {\n from {\n opacity: 1;\n scale: 1;\n }\n to {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n@keyframes forge-dialog-fade-in {\n from {\n opacity: var(--_dialog-fade-opacity);\n }\n to {\n opacity: 1;\n }\n}\n@keyframes forge-dialog-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n@keyframes forge-dialog-slide-in {\n from {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes forge-dialog-slide-out {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog {\n --_dialog-background:var(--forge-dialog-background, var(--forge-theme-surface-bright, #ffffff));\n --_dialog-shape:var(--forge-dialog-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_dialog-elevation:var(--forge-dialog-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));\n --_dialog-spacing:var(--forge-dialog-spacing, auto);\n --_dialog-block-start-spacing:var(--forge-dialog-block-start-spacing, var(--_dialog-spacing));\n --_dialog-block-end-spacing:var(--forge-dialog-block-end-spacing, var(--_dialog-spacing));\n --_dialog-inline-start-spacing:var(--forge-dialog-inline-start-spacing, var(--_dialog-spacing));\n --_dialog-inline-end-spacing:var(--forge-dialog-inline-end-spacing, var(--_dialog-spacing));\n --_dialog-padding:var(--forge-dialog-padding, 0);\n --_dialog-width:var(--forge-dialog-width, fit-content);\n --_dialog-height:var(--forge-dialog-height, fit-content);\n --_dialog-min-width:var(--forge-dialog-min-width, 0);\n --_dialog-max-width:var(--forge-dialog-max-width, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-min-height:var(--forge-dialog-min-height, 0);\n --_dialog-max-height:var(--forge-dialog-max-height, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-z-index:var(--forge-dialog-z-index, var(--forge-z-index-dialog, 8));\n --_dialog-move-handle-color:var(--forge-dialog-move-handle-color, currentColor);\n --_dialog-move-handle-size:var(--forge-dialog-move-handle-size, 24px);\n --_dialog-move-handle-hover-cursor:var(--forge-dialog-move-handle-hover-cursor, grab);\n --_dialog-move-handle-active-cursor:var(--forge-dialog-move-handle-active-cursor, grabbing);\n --_dialog-move-handle-spacing:var(--forge-dialog-move-handle-spacing, calc(var(--forge-spacing-xxsmall, 4px) * -1) 0 0);\n --_dialog-move-transition-duration:var(--forge-dialog-move-transition-duration, var(--forge-animation-duration-short4, 200ms));\n --_dialog-move-transition-easing:var(--forge-dialog-move-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-moving-opacity:var(--forge-dialog-moving-opacity, 0.54);\n --_dialog-enter-animation-duration:var(--forge-dialog-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-enter-animation-easing:var(--forge-dialog-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-exit-animation-duration:var(--forge-dialog-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-exit-animation-easing:var(--forge-dialog-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --_dialog-zoom-opacity:var(--forge-dialog-zoom-opacity, 0);\n --_dialog-zoom-scale:var(--forge-dialog-zoom-scale, 0.8);\n --_dialog-fade-opacity:var(--forge-dialog-fade-opacity, 0);\n --_dialog-slide-opacity:var(--forge-dialog-slide-opacity, 0);\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 -30%);\n --_dialog-backdrop-opacity:var(--forge-dialog-backdrop-opacity, var(--forge-backdrop-opacity, 0.54));\n --_dialog-nonmodal-elevation:var(--forge-dialog-nonmodal-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_dialog-fullscreen-enter-animation-duration:var(--forge-dialog-fullscreen-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-fullscreen-exit-animation-duration:var(--forge-dialog-fullscreen-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-position-x:var(--forge-dialog-position-x, 0);\n --_dialog-position-y:var(--forge-dialog-position-y, 0);\n --_dialog-preset-sheet-enter-animation-duration:var(--forge-dialog-preset-sheet-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-preset-sheet-exit-animation-duration:var(--forge-dialog-preset-sheet-exit-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_backdrop-background:var(--forge-backdrop-background, #000);\n --_backdrop-opacity:var(--forge-backdrop-opacity, 0.54);\n --_backdrop-z-index:var(--forge-backdrop-z-index, var(--forge-z-index-backdrop, 7));\n --_backdrop-enter-animation-duration:var(--forge-backdrop-enter-animation-duration, var(--forge-animation-duration-short4, 200ms));\n --_backdrop-enter-animation-easing:var(--forge-backdrop-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_backdrop-exit-animation-duration:var(--forge-backdrop-exit-animation-duration, var(--forge-animation-duration-short1, 50ms));\n --_backdrop-exit-animation-easing:var(--forge-backdrop-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --forge-theme-surface: var(--forge-theme-surface-bright, #ffffff);\n}\n\n.forge-dialog {\n position: fixed;\n inset: 0;\n z-index: var(--_dialog-z-index);\n background-color: rgba(0, 0, 0, 0);\n color: inherit;\n border: none;\n width: auto;\n height: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n position: absolute;\n inset: 0;\n display: flex;\n background: var(--_dialog-background);\n box-shadow: var(--_dialog-elevation);\n z-index: var(--_dialog-z-index);\n overflow: hidden;\n border-radius: var(--_dialog-shape);\n margin-block-start: var(--_dialog-block-start-spacing);\n margin-block-end: var(--_dialog-block-end-spacing);\n margin-inline-start: var(--_dialog-inline-start-spacing);\n margin-inline-end: var(--_dialog-inline-end-spacing);\n padding: var(--_dialog-padding);\n width: var(--_dialog-width);\n height: var(--_dialog-height);\n min-width: var(--_dialog-min-width);\n max-width: var(--_dialog-max-width);\n min-height: var(--_dialog-min-height);\n max-height: var(--_dialog-max-height);\n box-sizing: border-box;\n animation-duration: var(--_dialog-exit-animation-duration);\n animation-timing-function: var(--_dialog-exit-animation-easing);\n position: fixed;\n transition-property: display, opacity, overlay, scale;\n transition-behavior: allow-discrete;\n}\n\n.forge-dialog > forge-scaffold {\n height: auto;\n}\n\n.forge-dialog--fullscreen {\n --_dialog-enter-animation-duration:var(--_dialog-fullscreen-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-fullscreen-exit-animation-duration);\n height: 100%;\n width: 100%;\n max-width: none;\n max-height: none;\n border-radius: 0;\n box-shadow: none;\n}\n\n.forge-dialog:not(:modal) {\n --_dialog-elevation:var(--_dialog-nonmodal-elevation);\n pointer-events: all;\n}\n\n.forge-dialog--moveable {\n user-select: none;\n transition-property: opacity;\n transition-duration: var(--_dialog-move-transition-duration);\n transition-timing-function: var(--_dialog-move-transition-easing);\n}\n\n.forge-dialog--moved {\n margin: 0;\n}\n\n.forge-dialog--moving {\n opacity: var(--_dialog-moving-opacity);\n}\n\n.forge-dialog__move-handle {\n fill: var(--_dialog-move-handle-color);\n height: var(--_dialog-move-handle-size);\n width: var(--_dialog-move-handle-size);\n margin: var(--_dialog-move-handle-spacing);\n touch-action: none;\n}\n\n.forge-dialog__move-handle:hover {\n cursor: var(--_dialog-move-handle-hover-cursor);\n}\n\n.forge-dialog__move-handle:active {\n cursor: var(--_dialog-move-handle-active-cursor);\n}\n\n.forge-dialog__move-handle-container {\n position: absolute;\n top: 0;\n z-index: 1;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.forge-dialog--top {\n --_dialog-block-start-spacing:var(--forge-dialog-block-start-spacing, 0);\n top: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: 0;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: 0;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--bottom {\n --_dialog-block-end-spacing:var(--forge-dialog-block-end-spacing, 0);\n top: auto;\n bottom: 0;\n}\n\n.forge-dialog--bottom-right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: 0;\n}\n\n.forge-dialog--bottom-left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: 0;\n}\n\n.forge-dialog--right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--custom {\n margin: 0;\n top: var(--_dialog-position-x);\n left: var(--_dialog-position-y);\n}\n\n.forge-dialog--bottom-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 100%);\n}\n\n.forge-dialog--bottom-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--bottom-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--bottom-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--bottom-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--left-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n left: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, -100% 0);\n}\n\n.forge-dialog--left-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--left-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--left-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--left-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--right-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n right: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 100% 0);\n}\n\n.forge-dialog--right-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--right-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--right-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--right-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--top-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n top: 0;\n left: 0;\n right: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 -100%);\n}\n\n.forge-dialog--top-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--top-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--top-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--top-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog::backdrop {\n --forge-backdrop-opacity: var(--_backdrop-opacity);\n --forge-backdrop-enter-animation-duration: var(--_backdrop-enter-animation-duration);\n --forge-backdrop-enter-animation-easing: var(--_backdrop-enter-animation-easing);\n --forge-backdrop-exit-animation-duration: var(--_backdrop-exit-animation-duration);\n --forge-backdrop-exit-animation-easing: var(--_backdrop-exit-animation-easing);\n position: absolute;\n inset: 0;\n z-index: var(--_backdrop-z-index);\n background: var(--_backdrop-background);\n opacity: 0;\n animation-fill-mode: forwards;\n transition-property: display, opacity, overlay;\n}\n\n.forge-dialog[open] {\n opacity: 1;\n scale: 1;\n transition-duration: var(--_dialog-enter-animation-duration);\n transition-timing-function: var(--_dialog-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open] {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n.forge-dialog[open]::backdrop {\n opacity: var(--_backdrop-opacity);\n transition-duration: var(--_backdrop-enter-animation-duration);\n transition-timing-function: var(--_backdrop-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open]::backdrop {\n opacity: 0;\n }\n}\n.forge-dialog:not([open]) {\n animation-duration: var(--_dialog-enter-animation-duration);\n animation-timing-function: var(--_dialog-enter-animation-easing);\n display: none;\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n transition-duration: var(--_dialog-exit-animation-duration);\n transition-timing-function: var(--_dialog-exit-animation-easing);\n}\n\n.forge-dialog:not([open])::backdrop {\n transition-duration: var(--_backdrop-exit-animation-duration);\n transition-timing-function: var(--_backdrop-exit-animation-easing);\n}\n\n.forge-dialog--animation-fade.forge-dialog {\n transition-property: display, opacity, overlay;\n}\n\n@starting-style {\n .forge-dialog--animation-fade.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n.forge-dialog--animation-fade.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n}\n\n.forge-dialog--animation-slide.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--animation-slide.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--animation-slide.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--animation-slide.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--animation-none {\n --_dialog-enter-animation-duration:var(--forge-dialog-enter-animation-duration, 0s);\n --_dialog-exit-animation-duration:var(--forge-dialog-exit-animation-duration, 0s);\n --_backdrop-enter-animation-duration:var(--forge-backdrop-enter-animation-duration, 0s);\n --_backdrop-exit-animation-duration:var(--forge-backdrop-exit-animation-duration, 0s);\n}\n\n@media (prefers-reduced-motion) {\n .forge-dialog.forge-dialog {\n transition-property: display, opacity, overlay;\n }\n @starting-style {\n .forge-dialog.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n }\n .forge-dialog.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n }\n}\n:host {\n display: block;\n width: 100%;\n height: 100%;\n --_ai-chatbot-icon-shape: var(--forge-ai-chatbot-icon-shape, calc(var(--forge-shape-round, 50%) * var(--forge-shape-factor, 1)));\n}\n\n.chatbot-container {\n position: relative;\n display: grid;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n}\n\nforge-ai-chat-interface::part(messages) {\n overflow: hidden;\n}\nforge-ai-chat-interface forge-ai-message-thread {\n min-height: 0;\n}\n\n.disclaimer {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-label1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, 0.75)));\n font-weight: var(--forge-typography-label1-font-weight, 400);\n line-height: var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));\n letter-spacing: var(--forge-typography-label1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-label1-text-transform, inherit);\n text-decoration: var(--forge-typography-label1-text-decoration, inherit);\n color: var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));\n text-align: center;\n margin-block-start: var(--forge-spacing-xxsmall, 4px);\n margin-block-end: calc(var(--forge-spacing-small, 12px) * -1);\n}\n\n.suggestions-container {\n width: 100%;\n align-self: start;\n}\n\n.empty-state-icon,\n::slotted([slot=empty-state-icon]) {\n height: 200px;\n width: 200px;\n border-radius: var(--_ai-chatbot-icon-shape);\n}\n\n.conversations-backdrop {\n position: absolute;\n inset: 0;\n background-color: transparent;\n z-index: 1;\n}\n\n.conversations-dialog {\n display: grid;\n width: min(90%, 360px);\n padding: 0;\n border: 0;\n position: absolute;\n z-index: 2;\n --forge-dialog-shape: 0;\n --forge-dialog-nonmodal-elevation: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n}';
1
+ const styles = '/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc.\n * License: Apache-2.0\n */\n@keyframes forge-dialog-zoom-in {\n from {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n to {\n opacity: 1;\n scale: 1;\n }\n}\n@keyframes forge-dialog-zoom-out {\n from {\n opacity: 1;\n scale: 1;\n }\n to {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n@keyframes forge-dialog-fade-in {\n from {\n opacity: var(--_dialog-fade-opacity);\n }\n to {\n opacity: 1;\n }\n}\n@keyframes forge-dialog-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n@keyframes forge-dialog-slide-in {\n from {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes forge-dialog-slide-out {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog {\n --_dialog-background:var(--forge-dialog-background, var(--forge-theme-surface-bright, #ffffff));\n --_dialog-shape:var(--forge-dialog-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_dialog-elevation:var(--forge-dialog-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));\n --_dialog-spacing:var(--forge-dialog-spacing, auto);\n --_dialog-block-start-spacing:var(--forge-dialog-block-start-spacing, var(--_dialog-spacing));\n --_dialog-block-end-spacing:var(--forge-dialog-block-end-spacing, var(--_dialog-spacing));\n --_dialog-inline-start-spacing:var(--forge-dialog-inline-start-spacing, var(--_dialog-spacing));\n --_dialog-inline-end-spacing:var(--forge-dialog-inline-end-spacing, var(--_dialog-spacing));\n --_dialog-padding:var(--forge-dialog-padding, 0);\n --_dialog-width:var(--forge-dialog-width, fit-content);\n --_dialog-height:var(--forge-dialog-height, fit-content);\n --_dialog-min-width:var(--forge-dialog-min-width, 0);\n --_dialog-max-width:var(--forge-dialog-max-width, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-min-height:var(--forge-dialog-min-height, 0);\n --_dialog-max-height:var(--forge-dialog-max-height, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-z-index:var(--forge-dialog-z-index, var(--forge-z-index-dialog, 8));\n --_dialog-move-handle-color:var(--forge-dialog-move-handle-color, currentColor);\n --_dialog-move-handle-size:var(--forge-dialog-move-handle-size, 24px);\n --_dialog-move-handle-hover-cursor:var(--forge-dialog-move-handle-hover-cursor, grab);\n --_dialog-move-handle-active-cursor:var(--forge-dialog-move-handle-active-cursor, grabbing);\n --_dialog-move-handle-spacing:var(--forge-dialog-move-handle-spacing, calc(var(--forge-spacing-xxsmall, 4px) * -1) 0 0);\n --_dialog-move-transition-duration:var(--forge-dialog-move-transition-duration, var(--forge-animation-duration-short4, 200ms));\n --_dialog-move-transition-easing:var(--forge-dialog-move-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-moving-opacity:var(--forge-dialog-moving-opacity, 0.54);\n --_dialog-enter-animation-duration:var(--forge-dialog-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-enter-animation-easing:var(--forge-dialog-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-exit-animation-duration:var(--forge-dialog-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-exit-animation-easing:var(--forge-dialog-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --_dialog-zoom-opacity:var(--forge-dialog-zoom-opacity, 0);\n --_dialog-zoom-scale:var(--forge-dialog-zoom-scale, 0.8);\n --_dialog-fade-opacity:var(--forge-dialog-fade-opacity, 0);\n --_dialog-slide-opacity:var(--forge-dialog-slide-opacity, 0);\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 -30%);\n --_dialog-backdrop-opacity:var(--forge-dialog-backdrop-opacity, var(--forge-backdrop-opacity, 0.54));\n --_dialog-nonmodal-elevation:var(--forge-dialog-nonmodal-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_dialog-fullscreen-enter-animation-duration:var(--forge-dialog-fullscreen-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-fullscreen-exit-animation-duration:var(--forge-dialog-fullscreen-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-position-x:var(--forge-dialog-position-x, 0);\n --_dialog-position-y:var(--forge-dialog-position-y, 0);\n --_dialog-preset-sheet-enter-animation-duration:var(--forge-dialog-preset-sheet-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-preset-sheet-exit-animation-duration:var(--forge-dialog-preset-sheet-exit-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_backdrop-background:var(--forge-backdrop-background, #000);\n --_backdrop-opacity:var(--forge-backdrop-opacity, 0.54);\n --_backdrop-z-index:var(--forge-backdrop-z-index, var(--forge-z-index-backdrop, 7));\n --_backdrop-enter-animation-duration:var(--forge-backdrop-enter-animation-duration, var(--forge-animation-duration-short4, 200ms));\n --_backdrop-enter-animation-easing:var(--forge-backdrop-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_backdrop-exit-animation-duration:var(--forge-backdrop-exit-animation-duration, var(--forge-animation-duration-short1, 50ms));\n --_backdrop-exit-animation-easing:var(--forge-backdrop-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --forge-theme-surface: var(--forge-theme-surface-bright, #ffffff);\n}\n\n.forge-dialog {\n position: fixed;\n inset: 0;\n z-index: var(--_dialog-z-index);\n background-color: rgba(0, 0, 0, 0);\n color: inherit;\n border: none;\n width: auto;\n height: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n position: absolute;\n inset: 0;\n display: flex;\n background: var(--_dialog-background);\n box-shadow: var(--_dialog-elevation);\n z-index: var(--_dialog-z-index);\n overflow: hidden;\n border-radius: var(--_dialog-shape);\n margin-block-start: var(--_dialog-block-start-spacing);\n margin-block-end: var(--_dialog-block-end-spacing);\n margin-inline-start: var(--_dialog-inline-start-spacing);\n margin-inline-end: var(--_dialog-inline-end-spacing);\n padding: var(--_dialog-padding);\n width: var(--_dialog-width);\n height: var(--_dialog-height);\n min-width: var(--_dialog-min-width);\n max-width: var(--_dialog-max-width);\n min-height: var(--_dialog-min-height);\n max-height: var(--_dialog-max-height);\n box-sizing: border-box;\n animation-duration: var(--_dialog-exit-animation-duration);\n animation-timing-function: var(--_dialog-exit-animation-easing);\n position: fixed;\n transition-property: display, opacity, overlay, scale;\n transition-behavior: allow-discrete;\n}\n\n.forge-dialog > forge-scaffold {\n height: auto;\n}\n\n.forge-dialog--fullscreen {\n --_dialog-enter-animation-duration:var(--_dialog-fullscreen-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-fullscreen-exit-animation-duration);\n height: 100%;\n width: 100%;\n max-width: none;\n max-height: none;\n border-radius: 0;\n box-shadow: none;\n}\n\n.forge-dialog:not(:modal) {\n --_dialog-elevation:var(--_dialog-nonmodal-elevation);\n pointer-events: all;\n}\n\n.forge-dialog--moveable {\n user-select: none;\n transition-property: opacity;\n transition-duration: var(--_dialog-move-transition-duration);\n transition-timing-function: var(--_dialog-move-transition-easing);\n}\n\n.forge-dialog--moved {\n margin: 0;\n}\n\n.forge-dialog--moving {\n opacity: var(--_dialog-moving-opacity);\n}\n\n.forge-dialog__move-handle {\n fill: var(--_dialog-move-handle-color);\n height: var(--_dialog-move-handle-size);\n width: var(--_dialog-move-handle-size);\n margin: var(--_dialog-move-handle-spacing);\n touch-action: none;\n}\n\n.forge-dialog__move-handle:hover {\n cursor: var(--_dialog-move-handle-hover-cursor);\n}\n\n.forge-dialog__move-handle:active {\n cursor: var(--_dialog-move-handle-active-cursor);\n}\n\n.forge-dialog__move-handle-container {\n position: absolute;\n top: 0;\n z-index: 1;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.forge-dialog--top {\n --_dialog-block-start-spacing:var(--forge-dialog-block-start-spacing, 0);\n top: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: 0;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: 0;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--bottom {\n --_dialog-block-end-spacing:var(--forge-dialog-block-end-spacing, 0);\n top: auto;\n bottom: 0;\n}\n\n.forge-dialog--bottom-right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: 0;\n}\n\n.forge-dialog--bottom-left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: 0;\n}\n\n.forge-dialog--right {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--left {\n --_dialog-spacing:var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--custom {\n margin: 0;\n top: var(--_dialog-position-x);\n left: var(--_dialog-position-y);\n}\n\n.forge-dialog--bottom-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 100%);\n}\n\n.forge-dialog--bottom-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--bottom-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--bottom-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--bottom-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--left-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n left: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, -100% 0);\n}\n\n.forge-dialog--left-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--left-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--left-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--left-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--right-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n right: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 100% 0);\n}\n\n.forge-dialog--right-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--right-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--right-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--right-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--top-sheet {\n --_dialog-enter-animation-duration:var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration:var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width:var(--forge-dialog-max-width, none);\n --_dialog-max-height:var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n top: 0;\n left: 0;\n right: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n --_dialog-slide-translate:var(--forge-dialog-slide-translate, 0 -100%);\n}\n\n.forge-dialog--top-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--top-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--top-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--top-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog::backdrop {\n --forge-backdrop-opacity: var(--_backdrop-opacity);\n --forge-backdrop-enter-animation-duration: var(--_backdrop-enter-animation-duration);\n --forge-backdrop-enter-animation-easing: var(--_backdrop-enter-animation-easing);\n --forge-backdrop-exit-animation-duration: var(--_backdrop-exit-animation-duration);\n --forge-backdrop-exit-animation-easing: var(--_backdrop-exit-animation-easing);\n position: absolute;\n inset: 0;\n z-index: var(--_backdrop-z-index);\n background: var(--_backdrop-background);\n opacity: 0;\n animation-fill-mode: forwards;\n transition-property: display, opacity, overlay;\n}\n\n.forge-dialog[open] {\n opacity: 1;\n scale: 1;\n transition-duration: var(--_dialog-enter-animation-duration);\n transition-timing-function: var(--_dialog-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open] {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n.forge-dialog[open]::backdrop {\n opacity: var(--_backdrop-opacity);\n transition-duration: var(--_backdrop-enter-animation-duration);\n transition-timing-function: var(--_backdrop-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open]::backdrop {\n opacity: 0;\n }\n}\n.forge-dialog:not([open]) {\n animation-duration: var(--_dialog-enter-animation-duration);\n animation-timing-function: var(--_dialog-enter-animation-easing);\n display: none;\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n transition-duration: var(--_dialog-exit-animation-duration);\n transition-timing-function: var(--_dialog-exit-animation-easing);\n}\n\n.forge-dialog:not([open])::backdrop {\n transition-duration: var(--_backdrop-exit-animation-duration);\n transition-timing-function: var(--_backdrop-exit-animation-easing);\n}\n\n.forge-dialog--animation-fade.forge-dialog {\n transition-property: display, opacity, overlay;\n}\n\n@starting-style {\n .forge-dialog--animation-fade.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n.forge-dialog--animation-fade.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n}\n\n.forge-dialog--animation-slide.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--animation-slide.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--animation-slide.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--animation-slide.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--animation-none {\n --_dialog-enter-animation-duration:var(--forge-dialog-enter-animation-duration, 0s);\n --_dialog-exit-animation-duration:var(--forge-dialog-exit-animation-duration, 0s);\n --_backdrop-enter-animation-duration:var(--forge-backdrop-enter-animation-duration, 0s);\n --_backdrop-exit-animation-duration:var(--forge-backdrop-exit-animation-duration, 0s);\n}\n\n@media (prefers-reduced-motion) {\n .forge-dialog.forge-dialog {\n transition-property: display, opacity, overlay;\n }\n @starting-style {\n .forge-dialog.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n }\n .forge-dialog.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n }\n}\n:host {\n display: block;\n width: 100%;\n height: 100%;\n --_ai-chatbot-icon-shape: var(--forge-ai-chatbot-icon-shape, 0);\n}\n\n.chatbot-container {\n position: relative;\n display: grid;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n}\n\nforge-ai-chat-interface::part(messages) {\n overflow: hidden;\n}\nforge-ai-chat-interface forge-ai-message-thread {\n min-height: 0;\n}\n\n.disclaimer {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-label1-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, 0.75)));\n font-weight: var(--forge-typography-label1-font-weight, 400);\n line-height: var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));\n letter-spacing: var(--forge-typography-label1-letter-spacing, 0.0357142857em);\n text-transform: var(--forge-typography-label1-text-transform, inherit);\n text-decoration: var(--forge-typography-label1-text-decoration, inherit);\n color: var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));\n text-align: center;\n margin-block-start: var(--forge-spacing-xxsmall, 4px);\n margin-block-end: calc(var(--forge-spacing-small, 12px) * -1);\n}\n\n.suggestions-container {\n width: 100%;\n align-self: start;\n}\n\n::slotted([slot=empty-state-icon]) {\n height: 200px;\n width: 200px;\n border-radius: var(--_ai-chatbot-icon-shape);\n}\n\n.conversations-backdrop {\n position: absolute;\n inset: 0;\n background-color: transparent;\n z-index: 1;\n}\n\n.conversations-dialog {\n display: grid;\n width: min(90%, 360px);\n padding: 0;\n border: 0;\n position: absolute;\n z-index: 2;\n --forge-dialog-shape: 0;\n --forge-dialog-nonmodal-elevation: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n}';
2
2
  export {
3
3
  styles as default
4
4
  };
@@ -4,7 +4,7 @@ export type { ForgeAiChatbotMessageEventData, ForgeAiChatbotToolCallEventData, F
4
4
  export { AiChatbotToolCallComponent, AiChatbotToolCallComponentTagName } from './ai-chatbot-tool-call.js';
5
5
  export type { Suggestion } from '../ai-suggestions/index.js';
6
6
  export { AgentAdapter, type MessageStartEvent, type MessageDeltaEvent, type MessageEndEvent, type ToolCallEvent, type ToolCallStartEvent, type ToolCallArgsEvent, type ToolCallEndEvent, type FileUploadEvent, type FileRemoveEvent, type AdapterState, type ErrorEvent, type CustomAgentEvent, type RawAgentEvent, type RunStartedAgentEvent, type StepStartedAgentEvent, type StepFinishedAgentEvent, type StateSnapshotAgentEvent, type StateDeltaAgentEvent, type ActivitySnapshotAgentEvent, type ActivityDeltaAgentEvent } from './agent-adapter.js';
7
- export type { Agent, ChatMessage, ContextItem, ToolDefinition, ToolCall, ToolRenderer, IToolRenderer, HandlerContext, ToolStartContext, ToolDeltaContext, ToolEndContext, FileAttachment, UploadedFileMetadata, FileUploadCallbacks, FileUploadHandler, FileRemoveCallbacks, ThreadState, FeedbackType, ResponseFeedback, ForgeAiChatbotContextRemoveEventData } from './types.js';
7
+ export type { Agent, ChatMessage, ContextItem, ToolDefinition, ToolCall, ToolRenderer, IToolRenderer, HandlerContext, ToolStartContext, ToolDeltaContext, ToolEndContext, FileAttachment, UploadedFileMetadata, FileUploadCallbacks, FileUploadHandler, FileRemoveCallbacks, ThreadState, FeedbackType, ResponseFeedback, MessageItem, ForgeAiChatbotContextRemoveEventData } from './types.js';
8
8
  export * from './ag-ui-adapter.js';
9
9
  export * from './http-agent-with-credentials.js';
10
10
  export * from './event-emitter.js';
@@ -1,4 +1,5 @@
1
1
  import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import { RenderMarkdownOptions } from './utils.js';
2
3
  /**
3
4
  * Reactive controller for caching parsed markdown and throttling renders.
4
5
  * Provides HTML caching per message and RAF throttling during streaming.
@@ -8,6 +9,6 @@ export declare class MarkdownStreamController implements ReactiveController {
8
9
  constructor(host: ReactiveControllerHost);
9
10
  hostConnected(): void;
10
11
  hostDisconnected(): void;
11
- getCachedHtml(messageId: string, content: string): string;
12
+ getCachedHtml(messageId: string, content: string, options?: RenderMarkdownOptions): string;
12
13
  scheduleUpdate(): void;
13
14
  }
@@ -16,16 +16,16 @@ class MarkdownStreamController {
16
16
  }
17
17
  this.#markdownCache.clear();
18
18
  }
19
- #getCacheKey(messageId, content) {
19
+ #getCacheKey(messageId, content, { streaming = true }) {
20
20
  const hash = content.length + ":" + content.slice(0, 50);
21
- return `${messageId}:${hash}`;
21
+ return `${messageId}:${hash}:${streaming}`;
22
22
  }
23
- getCachedHtml(messageId, content) {
23
+ getCachedHtml(messageId, content, options = {}) {
24
24
  const str = String(content ?? "");
25
- const key = this.#getCacheKey(messageId, str);
25
+ const key = this.#getCacheKey(messageId, str, options);
26
26
  let html = this.#markdownCache.get(key);
27
27
  if (!html) {
28
- html = renderMarkdown(str);
28
+ html = renderMarkdown(str, options);
29
29
  this.#markdownCache.set(key, html);
30
30
  if (this.#markdownCache.size > 100) {
31
31
  const firstKey = this.#markdownCache.keys().next().value;
@@ -1,4 +1,14 @@
1
- import { FileAttachment, ContextItem } from './types.js';
1
+ import { ChatMessage, ContextItem, FileAttachment, ToolCall } from './types.js';
2
+ export interface RenderMarkdownOptions {
3
+ /**
4
+ * Whether the content is still being streamed. Streaming content (the
5
+ * default) is run through markdown-completion repairs that finish partial
6
+ * syntax as tokens arrive. Complete content (e.g. finalized user messages)
7
+ * should set this to `false` so those repairs don't mangle intentional text
8
+ * such as `[text](` into incomplete-link placeholders.
9
+ */
10
+ streaming?: boolean;
11
+ }
2
12
  /**
3
13
  * Generates a unique ID using UUID v4
4
14
  */
@@ -6,7 +16,7 @@ export declare function generateId(): string;
6
16
  /**
7
17
  * Renders markdown content to sanitized HTML
8
18
  */
9
- export declare function renderMarkdown(content: string): string;
19
+ export declare function renderMarkdown(content: string, { streaming }?: RenderMarkdownOptions): string;
10
20
  /**
11
21
  * Downloads content as a file with specified MIME type
12
22
  */
@@ -15,3 +25,22 @@ export declare function downloadFile(content: string, filename: string, mimeType
15
25
  * Converts file attachments to context items
16
26
  */
17
27
  export declare function fileAttachmentsToContextItems(completedAttachments: FileAttachment[], pendingAttachments: FileAttachment[]): ContextItem[];
28
+ /**
29
+ * Formats a single tool call as indented text lines for a chat export.
30
+ */
31
+ export declare function formatToolCallForExport(toolCall: ToolCall): string;
32
+ /**
33
+ * Formats a list of chat messages into a plain-text transcript. Tool call
34
+ * details are only included when `includeToolCalls` is enabled. When a message
35
+ * retains its interleaved `children`, text and tool calls are emitted in the
36
+ * exact order they occurred; otherwise it falls back to the flat content plus a
37
+ * trailing tool call block.
38
+ */
39
+ export declare function formatChatTranscript(messages: ChatMessage[], { includeToolCalls }?: {
40
+ includeToolCalls?: boolean | undefined;
41
+ }): string;
42
+ /**
43
+ * Builds a timestamped filename for an exported chat transcript, optionally
44
+ * prefixed with a slugified agent name.
45
+ */
46
+ export declare function createChatExportFilename(agentName?: string): string;
@@ -2,6 +2,7 @@ import { marked } from "marked";
2
2
  import DOMPurify from "dompurify";
3
3
  import remend from "remend";
4
4
  import { v4 } from "uuid";
5
+ const COMPLETE_CONTENT_REMEND_OPTIONS = { links: false, images: false };
5
6
  const DOMPURIFY_CONFIG = {
6
7
  FORBID_TAGS: ["script", "style", "iframe", "object", "embed"],
7
8
  FORBID_ATTR: ["onerror", "onload", "onclick", "onmouseover"],
@@ -10,8 +11,8 @@ const DOMPURIFY_CONFIG = {
10
11
  function generateId() {
11
12
  return v4();
12
13
  }
13
- function renderMarkdown(content) {
14
- const completedMarkdown = remend(content);
14
+ function renderMarkdown(content, { streaming = true } = {}) {
15
+ const completedMarkdown = remend(content, streaming ? void 0 : COMPLETE_CONTENT_REMEND_OPTIONS);
15
16
  const renderer = new marked.Renderer();
16
17
  renderer.link = function(args) {
17
18
  const link = marked.Renderer.prototype.link.call(this, args);
@@ -54,6 +55,47 @@ function fileAttachmentsToContextItems(completedAttachments, pendingAttachments)
54
55
  }));
55
56
  return [...pending, ...completed];
56
57
  }
58
+ function formatToolCallForExport(toolCall) {
59
+ const lines = [` - Tool: ${toolCall.name}`, ` Args: ${JSON.stringify(toolCall.args)}`];
60
+ if (toolCall.status === "error") {
61
+ const errorMsg = typeof toolCall.result === "object" && toolCall.result !== null && "error" in toolCall.result ? toolCall.result.error : "Unknown error";
62
+ lines.push(` Error: ${errorMsg}`);
63
+ } else if (toolCall.result !== void 0) {
64
+ lines.push(` Result: ${JSON.stringify(toolCall.result)}`);
65
+ }
66
+ return lines.join("\n");
67
+ }
68
+ function formatChatTranscript(messages, { includeToolCalls = false } = {}) {
69
+ return messages.map((message) => {
70
+ const timestamp = new Date(message.timestamp).toLocaleString();
71
+ const role = message.role === "user" ? "You" : "Agent";
72
+ const body = message.children?.length ? formatInterleavedBody(message.children, includeToolCalls) : formatFlatBody(message, includeToolCalls);
73
+ return `[${timestamp}] ${role}:
74
+ ${body}
75
+ `;
76
+ }).join("\n");
77
+ }
78
+ function formatInterleavedBody(children, includeToolCalls) {
79
+ return children.map((item) => {
80
+ if (item.type === "text") {
81
+ return item.content;
82
+ }
83
+ return includeToolCalls ? formatToolCallForExport(item.data) : "";
84
+ }).filter((part) => part.trim().length > 0).join("\n\n");
85
+ }
86
+ function formatFlatBody(message, includeToolCalls) {
87
+ let body = message.content;
88
+ if (includeToolCalls && message.toolCalls?.length) {
89
+ body += "\n" + message.toolCalls.map(formatToolCallForExport).join("\n\n") + "\n";
90
+ }
91
+ return body;
92
+ }
93
+ function createChatExportFilename(agentName) {
94
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
95
+ const slug = agentName?.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
96
+ const prefix = slug ? `${slug}-` : "";
97
+ return `${prefix}chat-history-${timestamp}.txt`;
98
+ }
57
99
  function formatBytes(bytes) {
58
100
  if (bytes === 0) {
59
101
  return "0 B";
@@ -64,8 +106,11 @@ function formatBytes(bytes) {
64
106
  return `${Math.round(bytes / Math.pow(k, i) * 100) / 100} ${sizes[i]}`;
65
107
  }
66
108
  export {
109
+ createChatExportFilename,
67
110
  downloadFile,
68
111
  fileAttachmentsToContextItems,
112
+ formatChatTranscript,
113
+ formatToolCallForExport,
69
114
  generateId,
70
115
  renderMarkdown
71
116
  };
@@ -271,6 +271,8 @@ promptTemplate_get = function() {
271
271
  variant="icon-button"
272
272
  multiple
273
273
  ?disabled=${isUploading}
274
+ .maxSize=${this.maxFileSize}
275
+ .accept=${this.acceptedFileTypes}
274
276
  .selectedFiles=${this._coreController?.pendingAttachments.map((a) => a.filename) ?? []}
275
277
  @forge-ai-file-picker-change=${this._handleFileSelect}
276
278
  @forge-ai-file-picker-error=${this._handleFileError}>
@@ -340,14 +342,23 @@ threadName_get = function() {
340
342
  </forge-ai-edit-thread>
341
343
  `,
342
344
  () => html`
343
- <button
344
- class="forge-button forge-button--dense thread-name__button"
345
- id="thread-name-button"
346
- aria-label="Edit thread name: ${this.threadName}"
347
- @click=${__privateMethod(this, _AiChatbotLauncherComponent_instances, handleThreadNameClick_fn)}>
348
- <span class="thread-name__text">${this.threadName}</span>
349
- </button>
350
- <forge-ai-tooltip for="thread-name-button" placement="bottom">${this.threadName}</forge-ai-tooltip>
345
+ ${when(
346
+ this.showThreadRename,
347
+ () => html`
348
+ <button
349
+ class="forge-button forge-button--dense thread-name__button"
350
+ id="thread-name-button"
351
+ aria-label="Edit thread name: ${this.threadName}"
352
+ @click=${__privateMethod(this, _AiChatbotLauncherComponent_instances, handleThreadNameClick_fn)}>
353
+ <span class="thread-name__text">${this.threadName}</span>
354
+ </button>
355
+ <forge-ai-tooltip for="thread-name-button" placement="bottom">${this.threadName}</forge-ai-tooltip>
356
+ `,
357
+ () => html`
358
+ <span class="thread-name__text" id="thread-name-text">${this.threadName}</span>
359
+ <forge-ai-tooltip for="thread-name-text" placement="bottom">${this.threadName}</forge-ai-tooltip>
360
+ `
361
+ )}
351
362
  ${when(showActions, () => __privateGet(this, _AiChatbotLauncherComponent_instances, threadActionsMenu_get))}
352
363
  `
353
364
  )}
@@ -380,7 +391,7 @@ conversationContentTemplate_get = function() {
380
391
  <forge-ai-chat-header
381
392
  ${ref(__privateGet(this, _headerRef))}
382
393
  ?disable-agent-selector=${this._isStreaming}
383
- export-option=${this._hasMessages ? "enabled" : "off"}
394
+ export-option=${this.exportOption === "off" ? "off" : this._hasMessages ? "enabled" : "off"}
384
395
  clear-option=${this._hasMessages ? "enabled" : "off"}
385
396
  .agentInfo=${this.agentInfo}
386
397
  .headingLevel=${this.headingLevel}