@ds-mo/ui 13.14.0 → 13.15.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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +71 -21
- package/dist/agent.json +242 -58
- package/dist/angular/ds-agent-questionnaire.d.ts +19 -0
- package/dist/angular/ds-agent-questionnaire.js +46 -0
- package/dist/angular/ds-agent-response.d.ts +1 -1
- package/dist/angular/ds-agent-response.js +3 -3
- package/dist/angular/ds-agent-source-list.d.ts +9 -2
- package/dist/angular/ds-agent-source-list.js +7 -3
- package/dist/angular/ds-agent-tool-call.d.ts +9 -2
- package/dist/angular/ds-agent-tool-call.js +9 -5
- package/dist/angular/ds-checkbox.d.ts +1 -1
- package/dist/angular/ds-checkbox.js +3 -3
- package/dist/angular/ds-message-composer.d.ts +1 -1
- package/dist/angular/ds-message-composer.js +3 -3
- package/dist/angular/ds-radio.js +2 -1
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.d.ts +24 -0
- package/dist/components/ds-agent-questionnaire.js +2 -0
- package/dist/components/ds-agent-questionnaire.js.map +1 -0
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-response.js.map +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-chart.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js.map +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-radio.js.map +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.d.ts +10 -0
- package/dist/components/{p-PQgDzzn9.js → p-00or0yGw.js} +2 -2
- package/dist/components/p-B2SoinWf.js +2 -0
- package/dist/components/p-B2SoinWf.js.map +1 -0
- package/dist/components/{p-BULWzaBs.js → p-B69Re7HW.js} +2 -2
- package/dist/components/p-BH_lVRgp.js +2 -0
- package/dist/components/{p-CCYgBUUS.js.map → p-BH_lVRgp.js.map} +1 -1
- package/dist/components/{p-C-aCs6ID.js → p-BLaqjUWu.js} +2 -2
- package/dist/components/{p-B6z51yBf.js → p-BNkU9dcc.js} +2 -2
- package/dist/components/{p-B6linhwY.js → p-BRze4tRe.js} +2 -2
- package/dist/components/p-BtUgncSJ.js +2 -0
- package/dist/components/p-BtUgncSJ.js.map +1 -0
- package/dist/components/p-C891ueIx.js +2 -0
- package/dist/components/p-C891ueIx.js.map +1 -0
- package/dist/components/p-CCkptWPj.js +2 -0
- package/dist/components/p-CCkptWPj.js.map +1 -0
- package/dist/components/p-CKo3OFG1.js +2 -0
- package/dist/components/p-CKo3OFG1.js.map +1 -0
- package/dist/components/p-CXduurfd.js.map +1 -1
- package/dist/components/{p-DLwM1RNL.js → p-CdKz-QT2.js} +2 -2
- package/dist/components/p-CdKz-QT2.js.map +1 -0
- package/dist/components/p-CekGwihQ.js +2 -0
- package/dist/components/{p-BSdAFIcG.js.map → p-CekGwihQ.js.map} +1 -1
- package/dist/components/p-ClHpIZg0.js +2 -0
- package/dist/components/p-ClHpIZg0.js.map +1 -0
- package/dist/components/p-CnUq7E8S.js +2 -0
- package/dist/components/{p-DyDkQ8H9.js.map → p-CnUq7E8S.js.map} +1 -1
- package/dist/components/{p-C9StMCWg.js → p-Cohb8T7G.js} +2 -2
- package/dist/components/p-CqDJRVT8.js +2 -0
- package/dist/components/p-CqDJRVT8.js.map +1 -0
- package/dist/components/p-CsXC1cHI.js +2 -0
- package/dist/components/{p-DYAQVvOu.js.map → p-CsXC1cHI.js.map} +1 -1
- package/dist/components/p-D4j0deyd.js +2 -0
- package/dist/components/{p-DAM4CDXT.js.map → p-D4j0deyd.js.map} +1 -1
- package/dist/components/p-D5aUkdTw.js +2 -0
- package/dist/components/p-D5aUkdTw.js.map +1 -0
- package/dist/components/p-DQXzTV8N.js +2 -0
- package/dist/components/p-DQXzTV8N.js.map +1 -0
- package/dist/components/p-DStd98dM.js +2 -0
- package/dist/components/{p-Azjx2SsL.js.map → p-DStd98dM.js.map} +1 -1
- package/dist/components/p-DWNhyLp2.js +2 -0
- package/dist/components/{p-B1JB0Zn-.js.map → p-DWNhyLp2.js.map} +1 -1
- package/dist/components/p-DWjE0VNn.js +2 -0
- package/dist/components/p-DWjE0VNn.js.map +1 -0
- package/dist/components/{p-C5ecLNZA.js → p-DgIRyJoc.js} +2 -2
- package/dist/components/{p-BNiIyZCn.js → p-Dhx_3_tf.js} +2 -2
- package/dist/components/p-Dhx_3_tf.js.map +1 -0
- package/dist/components/{p-CE82aQZr.js → p-DyVAWGL9.js} +2 -2
- package/dist/components/p-GSnB-sa7.js +2 -0
- package/dist/components/p-GSnB-sa7.js.map +1 -0
- package/dist/components/p-GWUTrIlk.js +2 -0
- package/dist/components/p-GWUTrIlk.js.map +1 -0
- package/dist/components/p-IhToA4m4.js +2 -0
- package/dist/components/{p-cPh32CFB.js.map → p-IhToA4m4.js.map} +1 -1
- package/dist/components/p-NQOI5gN1.js +2 -0
- package/dist/components/p-NQOI5gN1.js.map +1 -0
- package/dist/components/p-QDcUAz9m.js +2 -0
- package/dist/components/{p-BPS17WvI.js.map → p-QDcUAz9m.js.map} +1 -1
- package/dist/components/p-Qf-os3lG.js +2 -0
- package/dist/components/{p-B8HG9OFh.js.map → p-Qf-os3lG.js.map} +1 -1
- package/dist/components/{p-DMJEOAwP.js → p-chA2WA5x.js} +2 -2
- package/dist/components/{p-DwKC_9u2.js → p-dEouiXJ8.js} +2 -2
- package/dist/components/{p-CeyoHpPn.js → p-fKwbYrhi.js} +2 -2
- package/dist/docs/components.json +664 -10
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-questionnaire.json +273 -0
- package/dist/mcp-data/registry/agent-response.json +32 -11
- package/dist/mcp-data/registry/agent-source-list.json +33 -13
- package/dist/mcp-data/registry/agent-tool-call.json +59 -18
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +2 -2
- package/dist/mcp-data/registry/bar-title.json +2 -2
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +2 -2
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +2 -2
- package/dist/mcp-data/registry/chart.json +2 -2
- package/dist/mcp-data/registry/checkbox.json +26 -9
- package/dist/mcp-data/registry/chip.json +2 -2
- package/dist/mcp-data/registry/code-block.json +14 -6
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +2 -2
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +2 -2
- package/dist/mcp-data/registry/message-composer.json +30 -8
- package/dist/mcp-data/registry/message-scroller.json +17 -9
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +2 -2
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +2 -2
- package/dist/mcp-data/registry/radio.json +24 -11
- package/dist/mcp-data/registry/registry.json +245 -58
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +2 -2
- package/dist/mcp-data/registry/shell-app.json +2 -2
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +1 -1
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +2 -2
- package/dist/mcp-data/registry/swatch-picker.json +2 -2
- package/dist/mcp-data/registry/switch.json +2 -2
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +2 -2
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +5 -3
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-agent-questionnaire.d.ts +13 -0
- package/dist/react/ds-agent-questionnaire.js +15 -0
- package/dist/react/ds-agent-source-list.d.ts +7 -2
- package/dist/react/ds-agent-source-list.js +1 -1
- package/dist/react/ds-agent-tool-call.d.ts +7 -2
- package/dist/react/ds-agent-tool-call.js +1 -1
- package/dist/styles/prose.css +21 -4
- package/dist/types/components/AgentQuestionnaire/AgentQuestionnaire.d.ts +49 -0
- package/dist/types/components/AgentQuestionnaire/agent-questionnaire-model.d.ts +13 -0
- package/dist/types/components/AgentResponse/AgentResponse.d.ts +3 -1
- package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +5 -0
- package/dist/types/components/AgentToolCall/AgentToolCall.d.ts +21 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/types/components/MessageComposer/MessageComposer.d.ts +3 -0
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +21 -1
- package/dist/types/components/Radio/Radio.d.ts +4 -0
- package/dist/types/components/conversation-types.d.ts +51 -2
- package/dist/types/components.d.ts +147 -2
- package/package.json +5 -3
- package/dist/components/p-Azjx2SsL.js +0 -2
- package/dist/components/p-B1JB0Zn-.js +0 -2
- package/dist/components/p-B2t8alvH.js +0 -2
- package/dist/components/p-B2t8alvH.js.map +0 -1
- package/dist/components/p-B8HG9OFh.js +0 -2
- package/dist/components/p-BJVzrR_P.js +0 -2
- package/dist/components/p-BJVzrR_P.js.map +0 -1
- package/dist/components/p-BL0JHLJp.js +0 -2
- package/dist/components/p-BL0JHLJp.js.map +0 -1
- package/dist/components/p-BNiIyZCn.js.map +0 -1
- package/dist/components/p-BPS17WvI.js +0 -2
- package/dist/components/p-BSdAFIcG.js +0 -2
- package/dist/components/p-CCYgBUUS.js +0 -2
- package/dist/components/p-COmqMfQo.js +0 -2
- package/dist/components/p-COmqMfQo.js.map +0 -1
- package/dist/components/p-Ch5yT3UA.js +0 -2
- package/dist/components/p-Ch5yT3UA.js.map +0 -1
- package/dist/components/p-CiUciD5Z.js +0 -2
- package/dist/components/p-CiUciD5Z.js.map +0 -1
- package/dist/components/p-D6g070eY.js +0 -2
- package/dist/components/p-D6g070eY.js.map +0 -1
- package/dist/components/p-DAM4CDXT.js +0 -2
- package/dist/components/p-DLwM1RNL.js.map +0 -1
- package/dist/components/p-DYAQVvOu.js +0 -2
- package/dist/components/p-DmblUQ4D.js +0 -2
- package/dist/components/p-DmblUQ4D.js.map +0 -1
- package/dist/components/p-DyDkQ8H9.js +0 -2
- package/dist/components/p-Dz3Ufmr4.js +0 -2
- package/dist/components/p-Dz3Ufmr4.js.map +0 -1
- package/dist/components/p-cPh32CFB.js +0 -2
- package/dist/components/p-fkQhr5s9.js +0 -2
- package/dist/components/p-fkQhr5s9.js.map +0 -1
- package/dist/components/p-oOKTL-yx.js +0 -2
- package/dist/components/p-oOKTL-yx.js.map +0 -1
- /package/dist/components/{p-PQgDzzn9.js.map → p-00or0yGw.js.map} +0 -0
- /package/dist/components/{p-BULWzaBs.js.map → p-B69Re7HW.js.map} +0 -0
- /package/dist/components/{p-C-aCs6ID.js.map → p-BLaqjUWu.js.map} +0 -0
- /package/dist/components/{p-B6z51yBf.js.map → p-BNkU9dcc.js.map} +0 -0
- /package/dist/components/{p-B6linhwY.js.map → p-BRze4tRe.js.map} +0 -0
- /package/dist/components/{p-C9StMCWg.js.map → p-Cohb8T7G.js.map} +0 -0
- /package/dist/components/{p-C5ecLNZA.js.map → p-DgIRyJoc.js.map} +0 -0
- /package/dist/components/{p-CE82aQZr.js.map → p-DyVAWGL9.js.map} +0 -0
- /package/dist/components/{p-DMJEOAwP.js.map → p-chA2WA5x.js.map} +0 -0
- /package/dist/components/{p-DwKC_9u2.js.map → p-dEouiXJ8.js.map} +0 -0
- /package/dist/components/{p-CeyoHpPn.js.map → p-fKwbYrhi.js.map} +0 -0
package/dist/.package-ready.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"package":"@ds-mo/ui","version":"13.
|
|
1
|
+
{"schemaVersion":1,"package":"@ds-mo/ui","version":"13.15.0","components":67,"digest":"494ef4f1f795e1fc35b01b85be191c13ac7507db8ba5ed25962f7e28a48cffdf","completedAt":"2026-08-12T19:17:48.195Z"}
|
package/dist/agent-patterns.json
CHANGED
|
@@ -1,40 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "13.
|
|
4
|
+
"packageVersion": "13.15.0",
|
|
5
5
|
"kind": "patterns",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
8
8
|
"id": "pattern:agent-chat",
|
|
9
9
|
"status": "experimental",
|
|
10
|
-
"summary": "
|
|
10
|
+
"summary": "Compose provider-neutral agent turns from serializable or slotted response content, normalized tool lifecycle, pending human input, inline sources, and reader-respecting transcript movement.",
|
|
11
11
|
"useWhen": [
|
|
12
|
-
"A
|
|
12
|
+
"A conversation presents rich agent output and may pause for structured participant input before the agent continues."
|
|
13
13
|
],
|
|
14
14
|
"avoidWhen": [
|
|
15
|
-
"The channel is person-to-person or the
|
|
15
|
+
"The channel is person-to-person or the design-system layer would be expected to own models, provider schemas, transport, persistence, tool execution, approval consequences, or private reasoning."
|
|
16
16
|
],
|
|
17
17
|
"components": [
|
|
18
18
|
{
|
|
19
19
|
"component": "component:ds-message-scroller",
|
|
20
|
-
"role": "
|
|
20
|
+
"role": "Positions new turn anchors, preserves reader-controlled live-edge behavior, and measures pending interaction with composer clearance.",
|
|
21
21
|
"required": true
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"component": "component:ds-message",
|
|
25
|
-
"role": "Renders participant turns with channel-neutral semantics.",
|
|
25
|
+
"role": "Renders participant turns with channel-neutral semantics and marks application-owned outgoing turn anchors.",
|
|
26
26
|
"required": true
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"component": "component:ds-message-bubble",
|
|
30
|
-
"role": "Renders user-sent prompts with the shared
|
|
30
|
+
"role": "Renders user-sent prompts with the shared message baseline.",
|
|
31
31
|
"required": true
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"component": "component:ds-agent-response",
|
|
35
|
-
"role": "Renders ordered normalized
|
|
35
|
+
"role": "Renders ordered normalized parts or an application-composed ordered response body.",
|
|
36
36
|
"required": true
|
|
37
37
|
},
|
|
38
|
+
{
|
|
39
|
+
"component": "component:ds-agent-tool-call",
|
|
40
|
+
"role": "Presents a normalized provider-neutral tool lifecycle and optional custom result or diagnostic detail.",
|
|
41
|
+
"required": false
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"component": "component:ds-agent-questionnaire",
|
|
45
|
+
"role": "Collects a temporary local answer draft above the composer and renders a quiet answered history record.",
|
|
46
|
+
"required": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"component": "component:ds-agent-source-list",
|
|
50
|
+
"role": "Presents stable deduplicated sources inline after discovery is complete.",
|
|
51
|
+
"required": false
|
|
52
|
+
},
|
|
38
53
|
{
|
|
39
54
|
"component": "component:ds-message-actions",
|
|
40
55
|
"role": "Provides completed-response Copy and controlled feedback without owning response data or consequences.",
|
|
@@ -42,31 +57,61 @@
|
|
|
42
57
|
},
|
|
43
58
|
{
|
|
44
59
|
"component": "component:ds-message-composer",
|
|
45
|
-
"role": "Emits participant submission and stop intent.",
|
|
60
|
+
"role": "Emits participant submission and stop intent while keeping visible recoverable submission errors adjacent to the draft.",
|
|
46
61
|
"required": true
|
|
47
62
|
}
|
|
48
63
|
],
|
|
49
64
|
"stateOwnership": [
|
|
50
|
-
"The application
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
65
|
+
"The application normalizes every provider-specific tool and human-input state before rendering, and owns transport, immutable response parts, stop, retry, persistence, generated titles, permissions, and consequences.",
|
|
66
|
+
"Pending questionnaires render through the scroller interaction surface; the questionnaire owns only its current step and unsaved draft, while the application submits answers, resumes the agent, preserves failures, and replaces a successful interaction with an answered response record.",
|
|
67
|
+
"Tool calls display lifecycle only. Custom summary, result, and detail content must remain user-safe; execution, approval, retry, and authorization stay application-owned.",
|
|
68
|
+
"Choose response parts when ordered content must be serializable and registry-friendly. Choose composed mode when application-specific components must interleave with CompoMo primitives; the application owns that slotted content and its serialization.",
|
|
69
|
+
"Applications append stable deduplicated sources once retrieval settles. Active source discovery is an activity or tool state rather than a changing source list.",
|
|
70
|
+
"Applications mark only outgoing prompts that begin new turns as turn anchors. Saved transcript entry points may independently choose the last stored anchor.",
|
|
71
|
+
"Composer error actions are application-owned. The component presents failure above the editable box as one attached, measured support unit, and recovery never discards the participant draft.",
|
|
72
|
+
"Prompt suggestions and model selection are optional product composition. Suggestion selection normally fills and focuses the draft; model selection remains an application-owned tool-region control.",
|
|
73
|
+
"Markdown parsing and safe node creation belong to the renderer; the renderer-neutral public prose stylesheet owns semantic-tree styling and text measure without owning response ordering or streaming state.",
|
|
74
|
+
"TokoMo owns the semantic interface and code font-family tokens, CompoMo assigns text or diagnostic-code intent, and the application loads Inter and Fira Code assets once at its root; agent components never fetch font assets.",
|
|
75
|
+
"Agent activity is concise user-safe progress and never reveals private model reasoning or chain-of-thought."
|
|
56
76
|
],
|
|
57
77
|
"accessibility": [
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
78
|
+
"Tool lifecycle, questionnaire progress and validation, composer failure, and streaming state remain meaningful as text without relying on motion or color.",
|
|
79
|
+
"Applications move focus into a pending questionnaire only when context makes that shift appropriate; the component never steals focus on mount.",
|
|
80
|
+
"Source links use descriptive external-link names, derived hostnames, and noninteractive rendering for malformed or unsafe schemes.",
|
|
81
|
+
"Reader wheel, touch, keyboard, selection, and jump actions release live-edge following until Scroll to latest explicitly restores it."
|
|
61
82
|
],
|
|
62
83
|
"responsiveBehavior": [
|
|
63
|
-
"Let
|
|
84
|
+
"Let structured response content use the available lane while direct prose uses its readable measure, code and tables retain local overflow, questionnaire actions stack on narrow screens, and the combined interaction and composer stack remains fully measured."
|
|
64
85
|
],
|
|
65
86
|
"implementations": {
|
|
66
87
|
"customElements": {
|
|
67
|
-
"status": "
|
|
88
|
+
"status": "verified",
|
|
89
|
+
"recipes": [
|
|
90
|
+
{
|
|
91
|
+
"id": "pending-questionnaire",
|
|
92
|
+
"title": "Pending questionnaire above a conversation composer",
|
|
93
|
+
"summary": "Mark the outgoing turn, normalize the paused tool state, place temporary human input in the interaction surface, and keep submission transport in application code.",
|
|
94
|
+
"files": [
|
|
95
|
+
{
|
|
96
|
+
"path": "agent-conversation.html",
|
|
97
|
+
"language": "html",
|
|
98
|
+
"content": "<ds-message-scroller messages-label=\"Agent conversation\" default-position=\"end\">\n <ds-message message-id=\"turn-1\" direction=\"outgoing\" scroll-anchor>\n <ds-message-bubble variant=\"user\">Prepare the maintenance follow-up.</ds-message-bubble>\n </ds-message>\n <ds-agent-response message-id=\"answer-1\" render-mode=\"composed\">\n <ds-agent-tool-call name=\"work.prepare\" label=\"Choose the first follow-up\" state=\"waiting-for-user\"></ds-agent-tool-call>\n </ds-agent-response>\n <div slot=\"interaction\">\n <ds-agent-questionnaire request-id=\"request-1\"></ds-agent-questionnaire>\n </div>\n <div slot=\"overlay\">\n <ds-message-composer label=\"Message agent\"></ds-message-composer>\n </div>\n</ds-message-scroller>"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"path": "agent-conversation.ts",
|
|
102
|
+
"language": "typescript",
|
|
103
|
+
"content": "const questionnaire = document.querySelector('ds-agent-questionnaire')!;\nquestionnaire.questions = [{\n id: 'priority',\n type: 'single',\n question: 'Which issue should be first?',\n required: true,\n choices: [\n { value: 'battery', label: 'Repeated battery failures' },\n { value: 'tires', label: 'Overdue tire inspections' },\n ],\n}];\nquestionnaire.addEventListener('dsAnswer', async event => {\n questionnaire.status = 'submitting';\n try {\n await submitAgentAnswers(event.detail);\n questionnaire.status = 'answered';\n } catch {\n questionnaire.status = 'error';\n questionnaire.errorMessage = 'Your answers could not be sent. Try again.';\n }\n});\n\ndeclare function submitAgentAnswers(detail: { requestId: string; answers: unknown[] }): Promise<void>;"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"notes": [
|
|
107
|
+
"On successful transport, remove the pending interaction and append an answered questionnaire response part to durable history rather than leaving the interactive surface in place."
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
68
111
|
"references": [
|
|
69
|
-
"src/wc/components/MessageScroller/
|
|
112
|
+
"src/wc/components/MessageScroller/AgentChatReview.stories.ts",
|
|
113
|
+
"src/wc/components/MessageScroller/MessageScroller.stories.ts",
|
|
114
|
+
"src/docs/AgentConversations.mdx"
|
|
70
115
|
]
|
|
71
116
|
},
|
|
72
117
|
"react": {
|
|
@@ -84,6 +129,8 @@
|
|
|
84
129
|
},
|
|
85
130
|
"references": [
|
|
86
131
|
"agent/patterns/conversation/pattern.agent.json",
|
|
132
|
+
"src/docs/AgentConversations.mdx",
|
|
133
|
+
"src/wc/components/MessageScroller/AgentChatReview.stories.ts",
|
|
87
134
|
"src/wc/components/AgentResponse/AgentResponse.tsx"
|
|
88
135
|
]
|
|
89
136
|
},
|
|
@@ -150,6 +197,7 @@
|
|
|
150
197
|
"ShellApp owns responsive mode, PanelNav presentation, tool open state, active tool, mobile Inbox grouping, Menu state, fullscreen presentation, focus restoration, and breakpoint state preservation.",
|
|
151
198
|
"Tool products and routed content are instantiated once by the application in named tool-view and default slots; ShellApp changes presentation without recreating those owners.",
|
|
152
199
|
"The application owns account menus, tool product data, page actions, and the consequences of every emitted intent event.",
|
|
200
|
+
"The application owns viewport and theme-color metadata, the dynamic-viewport framework root, and containing document overscroll so body never becomes a second application scroller; ShellApp fills that owner and keeps its existing internal scrollers.",
|
|
153
201
|
"The application resolves competing global messages to one Banner and owns its actions, controlled open state, orientation for the available shell capacity, dismissal persistence, and removal after exit motion.",
|
|
154
202
|
"Use composition=\"slotted\" only when a team intentionally needs to assemble the public lower-level chrome components itself."
|
|
155
203
|
],
|
|
@@ -164,6 +212,8 @@
|
|
|
164
212
|
"ShellApp automatically resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
165
213
|
"Desktop and tablet use PanelNav, BarNav, PanelTools through ShellTools, and ShellPage chrome.",
|
|
166
214
|
"Mobile uses MobileSheetNav, MobileBarNav, MobileHeader, ShellTools mobile presentation, and the same routed content owner. MobileBarNav paints its primary surface through the bottom safe-area inset so light browser chrome and application chrome meet without a secondary-surface seam.",
|
|
215
|
+
"Below 768px the application root owns a 100dvh fixed stage with a 100vh fallback while ShellApp continues to fill its owner with height 100%; JavaScript viewport measurement synchronizes only the chrome wash and does not own layout height.",
|
|
216
|
+
"With viewport-fit=cover, ShellApp consumes the shared top safe-area inset once and MobileBarNav consumes the persistent bottom inset; nested routed, tool, sheet, and consumer headers do not duplicate either inset.",
|
|
167
217
|
"An optional Banner spans the complete application above desktop navigation, workspace, tools, and mobile global surfaces while remaining below the operating-system top safe area.",
|
|
168
218
|
"Switching breakpoints changes presentation and inert state without recreating route or tool elements.",
|
|
169
219
|
"Messages uses its own mobile destination; Stacks and Activity use explicit mobile Inbox grouping metadata."
|