@agno-hq/chat-react 0.3.2 → 0.3.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.
Files changed (33) hide show
  1. package/README.md +81 -5
  2. package/dist/chat/index.cjs +99 -83
  3. package/dist/chat/index.d.cts +80 -16
  4. package/dist/chat/index.d.ts +80 -16
  5. package/dist/chat/index.js +2 -2
  6. package/dist/{chunk-RE7ZT73K.js → chunk-5QKU7OPE.js} +2 -2
  7. package/dist/{chunk-RE7ZT73K.js.map → chunk-5QKU7OPE.js.map} +1 -1
  8. package/dist/{chunk-6V2YIPHF.js → chunk-BCVKAMSO.js} +22 -4
  9. package/dist/chunk-BCVKAMSO.js.map +1 -0
  10. package/dist/{chunk-Q73XHL35.cjs → chunk-ESV52ERB.cjs} +771 -444
  11. package/dist/chunk-ESV52ERB.cjs.map +1 -0
  12. package/dist/{chunk-2WM3CCFE.cjs → chunk-HBSF434L.cjs} +2 -2
  13. package/dist/{chunk-2WM3CCFE.cjs.map → chunk-HBSF434L.cjs.map} +1 -1
  14. package/dist/{chunk-XTP3TMEZ.js → chunk-OGDPK4Z3.js} +602 -279
  15. package/dist/chunk-OGDPK4Z3.js.map +1 -0
  16. package/dist/{chunk-55HQJGLP.cjs → chunk-Y34YRC5T.cjs} +22 -3
  17. package/dist/chunk-Y34YRC5T.cjs.map +1 -0
  18. package/dist/{client-DUyVqxU9.d.cts → client-Dwk6ThnW.d.cts} +24 -12
  19. package/dist/{client-DUyVqxU9.d.ts → client-Dwk6ThnW.d.ts} +24 -12
  20. package/dist/core/index.cjs +23 -23
  21. package/dist/core/index.d.cts +2 -2
  22. package/dist/core/index.d.ts +2 -2
  23. package/dist/core/index.js +2 -2
  24. package/dist/index.cjs +122 -106
  25. package/dist/index.d.cts +2 -2
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.js +3 -3
  28. package/dist/styles.css +79 -34
  29. package/package.json +1 -1
  30. package/dist/chunk-55HQJGLP.cjs.map +0 -1
  31. package/dist/chunk-6V2YIPHF.js.map +0 -1
  32. package/dist/chunk-Q73XHL35.cjs.map +0 -1
  33. package/dist/chunk-XTP3TMEZ.js.map +0 -1
