@nadicodeai/ui 0.21.0 → 0.22.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/AGENTS.md +2 -3
- package/README.md +14 -21
- package/dist/agents.d.ts +10 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +9 -0
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/use-case-bento.d.ts +2 -4
- package/dist/components/use-case-bento.d.ts.map +1 -1
- package/dist/components/use-case-bento.js +2 -3
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -1
- package/dist/index.d.ts +0 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -16
- package/dist/internal/assistant-ui/attachment.d.ts +5 -0
- package/dist/internal/assistant-ui/attachment.d.ts.map +1 -0
- package/dist/internal/assistant-ui/attachment.js +93 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts +3 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.d.ts.map +1 -0
- package/dist/internal/assistant-ui/follow-up-suggestions.js +8 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts +2 -0
- package/dist/internal/assistant-ui/markdown-text.d.ts.map +1 -0
- package/dist/internal/assistant-ui/markdown-text.js +54 -0
- package/dist/internal/assistant-ui/reasoning.d.ts +31 -0
- package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -0
- package/dist/internal/assistant-ui/reasoning.js +118 -0
- package/dist/internal/assistant-ui/thread.d.ts +26 -0
- package/dist/internal/assistant-ui/thread.d.ts.map +1 -0
- package/dist/internal/assistant-ui/thread.js +118 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts +10 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-fallback.js +163 -0
- package/dist/internal/assistant-ui/tool-group.d.ts +18 -0
- package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tool-group.js +44 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts +8 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.d.ts.map +1 -0
- package/dist/internal/assistant-ui/tooltip-icon-button.js +10 -0
- package/dist/styles/globals.css +3 -209
- package/docs/agents/nadicodeai-ui.md +4 -6
- package/docs/component-classification.md +1 -1
- package/docs/consuming-cross-repo.md +9 -3
- package/docs/contract.md +6 -6
- package/docs/migration/base-ui-migration.md +0 -11
- package/docs/product-compositions.md +1 -1
- package/llms.txt +5 -6
- package/package.json +10 -28
- package/skills/nadicodeai-ui/SKILL.md +5 -7
- package/dist/ai-elements.d.ts +0 -49
- package/dist/ai-elements.d.ts.map +0 -1
- package/dist/ai-elements.js +0 -48
- package/dist/components/agent-avatar.d.ts +0 -7
- package/dist/components/agent-avatar.d.ts.map +0 -1
- package/dist/components/agent-avatar.js +0 -6
- package/dist/components/agent-chat.d.ts +0 -20
- package/dist/components/agent-chat.d.ts.map +0 -1
- package/dist/components/agent-chat.js +0 -10
- package/dist/components/agent-composer.d.ts +0 -56
- package/dist/components/agent-composer.d.ts.map +0 -1
- package/dist/components/agent-composer.js +0 -56
- package/dist/components/agent-message.d.ts +0 -117
- package/dist/components/agent-message.d.ts.map +0 -1
- package/dist/components/agent-message.js +0 -99
- package/dist/components/agent-thread.d.ts +0 -26
- package/dist/components/agent-thread.d.ts.map +0 -1
- package/dist/components/agent-thread.js +0 -63
- package/dist/components/agent-tool-approval.d.ts +0 -27
- package/dist/components/agent-tool-approval.d.ts.map +0 -1
- package/dist/components/agent-tool-approval.js +0 -43
- package/dist/components/ai-elements/agent.d.ts +0 -27
- package/dist/components/ai-elements/agent.d.ts.map +0 -1
- package/dist/components/ai-elements/agent.js +0 -25
- package/dist/components/ai-elements/artifact.d.ts +0 -24
- package/dist/components/ai-elements/artifact.d.ts.map +0 -1
- package/dist/components/ai-elements/artifact.js +0 -20
- package/dist/components/ai-elements/attachments.d.ts +0 -55
- package/dist/components/ai-elements/attachments.d.ts.map +0 -1
- package/dist/components/ai-elements/attachments.js +0 -125
- package/dist/components/ai-elements/audio-player.d.ts +0 -30
- package/dist/components/ai-elements/audio-player.d.ts.map +0 -1
- package/dist/components/ai-elements/audio-player.js +0 -41
- package/dist/components/ai-elements/canvas.d.ts +0 -8
- package/dist/components/ai-elements/canvas.d.ts.map +0 -1
- package/dist/components/ai-elements/canvas.js +0 -5
- package/dist/components/ai-elements/chain-of-thought.d.ts +0 -30
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +0 -1
- package/dist/components/ai-elements/chain-of-thought.js +0 -49
- package/dist/components/ai-elements/checkpoint.d.ts +0 -12
- package/dist/components/ai-elements/checkpoint.d.ts.map +0 -1
- package/dist/components/ai-elements/checkpoint.js +0 -10
- package/dist/components/ai-elements/code-block.d.ts +0 -53
- package/dist/components/ai-elements/code-block.d.ts.map +0 -1
- package/dist/components/ai-elements/code-block.js +0 -239
- package/dist/components/ai-elements/commit.d.ts +0 -65
- package/dist/components/ai-elements/commit.d.ts.map +0 -1
- package/dist/components/ai-elements/commit.js +0 -83
- package/dist/components/ai-elements/confirmation.d.ts +0 -50
- package/dist/components/ai-elements/confirmation.d.ts.map +0 -1
- package/dist/components/ai-elements/confirmation.js +0 -57
- package/dist/components/ai-elements/connection.d.ts +0 -6
- package/dist/components/ai-elements/connection.d.ts.map +0 -1
- package/dist/components/ai-elements/connection.js +0 -10
- package/dist/components/ai-elements/context.d.ts +0 -33
- package/dist/components/ai-elements/context.d.ts.map +0 -1
- package/dist/components/ai-elements/context.js +0 -147
- package/dist/components/ai-elements/controls.d.ts +0 -5
- package/dist/components/ai-elements/controls.d.ts.map +0 -1
- package/dist/components/ai-elements/controls.js +0 -5
- package/dist/components/ai-elements/conversation.d.ts +0 -24
- package/dist/components/ai-elements/conversation.d.ts.map +0 -1
- package/dist/components/ai-elements/conversation.js +0 -41
- package/dist/components/ai-elements/edge.d.ts +0 -6
- package/dist/components/ai-elements/edge.d.ts.map +0 -1
- package/dist/components/ai-elements/edge.js +0 -88
- package/dist/components/ai-elements/environment-variables.d.ts +0 -39
- package/dist/components/ai-elements/environment-variables.d.ts.map +0 -1
- package/dist/components/ai-elements/environment-variables.js +0 -60
- package/dist/components/ai-elements/file-tree.d.ts +0 -27
- package/dist/components/ai-elements/file-tree.d.ts.map +0 -1
- package/dist/components/ai-elements/file-tree.js +0 -73
- package/dist/components/ai-elements/image.d.ts +0 -7
- package/dist/components/ai-elements/image.d.ts.map +0 -1
- package/dist/components/ai-elements/image.js +0 -3
- package/dist/components/ai-elements/inline-citation.d.ts +0 -39
- package/dist/components/ai-elements/inline-citation.d.ts.map +0 -1
- package/dist/components/ai-elements/inline-citation.js +0 -86
- package/dist/components/ai-elements/jsx-preview.d.ts +0 -30
- package/dist/components/ai-elements/jsx-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/jsx-preview.js +0 -159
- package/dist/components/ai-elements/message.d.ts +0 -38
- package/dist/components/ai-elements/message.d.ts.map +0 -1
- package/dist/components/ai-elements/message.js +0 -91
- package/dist/components/ai-elements/mic-selector.d.ts +0 -46
- package/dist/components/ai-elements/mic-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/mic-selector.js +0 -180
- package/dist/components/ai-elements/model-selector.d.ts +0 -36
- package/dist/components/ai-elements/model-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/model-selector.js +0 -18
- package/dist/components/ai-elements/node.d.ts +0 -22
- package/dist/components/ai-elements/node.d.ts.map +0 -1
- package/dist/components/ai-elements/node.js +0 -12
- package/dist/components/ai-elements/open-in-chat.d.ts +0 -27
- package/dist/components/ai-elements/open-in-chat.d.ts.map +0 -1
- package/dist/components/ai-elements/open-in-chat.js +0 -81
- package/dist/components/ai-elements/package-info.d.ts +0 -30
- package/dist/components/ai-elements/package-info.d.ts.map +0 -1
- package/dist/components/ai-elements/package-info.js +0 -50
- package/dist/components/ai-elements/panel.d.ts +0 -6
- package/dist/components/ai-elements/panel.d.ts.map +0 -1
- package/dist/components/ai-elements/panel.js +0 -5
- package/dist/components/ai-elements/persona.d.ts +0 -49
- package/dist/components/ai-elements/persona.d.ts.map +0 -1
- package/dist/components/ai-elements/persona.js +0 -175
- package/dist/components/ai-elements/plan.d.ts +0 -27
- package/dist/components/ai-elements/plan.d.ts.map +0 -1
- package/dist/components/ai-elements/plan.js +0 -34
- package/dist/components/ai-elements/prompt-input.d.ts +0 -149
- package/dist/components/ai-elements/prompt-input.d.ts.map +0 -1
- package/dist/components/ai-elements/prompt-input.js +0 -704
- package/dist/components/ai-elements/queue.d.ts +0 -62
- package/dist/components/ai-elements/queue.d.ts.map +0 -1
- package/dist/components/ai-elements/queue.js +0 -24
- package/dist/components/ai-elements/reasoning.d.ts +0 -27
- package/dist/components/ai-elements/reasoning.d.ts.map +0 -1
- package/dist/components/ai-elements/reasoning.js +0 -92
- package/dist/components/ai-elements/sandbox.d.ts +0 -25
- package/dist/components/ai-elements/sandbox.d.ts.map +0 -1
- package/dist/components/ai-elements/sandbox.js +0 -15
- package/dist/components/ai-elements/schema-display.d.ts +0 -56
- package/dist/components/ai-elements/schema-display.d.ts.map +0 -1
- package/dist/components/ai-elements/schema-display.js +0 -90
- package/dist/components/ai-elements/shimmer.d.ts +0 -10
- package/dist/components/ai-elements/shimmer.d.ts.map +0 -1
- package/dist/components/ai-elements/shimmer.js +0 -11
- package/dist/components/ai-elements/snippet.d.ts +0 -19
- package/dist/components/ai-elements/snippet.d.ts.map +0 -1
- package/dist/components/ai-elements/snippet.js +0 -32
- package/dist/components/ai-elements/sources.d.ts +0 -13
- package/dist/components/ai-elements/sources.d.ts.map +0 -1
- package/dist/components/ai-elements/sources.js +0 -9
- package/dist/components/ai-elements/speech-input.d.ts +0 -55
- package/dist/components/ai-elements/speech-input.d.ts.map +0 -1
- package/dist/components/ai-elements/speech-input.js +0 -187
- package/dist/components/ai-elements/stack-trace.d.ts +0 -38
- package/dist/components/ai-elements/stack-trace.d.ts.map +0 -1
- package/dist/components/ai-elements/stack-trace.js +0 -181
- package/dist/components/ai-elements/suggestion.d.ts +0 -11
- package/dist/components/ai-elements/suggestion.d.ts.map +0 -1
- package/dist/components/ai-elements/suggestion.js +0 -13
- package/dist/components/ai-elements/task.d.ts +0 -15
- package/dist/components/ai-elements/task.d.ts.map +0 -1
- package/dist/components/ai-elements/task.js +0 -10
- package/dist/components/ai-elements/terminal.d.ts +0 -28
- package/dist/components/ai-elements/terminal.d.ts.map +0 -1
- package/dist/components/ai-elements/terminal.js +0 -55
- package/dist/components/ai-elements/test-results.d.ts +0 -59
- package/dist/components/ai-elements/test-results.d.ts.map +0 -1
- package/dist/components/ai-elements/test-results.js +0 -98
- package/dist/components/ai-elements/tool.d.ts +0 -32
- package/dist/components/ai-elements/tool.d.ts.map +0 -1
- package/dist/components/ai-elements/tool.js +0 -49
- package/dist/components/ai-elements/toolbar.d.ts +0 -6
- package/dist/components/ai-elements/toolbar.d.ts.map +0 -1
- package/dist/components/ai-elements/toolbar.js +0 -5
- package/dist/components/ai-elements/transcription.d.ts +0 -17
- package/dist/components/ai-elements/transcription.d.ts.map +0 -1
- package/dist/components/ai-elements/transcription.js +0 -36
- package/dist/components/ai-elements/voice-selector.d.ts +0 -65
- package/dist/components/ai-elements/voice-selector.d.ts.map +0 -1
- package/dist/components/ai-elements/voice-selector.js +0 -224
- package/dist/components/ai-elements/web-preview.d.ts +0 -35
- package/dist/components/ai-elements/web-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/web-preview.js +0 -66
- package/dist/components/artifact-panel.d.ts +0 -130
- package/dist/components/artifact-panel.d.ts.map +0 -1
- package/dist/components/artifact-panel.js +0 -180
- package/dist/components/attachment.d.ts +0 -24
- package/dist/components/attachment.d.ts.map +0 -1
- package/dist/components/attachment.js +0 -68
- package/dist/components/bubble.d.ts +0 -17
- package/dist/components/bubble.d.ts.map +0 -1
- package/dist/components/bubble.js +0 -59
- package/dist/components/demo-surface.d.ts +0 -34
- package/dist/components/demo-surface.d.ts.map +0 -1
- package/dist/components/demo-surface.js +0 -21
- package/dist/components/files-preview.d.ts +0 -36
- package/dist/components/files-preview.d.ts.map +0 -1
- package/dist/components/files-preview.js +0 -85
- package/dist/components/marker.d.ts +0 -11
- package/dist/components/marker.d.ts.map +0 -1
- package/dist/components/marker.js +0 -34
- package/dist/components/message-scroller.d.ts +0 -17
- package/dist/components/message-scroller.d.ts.map +0 -1
- package/dist/components/message-scroller.js +0 -29
- package/dist/components/message.d.ts +0 -11
- package/dist/components/message.d.ts.map +0 -1
- package/dist/components/message.js +0 -21
- package/dist/components/state-notice.d.ts +0 -13
- package/dist/components/state-notice.d.ts.map +0 -1
- package/dist/components/state-notice.js +0 -8
- package/dist/components/watch-it-work-band.d.ts +0 -12
- package/dist/components/watch-it-work-band.d.ts.map +0 -1
- package/dist/components/watch-it-work-band.js +0 -8
- package/dist/hooks/use-controllable-state.d.ts +0 -9
- package/dist/hooks/use-controllable-state.d.ts.map +0 -1
- package/dist/hooks/use-controllable-state.js +0 -23
- package/dist/lib/agent-attachment.d.ts +0 -11
- package/dist/lib/agent-attachment.d.ts.map +0 -1
- package/dist/lib/agent-attachment.js +0 -19
- package/dist/lib/agent-contracts.d.ts +0 -132
- package/dist/lib/agent-contracts.d.ts.map +0 -1
- package/dist/lib/agent-contracts.js +0 -6
- package/dist/lib/agent-state.d.ts +0 -22
- package/dist/lib/agent-state.d.ts.map +0 -1
- package/dist/lib/agent-state.js +0 -96
- package/dist/lib/agent-work-state.d.ts +0 -36
- package/dist/lib/agent-work-state.d.ts.map +0 -1
- package/dist/lib/agent-work-state.js +0 -36
- package/dist/lib/message-scroller-primitive/components.d.ts +0 -17
- package/dist/lib/message-scroller-primitive/components.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/components.js +0 -204
- package/dist/lib/message-scroller-primitive/geometry.d.ts +0 -51
- package/dist/lib/message-scroller-primitive/geometry.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/geometry.js +0 -199
- package/dist/lib/message-scroller-primitive/index.d.ts +0 -12
- package/dist/lib/message-scroller-primitive/index.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/index.js +0 -12
- package/dist/lib/message-scroller-primitive/stores.d.ts +0 -6
- package/dist/lib/message-scroller-primitive/stores.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/stores.js +0 -53
- package/dist/lib/message-scroller-primitive/types.d.ts +0 -88
- package/dist/lib/message-scroller-primitive/types.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/types.js +0 -40
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +0 -19
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +0 -188
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +0 -7
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +0 -506
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +0 -49
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +0 -90
- package/dist/lib/message-scroller-primitive/use-render.d.ts +0 -22
- package/dist/lib/message-scroller-primitive/use-render.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/use-render.js +0 -113
- package/dist/lib/message-scroller-primitive/utils.d.ts +0 -4
- package/dist/lib/message-scroller-primitive/utils.d.ts.map +0 -1
- package/dist/lib/message-scroller-primitive/utils.js +0 -9
- package/docs/agent-work-surfaces.md +0 -132
- package/docs/migration/ai-elements-vendoring.md +0 -29
- package/docs/terminal-tui-semantics.md +0 -172
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-render.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/use-render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,KAAK,cAAc,CAAC,MAAM,SAAS,WAAW,IAAI,CAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,KACV,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,KAAK,UAAU,CAAC,MAAM,SAAS,WAAW,IAAI,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAE1F,KAAK,sBAAsB,CAAC,MAAM,SAAS,WAAW,IAAI,OAAO,CAAC;KAC/D,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS;CACjG,CAAC,CAAC;AAEH,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,KAAK,CAAC,WAAW,EAClC,MAAM,SAAS,WAAW,GAAG,WAAW,IACtC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,gBAAgB,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,SAAS,WAAW,IAAI;IACtF,cAAc,EAAE,QAAQ,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;CACzD,CAAC;AAEF,iBAAS,SAAS,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EAAE,MAAM,SAAS,WAAW,GAAG,WAAW,EAAE,EAC/F,cAAc,EACd,KAAK,EACL,MAAM,EACN,KAAoB,EACpB,sBAAsB,GACvB,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,6EA6BpC;AAED,iBAAS,UAAU,CAAC,QAAQ,SAAS,KAAK,CAAC,WAAW,EACpD,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,GA4C7E,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CACvD;AAqDD,iBAAS,WAAW,CAAC,CAAC,EACpB,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GACvC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAgBlC;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
// Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
|
|
2
|
-
// Adapted only for repo import paths and formatting; not added as an npm dependency.
|
|
3
|
-
// A poor man's version of base-ui useRender.
|
|
4
|
-
// see https://base-ui.com/react/utils/use-render.
|
|
5
|
-
// TODO: Replace if base-ui useRender is published as a package.
|
|
6
|
-
import * as React from "react";
|
|
7
|
-
function useRender({ defaultTagName, props, render, state = {}, stateAttributesMapping, }) {
|
|
8
|
-
const elementProps = mergeProps(getStateAttributes(state, stateAttributesMapping), props);
|
|
9
|
-
if (!render) {
|
|
10
|
-
return React.createElement(defaultTagName, elementProps);
|
|
11
|
-
}
|
|
12
|
-
if (typeof render === "function") {
|
|
13
|
-
return render(elementProps, state);
|
|
14
|
-
}
|
|
15
|
-
if (!React.isValidElement(render)) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const renderProps = render.props;
|
|
19
|
-
const propsWithRenderProps = mergeProps(elementProps, renderProps);
|
|
20
|
-
const propsWithRef = {
|
|
21
|
-
...propsWithRenderProps,
|
|
22
|
-
ref: composeRefs(elementProps.ref, renderProps.ref),
|
|
23
|
-
};
|
|
24
|
-
return React.cloneElement(render, propsWithRef);
|
|
25
|
-
}
|
|
26
|
-
function mergeProps(...sources) {
|
|
27
|
-
const result = {};
|
|
28
|
-
for (const source of sources) {
|
|
29
|
-
if (!source) {
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
const sourceProps = source;
|
|
33
|
-
for (const key of Object.keys(sourceProps)) {
|
|
34
|
-
const value = sourceProps[key];
|
|
35
|
-
if (value === undefined) {
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
const current = result[key];
|
|
39
|
-
if (key === "className") {
|
|
40
|
-
result[key] = [current, value].filter(Boolean).join(" ");
|
|
41
|
-
}
|
|
42
|
-
else if (key === "style") {
|
|
43
|
-
result[key] = {
|
|
44
|
-
...current,
|
|
45
|
-
...value,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
else if (key === "ref") {
|
|
49
|
-
result[key] = composeRefs(current, value);
|
|
50
|
-
}
|
|
51
|
-
else if (isEventHandler(key) &&
|
|
52
|
-
typeof current === "function" &&
|
|
53
|
-
typeof value === "function") {
|
|
54
|
-
result[key] = composeEventHandlers(value, current);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
result[key] = value;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
function getStateAttributes(state, mapping) {
|
|
64
|
-
const props = {};
|
|
65
|
-
for (const key of Object.keys(state)) {
|
|
66
|
-
const value = state[key];
|
|
67
|
-
const attributes = mapping?.[key]?.(value);
|
|
68
|
-
if (attributes) {
|
|
69
|
-
Object.assign(props, attributes);
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
if (key === "slot") {
|
|
73
|
-
props["data-slot"] = value;
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const attribute = `data-${String(key).replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`;
|
|
77
|
-
if (typeof value === "boolean") {
|
|
78
|
-
props[attribute] = value ? "" : undefined;
|
|
79
|
-
}
|
|
80
|
-
else if (value !== null && value !== undefined) {
|
|
81
|
-
props[attribute] = String(value);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return props;
|
|
85
|
-
}
|
|
86
|
-
function composeEventHandlers(theirs, ours) {
|
|
87
|
-
return function handleEvent(event) {
|
|
88
|
-
theirs(event);
|
|
89
|
-
if (!event.defaultPrevented) {
|
|
90
|
-
ours(event);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
function isEventHandler(key) {
|
|
95
|
-
return /^on[A-Z]/.test(key);
|
|
96
|
-
}
|
|
97
|
-
function composeRefs(...refs) {
|
|
98
|
-
const validRefs = refs.filter(Boolean);
|
|
99
|
-
if (validRefs.length === 0) {
|
|
100
|
-
return undefined;
|
|
101
|
-
}
|
|
102
|
-
return (value) => {
|
|
103
|
-
for (const ref of validRefs) {
|
|
104
|
-
if (typeof ref === "function") {
|
|
105
|
-
ref(value);
|
|
106
|
-
}
|
|
107
|
-
else if (ref) {
|
|
108
|
-
ref.current = value;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
export { composeRefs, mergeProps, useRender };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,iBAAS,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,sBAM7B;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
|
|
2
|
-
// Adapted only for repo import paths and formatting; not added as an npm dependency.
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
function useLatest(value) {
|
|
5
|
-
const ref = React.useRef(value);
|
|
6
|
-
ref.current = value;
|
|
7
|
-
return ref;
|
|
8
|
-
}
|
|
9
|
-
export { useLatest };
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# Agent Work Surfaces
|
|
2
|
-
|
|
3
|
-
Presentational agent surfaces for Nadia-flavored chat, composer, approval,
|
|
4
|
-
artifact, file, preview, diff, and terminal summary UI, plus the identity slots
|
|
5
|
-
they compose from. These components render serializable state models and leave
|
|
6
|
-
runtime behavior to the consuming app.
|
|
7
|
-
|
|
8
|
-
## Design-System Family Convergence
|
|
9
|
-
|
|
10
|
-
The React agent layer is the React face of the design-system Agentic Work
|
|
11
|
-
Surface CSS families (`design-system/DESIGN.md`). Each component consumes its
|
|
12
|
-
`nc-*` family class for identity — surface, border, chrome — and adds Tailwind
|
|
13
|
-
only for layout and spacing; the CSS family owns any value it already sets. The
|
|
14
|
-
families arrive through the UI package's complete React stylesheet interface.
|
|
15
|
-
Consumer setup lives in [`consuming-cross-repo.md`](consuming-cross-repo.md);
|
|
16
|
-
the component styling invariant lives in [`contract.md`](contract.md).
|
|
17
|
-
|
|
18
|
-
- `AgentThread` -> `nc-chat-thread`.
|
|
19
|
-
- `AgentMessage` text bubbles -> `nc-chat-bubble-user` / `nc-chat-bubble-agent`;
|
|
20
|
-
the tool row -> `nc-tool-call-trace`.
|
|
21
|
-
- `AgentToolApproval` -> `nc-approval-gate`.
|
|
22
|
-
- `ArtifactPanel` -> `nc-artifact-preview`.
|
|
23
|
-
- `AgentAvatar` -> `nc-agent-avatar`, `UsageMeter` -> `nc-usage-meter`,
|
|
24
|
-
`RunTimeline` -> `nc-run-timeline`, `MemoryItem` -> `nc-memory-item`,
|
|
25
|
-
`HandoffBanner` -> `nc-handoff-banner`.
|
|
26
|
-
|
|
27
|
-
## Components
|
|
28
|
-
|
|
29
|
-
- `AgentChat` combines an `AgentThread` with an optional `AgentComposer`.
|
|
30
|
-
- `AgentThread` renders message lists plus empty, queued, streaming, interrupted,
|
|
31
|
-
retryable, permission-denied, and fatal state banners.
|
|
32
|
-
- `AgentMessage` renders user, assistant, and system messages with text,
|
|
33
|
-
reasoning summaries, tool calls, source references, artifacts, attachments,
|
|
34
|
-
and state notices.
|
|
35
|
-
- `AgentComposer` renders a controlled or uncontrolled input surface with
|
|
36
|
-
attachments, queue panel, submit or stop control, and slash or mention slots.
|
|
37
|
-
- `AgentToolApproval` renders the approval choices `run`, `deny`, `session`,
|
|
38
|
-
and `always` with stable action meanings.
|
|
39
|
-
- `ArtifactPanel` renders text, code, diff, terminal summary, preview,
|
|
40
|
-
stack-trace, and test-result artifacts.
|
|
41
|
-
- `FilesPreview` and `ProjectFileTree` render a serializable project tree and
|
|
42
|
-
file preview without desktop IPC.
|
|
43
|
-
- `AgentAvatar` renders an agent identity slot with an optional accent ring; the
|
|
44
|
-
chrome is reusable and the initials, image, or generated asset are slotted.
|
|
45
|
-
- `UsageMeter` renders a token, cost, latency, or run-count meta row from
|
|
46
|
-
serializable `fields` and `trailing` strings over an optional progress track
|
|
47
|
-
driven by `usage`, with a `children` slot for custom meta content.
|
|
48
|
-
- `RunTimeline` renders a vertical step thread for a run, handoff, or workflow
|
|
49
|
-
from serializable steps (`title`, `label`, `detail`) with `ready`, `running`,
|
|
50
|
-
`review`, `blocked`, and `complete` step states and a per-step `detailSlot`
|
|
51
|
-
escape hatch.
|
|
52
|
-
- `MemoryItem` renders a remembered-fact row from a serializable `label` and
|
|
53
|
-
`fact`, with a `children` slot that replaces the fact.
|
|
54
|
-
- `HandoffBanner` renders an agent-to-agent or human-to-agent handoff surface
|
|
55
|
-
from a serializable `reason` and `destination`, with a `children` slot that
|
|
56
|
-
replaces the model.
|
|
57
|
-
|
|
58
|
-
## State Models
|
|
59
|
-
|
|
60
|
-
The public models are plain JSON-shaped data. React nodes are accepted only as
|
|
61
|
-
explicit slots such as `composer`, `slashMenu`, `mentionMenu`, `toolActions`,
|
|
62
|
-
`retryAction`, `previewActions`, or `actions`.
|
|
63
|
-
|
|
64
|
-
```tsx
|
|
65
|
-
import { AgentChat } from "@nadicodeai/ui/components/agent-chat"
|
|
66
|
-
|
|
67
|
-
const messages = [
|
|
68
|
-
{
|
|
69
|
-
id: "assistant-1",
|
|
70
|
-
role: "assistant",
|
|
71
|
-
metadata: {
|
|
72
|
-
kind: "agent",
|
|
73
|
-
label: "Nadia",
|
|
74
|
-
model: "synthetic-model",
|
|
75
|
-
},
|
|
76
|
-
parts: [
|
|
77
|
-
{
|
|
78
|
-
type: "text",
|
|
79
|
-
text: "I reviewed the synthetic fixture.",
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
type: "reasoning",
|
|
83
|
-
reasoning: {
|
|
84
|
-
id: "reasoning-1",
|
|
85
|
-
status: "available",
|
|
86
|
-
summary: "Package primitives cover the requested surface.",
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
],
|
|
90
|
-
},
|
|
91
|
-
] as const
|
|
92
|
-
|
|
93
|
-
export function FixtureChat() {
|
|
94
|
-
return <AgentChat messages={[...messages]} state="idle" />
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## Redaction
|
|
99
|
-
|
|
100
|
-
Use `AgentRedactionRule` whenever a payload cannot be shown. Redaction labels
|
|
101
|
-
exist for secrets, environment values, terminal transcripts, user memory, and
|
|
102
|
-
private reasoning. The component should receive the redaction object instead of
|
|
103
|
-
the protected value.
|
|
104
|
-
|
|
105
|
-
```tsx
|
|
106
|
-
const redactedTool = {
|
|
107
|
-
id: "tool-1",
|
|
108
|
-
name: "fixture_check",
|
|
109
|
-
status: "error",
|
|
110
|
-
redaction: {
|
|
111
|
-
redacted: true,
|
|
112
|
-
category: "secret",
|
|
113
|
-
},
|
|
114
|
-
} as const
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Approval Meanings
|
|
118
|
-
|
|
119
|
-
`AgentToolApproval` emits both the user-facing choice and a stable action value:
|
|
120
|
-
|
|
121
|
-
- `run` -> `approve-once`
|
|
122
|
-
- `deny` -> `reject`
|
|
123
|
-
- `session` -> `approve-session`
|
|
124
|
-
- `always` -> `approve-always`
|
|
125
|
-
|
|
126
|
-
Consumers own the approval action handler and persistence.
|
|
127
|
-
|
|
128
|
-
## Runtime Boundary
|
|
129
|
-
|
|
130
|
-
These components do not open files, execute commands, persist messages, call
|
|
131
|
-
models, stream tokens, retry tools, or talk to a desktop process. Pass callbacks
|
|
132
|
-
or slots for those behaviors from the consuming app.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# AI Elements Vendoring
|
|
2
|
-
|
|
3
|
-
`@nadicodeai/ui/src/components/ai-elements/*` is vendored source, not a
|
|
4
|
-
dependency. It was pulled from
|
|
5
|
-
[github.com/vercel/ai-elements](https://github.com/vercel/ai-elements) on
|
|
6
|
-
2026-06-22 in monorepo commit `c2b97003` ("feat(ui): package shadcn and ai
|
|
7
|
-
elements") — 48 components. The upstream ref at vendor time was not recorded;
|
|
8
|
-
every re-vendor from now on records the upstream ref it checked in the log
|
|
9
|
-
below. Since vendoring, the components have been adapted
|
|
10
|
-
in place: the Base UI migration (`docs/migration/base-ui-migration.md`),
|
|
11
|
-
`src/hooks/use-controllable-state.ts` replacing
|
|
12
|
-
`@radix-ui/react-use-controllable-state`, and theming onto brand tokens.
|
|
13
|
-
|
|
14
|
-
Upstream `ai-elements` is still Radix-based. Re-vendoring an item is a diff,
|
|
15
|
-
not a copy:
|
|
16
|
-
|
|
17
|
-
1. Fetch the upstream item's current source (`shadcn` CLI against the
|
|
18
|
-
`@ai-elements` registry, or the upstream repo directly).
|
|
19
|
-
2. Diff it against our adapted file in
|
|
20
|
-
`@nadicodeai/ui/src/components/ai-elements/`.
|
|
21
|
-
3. Re-apply the Base UI migration and token adaptations to whatever upstream
|
|
22
|
-
changed — do not reintroduce Radix imports or raw palette values.
|
|
23
|
-
4. Record the upstream ref checked below.
|
|
24
|
-
|
|
25
|
-
## Re-vendor log
|
|
26
|
-
|
|
27
|
-
| Date | Upstream ref checked | Notes |
|
|
28
|
-
| --- | --- | --- |
|
|
29
|
-
| 2026-06-22 | not recorded | Initial vendor, 48 components (monorepo commit `c2b97003`). |
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
# Terminal/TUI Semantics
|
|
2
|
-
|
|
3
|
-
This document owns the serializable names that a terminal, React Ink, or other
|
|
4
|
-
TUI consumer may use to preserve the meaning of shared agent states. It does not
|
|
5
|
-
define CSS custom properties, color values, light/dark mappings, a terminal
|
|
6
|
-
runtime, or a package export.
|
|
7
|
-
|
|
8
|
-
The framework-free data contracts live in `src/lib/agent-contracts.ts` and
|
|
9
|
-
`src/lib/agent-state.ts`. Canonical visual tokens and mode behavior live only in
|
|
10
|
-
[`design-system/DESIGN.md`](../../../design-system/DESIGN.md). A real TUI
|
|
11
|
-
renderer may consume `@nadicodeai/design-system/tokens/dtcg` and implement its
|
|
12
|
-
own technology adapter, but it must not copy a UI-local palette or treat this
|
|
13
|
-
document as a second theme source.
|
|
14
|
-
|
|
15
|
-
Do not put raw terminal output, secrets, environment values, user memory, hidden
|
|
16
|
-
chain-of-thought, or provider content in package examples or fixtures. Use
|
|
17
|
-
synthetic summaries and explicit redaction fields.
|
|
18
|
-
|
|
19
|
-
## Naming rules
|
|
20
|
-
|
|
21
|
-
- Names use dot-case strings such as `terminal.foreground`, `tool.running`, and
|
|
22
|
-
`approval.session`.
|
|
23
|
-
- DOM and TUI state names carry the same meaning. A renderer chooses its own
|
|
24
|
-
glyph, spacing, ANSI escape, and interaction behavior.
|
|
25
|
-
- Run-state parity uses `ready`, `running`, `review`, `blocked`, and `complete`.
|
|
26
|
-
- Tool and command status uses `pending`, `running`, `success`, `warning`,
|
|
27
|
-
`error`, and `muted`.
|
|
28
|
-
- Adding a visual value or mode mapping is a design-system change, not a new
|
|
29
|
-
serializable state.
|
|
30
|
-
|
|
31
|
-
## Terminal and ANSI roles
|
|
32
|
-
|
|
33
|
-
| Serializable role | Meaning |
|
|
34
|
-
| --- | --- |
|
|
35
|
-
| `terminal.foreground` | Default terminal text. |
|
|
36
|
-
| `terminal.background` | Default terminal canvas. |
|
|
37
|
-
| `terminal.muted` | Timestamps, separators, and low-priority metadata. |
|
|
38
|
-
| `terminal.cursor` | Text cursor or focused prompt caret. |
|
|
39
|
-
| `terminal.selection` | Selected text treatment. |
|
|
40
|
-
|
|
41
|
-
ANSI names follow the protocol vocabulary without inventing branded aliases:
|
|
42
|
-
|
|
43
|
-
- `terminal.ansi.<color>` where `<color>` is `black`, `red`, `green`, `yellow`,
|
|
44
|
-
`blue`, `magenta`, `cyan`, or `white`.
|
|
45
|
-
- `terminal.ansi.bright-<color>` for the corresponding bright foreground.
|
|
46
|
-
|
|
47
|
-
## Code and diff roles
|
|
48
|
-
|
|
49
|
-
| Serializable role | Meaning |
|
|
50
|
-
| --- | --- |
|
|
51
|
-
| `code.foreground` | Default code text. |
|
|
52
|
-
| `code.background` | Code block or inline-preview surface. |
|
|
53
|
-
| `code.border` | Code surface border or gutter divider. |
|
|
54
|
-
| `code.token.keyword` | Syntax keyword. |
|
|
55
|
-
| `code.token.string` | Syntax string. |
|
|
56
|
-
| `code.token.comment` | Syntax comment. |
|
|
57
|
-
| `code.token.function` | Syntax function. |
|
|
58
|
-
| `diff.added` | Added content. |
|
|
59
|
-
| `diff.added.line` | Added line. |
|
|
60
|
-
| `diff.added.word` | Added inline word span. |
|
|
61
|
-
| `diff.removed` | Removed content. |
|
|
62
|
-
| `diff.removed.line` | Removed line. |
|
|
63
|
-
| `diff.removed.word` | Removed inline word span. |
|
|
64
|
-
| `diff.modified` | Modified context. |
|
|
65
|
-
| `diff.modified.hunk` | Hunk marker or changed context. |
|
|
66
|
-
| `diff.modified.file-header` | Modified file header. |
|
|
67
|
-
|
|
68
|
-
## Trace and command status
|
|
69
|
-
|
|
70
|
-
Trace severity describes technical trails and diagnostic summaries. It is not a
|
|
71
|
-
license to store raw logs in package examples.
|
|
72
|
-
|
|
73
|
-
| Serializable state | Meaning |
|
|
74
|
-
| --- | --- |
|
|
75
|
-
| `trace.info` | Informational trace row. |
|
|
76
|
-
| `trace.success` | Completed trace row. |
|
|
77
|
-
| `trace.warning` | Recoverable warning. |
|
|
78
|
-
| `trace.error` | Failed trace row. |
|
|
79
|
-
| `trace.muted` | Low-priority diagnostic metadata. |
|
|
80
|
-
| `command.queued` | Queued but not started. |
|
|
81
|
-
| `command.pending` | Waiting for scheduler, input, or approval. |
|
|
82
|
-
| `command.running` | Currently executing. |
|
|
83
|
-
| `command.success` | Finished successfully. |
|
|
84
|
-
| `command.warning` | Finished with warnings or partial recovery. |
|
|
85
|
-
| `command.error` | Failed. |
|
|
86
|
-
| `command.paused` | Paused by a user or runtime. |
|
|
87
|
-
| `command.blocked` | Blocked by a missing permission, precondition, or input. |
|
|
88
|
-
| `command.complete` | Completed run. |
|
|
89
|
-
|
|
90
|
-
## Provider and model status
|
|
91
|
-
|
|
92
|
-
| Serializable state | Meaning |
|
|
93
|
-
| --- | --- |
|
|
94
|
-
| `provider.online` | Provider is available. |
|
|
95
|
-
| `provider.offline` | Provider is unavailable. |
|
|
96
|
-
| `provider.degraded` | Provider is available with degraded capacity. |
|
|
97
|
-
| `provider.error` | Provider cannot serve requests. |
|
|
98
|
-
| `model.available` | Model is available for selection. |
|
|
99
|
-
| `model.selected` | Model is selected or focused. |
|
|
100
|
-
| `model.context-warning` | Context window is near a configured limit. |
|
|
101
|
-
| `model.cost-warning` | Model is budget-sensitive. |
|
|
102
|
-
| `model.rate-limited` | Rate limiting is active or likely. |
|
|
103
|
-
| `model.unavailable` | Model cannot be selected. |
|
|
104
|
-
|
|
105
|
-
## Approval choices
|
|
106
|
-
|
|
107
|
-
Consumers own behavior, keyboard shortcuts, and persistence.
|
|
108
|
-
|
|
109
|
-
| Serializable choice | Meaning |
|
|
110
|
-
| --- | --- |
|
|
111
|
-
| `approval.run` | Run once. |
|
|
112
|
-
| `approval.deny` | Deny this action. |
|
|
113
|
-
| `approval.session` | Allow for this session. |
|
|
114
|
-
| `approval.always` | Allow persistently where app policy permits. |
|
|
115
|
-
|
|
116
|
-
## Message and tool states
|
|
117
|
-
|
|
118
|
-
| Serializable state | Meaning |
|
|
119
|
-
| --- | --- |
|
|
120
|
-
| `message.user` | Human-authored message. |
|
|
121
|
-
| `message.assistant` | Assistant-authored message. |
|
|
122
|
-
| `message.system` | User-visible system or policy summary. |
|
|
123
|
-
| `message.reasoning` | Reasoning summary disclosure, not hidden chain-of-thought. |
|
|
124
|
-
| `message.tool` | Tool call or result summary. |
|
|
125
|
-
| `message.artifact` | Artifact reference, preview, or generated-file summary. |
|
|
126
|
-
| `message.source` | Source or citation reference. |
|
|
127
|
-
| `message.queued` | Queued message. |
|
|
128
|
-
| `message.streaming` | Partial assistant output is streaming. |
|
|
129
|
-
| `message.interrupted` | Generation stopped before completion. |
|
|
130
|
-
| `message.retryable` | Retry is available. |
|
|
131
|
-
| `message.permission-denied` | Blocked by a user, policy, or permission. |
|
|
132
|
-
| `message.fatal` | Non-recoverable message failure. |
|
|
133
|
-
| `tool.pending` | Waiting to start or waiting for approval. |
|
|
134
|
-
| `tool.running` | Active tool call. |
|
|
135
|
-
| `tool.success` | Tool call completed successfully. |
|
|
136
|
-
| `tool.warning` | Tool call completed with a warning or degraded result. |
|
|
137
|
-
| `tool.error` | Tool call failed. |
|
|
138
|
-
| `tool.muted` | Low-priority tool metadata. |
|
|
139
|
-
|
|
140
|
-
## Layout hints and prompt glyphs
|
|
141
|
-
|
|
142
|
-
Layout hints are serializable meanings, not CSS aliases:
|
|
143
|
-
|
|
144
|
-
| Serializable role | Meaning |
|
|
145
|
-
| --- | --- |
|
|
146
|
-
| `message.spacing.compact` | Dense rows for active streams and tool trails. |
|
|
147
|
-
| `message.spacing.default` | Standard chat or TUI rhythm. |
|
|
148
|
-
| `message.spacing.loose` | Review, approval, or long-form summary rhythm. |
|
|
149
|
-
| `message.indent.user` | User-message indent. |
|
|
150
|
-
| `message.indent.assistant` | Assistant-message indent. |
|
|
151
|
-
| `message.indent.tool` | Tool-trail indent. |
|
|
152
|
-
| `promptGlyph.user` | Human prompt marker. |
|
|
153
|
-
| `promptGlyph.assistant` | Assistant prompt marker. |
|
|
154
|
-
| `promptGlyph.system` | System or notice marker. |
|
|
155
|
-
| `promptGlyph.tool` | Tool-trail marker. |
|
|
156
|
-
| `promptGlyph.approval` | Approval prompt marker. |
|
|
157
|
-
| `promptGlyph.continuation` | Wrapped or continued-line marker. |
|
|
158
|
-
|
|
159
|
-
## Serializable shape
|
|
160
|
-
|
|
161
|
-
The package does not export a TUI-specific type. A consumer can mirror the
|
|
162
|
-
framework-free state shape without importing React DOM components:
|
|
163
|
-
|
|
164
|
-
```json
|
|
165
|
-
{
|
|
166
|
-
"messageState": "message.streaming",
|
|
167
|
-
"toolState": "tool.running",
|
|
168
|
-
"approvalChoice": "approval.run",
|
|
169
|
-
"severity": "trace.info",
|
|
170
|
-
"redactedSummary": "Synthetic action summary"
|
|
171
|
-
}
|
|
172
|
-
```
|