@artooi/ag-ui-web-component 0.13.0 → 0.14.1
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 +71 -1
- package/README.md +32 -0
- package/dist/ag-ui-web-component.bundle.js +57 -31
- package/dist/ag-ui-web-component.bundle.js.map +4 -4
- package/dist/constants.d.ts +16 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/core/ag_ui_chat.d.ts.map +1 -1
- package/dist/core/agui_client.d.ts +6 -0
- package/dist/core/agui_client.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +118 -3
- package/dist/index.js.map +4 -4
- package/dist/ui/render_markdown.d.ts.map +1 -1
- package/dist/ui/run_notice.d.ts +12 -0
- package/dist/ui/run_notice.d.ts.map +1 -0
- package/dist/ui/styles.d.ts +1 -1
- package/dist/ui/styles.d.ts.map +1 -1
- package/dist/ui/ui_strings.d.ts +4 -0
- package/dist/ui/ui_strings.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/constants.ts +18 -0
- package/src/core/ag_ui_chat.ts +92 -2
- package/src/core/agui_client.ts +9 -0
- package/src/index.ts +2 -0
- package/src/ui/render_markdown.ts +10 -0
- package/src/ui/run_notice.ts +35 -0
- package/src/ui/styles.ts +26 -0
- package/src/ui/ui_strings.ts +6 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,74 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.14.1] — 2026-08-07
|
|
11
|
+
|
|
12
|
+
### Security
|
|
13
|
+
|
|
14
|
+
- **Five advisories closed**: `vite` → 7.3.6 (HIGH + MEDIUM), `postcss` → 8.5.26
|
|
15
|
+
(HIGH), `brace-expansion` → 2.1.4 (HIGH), `esbuild` → 0.28.1 (LOW). All four
|
|
16
|
+
are transitive, so they are pinned through `overrides` — there is no direct
|
|
17
|
+
dependency to bump.
|
|
18
|
+
|
|
19
|
+
⚠ **`overrides` now live in `pnpm-workspace.yaml`**, not the `pnpm` field in
|
|
20
|
+
`package.json`; pnpm 11 ignores the latter and only warns. And an override
|
|
21
|
+
must be scoped to its major — an unbounded `brace-expansion: ">=2.1.2"`
|
|
22
|
+
resolves to 5.x, whose export shape `minimatch` cannot call, breaking `glob`
|
|
23
|
+
at runtime.
|
|
24
|
+
|
|
25
|
+
- ⛔ **Four `dompurify` advisories are knowingly left open** (three LOW, one
|
|
26
|
+
MEDIUM), and the dependency is now pinned to **exactly `3.4.7`** rather than
|
|
27
|
+
`^3.4.7`.
|
|
28
|
+
|
|
29
|
+
3.4.8 through 3.4.13 **mis-sanitise under happy-dom**: `<script>` and `<img>`
|
|
30
|
+
pass straight through, which `tests/render_markdown.test.ts` catches. Verified
|
|
31
|
+
again against dompurify 3.4.13 with happy-dom 20.11.1 — moving the test DOM
|
|
32
|
+
forward does not fix it.
|
|
33
|
+
|
|
34
|
+
⭐ **The pin was previously a caret range**, so the hold existed only in the
|
|
35
|
+
lockfile and nowhere in the manifest, undocumented — a `pnpm update` would
|
|
36
|
+
have silently disabled sanitisation. It is now exact, explained at the import
|
|
37
|
+
site in `src/ui/render_markdown.ts`, and recorded in `CLAUDE.md`.
|
|
38
|
+
|
|
39
|
+
The trade is deliberate: those advisories describe narrow bypasses, while
|
|
40
|
+
taking them costs *all* sanitisation under the only DOM the suite can run in.
|
|
41
|
+
`tests/render_markdown.test.ts` is the acceptance check for lifting it.
|
|
42
|
+
|
|
43
|
+
## [0.14.0] — 2026-07-28
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **Run notices — a muted inline annotation for things the *run* did**, as
|
|
48
|
+
opposed to work the user asked for. Styleable via the `run-notice`,
|
|
49
|
+
`run-notice-icon` and `run-notice-text` parts; announced with `role="status"`
|
|
50
|
+
so a screen reader hears it politely rather than mid-sentence.
|
|
51
|
+
- **Compaction.** A standard AG-UI `ACTIVITY_SNAPSHOT` with
|
|
52
|
+
`activityType: "compaction"` (emitted by django-ag-ui 0.26+ when a
|
|
53
|
+
compaction capability trimmed the history) renders as "earlier turns
|
|
54
|
+
condensed", with the count. Activity events of any other type pass through
|
|
55
|
+
untouched, so another producer on that channel isn't mistaken for one.
|
|
56
|
+
- **Agent skills.** There is no dedicated event: loading a deferred capability
|
|
57
|
+
*is* an ordinary `load_capability` tool call, which is what reaches the
|
|
58
|
+
client. It now renders as `Using skill <id>` **instead of** the raw tool
|
|
59
|
+
card it would otherwise produce.
|
|
60
|
+
|
|
61
|
+
⚠ Not to be confused with the existing `Skill` catalog — that is a *human*
|
|
62
|
+
affordance (a prompt the user launches from the chip row or `/`-palette).
|
|
63
|
+
An agent skill is chosen by the model mid-run. Only the latter emits a
|
|
64
|
+
notice.
|
|
65
|
+
- **Suppression covers all three paths a card can come from** — the live
|
|
66
|
+
stream, the client's tool-execution loop, and **restored history** — so a
|
|
67
|
+
reload shows the same transcript rather than resurrecting the raw
|
|
68
|
+
`load_capability` card.
|
|
69
|
+
- A `load_capability` call with **no usable id** falls back to a normal tool
|
|
70
|
+
card rather than being dropped: a malformed call is still real activity, and
|
|
71
|
+
hiding it would be worse than showing it plainly.
|
|
72
|
+
- **`onActivity(activityType, content)`** on `AgUiClientHandlers`, forwarding
|
|
73
|
+
AG-UI activity events to the host element. `COMPACTION_ACTIVITY_TYPE` and
|
|
74
|
+
`LOAD_CAPABILITY_TOOL` are exported from `constants`.
|
|
75
|
+
- **Two new overridable strings**: `historyCompacted` (token `{count}`) and
|
|
76
|
+
`usingSkill` (token `{name}`).
|
|
77
|
+
|
|
10
78
|
## [0.13.0] — 2026-07-27
|
|
11
79
|
|
|
12
80
|
### Added
|
|
@@ -578,7 +646,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
578
646
|
### Notes
|
|
579
647
|
- First release — exercising the automated npm OIDC publish pipeline end-to-end.
|
|
580
648
|
|
|
581
|
-
[Unreleased]: https://github.com/Artui/ag-ui-web-component/compare/v0.
|
|
649
|
+
[Unreleased]: https://github.com/Artui/ag-ui-web-component/compare/v0.14.1...HEAD
|
|
650
|
+
[0.14.1]: https://github.com/Artui/ag-ui-web-component/compare/v0.14.0...v0.14.1
|
|
651
|
+
[0.14.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.13.0...v0.14.0
|
|
582
652
|
[0.13.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.12.0...v0.13.0
|
|
583
653
|
[0.12.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.11.0...v0.12.0
|
|
584
654
|
[0.11.0]: https://github.com/Artui/ag-ui-web-component/compare/v0.10.0...v0.11.0
|
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ No framework, no Django, no admin specifics live here. Downstream consumers (e.g
|
|
|
48
48
|
- [New chat and collapse](#new-chat-and-collapse)
|
|
49
49
|
- [Tool-call display modes](#tool-call-display-modes)
|
|
50
50
|
- [Markdown rendering](#markdown-rendering)
|
|
51
|
+
- [Run notices: compaction and agent skills](#run-notices-compaction-and-agent-skills)
|
|
51
52
|
- [Skills: prompt chips and slash palette](#skills-prompt-chips-and-slash-palette)
|
|
52
53
|
- [MPA durability: surviving full page reloads](#mpa-durability-surviving-full-page-reloads)
|
|
53
54
|
- [Host seams: the SPA story](#host-seams-the-spa-story)
|
|
@@ -517,6 +518,37 @@ reveal). It honours `prefers-reduced-motion` (collapsing to instant).
|
|
|
517
518
|
|
|
518
519
|
---
|
|
519
520
|
|
|
521
|
+
## Run notices: compaction and agent skills
|
|
522
|
+
|
|
523
|
+
Some things a run does are neither text nor a tool the user asked for — the server condensed
|
|
524
|
+
earlier turns to fit the context window, or the model pulled in an agent skill. Those render as
|
|
525
|
+
**run notices**: a muted one-line annotation inline in the transcript, styleable via the
|
|
526
|
+
`run-notice`, `run-notice-icon` and `run-notice-text` `part`s.
|
|
527
|
+
|
|
528
|
+
> **Two different things are called "skills".**
|
|
529
|
+
> The [prompt chips and slash palette](#skills-prompt-chips-and-slash-palette) below are a
|
|
530
|
+
> **human** affordance — prompts *the user* launches. An **agent skill** is a folder of
|
|
531
|
+
> instructions *the model* chooses to load mid-run. Only the second produces a run notice.
|
|
532
|
+
|
|
533
|
+
Neither notice needs configuration here — both appear when the server is set up to produce them.
|
|
534
|
+
|
|
535
|
+
**Compaction.** `django-ag-ui` emits a standard AG-UI `ACTIVITY_SNAPSHOT` with
|
|
536
|
+
`activityType: "compaction"` when a compaction capability trimmed the history; the notice reports
|
|
537
|
+
how many messages went. Server side, that means wrapping the capability in `CompactionObserver` —
|
|
538
|
+
see [django-ag-ui's compaction guide](https://artui.github.io/django-ag-ui/compaction/). Activity
|
|
539
|
+
events of any other type pass through untouched, so another producer on that channel is not
|
|
540
|
+
mistaken for a compaction.
|
|
541
|
+
|
|
542
|
+
**Agent skills.** There is no dedicated event for these: loading a deferred capability *is* an
|
|
543
|
+
ordinary `load_capability` tool call, which is what reaches the client. The component recognises
|
|
544
|
+
it, renders `Using skill <id>`, and suppresses the raw tool card that would otherwise appear
|
|
545
|
+
beside it — on the live stream and on restored history alike, so a reload shows the same
|
|
546
|
+
transcript. A `load_capability` call with no usable id falls back to a normal tool card rather
|
|
547
|
+
than being dropped, since it is still real activity.
|
|
548
|
+
|
|
549
|
+
Both strings are overridable like every other — `historyCompacted` (token `{count}`) and
|
|
550
|
+
`usingSkill` (token `{name}`).
|
|
551
|
+
|
|
520
552
|
## Skills: prompt chips and slash palette
|
|
521
553
|
|
|
522
554
|
Skills are pre-defined prompts the user can launch from a chip or the `/`-command palette. They are
|