package/README.md CHANGED
@@ -118,6 +118,52 @@ function Chat() {
118
118
  `entity.type` is `'agent' | 'team' | 'workflow'` and `entity.id` is the
119
119
  agent/team/workflow id — the same hook drives all three.
120
120
 
121
+ ### Buffered streaming
122
+
123
+ Plain text is batched so the answer reveals in smooth steps instead of one
124
+ character at a time. The first text of an answer is shown immediately; after
125
+ that, text accumulates for 150 ms and each flush fades in as one batch. Tool
126
+ calls, media, pauses, errors and completion are never delayed: each one flushes
127
+ the pending text ahead of it, so the transcript always stays in order.
128
+
129
+ ```tsx
130
+ <AgnoChat
131
+ baseUrl="http://localhost:7777"
132
+ streaming={{ flushIntervalMs: 150, maxBufferEvents: 100, maxBufferChars: 16_384 }}
133
+ />
134
+ ```
135
+
136
+ The same `streaming` prop works on `useAgnoChat` and `<ChatProvider>`.
137
+
138
+ | Option | Default | Effect |
139
+ |---|---|---|
140
+ | `enabled` | `true` | `false` delivers every event as it arrives. |
141
+ | `flushIntervalMs` | `150` | How long text accumulates before a flush. `0` disables buffering. |
142
+ | `maxBufferEvents` | `100` | Flush early once this many events are pending. |
143
+ | `maxBufferChars` | `16384` | Flush early once this many characters are pending. |
144
+
145
+ Settings are read when a run or continuation starts, so changing the prop
146
+ affects the next one. A hidden tab flushes immediately, since nothing is
147
+ painting. Invalid values fall back to the defaults. `DEFAULT_STREAMING_OPTIONS`
148
+ and `StreamingOptions` are exported from the root and `/chat` entry points.
149
+
150
+ What stays immediate:
151
+
152
+ - `onEvent` receives every raw event as it arrives, unbuffered.
153
+ - `events`, `currentEvent` and each message's event log update per batch, with
154
+ every original event preserved in order.
155
+ - Cancelling keeps the text already received. Switching sessions keeps the
156
+ buffer with its run; deleting the session or unmounting discards it.
157
+ - `AgnoClient` and `streamRun` are never buffered.
158
+
159
+ Each batch fades in through Streamdown's own animation, with every word of a
160
+ batch starting together. Fenced code stays plain until the run completes, then
161
+ highlights. Reduced motion turns the fade off. Pass `animated` in `options` on
162
+ `<Markdown>` to change or disable it.
163
+
164
+ Try **Streaming / Buffered** in Storybook to compare the defaults, a longer
165
+ buffer and per-event updates.
166
+
121
167
  ### What the hook returns
122
168
 
123
169
  | Value | Type | Description |
@@ -177,7 +223,9 @@ as `R, G, B` triples:
177
223
  | `<ChatLauncher>` | Floating support-widget shell: a corner bubble that opens any chat surface. |
178
224
  | `<QuickPrompts>` | Suggested-prompt chips. |
179
225
  | `<MessageList>` | Auto-scrolling transcript with live status + footer slot. |
180
- | `<Message>` | A single message: content, behind-the-scenes panel, media, citations, follow-ups. |
226
+ | `<Message>` | A single message: content, behind-the-scenes panel, media, citations, follow-ups, action row. |
227
+ | `<MessageActions>` | The icon row under a finished answer — copy, plus whatever the product adds. |
228
+ | `<CopyButton>` | The copy control, with the "copied" flash and clipboard fallbacks — the one code blocks and answers use. |
181
229
  | `<BehindTheScenes>` | One collapsible timeline over a run's reasoning, tools, member turns, steps and events — doubles as the live status line. |
182
230
  | `<ChatInput>` | Multiline input with file attach, send, and stop; opens up for @mentions, context chips and a custom textarea. |
183
231
  | `<ToolCalls>` | Collapsible tool-call cards (name, args, result, status). |
@@ -383,16 +431,18 @@ with `<EventLog>` wherever you want it:
383
431
 
384
432
  Whatever a run cites — knowledge-base chunks in `references`, browsed links in
385
433
  `citations.urls` — is flattened into one numbered list and rendered as cards
386
- under the answer: the site's favicon and the title, linking to the source. A
387
- `[1]` in the answer text becomes a chip pointing at card one, and hovering
388
- either the chip or a link opens a preview with the URL and the cited passage:
434
+ under the answer: the site's favicon and the title, linking to the source,
435
+ with the rest behind a "+N more" card past the first three. A `[1]` in the
436
+ answer text becomes a numbered disc pointing at card one, and hovering either
437
+ the disc or a link opens a preview with the URL and the cited passage:
389
438
 
390
439
  ```tsx
391
440
  <Message message={message} /> // markers, cards and previews, no props
392
441
  <Message message={message} hideSources /> // just the answer
393
442
  ```
394
443
 
395
- The hostname and favicon come from the URL itself, and the title and passage
444
+ The hostname and favicon (`/favicon.ico`, then `/favicon.svg`) come from the
445
+ URL itself, and the title and passage
396
446
  from the citation payload, so previews need no network of their own. To fill in
397
447
  OpenGraph metadata, hand the provider a `resolveLinkPreview` — the browser can't
398
448
  read another origin's meta tags, so back it with an endpoint of your own. It is
@@ -475,6 +525,32 @@ tree:
475
525
  <AgnoChat codeCopy={false} />
476
526
  ```
477
527
 
528
+ ### Message actions
529
+
530
+ A finished answer carries an action row — the AgentOS strip of small icon
531
+ buttons under the text, shown when the message is pointed at. The package
532
+ ships copy; the row is a slot for the rest:
533
+
534
+ ```tsx
535
+ <Message
536
+ message={m}
537
+ actions={<>
538
+ <button className="agno-msg__action" onClick={() => regenerate(m)} aria-label="Regenerate">
539
+ <RotateCw size={14} />
540
+ </button>
541
+ <button className="agno-msg__action" onClick={() => rate(m, 'up')} aria-label="Good answer">
542
+ <ThumbsUp size={14} />
543
+ </button>
544
+ </>}
545
+ />
546
+ <Message message={m} hideActions /> // no row at all
547
+ ```
548
+
549
+ `<MessageActions message={m}>` is the row on its own, for a transcript you
550
+ render yourself, and `<CopyButton text={…}>` is the control inside it — the
551
+ same one a code block's header uses, so every copy affordance flashes the same
552
+ tick and falls back the same way when the Clipboard API is unavailable.
553
+
478
554
  Prefer a different renderer? `renderMarkdown` replaces it entirely:
479
555
 
480
556
  ```tsx
@@ -1,334 +1,350 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkQ73XHL35_cjs = require('../chunk-Q73XHL35.cjs');
5
- require('../chunk-55HQJGLP.cjs');
4
+ var chunkESV52ERB_cjs = require('../chunk-ESV52ERB.cjs');
5
+ require('../chunk-Y34YRC5T.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "AgnoChat", {
10
10
  enumerable: true,
11
- get: function () { return chunkQ73XHL35_cjs.AgnoChat; }
11
+ get: function () { return chunkESV52ERB_cjs.AgnoChat; }
12
12
  });
