@artooi/ag-ui-web-component 0.36.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +140 -1
- package/README.md +9 -5
- package/dist/ag-ui-web-component.bundle.js +81 -81
- package/dist/ag-ui-web-component.bundle.js.map +4 -4
- package/dist/core/activity_registration.d.ts +19 -0
- package/dist/core/activity_registration.d.ts.map +1 -0
- package/dist/core/activity_renderer.d.ts +20 -0
- package/dist/core/activity_renderer.d.ts.map +1 -0
- package/dist/core/ag_ui_chat.d.ts +6 -126
- package/dist/core/ag_ui_chat.d.ts.map +1 -1
- package/dist/core/events/attachments_detail.d.ts +9 -0
- package/dist/core/events/attachments_detail.d.ts.map +1 -0
- package/dist/core/events/custom_agent_detail.d.ts +8 -0
- package/dist/core/events/custom_agent_detail.d.ts.map +1 -0
- package/dist/core/events/feedback_detail.d.ts +7 -0
- package/dist/core/events/feedback_detail.d.ts.map +1 -0
- package/dist/core/events/invalidate_detail.d.ts +16 -0
- package/dist/core/events/invalidate_detail.d.ts.map +1 -0
- package/dist/core/events/run_finished_detail.d.ts +22 -0
- package/dist/core/events/run_finished_detail.d.ts.map +1 -0
- package/dist/core/events/state_detail.d.ts +5 -0
- package/dist/core/events/state_detail.d.ts.map +1 -0
- package/dist/core/events/submit_detail.d.ts +8 -0
- package/dist/core/events/submit_detail.d.ts.map +1 -0
- package/dist/core/events/toggle_detail.d.ts +5 -0
- package/dist/core/events/toggle_detail.d.ts.map +1 -0
- package/dist/core/events/tool_run.d.ts +11 -0
- package/dist/core/events/tool_run.d.ts.map +1 -0
- package/dist/core/events/unread_detail.d.ts +5 -0
- package/dist/core/events/unread_detail.d.ts.map +1 -0
- package/dist/core/message_role.d.ts +4 -0
- package/dist/core/message_role.d.ts.map +1 -0
- package/dist/core/tool_outcome.d.ts +1 -1
- package/dist/core/tool_outcome.d.ts.map +1 -1
- package/dist/index.d.ts +30 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6242 -6178
- package/dist/index.js.map +4 -4
- package/dist/ui/charts/chart_block.d.ts.map +1 -0
- package/dist/ui/charts/chart_spec_from.d.ts.map +1 -0
- package/dist/ui/{chart_tool.d.ts → charts/chart_tool.d.ts} +1 -1
- package/dist/ui/charts/chart_tool.d.ts.map +1 -0
- package/dist/ui/{attachment_tray.d.ts → composer/attachment_tray.d.ts} +3 -3
- package/dist/ui/composer/attachment_tray.d.ts.map +1 -0
- package/dist/ui/{skills_menu.d.ts → composer/skills_menu.d.ts} +1 -1
- package/dist/ui/composer/skills_menu.d.ts.map +1 -0
- package/dist/ui/{voice_input.d.ts → composer/voice_input.d.ts} +2 -2
- package/dist/ui/composer/voice_input.d.ts.map +1 -0
- package/dist/ui/{attach_copy_buttons.d.ts → excerpts/attach_copy_buttons.d.ts} +1 -1
- package/dist/ui/excerpts/attach_copy_buttons.d.ts.map +1 -0
- package/dist/ui/excerpts/copy_payload.d.ts.map +1 -0
- package/dist/ui/excerpts/page_quote_offer.d.ts.map +1 -0
- package/dist/ui/excerpts/quote_selection.d.ts.map +1 -0
- package/dist/ui/{checkpoint_menu.d.ts → history/checkpoint_menu.d.ts} +2 -2
- package/dist/ui/history/checkpoint_menu.d.ts.map +1 -0
- package/dist/ui/{relative_time.d.ts → history/relative_time.d.ts} +1 -1
- package/dist/ui/history/relative_time.d.ts.map +1 -0
- package/dist/ui/{thread_drawer.d.ts → history/thread_drawer.d.ts} +2 -2
- package/dist/ui/history/thread_drawer.d.ts.map +1 -0
- package/dist/ui/{approval_card.d.ts → interrupts/approval_card.d.ts} +1 -1
- package/dist/ui/interrupts/approval_card.d.ts.map +1 -0
- package/dist/ui/{confirmation_card.d.ts → interrupts/confirmation_card.d.ts} +1 -1
- package/dist/ui/interrupts/confirmation_card.d.ts.map +1 -0
- package/dist/ui/{question_card.d.ts → interrupts/question_card.d.ts} +1 -1
- package/dist/ui/interrupts/question_card.d.ts.map +1 -0
- package/dist/ui/placement/clamp_launcher.d.ts.map +1 -0
- package/dist/ui/placement/clamp_panel.d.ts.map +1 -0
- package/dist/ui/placement/launcher_drag.d.ts.map +1 -0
- package/dist/ui/placement/launcher_placement.d.ts.map +1 -0
- package/dist/ui/placement/panel_drag.d.ts.map +1 -0
- package/dist/ui/placement/place_widget.d.ts.map +1 -0
- package/dist/ui/placement/resize_handle.d.ts.map +1 -0
- package/dist/ui/progress/prettify_tool_name.d.ts.map +1 -0
- package/dist/ui/progress/run_notice.d.ts.map +1 -0
- package/dist/ui/{subagent_panel.d.ts → progress/subagent_panel.d.ts} +2 -2
- package/dist/ui/progress/subagent_panel.d.ts.map +1 -0
- package/dist/ui/progress/subagent_update.d.ts.map +1 -0
- package/dist/ui/{thoughts_block.d.ts → progress/thoughts_block.d.ts} +1 -1
- package/dist/ui/progress/thoughts_block.d.ts.map +1 -0
- package/dist/ui/{tool_call_card.d.ts → progress/tool_call_card.d.ts} +2 -2
- package/dist/ui/progress/tool_call_card.d.ts.map +1 -0
- package/dist/ui/{attachment_chips.d.ts → transcript/attachment_chips.d.ts} +1 -1
- package/dist/ui/transcript/attachment_chips.d.ts.map +1 -0
- package/dist/ui/{message_actions.d.ts → transcript/message_actions.d.ts} +1 -1
- package/dist/ui/transcript/message_actions.d.ts.map +1 -0
- package/dist/ui/transcript/render_markdown.d.ts.map +1 -0
- package/dist/ui/transcript/reveal_words.d.ts.map +1 -0
- package/dist/ui/transcript/stick_to_bottom.d.ts.map +1 -0
- package/dist/ui/{suggestion_chips.d.ts → transcript/suggestion_chips.d.ts} +1 -1
- package/dist/ui/transcript/suggestion_chips.d.ts.map +1 -0
- package/dist/ui/ui_strings.d.ts +4 -0
- package/dist/ui/ui_strings.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/core/activity_registration.ts +19 -0
- package/src/core/activity_renderer.ts +19 -0
- package/src/core/ag_ui_chat.ts +202 -211
- package/src/core/events/attachments_detail.ts +9 -0
- package/src/core/events/custom_agent_detail.ts +7 -0
- package/src/core/events/feedback_detail.ts +6 -0
- package/src/core/events/invalidate_detail.ts +15 -0
- package/src/core/events/run_finished_detail.ts +22 -0
- package/src/core/events/state_detail.ts +4 -0
- package/src/core/events/submit_detail.ts +8 -0
- package/src/core/events/toggle_detail.ts +4 -0
- package/src/core/events/tool_run.ts +10 -0
- package/src/core/events/unread_detail.ts +4 -0
- package/src/core/message_role.ts +4 -0
- package/src/core/tool_outcome.ts +1 -1
- package/src/index.ts +52 -54
- package/src/ui/{chart_tool.ts → charts/chart_tool.ts} +1 -1
- package/src/ui/{attachment_tray.ts → composer/attachment_tray.ts} +5 -5
- package/src/ui/{skills_menu.ts → composer/skills_menu.ts} +1 -1
- package/src/ui/{voice_input.ts → composer/voice_input.ts} +3 -3
- package/src/ui/{attach_copy_buttons.ts → excerpts/attach_copy_buttons.ts} +1 -1
- package/src/ui/{checkpoint_menu.ts → history/checkpoint_menu.ts} +2 -2
- package/src/ui/{relative_time.ts → history/relative_time.ts} +1 -1
- package/src/ui/{thread_drawer.ts → history/thread_drawer.ts} +2 -2
- package/src/ui/{approval_card.ts → interrupts/approval_card.ts} +1 -1
- package/src/ui/{confirmation_card.ts → interrupts/confirmation_card.ts} +1 -1
- package/src/ui/{question_card.ts → interrupts/question_card.ts} +1 -1
- package/src/ui/{clamp_launcher.ts → placement/clamp_launcher.ts} +1 -1
- package/src/ui/{clamp_panel.ts → placement/clamp_panel.ts} +1 -1
- package/src/ui/{launcher_placement.ts → placement/launcher_placement.ts} +1 -1
- package/src/ui/{subagent_panel.ts → progress/subagent_panel.ts} +2 -2
- package/src/ui/{subagent_update.ts → progress/subagent_update.ts} +1 -1
- package/src/ui/{thoughts_block.ts → progress/thoughts_block.ts} +1 -1
- package/src/ui/{tool_call_card.ts → progress/tool_call_card.ts} +2 -2
- package/src/ui/{attachment_chips.ts → transcript/attachment_chips.ts} +2 -2
- package/src/ui/{message_actions.ts → transcript/message_actions.ts} +2 -2
- package/src/ui/{suggestion_chips.ts → transcript/suggestion_chips.ts} +1 -1
- package/src/ui/ui_strings.ts +6 -0
- package/src/version.ts +1 -1
- package/dist/ui/approval_card.d.ts.map +0 -1
- package/dist/ui/attach_copy_buttons.d.ts.map +0 -1
- package/dist/ui/attachment_chips.d.ts.map +0 -1
- package/dist/ui/attachment_tray.d.ts.map +0 -1
- package/dist/ui/chart_block.d.ts.map +0 -1
- package/dist/ui/chart_spec_from.d.ts.map +0 -1
- package/dist/ui/chart_tool.d.ts.map +0 -1
- package/dist/ui/checkpoint_menu.d.ts.map +0 -1
- package/dist/ui/clamp_launcher.d.ts.map +0 -1
- package/dist/ui/clamp_panel.d.ts.map +0 -1
- package/dist/ui/confirmation_card.d.ts.map +0 -1
- package/dist/ui/copy_payload.d.ts.map +0 -1
- package/dist/ui/launcher_drag.d.ts.map +0 -1
- package/dist/ui/launcher_placement.d.ts.map +0 -1
- package/dist/ui/message_actions.d.ts.map +0 -1
- package/dist/ui/page_quote_offer.d.ts.map +0 -1
- package/dist/ui/panel_drag.d.ts.map +0 -1
- package/dist/ui/place_widget.d.ts.map +0 -1
- package/dist/ui/prettify_tool_name.d.ts.map +0 -1
- package/dist/ui/question_card.d.ts.map +0 -1
- package/dist/ui/quote_selection.d.ts.map +0 -1
- package/dist/ui/relative_time.d.ts.map +0 -1
- package/dist/ui/render_markdown.d.ts.map +0 -1
- package/dist/ui/resize_handle.d.ts.map +0 -1
- package/dist/ui/reveal_words.d.ts.map +0 -1
- package/dist/ui/run_notice.d.ts.map +0 -1
- package/dist/ui/skills_menu.d.ts.map +0 -1
- package/dist/ui/stick_to_bottom.d.ts.map +0 -1
- package/dist/ui/subagent_panel.d.ts.map +0 -1
- package/dist/ui/subagent_update.d.ts.map +0 -1
- package/dist/ui/suggestion_chips.d.ts.map +0 -1
- package/dist/ui/thoughts_block.d.ts.map +0 -1
- package/dist/ui/thread_drawer.d.ts.map +0 -1
- package/dist/ui/tool_call_card.d.ts.map +0 -1
- package/dist/ui/voice_input.d.ts.map +0 -1
- /package/dist/ui/{chart_block.d.ts → charts/chart_block.d.ts} +0 -0
- /package/dist/ui/{chart_spec_from.d.ts → charts/chart_spec_from.d.ts} +0 -0
- /package/dist/ui/{copy_payload.d.ts → excerpts/copy_payload.d.ts} +0 -0
- /package/dist/ui/{page_quote_offer.d.ts → excerpts/page_quote_offer.d.ts} +0 -0
- /package/dist/ui/{quote_selection.d.ts → excerpts/quote_selection.d.ts} +0 -0
- /package/dist/ui/{clamp_launcher.d.ts → placement/clamp_launcher.d.ts} +0 -0
- /package/dist/ui/{clamp_panel.d.ts → placement/clamp_panel.d.ts} +0 -0
- /package/dist/ui/{launcher_drag.d.ts → placement/launcher_drag.d.ts} +0 -0
- /package/dist/ui/{launcher_placement.d.ts → placement/launcher_placement.d.ts} +0 -0
- /package/dist/ui/{panel_drag.d.ts → placement/panel_drag.d.ts} +0 -0
- /package/dist/ui/{place_widget.d.ts → placement/place_widget.d.ts} +0 -0
- /package/dist/ui/{resize_handle.d.ts → placement/resize_handle.d.ts} +0 -0
- /package/dist/ui/{prettify_tool_name.d.ts → progress/prettify_tool_name.d.ts} +0 -0
- /package/dist/ui/{run_notice.d.ts → progress/run_notice.d.ts} +0 -0
- /package/dist/ui/{subagent_update.d.ts → progress/subagent_update.d.ts} +0 -0
- /package/dist/ui/{render_markdown.d.ts → transcript/render_markdown.d.ts} +0 -0
- /package/dist/ui/{reveal_words.d.ts → transcript/reveal_words.d.ts} +0 -0
- /package/dist/ui/{stick_to_bottom.d.ts → transcript/stick_to_bottom.d.ts} +0 -0
- /package/src/ui/{chart_block.ts → charts/chart_block.ts} +0 -0
- /package/src/ui/{chart_spec_from.ts → charts/chart_spec_from.ts} +0 -0
- /package/src/ui/{copy_payload.ts → excerpts/copy_payload.ts} +0 -0
- /package/src/ui/{page_quote_offer.ts → excerpts/page_quote_offer.ts} +0 -0
- /package/src/ui/{quote_selection.ts → excerpts/quote_selection.ts} +0 -0
- /package/src/ui/{launcher_drag.ts → placement/launcher_drag.ts} +0 -0
- /package/src/ui/{panel_drag.ts → placement/panel_drag.ts} +0 -0
- /package/src/ui/{place_widget.ts → placement/place_widget.ts} +0 -0
- /package/src/ui/{resize_handle.ts → placement/resize_handle.ts} +0 -0
- /package/src/ui/{prettify_tool_name.ts → progress/prettify_tool_name.ts} +0 -0
- /package/src/ui/{run_notice.ts → progress/run_notice.ts} +0 -0
- /package/src/ui/{render_markdown.ts → transcript/render_markdown.ts} +0 -0
- /package/src/ui/{reveal_words.ts → transcript/reveal_words.ts} +0 -0
- /package/src/ui/{stick_to_bottom.ts → transcript/stick_to_bottom.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,143 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.38.0] — 2026-09-14
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`src/ui/` is grouped by concern instead of being 37 modules in one flat
|
|
15
|
+
directory.** A flat directory that size is a table of contents nobody reads: the
|
|
16
|
+
placement arithmetic, the inline cards, the chart renderer and the clipboard
|
|
17
|
+
payload builder were neighbours only in the sense that all of them draw
|
|
18
|
+
something. They are now eight directories -- `placement/`, `transcript/`,
|
|
19
|
+
`progress/`, `excerpts/`, `charts/`, `interrupts/`, `history/` and `composer/`
|
|
20
|
+
-- with `styles.ts` and `ui_strings.ts` left at the group root because every one
|
|
21
|
+
of the eight reads them.
|
|
22
|
+
|
|
23
|
+
The split is by the question a module answers, never by the kind of export it
|
|
24
|
+
has. `interrupts/` holds the approval, confirmation and question cards because
|
|
25
|
+
all three pause a run to ask the user something; `tool_call_card.ts` is also a
|
|
26
|
+
card and sits in `progress/` instead, because it reports work rather than asking
|
|
27
|
+
for a decision. A `cards/` directory would have held all four and said nothing
|
|
28
|
+
about any of them. `CLAUDE.md` now states the rule, since the eight structural
|
|
29
|
+
rules it had all governed a file and none governed a directory.
|
|
30
|
+
|
|
31
|
+
Moves only. No module's contents changed, and the published surface is
|
|
32
|
+
unchanged: the same 92 runtime exports, the same 173 declared names, and every
|
|
33
|
+
emitted declaration line identical to the release before it.
|
|
34
|
+
|
|
35
|
+
- **The element's event detail shapes are their own modules.** `ag_ui_chat.ts`
|
|
36
|
+
declared thirteen exported types alongside the `AgUiChat` class, so a consumer
|
|
37
|
+
looking up `RunFinishedDetail` opened a file of several thousand lines to read
|
|
38
|
+
twenty. The nine `detail` shapes and the `ToolRun` one of them lists are now in
|
|
39
|
+
`src/core/events/`, and `MessageRole`, `ActivityRenderer` and
|
|
40
|
+
`ActivityRegistration` at the `src/core/` root -- one symbol per file, like
|
|
41
|
+
everything else in the package.
|
|
42
|
+
|
|
43
|
+
The file shrank by only about a hundred lines, which is not the point: the point
|
|
44
|
+
is that each of these thirteen now has an import path a reader can go to, and
|
|
45
|
+
the element's contract with its host is no longer interleaved with the
|
|
46
|
+
implementation of it. Consumers importing from the package entry point see no
|
|
47
|
+
difference; the names and the shapes are the same.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- **A text message carrying no content no longer draws an empty bubble.**
|
|
52
|
+
`TOOL_CALL_START` names the assistant message a call belongs to, and a
|
|
53
|
+
response whose first part is a tool call has no text to open that message
|
|
54
|
+
with. pydantic-ai 2.37 began opening and closing an empty message there so
|
|
55
|
+
that `parentMessageId` names one the stream actually announced -- before that
|
|
56
|
+
it named a message no event carried, which a client could only answer by
|
|
57
|
+
inventing an id matching nothing echoed back. The envelope is a correctness
|
|
58
|
+
fix on the server side, it is legal AG-UI, and any server may send one.
|
|
59
|
+
|
|
60
|
+
Drawing it put an empty bubble above **every** tool call. Measured in
|
|
61
|
+
Chromium it was 16px tall and laid out between the question and the card, so
|
|
62
|
+
it read as a gap rather than as nothing.
|
|
63
|
+
|
|
64
|
+
The sharper half is that `#renderHistoricMessage` has always declined to draw
|
|
65
|
+
a bubble for an assistant message with no text, so the transcript during a run
|
|
66
|
+
disagreed with the same conversation after a reload. This is the live path
|
|
67
|
+
adopting a rule the restore path already stated, and the test asserts the two
|
|
68
|
+
against each other rather than against separate literals, so they cannot drift
|
|
69
|
+
apart again.
|
|
70
|
+
|
|
71
|
+
The guard tests the buffer for emptiness rather than blankness on purpose:
|
|
72
|
+
whitespace is content a server chose to send, and trimming would make the
|
|
73
|
+
client the judge of what counts as an answer.
|
|
74
|
+
|
|
75
|
+
- **`StateDetail` was documented as if it were `FeedbackDetail`.** The two
|
|
76
|
+
interfaces sat next to each other and `StateDetail`'s doc comment had drifted
|
|
77
|
+
above `FeedbackDetail`'s own, so `FeedbackDetail` carried two comments,
|
|
78
|
+
`StateDetail` carried none, and an editor offered the wrong one for both. It
|
|
79
|
+
survived because a stray comment is invisible in a file long enough to hold both
|
|
80
|
+
declarations screens apart from their reader; putting one symbol in one file is
|
|
81
|
+
what made it obvious. Nothing about either type changed.
|
|
82
|
+
|
|
83
|
+
## [0.37.0] — 2026-09-06
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- **The README attribute gate only checked one direction, so it could not see its
|
|
88
|
+
own weakening.** It asked whether every attribute the element *reads* is
|
|
89
|
+
documented; an attribute falling out of the scanned set shrinks the set being
|
|
90
|
+
filtered, so the answer stays empty and nothing goes red. Adding a
|
|
91
|
+
variable-named read and raising the declared count -- without teaching the
|
|
92
|
+
matcher the new helper -- dropped two attributes out of the scan and the whole
|
|
93
|
+
suite still passed. Verified by doing exactly that: 1651 tests green.
|
|
94
|
+
|
|
95
|
+
There is now a reverse check. It refuses a documented row that nothing
|
|
96
|
+
consumes, and "consumes" had to be defined carefully: four documented
|
|
97
|
+
attributes (`density`, `data-side`, `data-small-viewport`, `data-answer-well`)
|
|
98
|
+
are host-set and read by the stylesheet alone through `:host([...])`, never by
|
|
99
|
+
any `getAttribute` call. A first version that looked only at JavaScript called
|
|
100
|
+
all four stale, which would have deleted four working rows.
|
|
101
|
+
|
|
102
|
+
- **A message sent with no `endpoint` disappeared without a word.** The send path
|
|
103
|
+
returned early when the attribute was unset, and by then the two visible halves
|
|
104
|
+
of a successful send had already happened: the user's bubble was in the
|
|
105
|
+
transcript and `ag-ui-submit` had been dispatched. So the composer cleared, the
|
|
106
|
+
message appeared to go, Send never became Stop, no request was made, and
|
|
107
|
+
nothing at all reached the console. What that looks like is an agent ignoring
|
|
108
|
+
you, and what it gets reported as is a server that never answers.
|
|
109
|
+
|
|
110
|
+
The refusal stays -- there is nowhere to send to, and an agent built on an
|
|
111
|
+
empty endpoint would post to the current page -- but both audiences are now
|
|
112
|
+
told, because they need different things. A `console.error` names the missing
|
|
113
|
+
attribute and what to set it to, since a missing attribute is the page's
|
|
114
|
+
mistake and the page's author is not reading the transcript. A `not-connected`
|
|
115
|
+
run notice tells the reader their message went nowhere, because the honest
|
|
116
|
+
alternative to one muted line is an indefinite wait in front of their own
|
|
117
|
+
question. Both fire on every attempt rather than once: a one-shot report is the
|
|
118
|
+
same silence again for the second try, which is the try a puzzled user makes.
|
|
119
|
+
|
|
120
|
+
- **Picking a run to continue with an empty composer closed the panel over
|
|
121
|
+
nothing.** A continuation sends only the new turn -- the server supplies
|
|
122
|
+
everything before it from the snapshot -- so with nothing typed there was
|
|
123
|
+
nothing to send, and the handler returned. The row's button had already
|
|
124
|
+
dismissed the panel by then, so the widget visibly reacted and then did
|
|
125
|
+
nothing, which reads as a resume that was attempted and lost rather than one
|
|
126
|
+
that never started. It now says what the composer still needs, above the input
|
|
127
|
+
and cleared by the next keystroke, and puts the caret there.
|
|
128
|
+
|
|
129
|
+
- **A `data-strings` or `data-skills` value that would not parse was discarded
|
|
130
|
+
without a word.** Quoting JSON inside an HTML attribute is fiddly, and the
|
|
131
|
+
result of getting it wrong was indistinguishable from never having set the
|
|
132
|
+
attribute: the strings stayed English, or the palette came up empty, with
|
|
133
|
+
nothing anywhere naming the attribute. Both now warn on the console, naming
|
|
134
|
+
which one and what to check -- the answer `data-paste-attach` already gave for
|
|
135
|
+
a value it could not read. Console only: a page author's typo is not the
|
|
136
|
+
reader's business, nothing the reader did was refused, and the widget is still
|
|
137
|
+
perfectly usable without the override.
|
|
138
|
+
|
|
139
|
+
### Changed
|
|
140
|
+
|
|
141
|
+
- The composer hint above the input is no longer only a skills affordance: it
|
|
142
|
+
also carries the message above. Its `skill-hint` `part` is unchanged, since
|
|
143
|
+
renaming a part is breaking and a second hint in the same slot would be worse
|
|
144
|
+
than one whose name is older than its job. Two new `UiStrings` keys,
|
|
145
|
+
`notConnected` and `continueNeedsTurn`, are overridable like every other.
|
|
146
|
+
|
|
10
147
|
## [0.36.0] — 2026-09-05
|
|
11
148
|
|
|
12
149
|
### Added
|
|
@@ -3477,7 +3614,9 @@ hosts that both arrange the page the way it expects.
|
|
|
3477
3614
|
### Notes
|
|
3478
3615
|
- First release — exercising the automated npm OIDC publish pipeline end-to-end.
|
|
3479
3616
|
|
|
3480
|
-
[Unreleased]: https://github.com/Artui/ag-ui-web-component/compare/v0.
|
|
3617
|
+
[Unreleased]: https://github.com/Artui/ag-ui-web-component/compare/v0.38.0...HEAD
|
|
3618
|
+
[0.38.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.37.0...v0.38.0
|
|
3619
|
+
[0.37.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.36.0...v0.37.0
|
|
3481
3620
|
[0.36.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.35.2...v0.36.0
|
|
3482
3621
|
[0.35.2]: https://github.com/Artui/ag-ui-web-component/compare/v0.35.1...v0.35.2
|
|
3483
3622
|
[0.35.1]: https://github.com/Artui/ag-ui-web-component/compare/v0.35.0...v0.35.1
|
package/README.md
CHANGED
|
@@ -173,14 +173,14 @@ another origin, add `credentials="include"` too; see
|
|
|
173
173
|
|
|
174
174
|
| Attribute | Property | Notes |
|
|
175
175
|
| --- | --- | --- |
|
|
176
|
-
| `endpoint` | `endpoint` | The AG-UI endpoint URL. Required to send. Reflecting getter + setter. |
|
|
176
|
+
| `endpoint` | `endpoint` | The AG-UI endpoint URL. Required to send: without it a send is refused with a `console.error` naming the missing attribute and a `not-connected` run notice in the transcript. Reflecting getter + setter. |
|
|
177
177
|
| `credentials` | `credentials` | Cookie policy for every request the element makes: `omit` / `same-origin` / `include`. Unset means the browser default (`same-origin`), which sends no cookies cross-origin. See [Authenticating requests](#authenticating-requests). |
|
|
178
178
|
| `title-text` | — | Header label; defaults to `"Assistant"`. Live: writing it after the element connects re-labels the header. See [When each attribute is read](#when-each-attribute-is-read). |
|
|
179
179
|
| `data-tool-display` | `toolDisplay` | Tool-call card detail: `inline` / `minimal` / `compact` / `full` (default `full`). |
|
|
180
180
|
| `data-text-animation` | — | Incoming-text reveal: `none` (default) / `fade` / `word`. |
|
|
181
181
|
| `data-prompt-chips` | — | Present (bare, or any value but `"false"`) to surface skills as chips. |
|
|
182
182
|
| `data-slash-commands` | — | Present (bare, or any value but `"false"`) to enable the `/`-command palette. |
|
|
183
|
-
| `data-skills` | — | Inline JSON skill catalog. |
|
|
183
|
+
| `data-skills` | — | Inline JSON skill catalog. A value that will not parse is ignored and reported on the console, rather than reading as an empty catalog. |
|
|
184
184
|
| `data-skills-url` | — | URL of a JSON skill catalog (fetched with the element's headers and cookie policy). |
|
|
185
185
|
| `data-tools-url` | — | URL of a server tool-label catalog (`[{ name, summary, description? }]`), fetched with the element's headers and cookie policy; labels tool-call cards for server-side tools. |
|
|
186
186
|
| `user-key` | `userKey` | Who the stored conversation belongs to — any string identifying the signed-in principal. Joins the storage namespace, and **changing it purges what the previous principal left behind**. Live (not connect-time): a logout is the host's to announce. See [Who the stored conversation belongs to](#who-the-stored-conversation-belongs-to-user-key). |
|
|
@@ -192,7 +192,7 @@ another origin, add `credentials="include"` too; see
|
|
|
192
192
|
| `data-attachment-max-bytes` | — | Client-side upload size cap in bytes (default 10 MiB; `0` disables). The server stays authoritative. |
|
|
193
193
|
| `data-transcribe-url` | — | URL of the voice-transcription endpoint (django-ag-ui's `TranscribeView`); reveals the composer's mic button. See [Voice input](#voice-input). |
|
|
194
194
|
| `data-theme-toggle` | — | Boolean: show a built-in header light⇄dark toggle (persists per tab). Off by default. See [Theme toggle](#theme-toggle). |
|
|
195
|
-
| `data-strings` | `strings` | Partial JSON override of the UI string table (localization). The property wins key-by-key over the attribute;
|
|
195
|
+
| `data-strings` | `strings` | Partial JSON override of the UI string table (localization). The property wins key-by-key over the attribute; a value that will not parse is ignored and reported on the console. See [Internationalization](#internationalization-i18n). |
|
|
196
196
|
| `data-icon-url` | — | Header (and launcher) icon image URL. A slotted `slot="icon"` wins; see [Header & launcher icon](#header-and-launcher-icon). |
|
|
197
197
|
| `data-launcher-icon-url` | — | Icon image URL for the collapsed launcher only, when it should differ from the header's. Falls back to `data-icon-url`; a slotted `slot="launcher"` wins over both. |
|
|
198
198
|
| `data-unread-badge` | — | **On by default.** `="false"` hides the launcher's unread badge; the count and the `ag-ui-unread` event keep running. See [Collapsing to the launcher](#collapsing-to-the-launcher). |
|
|
@@ -2312,6 +2312,10 @@ Type the next turn in the composer, then pick a row:
|
|
|
2312
2312
|
|
|
2313
2313
|
Both send to the matching server endpoint and stream into the same transcript.
|
|
2314
2314
|
|
|
2315
|
+
Picking a row with an empty composer says so above the input and puts the caret
|
|
2316
|
+
there, rather than closing the panel over nothing: a continuation sends **only**
|
|
2317
|
+
the new turn, so with nothing typed there is nothing to send.
|
|
2318
|
+
|
|
2315
2319
|
### One URL, three endpoints
|
|
2316
2320
|
|
|
2317
2321
|
`data-runs-url` is the only thing to configure. `resume/<id>/` and `fork/<id>/`
|
|
@@ -2873,7 +2877,7 @@ component sets, so a new one cannot ship undocumented.
|
|
|
2873
2877
|
| Follow-up suggestions | `suggestions`, `suggestion-chip` |
|
|
2874
2878
|
| Message actions | `message-actions`, `message-action` (plus `message-action-retry`, `message-action-copy`, `message-action-up`, `message-action-down`), and the icon holder inside each: `message-action-icon` (plus `message-action-icon-retry`, `message-action-icon-copy`, `message-action-icon-up`, `message-action-icon-down`) |
|
|
2875
2879
|
| Queued messages | `queued`, `queued-chip` |
|
|
2876
|
-
| Run notices | `run-notice` (plus `run-notice-interrupted`, `run-notice-attachment-pending`, `run-notice-compaction`, `run-notice-skill`, `run-notice-history-replaced`, `run-notice-chart-undrawable`, `run-notice-surface`), `run-notice-icon`, `run-notice-text`, `run-notice-undo` |
|
|
2880
|
+
| Run notices | `run-notice` (plus `run-notice-interrupted`, `run-notice-attachment-pending`, `run-notice-compaction`, `run-notice-skill`, `run-notice-history-replaced`, `run-notice-chart-undrawable`, `run-notice-surface`, `run-notice-not-connected`), `run-notice-icon`, `run-notice-text`, `run-notice-undo` |
|
|
2877
2881
|
| Tool cards | `tool-card`, `tool-card-head`, `tool-card-icon`, `tool-card-name`, `tool-card-status`, `tool-card-decision`, `tool-card-toggle`, `tool-card-body`, `tool-card-section` (plus `tool-card-args-section`, `tool-card-result-section`), `tool-card-section-label` (plus `tool-card-args-label`, `tool-card-result-label`), `tool-card-args`, `tool-card-result`, `tool-card-approval`, `tool-card-subagent` |
|
|
2878
2882
|
| Delegated sub-agents | `subagent`, `subagent-row`, `subagent-icon`, `subagent-status`, `subagent-steps`, `subagent-step`, `subagent-step-icon`, `subagent-step-name` |
|
|
2879
2883
|
| Client-side confirmation | `confirm`, `confirm-body`, `confirm-args`, `confirm-actions`, `confirm-button` (plus `confirm-confirm`, `confirm-cancel`, `confirm-always`) |
|
|
@@ -2881,7 +2885,7 @@ component sets, so a new one cannot ship undocumented.
|
|
|
2881
2885
|
| Typed question | `question`, `question-body`, `question-options`, `question-choice`, `question-choice-text`, `question-radio`, `question-input`, `question-actions`, `question-button` |
|
|
2882
2886
|
| Composer | `composer`, `composer-surface`, `composer-tools`, `input`, `send`, `attach-button`, `voice-button` |
|
|
2883
2887
|
| Attachments | `attachment-tray`, `attachment-chips` (the read-only chips on sent bubbles), and the shared chip parts `attachment-chip`, `attachment-chip-icon`, `attachment-chip-name`, `attachment-chip-size`, `attachment-chip-bar`, `attachment-chip-bar-fill`, `attachment-chip-retry`, `attachment-chip-remove` |
|
|
2884
|
-
| Skills | `skill-chips`, `skill-chip`, `skill-palette`, `skill-item`, `skill-item-title`, `skill-item-desc`, `skill-item-token`, `skill-hint` (the missing
|
|
2888
|
+
| Skills | `skill-chips`, `skill-chip`, `skill-palette`, `skill-item`, `skill-item-title`, `skill-item-desc`, `skill-item-token`, `skill-hint` (the composer hint: a skill’s missing placeholders, and a run continuation with nothing typed) |
|
|
2885
2889
|
| Thread drawer | `drawer`, `drawer-backdrop`, `drawer-panel`, `drawer-header`, `drawer-title`, `drawer-new`, `drawer-close`, `drawer-filter`, `drawer-list`, `drawer-empty`, `drawer-row`, `drawer-row-select`, `drawer-row-title`, `drawer-row-time`, `drawer-row-preview`, `drawer-row-actions`, `drawer-row-rename`, `drawer-row-delete`, `drawer-rename-input`, `drawer-confirm`, `drawer-confirm-label`, `drawer-confirm-yes`, `drawer-confirm-no` |
|
|
2886
2890
|
| Charts | `chart-block`, `chart-title`, `chart-legend` |
|
|
2887
2891
|
| Checkpoints panel | `checkpoints`, `checkpoints-header`, `checkpoints-title`, `checkpoints-list`, `checkpoints-empty`, `checkpoint-row`, `checkpoint-label`, `checkpoint-time`, `checkpoint-id`, `checkpoint-branch`, `checkpoint-action` (plus `checkpoint-resume`, `checkpoint-fork`) |
|