@cueplusplus/ui 0.3.0 → 0.5.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 +2229 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/message-list.d.ts +6 -0
- package/dist/chat/message-list.js +35 -0
- package/dist/chrome/app-shell.d.ts +52 -2
- package/dist/chrome/app-shell.js +80 -8
- package/dist/chrome/index.d.ts +2 -2
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +37 -2
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +121 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +107 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +2 -1
- package/dist/instruments/two-step-button.js +25 -6
- package/dist/layout/sidebar.d.ts +19 -1
- package/dist/layout/sidebar.js +19 -1
- package/dist/primitives/button.js +11 -1
- package/dist/primitives/chip.d.ts +35 -9
- package/dist/primitives/chip.js +97 -11
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +19 -5
- package/dist/system/theme-provider.js +54 -9
- package/dist/system/use-density.d.ts +9 -0
- package/dist/system/use-density.js +9 -0
- package/dist/system/use-isomorphic-layout-effect.js +19 -1
- package/dist/theming/_presets.d.ts +1 -1
- package/dist/theming/_presets.js +71 -8
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +6 -2
- package/dist/theming/create-theme.js +32 -5
- package/dist/theming/serialize.d.ts +10 -1
- package/dist/theming/serialize.js +62 -8
- package/manifest/components/activity-graph.json +88 -0
- package/manifest/components/agent-card.json +120 -0
- package/manifest/components/agent-handoff.json +87 -0
- package/manifest/components/agent-mode-badge.json +84 -0
- package/manifest/components/agent-plan.json +67 -0
- package/manifest/components/agent-status.json +73 -0
- package/manifest/components/agent-surface.json +78 -0
- package/manifest/components/alert-dialog.json +1 -1
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-shell.json +99 -7
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/button.json +1 -0
- package/manifest/components/canvas-split-body.json +62 -0
- package/manifest/components/canvas-split-document.json +54 -0
- package/manifest/components/canvas-split-header.json +83 -0
- package/manifest/components/canvas-split-line.json +62 -0
- package/manifest/components/canvas-split-message.json +62 -0
- package/manifest/components/canvas-split-thread.json +54 -0
- package/manifest/components/canvas-split.json +60 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart.json +93 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +51 -0
- package/manifest/components/chat-panel-composer.json +66 -0
- package/manifest/components/chat-panel-messages.json +51 -0
- package/manifest/components/chat-panel-typing.json +51 -0
- package/manifest/components/chat-panel-user-message.json +51 -0
- package/manifest/components/chat-panel.json +57 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +24 -12
- package/manifest/components/clamp.json +102 -0
- package/manifest/components/cli-tool-icon.json +52 -0
- package/manifest/components/code-diff.json +87 -0
- package/manifest/components/code-runner.json +97 -0
- package/manifest/components/compaction-row.json +100 -0
- package/manifest/components/comparison-card.json +83 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +75 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +73 -0
- package/manifest/components/composer-command-item.json +79 -0
- package/manifest/components/composer-context.json +67 -0
- package/manifest/components/composer-input.json +73 -0
- package/manifest/components/composer-menu-item.json +72 -0
- package/manifest/components/composer-menu.json +79 -0
- package/manifest/components/composer-model-item.json +75 -0
- package/manifest/components/composer-model-trigger.json +75 -0
- package/manifest/components/composer-person-item.json +79 -0
- package/manifest/components/composer-send.json +80 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +68 -0
- package/manifest/components/composer-voice.json +75 -0
- package/manifest/components/computer-use.json +84 -0
- package/manifest/components/confidence-marker.json +74 -0
- package/manifest/components/connection-state.json +84 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +1 -1
- package/manifest/components/density.json +1 -1
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +1 -1
- package/manifest/components/dropdown-menu.json +1 -1
- package/manifest/components/edit-message.json +105 -0
- package/manifest/components/elements-command-palette.json +100 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +68 -0
- package/manifest/components/elements-timeline.json +69 -0
- package/manifest/components/elicitation-form.json +103 -0
- package/manifest/components/empty-state-composer.json +64 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +57 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/frac.json +59 -0
- package/manifest/components/generation-loader.json +64 -0
- package/manifest/components/generative-ui.json +93 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +1 -1
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +1 -1
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/map-answer.json +83 -0
- package/manifest/components/markdown-text.json +94 -0
- package/manifest/components/math-block.json +74 -0
- package/manifest/components/mcp-server-icon.json +52 -0
- package/manifest/components/mcp-server-panel.json +87 -0
- package/manifest/components/memory-chips.json +65 -0
- package/manifest/components/message-actions.json +99 -0
- package/manifest/components/message-attachments.json +63 -0
- package/manifest/components/message-branches.json +71 -0
- package/manifest/components/message-list.json +1 -1
- package/manifest/components/message-pair.json +86 -0
- package/manifest/components/message-queue.json +74 -0
- package/manifest/components/message-timing.json +62 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/node-card.json +1 -1
- package/manifest/components/node-handle.json +1 -1
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +7 -7
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/popover.json +1 -1
- package/manifest/components/prompt-library.json +99 -0
- package/manifest/components/queue-dock.json +110 -0
- package/manifest/components/quota-banner.json +94 -0
- package/manifest/components/quote-reply.json +105 -0
- package/manifest/components/read-aloud.json +111 -0
- package/manifest/components/reasoning-effort.json +81 -0
- package/manifest/components/reasoning-panel.json +108 -0
- package/manifest/components/recommendation-card.json +107 -0
- package/manifest/components/regenerate-menu.json +89 -0
- package/manifest/components/replay-player.json +102 -0
- package/manifest/components/research-report.json +76 -0
- package/manifest/components/retrieval-chunks.json +84 -0
- package/manifest/components/revert-dock.json +150 -0
- package/manifest/components/reviewable-diff.json +93 -0
- package/manifest/components/risk-badge.json +74 -0
- package/manifest/components/schedule-card.json +101 -0
- package/manifest/components/score-breakdown.json +91 -0
- package/manifest/components/scroll-anchor.json +72 -0
- package/manifest/components/scroll-area.json +7 -7
- package/manifest/components/search-input.json +7 -7
- package/manifest/components/segmented-control.json +21 -21
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +1 -1
- package/manifest/components/status-dot.json +1 -1
- package/manifest/components/stopped-run.json +81 -0
- package/manifest/components/streaming-text.json +71 -0
- package/manifest/components/sub.json +44 -0
- package/manifest/components/subagent-list.json +88 -0
- package/manifest/components/suggestions.json +84 -0
- package/manifest/components/sup.json +44 -0
- package/manifest/components/swap-label.json +71 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/theme-provider.json +2 -2
- package/manifest/components/thinking-indicator.json +63 -0
- package/manifest/components/thread-list.json +76 -0
- package/manifest/components/thread-search.json +90 -0
- package/manifest/components/threshold-rail.json +2 -2
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/timeline.json +1 -1
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +7 -7
- package/manifest/components/token-editor.json +1 -1
- package/manifest/components/tool-call-card.json +200 -0
- package/manifest/components/tool-call.json +119 -0
- package/manifest/components/tool-error.json +114 -0
- package/manifest/components/tool-group.json +83 -0
- package/manifest/components/tool-timeline.json +119 -0
- package/manifest/components/toolbar.json +7 -7
- package/manifest/components/tooltip.json +1 -1
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +1 -1
- package/manifest/components/verdict-row.json +91 -0
- package/manifest/components/voice-conversation.json +109 -0
- package/manifest/components/web-preview.json +87 -0
- package/manifest/components/web-search.json +92 -0
- package/manifest/components/work-collapse.json +102 -0
- package/manifest/manifest.json +2670 -33
- package/manifest/tokens.json +22 -1
- package/package.json +46 -4
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentCard",
|
|
3
|
+
"slug": "agent-card",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Who you are about to talk to: its skills, its model, and the endpoint behind it.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "name",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Display name of the agent."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "description",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "What it does, in one or two sentences."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "provider",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Who publishes it."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "version",
|
|
35
|
+
"type": "string",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Card version, printed next to the name."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "model",
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": true,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Model the agent runs on."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "endpoint",
|
|
49
|
+
"type": "string",
|
|
50
|
+
"required": true,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Where it is reached. Truncates rather than wraps."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "skills",
|
|
56
|
+
"type": "readonly AgentSkill[]",
|
|
57
|
+
"required": true,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Named capabilities the card advertises."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "connected",
|
|
63
|
+
"type": "boolean",
|
|
64
|
+
"required": true,
|
|
65
|
+
"defaultValue": null,
|
|
66
|
+
"description": "Swaps the action for a settled Connected state and disables it."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "onConnect",
|
|
70
|
+
"type": "(() => void)",
|
|
71
|
+
"required": false,
|
|
72
|
+
"defaultValue": null,
|
|
73
|
+
"description": "Called when the agent is added."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"typeReferences": [
|
|
77
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"name\"\n | \"description\"\n | \"provider\"\n | \"version\"\n | \"model\"\n | \"endpoint\"\n | \"skills\"\n | \"connected\"\n | \"onConnect\"\n> & {\n /** Display name of the agent. */\n name: string;\n /** What it does, in one or two sentences. */\n description: string;\n /** Who publishes it. */\n provider: string;\n /** Card version, printed next to the name. */\n version: string;\n /** Model the agent runs on. */\n model: string;\n /** Where it is reached. Truncates rather than wraps. */\n endpoint: string;\n /** Named capabilities the card advertises. */\n skills: readonly AgentSkill[];\n /** Swaps the action for a settled Connected state and disables it. */\n connected: boolean;\n /** Called when the agent is added. */\n onConnect?: () => void;\n}"
|
|
78
|
+
],
|
|
79
|
+
"subcomponents": [],
|
|
80
|
+
"parts": [],
|
|
81
|
+
"variants": {},
|
|
82
|
+
"defaultVariants": {},
|
|
83
|
+
"tokensUsed": [
|
|
84
|
+
"--cue-border",
|
|
85
|
+
"--cue-fg-muted",
|
|
86
|
+
"--cue-fg-subtle",
|
|
87
|
+
"--cue-ok",
|
|
88
|
+
"--cue-radius-control",
|
|
89
|
+
"--cue-radius-overlay",
|
|
90
|
+
"--cue-radius-surface",
|
|
91
|
+
"--cue-surface-1",
|
|
92
|
+
"--cue-text-body",
|
|
93
|
+
"--cue-text-ui"
|
|
94
|
+
],
|
|
95
|
+
"summary": "Who you are about to talk to: its skills, its model, and the endpoint behind it.",
|
|
96
|
+
"examples": [
|
|
97
|
+
{
|
|
98
|
+
"title": "Usage",
|
|
99
|
+
"code": "import { AgentCard } from \"@cueplusplus/ui/elements\";\n\n<AgentCard\n name=\"Maintainer\"\n description=\"Reproduces the report, writes the fix, opens the PR.\"\n provider=\"assistant-ui\"\n version=\"1.4.0\"\n model=\"opus\"\n endpoint=\"https://agents.example.com/a2a\"\n skills={skills}\n connected={false}\n onConnect={connect}\n/>",
|
|
100
|
+
"language": "tsx"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"status": "todo-docs",
|
|
104
|
+
"url": "/docs/components/agent-card",
|
|
105
|
+
"mdUrl": "/docs/components/agent-card.md",
|
|
106
|
+
"jsonUrl": "/r/components/agent-card.json",
|
|
107
|
+
"specimens": [
|
|
108
|
+
{
|
|
109
|
+
"title": "AgentCard",
|
|
110
|
+
"group": "elements-agents",
|
|
111
|
+
"components": [
|
|
112
|
+
"AgentCard"
|
|
113
|
+
],
|
|
114
|
+
"code": "<Specimens>\n <Specimen label=\"not connected\">\n <AgentCard\n name=\"Patch\"\n description=\"Assigns fixtures to universes and addresses, then redraws the plot to match. It will not touch a live desk.\"\n provider=\"cue++ internal\"\n version=\"2.4\"\n model=\"Opus 5\"\n endpoint=\"agents.cue.internal/patch\"\n skills={SKILLS}\n connected={connected}\n onConnect={() => setConnected(true)}\n />\n </Specimen>\n <Specimen label=\"connected\">\n <AgentCard\n name=\"Patch\"\n description=\"Assigns fixtures to universes and addresses, then redraws the plot to match.\"\n provider=\"cue++ internal\"\n version=\"2.4\"\n model=\"Opus 5\"\n endpoint=\"agents.cue.internal/patch\"\n skills={SKILLS.slice(0, 2)}\n connected\n />\n </Specimen>\n</Specimens>",
|
|
115
|
+
"note": "Who you are about to talk to, before you talk to it: the name and who publishes it, one paragraph on what it is for, the skills it advertises, and — in mono along the bottom — the model and the endpoint actually behind it. Those last two are the line that separates a card from a marketing tile.",
|
|
116
|
+
"interaction": "the action is the only control. Connected disables it and swaps the ink button for a settled field row with a tick, rather than greying out a button that still looks pressable."
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"todo": true
|
|
120
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentHandoff",
|
|
3
|
+
"slug": "agent-handoff",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Control passing between agents, with the reason and what came along.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "from",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Agent giving up control."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "to",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Agent taking it."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "reason",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Why the baton moved. Without it a handoff reads as an unexplained jump."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "carried",
|
|
35
|
+
"type": "readonly string[]",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Context that travelled across. Pass an empty array to hide the section."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "settled",
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"required": true,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Cools the arrow and the receiving badge once the new agent is underway."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"from\" | \"to\" | \"reason\" | \"carried\" | \"settled\"\n> & {\n /** Agent giving up control. */\n from: string;\n /** Agent taking it. */\n to: string;\n /** Why the baton moved. Without it a handoff reads as an unexplained jump. */\n reason: string;\n /** Context that travelled across. Pass an empty array to hide the section. */\n carried: readonly string[];\n /** Cools the arrow and the receiving badge once the new agent is underway. */\n settled: boolean;\n}"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-border",
|
|
57
|
+
"--cue-fg-muted",
|
|
58
|
+
"--cue-fg-subtle",
|
|
59
|
+
"--cue-stream",
|
|
60
|
+
"--cue-text-ui"
|
|
61
|
+
],
|
|
62
|
+
"summary": "Control passing between agents, with the reason and what came along.",
|
|
63
|
+
"examples": [
|
|
64
|
+
{
|
|
65
|
+
"title": "Usage",
|
|
66
|
+
"code": "import { AgentHandoff } from \"@cueplusplus/ui/elements\";\n\n<AgentHandoff from=\"Triage\" to=\"Maintainer\" reason={reason} carried={carried} settled />",
|
|
67
|
+
"language": "tsx"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"status": "todo-docs",
|
|
71
|
+
"url": "/docs/components/agent-handoff",
|
|
72
|
+
"mdUrl": "/docs/components/agent-handoff.md",
|
|
73
|
+
"jsonUrl": "/r/components/agent-handoff.json",
|
|
74
|
+
"specimens": [
|
|
75
|
+
{
|
|
76
|
+
"title": "AgentHandoff",
|
|
77
|
+
"group": "elements-agents",
|
|
78
|
+
"components": [
|
|
79
|
+
"AgentHandoff"
|
|
80
|
+
],
|
|
81
|
+
"code": "<Specimens>\n <Specimen label=\"live\" wide>\n <AgentHandoff\n from=\"Patch\"\n to=\"Plot\"\n reason=\"Addresses are assigned; redrawing the hanging plot needs the drawing agent.\"\n carried={[\n \"Universe 3, channels 1–48\",\n \"Six ESPRITEs on 3.2 m centres\",\n \"Front truss at 8.4 m trim\",\n ]}\n settled={false}\n />\n </Specimen>\n <Specimen label=\"settled, nothing carried\" wide>\n <AgentHandoff\n from=\"Plot\"\n to=\"Check\"\n reason=\"Plot is redrawn. The walk-the-rig pass starts from the file, not from this thread.\"\n carried={[]}\n settled\n />\n </Specimen>\n</Specimens>",
|
|
82
|
+
"note": "The baton moving, with the reason attached. Two badges and an arrow: while the handoff is live the receiving agent and the arrow take the streaming hue, and `settled` cools both once the new agent is actually underway. What travelled across is listed under it against a rule — a handoff with no carried context is a handoff you cannot audit.",
|
|
83
|
+
"interaction": "none. It is a record of something that happened, not a control; the only thing that moves is the colour, over half a second."
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"todo": true
|
|
87
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentModeBadge",
|
|
3
|
+
"slug": "agent-mode-badge",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "What the run is allowed to do, said in one chip and one attribute.\n\nAgent authority is the fact a person most needs from the corner of their eye\nand the one every catalogue leaves to prose. This is the readout: a glyph, a\nword, and `data-agent-mode` on the element. The attribute is the part that\ntravels — `@cueplusplus/ui/elements.css` declares four custom properties\nunder it, so putting the same attribute on a composer tints its focus ring,\nits send button and its rail from one place, and a console adds a\nmode-aware surface by reading a property rather than by threading a prop:\n\n```css\n.composer:focus-within { border-color: var(--cue-elements-mode-icon); }\n.send-button { background: var(--cue-elements-mode-icon); color: var(--cue-elements-mode-background); }\n.turn-rail { background: var(--cue-elements-mode-border); }\n```\n\nThe ladder is four rungs and the mode set is open. Every product in the study\npaints six, seven or nine modes in exactly four accents — will it ask me, is\nit writing, is it only planning, are the guardrails off — so the rung is what\n`mode` carries and the product's own word is what `label` carries.\n\nThe properties resolve against the *element that carries the attribute*, not\nagainst the page: a badge inside an `<AgentSurface skin=\"aui\">` takes the\nisland's palette, because the quadruple is declared on `[data-agent-mode]`\nrather than at `:root` where a `var()` would have been substituted before it\never reached the island.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "mode",
|
|
14
|
+
"type": "\"manual\" | \"auto-edit\" | \"plan\" | \"unsafe\"",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "How much authority the run is holding: `manual`, `auto-edit`, `plan` or\n`unsafe`. Stamped as `data-agent-mode`, which is what the quadruple in\n`@cueplusplus/ui/elements.css` is keyed on."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "label",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "The product's own word for it — `Agent`, `Build`, `YOLO`, `Bypass\npermissions`. Defaults to `AGENT_MODE_LABELS[mode]`, and it is the reason\na nine-mode product needs no more than these four rungs."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "description",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "What the mode actually does, as the badge's `title`. Defaults to\n`AGENT_MODE_DESCRIPTIONS[mode]`. Pass `\"\"` for no tooltip at all."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "render",
|
|
35
|
+
"type": "RenderProp<Record<string, unknown>>",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Replace the rendered element (Base UI render prop) — `render={<button\ntype=\"button\" onClick={cycle} />}` for a picker that cycles, which is what\nevery product with more than two modes ships."
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"typeReferences": [
|
|
42
|
+
"Omit<React.ComponentPropsWithoutRef<\"span\">, \"children\">"
|
|
43
|
+
],
|
|
44
|
+
"subcomponents": [],
|
|
45
|
+
"parts": [],
|
|
46
|
+
"variants": {},
|
|
47
|
+
"defaultVariants": {},
|
|
48
|
+
"tokensUsed": [
|
|
49
|
+
"--cue-border",
|
|
50
|
+
"--cue-elements-mode-background",
|
|
51
|
+
"--cue-elements-mode-border",
|
|
52
|
+
"--cue-elements-mode-icon",
|
|
53
|
+
"--cue-elements-mode-text",
|
|
54
|
+
"--cue-fg-muted",
|
|
55
|
+
"--cue-fg-subtle",
|
|
56
|
+
"--cue-surface-2",
|
|
57
|
+
"--cue-text-ui"
|
|
58
|
+
],
|
|
59
|
+
"summary": "What the run is allowed to do, said in one chip and one attribute.",
|
|
60
|
+
"examples": [
|
|
61
|
+
{
|
|
62
|
+
"title": "Usage",
|
|
63
|
+
"code": "import { AgentModeBadge } from \"@cueplusplus/ui/elements\";\n\n<AgentModeBadge mode=\"plan\" />\n// A product's own word on cue's rung, and a chip that cycles.\n<AgentModeBadge\n mode=\"unsafe\"\n label=\"YOLO\"\n render={<button type=\"button\" onClick={cycle} />}\n/>",
|
|
64
|
+
"language": "tsx"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"status": "todo-docs",
|
|
68
|
+
"url": "/docs/components/agent-mode-badge",
|
|
69
|
+
"mdUrl": "/docs/components/agent-mode-badge.md",
|
|
70
|
+
"jsonUrl": "/r/components/agent-mode-badge.json",
|
|
71
|
+
"specimens": [
|
|
72
|
+
{
|
|
73
|
+
"title": "AgentModeBadge",
|
|
74
|
+
"group": "elements",
|
|
75
|
+
"components": [
|
|
76
|
+
"AgentModeBadge"
|
|
77
|
+
],
|
|
78
|
+
"code": "<Specimens>\n <Specimen label=\"the four rungs\">\n <span className=\"flex flex-wrap items-center gap-(--cue-space-2)\">\n {AGENT_MODES.map((rung) => (\n <AgentModeBadge key={rung} mode={rung} />\n ))}\n </span>\n </Specimen>\n <Specimen label={`one attribute, four surfaces · ${AGENT_MODE_LABELS[mode]}`} wide>\n <div\n data-agent-mode={mode}\n className=\"flex w-full max-w-md items-center gap-(--cue-space-3) rounded-(--radius-surface) border bg-surface-1 p-(--cue-space-3)\"\n style={{ borderColor: \"var(--cue-elements-mode-border)\" }}\n >\n <span\n aria-hidden\n className=\"h-9 w-0.5 shrink-0 rounded-full\"\n style={{ background: \"var(--cue-elements-mode-icon)\" }}\n />\n <span className=\"flex min-w-0 flex-1 flex-col gap-(--cue-space-1)\">\n <AgentModeBadge\n mode={mode}\n className=\"self-start\"\n render={\n <button\n type=\"button\"\n onClick={() =>\n setMode(\n AGENT_MODES[\n (AGENT_MODES.indexOf(mode) + 1) % AGENT_MODES.length\n ] as AgentMode,\n )\n }\n />\n }\n />\n <span className=\"text-fg-muted truncate text-(length:--cue-text-ui)\">\n Patch the front truss and write cue 1\n </span>\n </span>\n <button\n type=\"button\"\n className=\"shrink-0 rounded-full px-(--cue-space-3) py-(--cue-space-1) text-(length:--cue-text-label) font-medium\"\n style={{\n background: \"var(--cue-elements-mode-icon)\",\n color: \"var(--cue-bg)\",\n }}\n >\n Send\n </button>\n </div>\n </Specimen>\n</Specimens>",
|
|
79
|
+
"note": "How much authority the run is holding, which is the fact a person most needs from the corner of their eye and the one every catalogue leaves to prose. The ladder is four rungs — will it ask me, is it writing, is it only planning, are the guardrails off — because that is how many accents every product in the study paints, whatever it calls its six or seven or nine modes. The chip is the readout; `data-agent-mode` is the part that travels.",
|
|
80
|
+
"interaction": "press the chip to cycle the rung. The second specimen is the whole point: one attribute on the box, and the rail, the border and the send button all re-derive from `var(--cue-elements-mode-icon)` with no prop threading and no branch in any component. Colour is never alone — each rung has its own glyph and its own word, so the ladder survives a monochrome screenshot."
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"todo": true
|
|
84
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentPlan",
|
|
3
|
+
"slug": "agent-plan",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A checklist the agent works through, with progress you can glance.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "steps",
|
|
14
|
+
"type": "readonly string[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Checklist items the agent works through in order."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "activeIndex",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Index of the step currently running. Values past the end mark every step done, and\nvalues before the start mark none."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"typeReferences": [
|
|
28
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"steps\" | \"activeIndex\"> & {\n /** Checklist items the agent works through in order. */\n steps: readonly string[];\n /**\n * Index of the step currently running. Values past the end mark every step done, and\n * values before the start mark none.\n */\n activeIndex: number;\n}"
|
|
29
|
+
],
|
|
30
|
+
"subcomponents": [],
|
|
31
|
+
"parts": [],
|
|
32
|
+
"variants": {},
|
|
33
|
+
"defaultVariants": {},
|
|
34
|
+
"tokensUsed": [
|
|
35
|
+
"--cue-accent",
|
|
36
|
+
"--cue-fg",
|
|
37
|
+
"--cue-fg-subtle",
|
|
38
|
+
"--cue-surface-2",
|
|
39
|
+
"--cue-surface-3",
|
|
40
|
+
"--cue-text-body"
|
|
41
|
+
],
|
|
42
|
+
"summary": "A checklist the agent works through, with progress you can glance.",
|
|
43
|
+
"examples": [
|
|
44
|
+
{
|
|
45
|
+
"title": "Usage",
|
|
46
|
+
"code": "import { AgentPlan } from \"@cueplusplus/ui/elements\";\n\n<AgentPlan\n steps={[\"Read the file\", \"Draft the fix\", \"Run tests\"]}\n activeIndex={1}\n/>",
|
|
47
|
+
"language": "tsx"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"status": "todo-docs",
|
|
51
|
+
"url": "/docs/components/agent-plan",
|
|
52
|
+
"mdUrl": "/docs/components/agent-plan.md",
|
|
53
|
+
"jsonUrl": "/r/components/agent-plan.json",
|
|
54
|
+
"specimens": [
|
|
55
|
+
{
|
|
56
|
+
"title": "AgentPlan",
|
|
57
|
+
"group": "elements",
|
|
58
|
+
"components": [
|
|
59
|
+
"AgentPlan"
|
|
60
|
+
],
|
|
61
|
+
"code": "<Specimens>\n <Specimen label=\"step 1\" wide>\n <AgentPlan steps={PLAN} activeIndex={0} />\n </Specimen>\n <Specimen label=\"step 3\" wide>\n <AgentPlan steps={PLAN} activeIndex={2} />\n </Specimen>\n <Specimen label=\"finished\" wide>\n <AgentPlan steps={PLAN} activeIndex={PLAN.length} />\n </Specimen>\n</Specimens>",
|
|
62
|
+
"note": "The checklist the agent published before it started, with one index driving the whole thing: steps before it are done, the step at it is running, steps after it are waiting. An index past the end marks every step done.",
|
|
63
|
+
"interaction": "none. A plan is a readout; the agent moves it, not the reader."
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"todo": true
|
|
67
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentStatus",
|
|
3
|
+
"slug": "agent-status",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "One pill that always answers: what is it doing, and for how long.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "state",
|
|
14
|
+
"type": "\"done\" | \"working\" | \"waiting\"",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Visual mode of the pill: working, waiting, or done with a check."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "label",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Short status line describing what the agent is doing."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "elapsed",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Elapsed time shown in mono when provided."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"state\" | \"label\" | \"elapsed\"> & {\n /** Visual mode of the pill: working, waiting, or done with a check. */\n state: AgentState;\n /** Short status line describing what the agent is doing. */\n label: string;\n /** Elapsed time shown in mono when provided. */\n elapsed?: string;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg-subtle",
|
|
43
|
+
"--cue-ok",
|
|
44
|
+
"--cue-stream",
|
|
45
|
+
"--cue-surface-3",
|
|
46
|
+
"--cue-text-ui"
|
|
47
|
+
],
|
|
48
|
+
"summary": "One pill that always answers: what is it doing, and for how long.",
|
|
49
|
+
"examples": [
|
|
50
|
+
{
|
|
51
|
+
"title": "Usage",
|
|
52
|
+
"code": "import { AgentStatus } from \"@cueplusplus/ui/elements\";\n\n<AgentStatus state=\"working\" label=\"Editing composer.tsx\" elapsed=\"8s\" />",
|
|
53
|
+
"language": "tsx"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"status": "todo-docs",
|
|
57
|
+
"url": "/docs/components/agent-status",
|
|
58
|
+
"mdUrl": "/docs/components/agent-status.md",
|
|
59
|
+
"jsonUrl": "/r/components/agent-status.json",
|
|
60
|
+
"specimens": [
|
|
61
|
+
{
|
|
62
|
+
"title": "AgentStatus",
|
|
63
|
+
"group": "elements",
|
|
64
|
+
"components": [
|
|
65
|
+
"AgentStatus"
|
|
66
|
+
],
|
|
67
|
+
"code": "<Specimens>\n {PILLS.map((pill) => (\n <Specimen key={pill.state} label={pill.state}>\n <AgentStatus state={pill.state} label={pill.label} elapsed={pill.elapsed} />\n </Specimen>\n ))}\n</Specimens>",
|
|
68
|
+
"note": "One pill that always answers the two questions a run raises: what is it doing, and for how long. Working shimmers, waiting is still and marked, done carries a check and the elapsed total.",
|
|
69
|
+
"interaction": "the trailing control is a labelled icon button that pauses a run and offers to run it again once it is done."
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"todo": true
|
|
73
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AgentSurface",
|
|
3
|
+
"slug": "agent-surface",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The supersede island: one subtree, painted by a different set of values.\n\nRenders a plain `<div data-slot=\"agent-surface\" data-cue-skin=\"…\"\ndata-cue-fidelity=\"…\">` and publishes the same pair on React context. The attributes do the work —\n`@cueplusplus/ui/elements.css` re-declares, under them, the `--cue-*` tokens\nthe whole elements family reads, and custom properties inherit, so every\nelement inside repaints with no prop threading and no branch in any\ncomponent. The context exists for the one place that cannot see the DOM: an\noverlay portaled to `<body>` from inside the island, which\n{@link useCuePortalProps } stamps from the same values.\n\nTwo things this is not. It is not a theme — `data-theme`, `data-mode` and\n`data-density` are untouched, and a light app keeps a light island. And it is\nnot needed for cue mode: the elements were rewritten onto cue's tokens by the\nvendoring codemod, so `skin=\"cue\"` is what they already do. Reach for this to\nshow an element the way assistant-ui drew it, or to hand a chat panel back to\nupstream's design language inside a console that is otherwise cue's.\n\nWhat an `aui` island re-points is this family's own vocabulary rather than the\nwhole token contract: `--cue-busy`, `--cue-info`, `--cue-selection`,\n`--cue-focus`, `--cue-scrim` and every derived `*-soft` / `*-border` stay on\nthe console's theme. Nothing in the elements group reads them, so the island\nis complete for what it is for — but a *cue* component placed inside one (a\n`Chip tone=\"busy\"`, a `Toast`) paints half in each palette, and the\nderivations cannot be made to follow at all: they are `color-mix()` values\nresolved on the theme block and inherited as answers. `elements.css` carries\nthe full accounting beside the values themselves.\n\n`elements.css` is a consumer import: `@import \"@cueplusplus/ui/elements.css\";`\nafter the main stylesheet. Without it a `skin=\"aui\"` island simply stays in\ncue's palette.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "skin",
|
|
12
|
+
"type": "\"cue\" | \"aui\"",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": "cue",
|
|
15
|
+
"description": "Which value-set paints the subtree: `cue` (the default) or `aui`, which\ninstalls assistant-ui's own inks, grounds and hues."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "fidelity",
|
|
19
|
+
"type": "\"upstream\" | \"cue-metrics\"",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "cue-metrics",
|
|
22
|
+
"description": "How much a supersede island re-points: `cue-metrics` (the default, colour\nonly) or `upstream`, which also pins assistant-ui's radii, literal type\nsizes and spacing so the density ladder stops at the island edge."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "render",
|
|
26
|
+
"type": "RenderProp<Record<string, unknown>>",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Replace the rendered element (Base UI render prop). Accepts an element —\n`render={<section />}` — or a function returning one."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "children",
|
|
33
|
+
"type": "ReactNode",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "The subtree that paints with this island's values."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"typeReferences": [
|
|
40
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
|
|
41
|
+
],
|
|
42
|
+
"subcomponents": [],
|
|
43
|
+
"parts": [],
|
|
44
|
+
"variants": {},
|
|
45
|
+
"defaultVariants": {},
|
|
46
|
+
"tokensUsed": [
|
|
47
|
+
"--cue-busy",
|
|
48
|
+
"--cue-focus",
|
|
49
|
+
"--cue-info",
|
|
50
|
+
"--cue-scrim",
|
|
51
|
+
"--cue-selection"
|
|
52
|
+
],
|
|
53
|
+
"summary": "The supersede island: one subtree, painted by a different set of values.",
|
|
54
|
+
"examples": [
|
|
55
|
+
{
|
|
56
|
+
"title": "Usage",
|
|
57
|
+
"code": "<AgentSurface skin=\"aui\" fidelity=\"upstream\">\n <ToolCall label=\"Searched\" activeLabel=\"Searching\" query=\"composer\" … />\n</AgentSurface>",
|
|
58
|
+
"language": "tsx"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"status": "todo-docs",
|
|
62
|
+
"url": "/docs/components/agent-surface",
|
|
63
|
+
"mdUrl": "/docs/components/agent-surface.md",
|
|
64
|
+
"jsonUrl": "/r/components/agent-surface.json",
|
|
65
|
+
"specimens": [
|
|
66
|
+
{
|
|
67
|
+
"title": "AgentSurface",
|
|
68
|
+
"group": "elements",
|
|
69
|
+
"components": [
|
|
70
|
+
"AgentSurface"
|
|
71
|
+
],
|
|
72
|
+
"code": "<Specimens>\n <Specimen label=\"skin=cue (the default)\" wide>\n <AgentSurface className=\"flex w-full flex-col gap-(--cue-space-3) rounded-(--radius-surface) border border-border bg-bg p-(--cue-space-4)\">\n <IslandCalls scope=\"cue\" open={open} onOpenChange={opener} />\n </AgentSurface>\n </Specimen>\n <Specimen label=\"aui · cue-metrics\" wide>\n <AgentSurface\n skin=\"aui\"\n fidelity=\"cue-metrics\"\n className=\"flex w-full flex-col gap-(--cue-space-3) rounded-(--radius-surface) border border-border bg-bg p-(--cue-space-4)\"\n >\n <IslandCalls scope=\"aui-metrics\" open={open} onOpenChange={opener} />\n </AgentSurface>\n </Specimen>\n <Specimen label=\"aui · upstream\" wide>\n <AgentSurface\n skin=\"aui\"\n fidelity=\"upstream\"\n className=\"flex w-full flex-col gap-(--cue-space-3) rounded-(--radius-surface) border border-border bg-bg p-(--cue-space-4)\"\n >\n <IslandCalls scope=\"aui-upstream\" open={open} onOpenChange={opener} />\n </AgentSurface>\n </Specimen>\n</Specimens>",
|
|
73
|
+
"note": "One DOM, three paint jobs. The same three tool calls sit in all three specimens; the only difference is the pair of attributes on the box around them. skin='aui' re-points the colour set to assistant-ui's own inks and grounds, and fidelity='upstream' re-points the metrics too, which is what stops cue's density ladder at the island edge. Without @cueplusplus/ui/elements.css imported, all three would look alike.",
|
|
74
|
+
"interaction": "none of its own. The island is a values-set, not a control: everything inside keeps the behaviour it has outside."
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"todo": true
|
|
78
|
+
}
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"props": [
|
|
120
120
|
{
|
|
121
121
|
"name": "tone",
|
|
122
|
-
"type": "\"
|
|
122
|
+
"type": "\"danger\" | \"accent\"",
|
|
123
123
|
"required": false,
|
|
124
124
|
"defaultValue": "accent",
|
|
125
125
|
"description": "Which answer this is. `\"danger\"` for anything destructive, `\"accent\"` for a\nconfirmation that merely proceeds. Defaults to `\"accent\"`."
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AnimatedNumber",
|
|
3
|
+
"slug": "animated-number",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A number that counts to its new value instead of jumping to it.\n\nThe smallest element in the canon and the one that touches the most rows: a\ntoken count, a cost, a duration, a file tally. Two rules, both from the same\nteardown. Tween, because a value that steps reads as a new fact while a value\nthat counts reads as the same fact moving — and a transcript's numbers are\nalmost always the second thing. And `tabular-nums`, because a proportional\n`1` is narrower than a `0`, so a stepping counter nudges everything to its\nright on every update.\n\nIt holds the only state in the canon, and it is a tween rather than a fact:\n`value` is still a prop, every tween ends exactly on it, and a replay that\nsets the prop paints the same number at every frame it rests on.\n\n**Reduced motion is answered by arriving, not by stopping.** A reader who has\nasked for stillness gets the value immediately and no frames are ever\nscheduled — the number is information, and the animation was only ever how it\ngot there.\n\nWhile a tween is in flight the digits on screen are `aria-hidden` and the\nsettled value is carried beside them for a screen reader, so an assistive\ntechnology reads the number the run actually reported rather than whichever\nframe it happened to land on. Once the tween ends there is one node again and\nnothing is duplicated.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "value",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The number to show. Every change eases from whatever is on screen to this,\nincluding a change that arrives mid-tween — which is the case a live\ncounter is actually made of.\n\nA non-finite value paints `0` rather than the word `NaN`: these arrive from\na caller's arithmetic over a stream that may not have started."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "duration",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "400",
|
|
22
|
+
"description": "How long one tween lasts, in milliseconds. Defaults to `400` — long enough\nto read as counting, short enough that a counter updated every second is\nnever behind the run it is describing. `0` steps."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "format",
|
|
26
|
+
"type": "((value: number) => string)",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "(value: number): string => value.toLocaleString(\"en-US\")",
|
|
29
|
+
"description": "How to write the number. Defaults to grouped digits in `en-US`\n(`1,240`), which is deterministic across a server render and a client one;\n{@link formatCompactNumber} is the other one this family uses (`1.2k`).\n\nCalled on every frame, so keep it cheap."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"Omit<React.ComponentPropsWithoutRef<\"span\">, \"children\">"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-fg-muted"
|
|
41
|
+
],
|
|
42
|
+
"summary": "A number that counts to its new value instead of jumping to it.",
|
|
43
|
+
"examples": [
|
|
44
|
+
{
|
|
45
|
+
"title": "Usage",
|
|
46
|
+
"code": "import { AnimatedNumber } from \"@cueplusplus/ui/elements\";\n\n<AnimatedNumber value={tokens} />\n// The reference's own readout: compact, inline, in the status line.\n<span className=\"text-fg-muted\">\n · <AnimatedNumber value={tokens} format={formatCompactNumber} /> tokens\n</span>",
|
|
47
|
+
"language": "tsx"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"status": "todo-docs",
|
|
51
|
+
"url": "/docs/components/animated-number",
|
|
52
|
+
"mdUrl": "/docs/components/animated-number.md",
|
|
53
|
+
"jsonUrl": "/r/components/animated-number.json",
|
|
54
|
+
"specimens": [
|
|
55
|
+
{
|
|
56
|
+
"title": "AnimatedNumber",
|
|
57
|
+
"group": "elements",
|
|
58
|
+
"components": [
|
|
59
|
+
"AnimatedNumber"
|
|
60
|
+
],
|
|
61
|
+
"code": "<Specimens>\n <Specimen label=\"compact, in a status line\" wide>\n <span className=\"flex items-center gap-(--cue-space-3)\">\n <span className=\"text-fg-muted text-(length:--cue-text-ui)\">\n Thinking · <AnimatedNumber value={tokens} format={formatCompactNumber} /> tokens\n </span>\n <Button size=\"sm\" onClick={() => setTokens((was) => was + 3400)}>\n Read more\n </Button>\n </span>\n </Specimen>\n <Specimen label=\"grouped, as a stat\">\n <span className=\"text-(length:--cue-text-emphasis) font-medium\">\n <AnimatedNumber value={tokens} />\n </span>\n </Specimen>\n</Specimens>",
|
|
62
|
+
"note": "A number that counts to its new value instead of jumping to it, in tabular numerals so the digits do not jitter on the way. Both halves are one teardown's: the reference eases its live token estimate from the previous value to the new one and paints it in font-variant-numeric tabular-nums, because a proportional 1 is narrower than a 0 and a stepping counter nudges everything to its right on every update. A value that steps reads as a new fact; a value that counts reads as the same fact moving, which is what a token, a cost and a duration actually are.",
|
|
63
|
+
"interaction": "press the button and watch the digits rather than the box — nothing to the right of the number moves. Under prefers-reduced-motion the new value simply arrives: stillness for a counter has to mean landing on the number, because a readout that stopped where it was would be wrong rather than still. Mid-tween the digits are aria-hidden and the settled value is carried beside them, so a screen reader reads what the run reported and never a frame of the animation."
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"todo": true
|
|
67
|
+
}
|