13
13
  Object.defineProperty(exports, "AgnoMark", {
14
14
  enumerable: true,
15
- get: function () { return chunkQ73XHL35_cjs.AgnoMark; }
15
+ get: function () { return chunkESV52ERB_cjs.AgnoMark; }
16
16
  });
17
17
  Object.defineProperty(exports, "ArrowUp", {
18
18
  enumerable: true,
19
- get: function () { return chunkQ73XHL35_cjs.ArrowUp; }
19
+ get: function () { return chunkESV52ERB_cjs.ArrowUp; }
20
20
  });
21
21
  Object.defineProperty(exports, "BehindTheScenes", {
22
22
  enumerable: true,
23
- get: function () { return chunkQ73XHL35_cjs.BehindTheScenes; }
23
+ get: function () { return chunkESV52ERB_cjs.BehindTheScenes; }
24
24
  });
25
25
  Object.defineProperty(exports, "BookOpen", {
26
26
  enumerable: true,
27
- get: function () { return chunkQ73XHL35_cjs.BookOpen; }
27
+ get: function () { return chunkESV52ERB_cjs.BookOpen; }
28
28
  });
29
29
  Object.defineProperty(exports, "Box", {
30
30
  enumerable: true,
31
- get: function () { return chunkQ73XHL35_cjs.Box; }
31
+ get: function () { return chunkESV52ERB_cjs.Box; }
32
32
  });
33
33
  Object.defineProperty(exports, "Brain", {
34
34
  enumerable: true,
35
- get: function () { return chunkQ73XHL35_cjs.Brain; }
35
+ get: function () { return chunkESV52ERB_cjs.Brain; }
36
36
  });
37
37
  Object.defineProperty(exports, "ChatBubble", {
38
38
  enumerable: true,
39
- get: function () { return chunkQ73XHL35_cjs.ChatBubble; }
39
+ get: function () { return chunkESV52ERB_cjs.ChatBubble; }
40
40
  });
41
41
  Object.defineProperty(exports, "ChatInput", {
42
42
  enumerable: true,
43
- get: function () { return chunkQ73XHL35_cjs.ChatInput; }
43
+ get: function () { return chunkESV52ERB_cjs.ChatInput; }
44
44
  });
45
45
  Object.defineProperty(exports, "ChatLauncher", {
46
46
  enumerable: true,
47
- get: function () { return chunkQ73XHL35_cjs.ChatLauncher; }
47
+ get: function () { return chunkESV52ERB_cjs.ChatLauncher; }
48
48
  });
49
49
  Object.defineProperty(exports, "ChatProvider", {
50
50
  enumerable: true,
51
- get: function () { return chunkQ73XHL35_cjs.ChatProvider; }
51
+ get: function () { return chunkESV52ERB_cjs.ChatProvider; }
52
52
  });
53
53
  Object.defineProperty(exports, "ChatWindow", {
54
54
  enumerable: true,
55
- get: function () { return chunkQ73XHL35_cjs.ChatWindow; }
55
+ get: function () { return chunkESV52ERB_cjs.ChatWindow; }
56
56
  });
57
57
  Object.defineProperty(exports, "Check", {
58
58
  enumerable: true,
59
- get: function () { return chunkQ73XHL35_cjs.Check; }
59
+ get: function () { return chunkESV52ERB_cjs.Check; }
60
60
  });
61
61
  Object.defineProperty(exports, "ChevronDown", {
62
62
  enumerable: true,
63
- get: function () { return chunkQ73XHL35_cjs.ChevronDown; }
63
+ get: function () { return chunkESV52ERB_cjs.ChevronDown; }
64
64
  });
65
65
  Object.defineProperty(exports, "Citations", {
66
66
  enumerable: true,
67
- get: function () { return chunkQ73XHL35_cjs.Citations; }
67
+ get: function () { return chunkESV52ERB_cjs.Citations; }
68
68
  });
69
69
  Object.defineProperty(exports, "Close", {
70
70
  enumerable: true,
71
- get: function () { return chunkQ73XHL35_cjs.Close; }
71
+ get: function () { return chunkESV52ERB_cjs.Close; }
72
72
  });
73
73
  Object.defineProperty(exports, "Copy", {
74
74
  enumerable: true,
75
- get: function () { return chunkQ73XHL35_cjs.Copy; }
75
+ get: function () { return chunkESV52ERB_cjs.Copy; }
76
+ });
77
+ Object.defineProperty(exports, "CopyButton", {
78
+ enumerable: true,
79
+ get: function () { return chunkESV52ERB_cjs.CopyButton; }
80
+ });
81
+ Object.defineProperty(exports, "DEFAULT_STREAMING_OPTIONS", {
82
+ enumerable: true,
83
+ get: function () { return chunkESV52ERB_cjs.DEFAULT_STREAMING_OPTIONS; }
76
84
  });
77
85
  Object.defineProperty(exports, "EntityBadge", {
78
86
  enumerable: true,
79
- get: function () { return chunkQ73XHL35_cjs.EntityBadge; }
87
+ get: function () { return chunkESV52ERB_cjs.EntityBadge; }
80
88
  });
81
89
  Object.defineProperty(exports, "EntitySelector", {
82
90
  enumerable: true,
83
- get: function () { return chunkQ73XHL35_cjs.EntitySelector; }
91
+ get: function () { return chunkESV52ERB_cjs.EntitySelector; }
84
92
  });
85
93
  Object.defineProperty(exports, "EventLog", {
86
94
  enumerable: true,
87
- get: function () { return chunkQ73XHL35_cjs.EventLog; }
95
+ get: function () { return chunkESV52ERB_cjs.EventLog; }
88
96
  });
89
97
  Object.defineProperty(exports, "Favicon", {
90
98
  enumerable: true,
91
- get: function () { return chunkQ73XHL35_cjs.Favicon; }
99
+ get: function () { return chunkESV52ERB_cjs.Favicon; }
92
100
  });
93
101
  Object.defineProperty(exports, "FileAudio", {
94
102
  enumerable: true,
95
- get: function () { return chunkQ73XHL35_cjs.FileAudio; }
103
+ get: function () { return chunkESV52ERB_cjs.FileAudio; }
96
104
  });
97
105
  Object.defineProperty(exports, "FileIcon", {
98
106
  enumerable: true,
99
- get: function () { return chunkQ73XHL35_cjs.FileIcon; }
107
+ get: function () { return chunkESV52ERB_cjs.FileIcon; }
100
108
  });
101
109
  Object.defineProperty(exports, "FilePreview", {
102
110
  enumerable: true,
103
- get: function () { return chunkQ73XHL35_cjs.FilePreview; }
111
+ get: function () { return chunkESV52ERB_cjs.FilePreview; }
104
112
  });
105
113
  Object.defineProperty(exports, "FileType", {
106
114
  enumerable: true,
107
- get: function () { return chunkQ73XHL35_cjs.FileType; }
115
+ get: function () { return chunkESV52ERB_cjs.FileType; }
108
116
  });
109
117
  Object.defineProperty(exports, "FileVideo", {
110
118
  enumerable: true,
111
- get: function () { return chunkQ73XHL35_cjs.FileVideo; }
119
+ get: function () { return chunkESV52ERB_cjs.FileVideo; }
112
120
  });
113
121
  Object.defineProperty(exports, "Followups", {
114
122
  enumerable: true,
115
- get: function () { return chunkQ73XHL35_cjs.Followups; }
123
+ get: function () { return chunkESV52ERB_cjs.Followups; }
116
124
  });
117
125
  Object.defineProperty(exports, "Globe", {
118
126
  enumerable: true,
119
- get: function () { return chunkQ73XHL35_cjs.Globe; }
127
+ get: function () { return chunkESV52ERB_cjs.Globe; }
120
128
  });
121
129
  Object.defineProperty(exports, "GridLoader", {
122
130
  enumerable: true,
123
- get: function () { return chunkQ73XHL35_cjs.GridLoader; }
131
+ get: function () { return chunkESV52ERB_cjs.GridLoader; }
124
132
  });
125
133
  Object.defineProperty(exports, "HoverPreview", {
126
134
  enumerable: true,
127
- get: function () { return chunkQ73XHL35_cjs.HoverPreview; }
135
+ get: function () { return chunkESV52ERB_cjs.HoverPreview; }
128
136
  });
129
137
  Object.defineProperty(exports, "HumanInput", {
130
138
  enumerable: true,
131
- get: function () { return chunkQ73XHL35_cjs.HumanInput; }
139
+ get: function () { return chunkESV52ERB_cjs.HumanInput; }
132
140
  });
133
141
  Object.defineProperty(exports, "LinkIcon", {
134
142
  enumerable: true,
135
- get: function () { return chunkQ73XHL35_cjs.LinkIcon; }
143
+ get: function () { return chunkESV52ERB_cjs.LinkIcon; }
136
144
  });
137
145
  Object.defineProperty(exports, "LinkPreviewCard", {
138
146
  enumerable: true,
139
- get: function () { return chunkQ73XHL35_cjs.LinkPreviewCard; }
147
+ get: function () { return chunkESV52ERB_cjs.LinkPreviewCard; }
140
148
  });
141
149
  Object.defineProperty(exports, "Markdown", {
142
150
  enumerable: true,
143
- get: function () { return chunkQ73XHL35_cjs.Markdown; }
151
+ get: function () { return chunkESV52ERB_cjs.Markdown; }
144
152
  });
145
153
  Object.defineProperty(exports, "MemberResponses", {
146
154
  enumerable: true,
147
- get: function () { return chunkQ73XHL35_cjs.MemberResponses; }
155
+ get: function () { return chunkESV52ERB_cjs.MemberResponses; }
148
156
  });
149
157
  Object.defineProperty(exports, "Memory", {
150
158
  enumerable: true,
151
- get: function () { return chunkQ73XHL35_cjs.Memory; }
159
+ get: function () { return chunkESV52ERB_cjs.Memory; }
152
160
  });
153
161
  Object.defineProperty(exports, "Message", {
154
162
  enumerable: true,
155
- get: function () { return chunkQ73XHL35_cjs.Message; }
163
+ get: function () { return chunkESV52ERB_cjs.Message; }
164
+ });
165
+ Object.defineProperty(exports, "MessageActions", {
166
+ enumerable: true,
167
+ get: function () { return chunkESV52ERB_cjs.MessageActions; }
156
168
  });
157
169
  Object.defineProperty(exports, "MessageList", {
158
170
  enumerable: true,
159
- get: function () { return chunkQ73XHL35_cjs.MessageList; }
171
+ get: function () { return chunkESV52ERB_cjs.MessageList; }
160
172
  });
161
173
  Object.defineProperty(exports, "Multimedia", {
162
174
  enumerable: true,
163
- get: function () { return chunkQ73XHL35_cjs.Multimedia; }
175
+ get: function () { return chunkESV52ERB_cjs.Multimedia; }
164
176
  });
165
177
  Object.defineProperty(exports, "Paperclip", {
166
178
  enumerable: true,
167
- get: function () { return chunkQ73XHL35_cjs.Paperclip; }
179
+ get: function () { return chunkESV52ERB_cjs.Paperclip; }
168
180
  });
169
181
  Object.defineProperty(exports, "Plus", {
170
182
  enumerable: true,
171
- get: function () { return chunkQ73XHL35_cjs.Plus; }
183
+ get: function () { return chunkESV52ERB_cjs.Plus; }
172
184
  });
173
185
  Object.defineProperty(exports, "Pulse", {
174
186
  enumerable: true,
175
- get: function () { return chunkQ73XHL35_cjs.Pulse; }
187
+ get: function () { return chunkESV52ERB_cjs.Pulse; }
176
188
  });
177
189
  Object.defineProperty(exports, "QuickPrompts", {
178
190
  enumerable: true,
179
- get: function () { return chunkQ73XHL35_cjs.QuickPrompts; }
191
+ get: function () { return chunkESV52ERB_cjs.QuickPrompts; }
180
192
  });
181
193
  Object.defineProperty(exports, "Reasoning", {
182
194
  enumerable: true,
183
- get: function () { return chunkQ73XHL35_cjs.Reasoning; }
195
+ get: function () { return chunkESV52ERB_cjs.Reasoning; }
184
196
  });
185
197
  Object.defineProperty(exports, "Rerun", {
186
198
  enumerable: true,
187
- get: function () { return chunkQ73XHL35_cjs.Rerun; }
199
+ get: function () { return chunkESV52ERB_cjs.Rerun; }
188
200
  });
189
201
  Object.defineProperty(exports, "SessionList", {
190
202
  enumerable: true,
191
- get: function () { return chunkQ73XHL35_cjs.SessionList; }
203
+ get: function () { return chunkESV52ERB_cjs.SessionList; }
192
204
  });
193
205
  Object.defineProperty(exports, "SourceCard", {
194
206
  enumerable: true,
195
- get: function () { return chunkQ73XHL35_cjs.SourceCard; }
207
+ get: function () { return chunkESV52ERB_cjs.SourceCard; }
196
208
  });
197
209
  Object.defineProperty(exports, "SourcesProvider", {
198
210
  enumerable: true,
199
- get: function () { return chunkQ73XHL35_cjs.SourcesProvider; }
211
+ get: function () { return chunkESV52ERB_cjs.SourcesProvider; }
200
212
  });
201
213
  Object.defineProperty(exports, "Spinner", {
202
214
  enumerable: true,
203
- get: function () { return chunkQ73XHL35_cjs.Spinner; }
215
+ get: function () { return chunkESV52ERB_cjs.Spinner; }
204
216
  });
205
217
  Object.defineProperty(exports, "StatusIndicator", {
206
218
  enumerable: true,
207
- get: function () { return chunkQ73XHL35_cjs.StatusIndicator; }
219
+ get: function () { return chunkESV52ERB_cjs.StatusIndicator; }
208
220
  });
209
221
  Object.defineProperty(exports, "Stop", {
210
222
  enumerable: true,
211
- get: function () { return chunkQ73XHL35_cjs.Stop; }
223
+ get: function () { return chunkESV52ERB_cjs.Stop; }
212
224
  });
213
225
  Object.defineProperty(exports, "TeamGlyph", {
214
226
  enumerable: true,
215
- get: function () { return chunkQ73XHL35_cjs.TeamGlyph; }
227
+ get: function () { return chunkESV52ERB_cjs.TeamGlyph; }
216
228
  });
217
229
  Object.defineProperty(exports, "ToolCalls", {
218
230
  enumerable: true,
219
- get: function () { return chunkQ73XHL35_cjs.ToolCalls; }
231
+ get: function () { return chunkESV52ERB_cjs.ToolCalls; }
220
232
  });
221
233
  Object.defineProperty(exports, "Trash", {
222
234
  enumerable: true,
223
- get: function () { return chunkQ73XHL35_cjs.Trash; }
235
+ get: function () { return chunkESV52ERB_cjs.Trash; }
224
236
  });
225
237
  Object.defineProperty(exports, "WorkflowSteps", {
226
238
  enumerable: true,
227
- get: function () { return chunkQ73XHL35_cjs.WorkflowSteps; }
239
+ get: function () { return chunkESV52ERB_cjs.WorkflowSteps; }
228
240
  });
229
241
  Object.defineProperty(exports, "Wrench", {
230
242
  enumerable: true,
231
- get: function () { return chunkQ73XHL35_cjs.Wrench; }
243
+ get: function () { return chunkESV52ERB_cjs.Wrench; }
232
244
  });
233
245
  Object.defineProperty(exports, "admitFiles", {
234
246
  enumerable: true,
235
- get: function () { return chunkQ73XHL35_cjs.admitFiles; }
247
+ get: function () { return chunkESV52ERB_cjs.admitFiles; }
236
248
  });
237
249
  Object.defineProperty(exports, "behindTheScenesItems", {
238
250
  enumerable: true,
239
- get: function () { return chunkQ73XHL35_cjs.behindTheScenesItems; }
251
+ get: function () { return chunkESV52ERB_cjs.behindTheScenesItems; }
240
252
  });
241
253
  Object.defineProperty(exports, "behindTheScenesLabel", {
242
254
  enumerable: true,
243
- get: function () { return chunkQ73XHL35_cjs.behindTheScenesLabel; }
255
+ get: function () { return chunkESV52ERB_cjs.behindTheScenesLabel; }
244
256
  });
245
257
  Object.defineProperty(exports, "collectSources", {
246
258
  enumerable: true,
247
- get: function () { return chunkQ73XHL35_cjs.collectSources; }
259
+ get: function () { return chunkESV52ERB_cjs.collectSources; }
248
260
  });
249
261
  Object.defineProperty(exports, "displayUrl", {
250
262
  enumerable: true,
251
- get: function () { return chunkQ73XHL35_cjs.displayUrl; }
263
+ get: function () { return chunkESV52ERB_cjs.displayUrl; }
264
+ });
265
+ Object.defineProperty(exports, "faviconFallbacks", {
266
+ enumerable: true,
267
+ get: function () { return chunkESV52ERB_cjs.faviconFallbacks; }
252
268
  });
253
269
  Object.defineProperty(exports, "faviconUrl", {
254
270
  enumerable: true,
255
- get: function () { return chunkQ73XHL35_cjs.faviconUrl; }
271
+ get: function () { return chunkESV52ERB_cjs.faviconUrl; }
256
272
  });
257
273
  Object.defineProperty(exports, "fileAccepted", {
258
274
  enumerable: true,
259
- get: function () { return chunkQ73XHL35_cjs.fileAccepted; }
275
+ get: function () { return chunkESV52ERB_cjs.fileAccepted; }
260
276
  });
261
277
  Object.defineProperty(exports, "getProviderIcon", {
262
278
  enumerable: true,
263
- get: function () { return chunkQ73XHL35_cjs.getProviderIcon; }
279
+ get: function () { return chunkESV52ERB_cjs.getProviderIcon; }
264
280
  });
265
281
  Object.defineProperty(exports, "hasBehindTheScenes", {
266
282
  enumerable: true,
267
- get: function () { return chunkQ73XHL35_cjs.hasBehindTheScenes; }
283
+ get: function () { return chunkESV52ERB_cjs.hasBehindTheScenes; }
268
284
  });
269
285
  Object.defineProperty(exports, "linkCitations", {
270
286
  enumerable: true,
271
- get: function () { return chunkQ73XHL35_cjs.linkCitations; }
287
+ get: function () { return chunkESV52ERB_cjs.linkCitations; }
272
288
  });
273
289
  Object.defineProperty(exports, "normalizeFollowups", {
274
290
  enumerable: true,
275
- get: function () { return chunkQ73XHL35_cjs.normalizeFollowups; }
291
+ get: function () { return chunkESV52ERB_cjs.normalizeFollowups; }
276
292
  });
277
293
  Object.defineProperty(exports, "quickPromptLabel", {
278
294
  enumerable: true,
279
- get: function () { return chunkQ73XHL35_cjs.quickPromptLabel; }
295
+ get: function () { return chunkESV52ERB_cjs.quickPromptLabel; }
280
296
  });
281
297
  Object.defineProperty(exports, "quickPromptText", {
282
298
  enumerable: true,
283
- get: function () { return chunkQ73XHL35_cjs.quickPromptText; }
299
+ get: function () { return chunkESV52ERB_cjs.quickPromptText; }
284
300
  });
285
301
  Object.defineProperty(exports, "sourceHost", {
286
302
  enumerable: true,
287
- get: function () { return chunkQ73XHL35_cjs.sourceHost; }
303
+ get: function () { return chunkESV52ERB_cjs.sourceHost; }
288
304
  });
289
305
  Object.defineProperty(exports, "sourcesFromMarkdown", {
290
306
  enumerable: true,
291
- get: function () { return chunkQ73XHL35_cjs.sourcesFromMarkdown; }
307
+ get: function () { return chunkESV52ERB_cjs.sourcesFromMarkdown; }
292
308
  });
293
309
  Object.defineProperty(exports, "useAgnoChat", {
294
310
  enumerable: true,
295
- get: function () { return chunkQ73XHL35_cjs.useAgnoChat; }
311
+ get: function () { return chunkESV52ERB_cjs.useAgnoChat; }
296
312
  });
297
313
  Object.defineProperty(exports, "useChatContext", {
298
314
  enumerable: true,
299
- get: function () { return chunkQ73XHL35_cjs.useChatContext; }
315
+ get: function () { return chunkESV52ERB_cjs.useChatContext; }
300
316
  });
301
317
  Object.defineProperty(exports, "useLinkComponent", {
302
318
  enumerable: true,
303
- get: function () { return chunkQ73XHL35_cjs.useLinkComponent; }
319
+ get: function () { return chunkESV52ERB_cjs.useLinkComponent; }
304
320
  });
305
321
  Object.defineProperty(exports, "useLinkPreview", {
306
322
  enumerable: true,
307
- get: function () { return chunkQ73XHL35_cjs.useLinkPreview; }
323
+ get: function () { return chunkESV52ERB_cjs.useLinkPreview; }
308
324
  });
309
325
  Object.defineProperty(exports, "useOptionalChatContext", {
310
326
  enumerable: true,
311
- get: function () { return chunkQ73XHL35_cjs.useOptionalChatContext; }
327
+ get: function () { return chunkESV52ERB_cjs.useOptionalChatContext; }
312
328
  });
313
329
  Object.defineProperty(exports, "useResolvedChat", {
314
330
  enumerable: true,
315
- get: function () { return chunkQ73XHL35_cjs.useResolvedChat; }
331
+ get: function () { return chunkESV52ERB_cjs.useResolvedChat; }
316
332
  });
317
333
  Object.defineProperty(exports, "useResolvedClassNames", {
318
334
  enumerable: true,
319
- get: function () { return chunkQ73XHL35_cjs.useResolvedClassNames; }
335
+ get: function () { return chunkESV52ERB_cjs.useResolvedClassNames; }
320
336
  });
321
337
  Object.defineProperty(exports, "useSources", {
322
338
  enumerable: true,
323
- get: function () { return chunkQ73XHL35_cjs.useSources; }
339
+ get: function () { return chunkESV52ERB_cjs.useSources; }
324
340
  });
325
341
  Object.defineProperty(exports, "withoutSourcesLine", {
326
342
  enumerable: true,
327
- get: function () { return chunkQ73XHL35_cjs.withoutSourcesLine; }
343
+ get: function () { return chunkESV52ERB_cjs.withoutSourcesLine; }
328
344
  });
329
345
  Object.defineProperty(exports, "writeClipboard", {
330
346
  enumerable: true,
331
- get: function () { return chunkQ73XHL35_cjs.writeClipboard; }
347
+ get: function () { return chunkESV52ERB_cjs.writeClipboard; }
332
348
  });
333
349
  //# sourceMappingURL=index.cjs.map
334
350
  //# sourceMappingURL=index.cjs.map